1.协议地图
2.MPLS介绍
ATM的优缺点:
- ATM转发采用唯一匹配,一次查表,效率很高
- ATM控制信令复杂,成本高昂,难以普及
ATM技术虽然没有成功,但其中有几点创新:
- 摒弃了繁琐的路由查找,改为简单快速的标签交换:
- 将具有全局意义的路由表改为只有本地意义的标签表。
MPLS定位在第2.5层的位置。为muti protocol,可以承载其他类型的报文。1997年成立。
MPLS:Multi-Protocol Label Switching,多协议标签交换
- 一种根据标签转发的技术
- 可以承载在各种链路层协议上,如: PPP、ATM、中继、以太网
- 可以承载各种网络层报文,如: IPv4、IPv6、IPX
- 采用无连接的控制平面,实现路由信息的传递和标签的分发
- 采用面向连接的数据平面,实现报文在建立的标签转发路径上传送
MPLS实际应用场景:随着硬件技术发展,IP转发性能大大提高,MPLS在这方面并未发挥优势。但由于MPLS结合了IP网络强大的三层路由功能和二层网络高效的转发机制,所以目前MPLS主要应用于:
- VPN (Virtual Private Network,虚拟专用网)
- TE (Traffic Engineering,流量工程)
- Qos (Quality of Service,服务质量)
- 其它应用提供更好的解决方案。
MPLS VPN应用:基于MPLS的VPN通过LSP将私有网络的不同分支联结起来,形成一个统一的网络,用户设备无需为VPN配置GRE、L2TP等隧道,网络时延被降到最低。
MPLS TE应用:通过动态监控网络的流量和网络单元的负载,实时调整流量管理参数路由参数和资源约束参数等,使网络运行状态迁移到理想状态,优化网络资源的使用避免负载不均衡导致的拥塞。
3.MPLS结构
网络结构:
入节点、中间节点和出节点: SP是一个单向路径,LSP中的LSR可以分为:
体系结构:
4.MPLS报文结构
标签 (Label):较短,定长,只有本地意义,用于唯一标识去往同一目的地址的报文分组,标签空间如下:
标签多层嵌套:对于一个LSR来说,只处理第一个 (最顶层) 标签
主要应用于: MPLS VPN、MPLS TE
标签转发行为: PUSH、SWAP、POP
- 报文进入MPLS网络,Ingress LSR设备 (LSR1) 发现报文的目的IP地址有与其关联的标签转发表项,遂进行压标签 (PUSH)操作。
- 报文在MPLS网络中间进行转发时,在LSR2上进行标签交换 (SWAP),设备只需查询标签转发表即可完成报文转发。
- 报文在转出MPLS网络时,LSR3发现自己为该LSP的最下游设备,完成弹出标签(POP) 操作
LSP的建立:MPLS需要为报文事先分配好标签,建立一条LSP,才能进行报文转发
静态LSP:
- 不使用标签发布协议,不需要交互控制报文,资源消耗比较小。
- 通过静态方式建立的LSP不能根据网络拓扑变化动态调整,需要管理员干预。
- 适用于拓扑结构简单并且稳定的小型网络。
- 配置原则:上游节点出标签 = 下游节点入标签
动态LSP:
- 通过标签发布协议 (LDP、MP-BGP、RSVP-TE) 动态建立。
- 实现对FEC的分类、标签的分配及LSP的建立和维护等。
- 组网配置简单,易于管理和维护。
- 网络拓扑发生变化时,能及时反映网络状况。
- 标签由下游LSR分配,按从下游到上游的方向分发。
5.MPLS环路检测机制
- IGP环路检测机制:RIP、OSPF各自的防环机制;
- TTL环路检测:帧模式的MPLS中使用TTL,信元模式的MPLS中无TTL,使用LDP环路检测机制;
- LDP环路检测机制:距离向量法,最大跳数法。
MPLS对TTL的处理模式:
- Uniform:MPLS TTL和IP TTL相互同步,中间节点只处理MPLS TTL。
- Pipe:MPLS TTL设置为固定值,IP TTL只在入和出节点分别减1.
TTL环路检测:
LDP环路检测:
距离向量法:LSR发送标签请求时,添加自己的LSR ID,如果收到的LSR如果发现了自己的LSR ID,丢弃。
最大跳数法:LSR发送标签请求时,更新Hop Count,如果到达预设的最大值,丢弃
6.静态LSP配置
简介:一般情况下,在MPLS网络中都使用LDP建立LSP。但LDP是通过路由信息来建立LSP,如果LDP协议出现问题,可能导致MPLS流量的丢失。因此,对于某些关键数据或重要业务,通过配置静态LSP来确定传输路径。
R1: ospf 1 router-id 1.1.1.1 area 0 net 192.168.0.1 0.0.0.0 net 12.0.0.1 0.0.0.0 static-lsp ingress hf2sh destinaticn 72.16.0.0 24 nexthop 12.0.0.2 out-label 100 static-lsp egress sh2hf incoming-interface GigabitEthernet0/0/1 in-label 100 R2: ospf 1 router-id 2.2.2.2 area 0 net 23.0.0.2 0.0.0.0 net 12.0.0.2 0.0.0.0 static-lsp transit hf2sh incoming-interface GigabitEthernet0/0/0 in-label 100 outgoing-interface GigabitEthernete0/0/1 out-label 200 static-lsp transit sh2hf incoming-interface GigabitEthernet0/0/1 in-label 200 outgoing-interface GigabitEthernete0/0/0 out-label 100 R3: ospf 1 router-id 3.3.3.3 area 0 net 172.16.0.1 0.0.0.0 net 23.0.0.3 0.0.0.0 static-lsp ingress sh2hf destination 192.168.0.0 24 nexthop 23.0.0.2 out-label 200 static-lsp egress hf2sh incoming-interface GigabitEthernet0/0/1 in-label 200
7.LDP理论
标签的产生:有了标签,转发是很简单的事,但是如何生成标签,却是MPLS中最难修练的部分。在MPLS中,有一个叫LDP的心法秘笈,一个动态的生成标签的协议。
LDP:Label Distribution Protocol,标签分发协议,RFC5036
- 在LSR之间建立LDP Session (LDP会话)
- 建立了LD Session的两台设备称为LDP Peers(LDP邻居/对等体)
- 在LDP Peers间交换Label/FEC映射
LDP消息类型:封装在UDP或TCP之上,端口号 = 646
LDP发现机制:
LDP基本发现机制:发现直连的邻居,使用组播。周期性的发送LDP Link Hello,建立本地LDP会话。
LDP扩展发现机制:发现非直连的邻居,使用单播。周期性的发送LDP Targeted Hello,建立远端LDP会话。
LDP邻居发现过程:
- Hello消息使用UDP封装,发送周期为5s,使用组播地址224.0.0.2
- Hello消息中,携带有Transport Address (传输地址) 字段,该字段默认与设备配置的LSR ID一致,表明与对端建立邻居关系时所使用的IP地址 (保证路由可达)。
LDP会话建立过程:
参数包括LDP协议版本、标签分发方式、Keepalive保持定时器的值、最大PDU长度和标签空间等。
如果不能接受相关参数,则发送Notification消息终止LDP会话的建立。
LDP会话建立成功后,进行FEC的创建与标签的分发。
标签的发布和管理
LDP会话建立后,LDP协议开始交换标签映射等消息用于建立LSP.RFC5036分别定义了标签发布方式、标签分配控制方式、标签保持方式来决定LSR如何发布和管理标签。
上游和下游:设备的上下游与数据转发的方向相对,数据先到达的地方是上游,后到达的地方时下游。
标签发布方式:Label Advertisement Mode,将标签给邻居的前提条件。
标签分配控制方式:Label Distribution Control Mode,为一条路由前缀分配标签的前提条件。标签由设备自动随机生成。
标签分配控制方式和标签发布方式的组合
标签保持模式:Label Retention Mode,如何保留从邻居接收到的标签
目前设备支持如下组合方式:
- DU + Ordered + Libera,该方式为缺省方式
- DoD + Ordered + Conservative
- DU + Independent + Liberal
- DoD + Independent + Conservative
倒数第二跳弹出:PHP,Penultimate Hop Popping
在最后一跳节点,标签已经没有使用价值。这种情况下,在倒数第二跳节点处将标签弹出,减少最后一跳的负担。
- RTC收到RTB发送的带标签1026的报文,查找LFIB表,发现分配的出标签为隐式空标签3,于是执行弹出标签的动作,并将IP数据包转发给下游路由器RTD;
- RTD收到RTC发送的IP报文,直接查找自己的FIB表,根据FIB表中的出接口进行IP数据的封装并转发。
LDP建立LSP到数据转发过程
- IGP协议负责实现MPLS网络内路由可达,为FEC的分组提供路由;
- LDP协议负责实现对FEC的分类、标签的分配以及LSP的建立和维护等操作。
- 在MPLS网络中,数据包在每台路由器上根据已分配的标签进行标签的封装和转发
- 分析数据包到达Eqress节点RTD上怎么处理? 如果MPLS网络中业务量很大,Eqress节点的处理方式有何不妥?
特殊保留标签
LDP配置 (华为)
MPLS问题
问题一:MPLS环境下的BGP路由传递
拓扑环境描述:
- R1、R2、R3、R4处于Transit AS 1234。在AS 内运行的GP协议是OSPF.
- 所有设备的 Loopback0口地址为xxxx/32,x为设备编号
- R1与R4之间建立IBGP 邻接关系,BGP 接关系建立在物理接口上,R1与R5、R4与R之间建立EBGP邻接关系,也是建立在物理接口上
- 在这个实验测试中,我们在OSPF 中宣告 R1-R5和R4-R6的直连网段
- R5及R6各自在BGP进程中宣告自己的 Loopback 路由
思考:
- 5.5.5.5和6.6.6.6的通讯能否成功? 为什么? 后续如何改进?
- 如果不宣告R1-R5、R4-R6之间的网段进OSPF,通讯是否有变化?
答案:
- MPLS默认不会为BGP路由分配标签,但会为BGP路由的下一跳分配标签
- BGP中的路由条目是相当多的,因此通过MPLS ,可大大简化路由器的性能损耗,BGP的Transit AS的路由黑洞问题也得到了很好的解决。
问题二:路由汇总对MPLS的影响
- E上的10.1.1.0/24路由,在C上进行了汇总变成10.1.0.0/16。
- 路由汇总将原先的一段LSP分割成了两段。
- 看似没有什么问题,但在点到点的LSP环境下就有问题,如: MPLS VPN 、TE
问题三:LDP与IGP同步: IGP和LDP都认可某条链路为待转发报文的出站链路的。
由于LDP的收敛依赖于IGP的收敛,即LDP的收敛速度比IGP的收敛速度慢,因此存在主备链路的组网中有如下问题:
- 当主链路发生故障时,IGP路由和LSP均切换到备份链路上。但当主链路从故障中恢复时,IGP会先于LDP切换回主链路,因此导致LSP流量丢失。
- 当主链路IGP运行正常,但主链路节点间的LDP会话发生故障时,IGP路由仍然使用主链路,而主链路的LSP被删除。同时,由于备份链路不存在IGP优选路由,故LSP无法在备份链路建立,导致LSP流量丢失。
虽然这样不会导致流量中断,但在MPLS VPN环境中就可能出问题。因为报文在MPLS VPN中传输往往是需要带标签的。
解决方法: 开启LDP与IGP周步
基本原理: 通过抑制IGP发布正常路由,来保证LDP和IGP同步完成收敛
定义了3个定时器和5个状态:
LDP与IGP同步命令 (华为):
LDP与IGP同步命令 (思科):