HCIP Datacom-MPLS转发原理
HCIP Datacom-MPLS转发原理
Mr.ZhangMPLS概念
MPLS转发概述
- MPLS转发的本质就是将数据归到对应的FEC并按照提前建立好的LSP进行转发。对于整个MPLS域,LSP是某一给定的FEC进入域和离开域的路径,可以看成是LSR的有序集合。对于单台LSR,需要建立标签转发表,用标签来识别FEC,并绑定相应的标签处理和转发等行为。
MPLS体系结构
- 控制平面
- 负责产生和维护路由信息及标签信息
- 控制平面包括IP路由协议和路由信息表,标签分发协议和标签信息表
- 转发平面
- 也称为数据平面(Data Plane),负责普通IP报文的转发及带MPLS标签报文的转发
- 转发平面包括IP转发信息表和标签转发信息表
LSP建立原则
- 当网络层协议为IP协议时,FEC所对应的路由必须存在于LSR的IP路由表中,否则该FEC的标签转发表项不生效
- LSR用标签标识指定FEC,所以该FEC的数据被发送至LSR时,必须携带正确的标签,才能被LSR正确的处理
- 对某一FEC,设备上存在进(In)标签时和出(out)标签,分别表示该FEC的数据接收和发送时所携带的标签
LSP建立方式
静态LSP | 动态LSP |
---|---|
* 用户通过手工为各个FEC分配标签而建立的 * 不使用标签协议,不需要交互控制报文,消耗资源少 * 不能根据网络拓扑变化动态调整 场景: 适用于拓扑结构简单并且稳定的小型网络 |
通过标签发布协议动态建立;MPLS控制协议(也称为信令协议)负责FEC的分类。标签分发以及LSP的建立和维护等一系列操作。 常用标签发布协议:标签分发协议(LDP) 全称:Label Ditrbution Protocol LDP规定了标签分发过程中的各种消息以及相关信息处理过程 应用场景:LDP广泛地应用在VPN服务上,具有组网。配置简单、支持基于路由动态建立LSP,支持大容量LSP等优点 |
MPLS标签转发
- LSR处理报文时主要根据FTN、NHLFE和ILM
- FTN
(FEC-to-NHLFE)当LSR收到IP报文并需要进行MPLS转发时使用,FTN只在Ingress 存在;FTN包括:Tunnel ID、FEC到NHLF的映射信息
NHLFE
下一跳标签转发表项NHLFE(Next Hop Label Forwarding Entry)用于指导MPLS报文的转发。
NHLFE包括:Tunnel ID、出接口、下一跳、出标签、标签操作类型等信息。
FEC到一组NHLFE的映射称为FTN(FEC-to-NHLFE)。通过查看FIB表中Tunnel ID值不为0x0的表项,能够获得FTN的详细信息。FTN只在Ingress存在。
ILM
入标签到一组下一跳标签转发表项的映射称为入标签映射ILM(Incoming Label Map)。
ILM包括:Tunnel ID、入标签、入接口、标签操作类型等信息。
ILM在Transit节点的作用是将标签和NHLFE绑定。通过标签索引ILM表,就相当于使用目的IP地址查询FIB,能够得到所有的标签转发信息。
Ingress LSR的处理
- 在MPLS转发过程中,FIB、ILM和NHLFE表项是通过Tunnel ID关联的。
- Ingress的处理:通过查询FIB表和NHLFE表指导报文的转发。
- 查看FIB表,根据目的IP地址找到对应的Tunnel ID。
- 根据FIB表的Tunnel ID找到对应的NHLFE表项,将FIB表项和NHLFE表项关联起来。
- 查看NHLFE表项,可以得到出接口、下一跳、出标签和标签操作类型。
- 在IP报文中压入出标签,同时处理TTL,然后将封装好的MPLS报文发送给下一跳。
- Ingress的处理:通过查询FIB表和NHLFE表指导报文的转发。
Transit LSR处理
- 通过查询ILM表和NHLFE表指导MPLS报文的转发。
- 根据MPLS的标签值查看对应的ILM表,可以得到Tunnel ID。
- 根据ILM表的Tunnel ID找到对应的NHLFE表项。
- 查看NHLFE表项,可以得到出接口、下一跳、出标签和标签操作类型。
- MPLS报文的处理方式根据不同的标签值而不同。
- 如果标签值>=16,则用新标签替换MPLS报文中的旧标签,同时处理TTL,然后将替换完标签的MPLS报文发送给下一跳。
- 如果标签值为3,则直接弹出标签,同时处理TTL,然后进行IP转发或下一层标签转发。
Egress LSR处理
- 通过查询ILM表指导MPLS报文的转发或查询路由表指导IP报文转发。
- 如果Egress收到IP报文,则查看路由表,进行IP转发。
- 如果Egress收到MPLS报文,则查看ILM表获得标签操作类型,同时处理TTL。
- 如果标签中的栈底标识S=1,表明该标签是栈底标签,直接进行IP转发。
- 如果标签中的栈底标识S=0,表明还有下一层标签,继续进行下一层标签转发。
MPLS基本配置命令
操作 | 命令 | 说明 |
---|---|---|
配置本节点的LSR ID | mpls lsr-id lsr-id | 缺省情况下,未配置LSR ID,LSR ID在MPLS网络内必须唯一,LSR ID采用点分十进制格式,与IP地址格式相同。推荐使用Loopback接口的IP地址作为LSR ID |
使用mpls | mpls | mpls命令用来使能本节点的全局MPLS能力,并进入MPLS视图 |
静态LSP配置命令
操作 | 命令 | 说明 |
---|---|---|
进入系统视图 | system-view | - |
配置静态LSP的Ingress节点 | static-lsp ingress lsp-name destination dest-addr { mask | mask-length } { nexthop next-hop-addr | outgoing-interface interface-type interface-number } out-label out-label | 配置静态LSP的Ingress节点时,如果指定下一跳,则需要保证节点上存在该下一跳地址对应的激活路由 |
配置静态LSP的Transit节点 | static-lsp transit lsp-name in-label in-label { nexthop next-hop-addr | outgoing-interface interface-type interface-number } out-label out-label | 配置静态LSP的Transit节点时,如果指定下一跳,则需要保证节点上存在该下一跳地址对应的激活路由 |
配置静态LSP的Egress节点 | static-lsp egress lsp-name in-label in-label | 如果静态LSP的倒数第二跳节点上配置的出标签为0或3,则不需要在Egress节点上执行本命令 |
操作 | 命令 |
---|---|
显示静态LSP的信息 | display mpls static-lsp [ lsp-name lsp-name ] |
MPLS LDP协议工作原理
LDP协议概述
- 标签分发协议LDP(Label Distribution Protocol)是多协议标签交换MPLS的一种控制协议,相当于传统网络中的信令协议,负责转发等价类FEC(Forwarding Equivalence Class)的分类、标签的分配以及标签交换路径LSP(Label Switched Path)的建立和维护等操作。LDP规定了标签分发过程中的各种消息以及相关处理过程。
LDP基本概念
LDP会话:
LDP会话用于LSR之间交换标签映射、释放等消息。只有存在对等体才能建立LDP会话,LDP会话分为两种类型:
- 本地LDP会话(Local LDP Session):建立会话的两个LSR之间是直连的。
- 远端LDP会话(Remote LDP Session):建立会话的两个LSR之间可以是直连的,也可以是非直连的。
本地LDP会话和远端LDP会话可以共存。
LDP邻居体:
当一台LSR接收到对端发送过来的Hello消息后LDP邻接体建立。LDP邻接体存在两种类型:
- 本地邻接体(Local Adjacency):以组播形式发送Hello消息(即链路Hello消息)发现的邻接体叫做本地邻接体。
- 远端邻接体(Remote Adjacency):以单播形式发送Hello消息(即目标Hello消息)发现的邻接体叫做远端邻接体。
LDP通过邻接体来维护对等体的存在,对等体的类型取决于维护它的邻接体的类型。一个对等体可以由多个邻接体来维护,如果由本地邻接体和远端邻接体两者来维护,则对等体类型为本远共存对等体。
LDP对等体:
LDP对等体是指相互之间存在LDP会话、使用LDP来交换标签消息的两个LSR。LDP对等体通过它们之间的LDP会话获得对方的标签。
LDP邻接体/对等体/会话之间的区别和联系
区别
LDP邻接体/对等体/会话之间的区别如下:
- LDP邻接体是指两台设备之间互发Hello消息之后建立起来的TCP连接,针对的是互连的两个接口之间的链路。
- LDP对等体是指建立起TCP连接之后,利用LDP协议相互交换标签消息的两台设备,针对的是两台交互信息的设备。
- LDP会话是指两个LDP对等体之间相互交换标签消息的一系列过程。
联系
LDP邻接体/对等体/会话之间联系概括起来,是这样的:建立LDP会话首先要有一条建立了TCP连接的链路,这条链路就是邻接体;建立邻接体之后,两台设备之间交互标签信息,成为对等体关系;最后对等体之间形成LDP会话。具体可以描述为:
- LDP通过邻接体来维持对等体的存在,对等体的类型取决于维持它的邻接体的类型。
- 一个对等体可以由多个邻接体来维护,如果同时由本地邻接体和远端邻接体两者来维持,则对等体类型为本远共存对等体。
- 只有LDP对等体之间才能建立LDP会话。
LDP消息
LDP消息类型
LDP协议主要使用四类消息:
- 发现(Discovery)消息:用于通告和维护网络中LSR的存在,如Hello消息。
- 会话(Session)消息:用于建立、维护和终止LDP对等体之间的会话,如Initialization消息、Keepalive消息。
- 通告(Advertisement)消息:用于创建、改变和删除FEC的标签映射。
- 通知(Notification)消息:用于提供建议性的消息和差错通知。
为保证LDP消息的可靠发送,除了Discovery消息使用UDP(User Datagram Protocol)传输外,LDP的Session消息、Advertisement消息和Notification消息都使用TCP(Transmission Control Protocol)传输。
LDP会话的建立
- 通过LDP发现机制发现LDP对等体用来建立LDP会话。只有建立了LDP会话后,才能建立LDP LSP来承载业务。
LDP发现机制
LDP发现机制用于LSR发现潜在的LDP对等体。LDP有两种发现机制:
基本发现机制:用于发现链路上直连的LSR。
LSR通过周期性地发送LDP链路Hello消息(LDP Link Hello),实现LDP基本发现机制,建立本地LDP会话。
LDP链路Hello消息使用UDP报文,目的地址是组播地址224.0.0.2。如果LSR在特定接口接收到LDP链路Hello消息,表明该接口存在LDP对等体。
扩展发现机制:用于发现链路上非直连LSR。
LSR周期性地发送LDP目标Hello消息(LDP Targeted Hello)到指定IP地址,实现LDP扩展发现机制,建立远端LDP会话。
LDP目标Hello消息使用UDP报文,目的地址是指定IP地址。如果LSR接收到LDP目标Hello消息,表明该LSR存在LDP对等体。
LDP会话的建立过程
两台LSR之间交换Hello消息触发LDP会话的建立。
LDP会话的建立过程如下图所示: