HCIE-MPLS专题(2020.07.06不完整)

MPLS专题拓扑以及ENSP拓扑使用

MPLS专题拓扑
上课之前开启以下设备
ENSP拓扑使用

简单回顾

  1. TCP/IP端到端通信模型,IP转发的特点、依据:逐跳转发(路由黑洞)、依据目标地址和路由表(策略)转发
  2. BGP路由黑洞解决方案:全互联、路由反射器、同步IGP(即路由引入)、联盟
  3. MPLS多协议标签交换,高速转发,这是一种增加了能源消耗的转发技术,但是效率提高了。MPLS转发类似大型超市,需要扫码枪和很多收银员;传统IP转发类似小卖部,不需要这么多辅助工具与员工。
  4. 依据数据库完成设备的数据处理或者转发角色,路由协议:邻居表、路由表、数据库(LSDB、BGP table、topology base(EIGRP))
  5. MPLS提供了一种相对比较简单的转发决策方法,在帧模式当中,将一个或者多个标签插入在二层头部后面,MPLS域的路由器依据标签做转发决策,标签是32bit固定长度的数值
  6. MPLS进阶路线:MPLS --> MPLS-VPN ---> MPLS-TE(流量工程) ---> SegmentRouting(分段路由,靠源决定路由往哪发)
  7. 转控分离:控制层面----负责形成转发表项,比如路由协议等;数据层面----负责转发数据

MPLS基本原理

MPLS术语等

  1. 在IP网络与MPLS网络的交界处,边界的设备通常称为入站LSR(标签交换路由器)
  2. 路由器做IP转发,需要哪些基础内容:配置IP地址、产生直连路由、配置路由协议、产生路由表、路由原理、IP报文。
    MPLS路由器LSR转发报文又需要些什么呢?标签(标签协议)、具备标签转发表(标签分发协议+路由协议)、标签报文(IP报文+标签)
  3. 术语:
    1. CE:客户边界设备。CE(Customer Edge),用户边缘设备,服务提供商所连接的用户端路由器。CE路由器通过连接一个或多个PE路由器,为用户提供服务接入。CE路由器通常是一台IP路由器,它与连接的PE路由器建立邻接关系
    2. PE:运营商边界设备。PE(Provider Edge),即Provide的边缘设备,服务提供商骨干网的边缘路由器,它相当于标签边缘路由器(LER)。PE路由器连接CE路由器和P路由器,是最重要的网络节点。用户的流量通过PE路由器流入用户网络,或者通过PE路由器流到MPLS骨干网
    3. P:运营商内部的设备,仅仅负责帮助转发数据。P(Provider),是核心层设备,提供商路由器,服务提供商是不连接任何CE路由器的骨干网路由设备,它相当于标签交换路由器(LSR)
    4. LSR:标签交换路由器
    5. LER:标签边缘路由器(PE)
    6. CPE:三巨头中两个互联,为同一个客户服务
    7. MCE:MCE功能是Multi-CE的简称,具有MCE功能的交换机可以在BGP/MPLS VPN组网应用中承担多个VPN实例的CE功能,减少用户网络设备的投入
    8. vrf(思科称vpn instance):在PE设备上起到隔离作用,每一个vrf提供一个独立的路由表,同时甚至能够提供独立的路由协议进程
    9. LSP:标签交换通道,LSP是一个单向通道,与数据流的方向一致
    10. FIB:转发信息库,来自路由表拷贝
    11. LIB:标签信息库,由标签协议根据路由产生的标签和路由的对应关系
    12. LFIB:标签转发信息库,把FIB和LIB两者结合在一起
    13. FEC:转发等价类。MPLS将具有相同特征的报文归为一类,称为转发等价类FEC,属于相同FEC的报文在转发过程中被LSR以相同方式处理。FEC可以根据源地址、目的地址、源端口、目的端口、VPN等要素进行划分。例如,在传统的采用最长匹配算法的IP转发中,到同一条路由的所有报文就是一个转发等价类
    14. NHLFE:下一跳标签转发表项,用于指导MPLS报文的转发,包括Tunnel ID、出接口、下一跳、出标签、标签操作类型等信息。FEC到一组NHLFE的映射称为FTN(FEC-to-NHLFE),通过查看FIB表中Tunnel ID值不为0x0的表项,能够获得FTN的详细信息,FTN只在Ingress存在
    15. Tunnel ID:为了给使用隧道的上层应用(如VPN、路由管理)提供统一的接口,系统自动为隧道分配了一个ID,也称为Tunnel ID。该Tunnel ID的长度为32比特,只是本地有效
    16. ILM:入标签到一组下一跳标签转发表项的映射称为入标签映射ILM,ILM包括Tunnel ID、入标签、入接口、标签操作类型等信息。ILM在Transit节点的作用是将标签和NHLFE绑定。通过标签索引ILM表,就相当于使用目的IP地址查询FIB,能够得到所有的标签转发信息。
  4. BGP路由与IGP路由的一个区别:跨越设备传递,BGP路由都带有下一跳

MPLS基本结构

  1. MPLS\VPN报文转发流程
    1. CE --> IngressPE
      CE --> IngressPE
      1. CE将报文发给与其相连的VRF接口,PE在本VRF的路由表中进行查找,得到了该路由的公网下一跳地址(为下一步查找公网标签准备)和私网标签(此时数据头部已经含有私网标签)
      2. 在把该报文封装一层私网标签后,在公网的标签转发表中查找下一跳地址,再封装一层公网标签后,交予MPLS转发
        一共两次查找,两层标签,公网标签在外。入站IP报文,先查LFIB ,命中则压入标签转发,否则再查FIB,IP转发
    2. IngressPE --> EgressPE --> CE
      IngressPE --> EgressPE --> CE
      1. 该报文在公网上沿着LSP转发,并根据途径的每一台设备的标签转发表进行标签交换
      2. 在倒数第2跳处,将外层的公网标签弹出(Pop Label),交给目的PE设备(隐式(标签值为3)/显示空标签,用于QoS)
      3. PE设备根据内网的私网标签判断该报文属于哪个VRF
      4. 弹出内网的私网标签,在目的VRF中查找路由表,根据下一跳发给相应的CE

MPLS和MPLS\VPN的最大区别:MPLS\VPN解决方案能够帮助运营商为用户提供服务,可以用一个MPLS网给多个用户提供服务

  1. 华为设备开启MPLS
[R1]mpls lsr-id 11.1.1.1
[R1]mpls
[R1]route recursive-lookup tunnel  // 非标签路由可以迭代到LSP隧道
Info: Mpls starting, please wait... OK!
[R1-mpls]mpls ldp
[R1-mpls-ldp]inter g0/0/1
[R1-GigabitEthernet0/0/1]mpls 
[R1-GigabitEthernet0/0/1]mpls ldp
[R1-GigabitEthernet0/0/1]q
  1. 中国LT承载A网组网方式(现网真实案例)
    中国LT承载A网组网方式
    中国LT路由型MPLS VPN业务由中国LT综合IP承载网进行承载。
    综合IP承载网可承载全国性的MPLS-VPN业务(即省际、国际MPLS-VPN业务),也可承载省内MPLS-VPN业务,即省分公司所辖范围内的MPLS-VPN业务。
    综合IP承载网全网设备(包括海外POP点设备)都运行在同一个AS(9929)域内。
    综合IP承载网全网分为三层结构:核心层(CR)、汇聚层(BR)和接入层(AR);其中,接入层AR设备即我们所说的PE设备,用以接入MPLS-VPN业务。
  2. MPLS结构
    MPLS结构
    • IP报文入站:查找IP转发表,出去可能是IP报文,也可能是标签报文
    • 标签报文入站:查找标签转发表,出去可能是IP报文,也可能是标签报文
      MPLS体系结构
    • 控制平面:负责产生和维护路由信息以及标签信息
      • 路由信息表RIB:由IP路由协议生成,用于选择路由
      • 标签分发协议:负责标签的分配、标签转发信息表的建立、标签交换路径的建立、拆除等工作
      • 标签信息表LIB(Label Information Base):由标签分发协议生成,用于管理标签信息
    • 转发平面:即数据平面,负责普通IP报文的转发以及带MPLS标签报文的转发
      • 转发信息表FIB:从RIB提取必要的路由信息生成,负责普通IP报文的转发
      • 标签转发信息表LFIB:简称标签转发表,由标签分发协议在LSR上建立LFIB负责带MPLS标签报文的转发

MPLS标签格式

MPLS帧格式

MPLS帧模式封装在2、3层之间,信元模式的MPLS已经淘汰
帧模式MPLS

MPLS头部信息

MPLS头部信息
  • MPLS头部总长度为4bytes (32bits)
  • 标签Label长度20bits
  • EXP(Experimental Use)长度3bits:用作QoS
  • S(Bottom of Stack)长度1bit:栈底位,如果置位则表示最后一层标签
  • TTL长度8bits
    标签空间:指标签的取值范围。标签空间划分如下:
  • 0~15:特殊标签
    • 0:IPv4 Explicit NULL Label(显示空标签),表示该标签必须被弹出(即标签被剥掉),且报文的转发必须基于IPv4。如果出节点分配给倒数第二跳节点的标签值为0,则倒数第二跳LSR需要将值为0的标签正常压入报文标签值顶部,转发给最后一跳。最后一跳发现报文携带的标签值为0,则将标签弹出。
    • 1:Router Alert Label(警告标签),只有出现在非栈底时才有效。类似于IP报文的“Router Alert Option”字段,节点收到Router Alert Label时,需要将其送往本地软件模块进一步处理。实际报文转发由下一层标签决定。如果报文需要继续转发,则节点需要将Router Alert Label压回标签栈顶。
    • 2:IPv6 Explicit NULL Label(显示空标签),表示该标签必须被弹出,且报文的转发必须基于IPv6。如果出节点分配给倒数第二跳节点的标签值为2,则倒数第二跳节点需要将值为2的标签正常压入报文标签值顶部,转发给最后一跳。最后一跳发现报文携带的标签值为2,则直接将标签弹出。
    • 3:Implicit NULL Label(隐式空标签),倒数第二跳LSR进行标签交换时,如果发现交换后的标签值为3,则将标签弹出,并将报文发给最后一跳。最后一跳收到该报文直接进行IP转发或下一层标签转发。
    • 4~13:保留
    • 14:OAM Router Alert Label(MPLS的操作管理),MPLS OAM通过发送OAM报文检测和通告LSP故障。OAM报文使用MPLS承载。OAM报文对于Transit LSR和倒数第二跳LSR是透明的。
    • 15:保留
  • 16~1023:静态LSP和静态CR-LSP共享的标签空间
  • 1024及以上:LDP、RSVP-TE、MP-BGP等动态信令协议的标签空间

MPLS标签嵌套

MPLS标签嵌套
  • PID:标识二层头部后面的报文类型
    • Ethernet:
      • 0x0800 IPv4
      • 0x8847 MPLS 单播报文
      • 0x8848 MPLS组播报文
    • PPP:
      • 0x8021 IPv4
      • 0x8281 MPLS 单播报文
      • 0x8283 MPLS组播报文
  • 标签嵌套应用
    • MPLS VPN
    • MPLS TE

MPLS转发流程

标签行为总结

  • 压入标签,PUSH
  • 交换标签,SWAP
  • 弹出标签,Pop(remove,隐式空标签)
  • UNTAG/No label(没有标签) 出现问题,在MPLS\VPN的环境下只能丢弃报文
  • Aggregate(聚合),把报文拿掉MPLS之后转发给 一个VPN-INSTANCE接口

LDP协议原理

实验

实验一:实施LDP

  • 域内IGP
  • 域内LDP
    • 配置 ldp router-id
    • 开启mpls以及ldp
  • PE之间MP-BGP、VPNv4
  • PE vrf/VPN-instance
  • PE-CE路由交互
  • 规划:
    • R1和R10通过以太网接口G2/0/0互联
    • R1\R3为PE设备
    • R8\R10为CE设备

思科

# 域内IDP:配置 ldp router-id;开启mpls以及ldp
R1(config)#ip cef
R1(config)#mpls ip
R1(config)#mpls label protocol ldp   
R1(config)#mpls ldp router-id loopback 0 force   // mpls 排错组合拳
R1(config)#interface e0/1
R1(config-if)#mpls ip
R1(config-if)#inter e0/2
R1(config-if)#mpls ip   
R1(config-if)#int s1/0
R1(config-if)#mpls ip 

# PE之间 MP-BGP、VPNv4
R1(config-router)#no bgp default ipv4-unicast   // 关闭默认的IPv4能力,切换到 MP-BGP 工作模式
R1(config-router)#address-family vpnv4 unicast   // 进入VPNv4 地址族  
R1(config-router-af)#neighbor 33.1.1.1 activate   // 在地址族下激活邻居

R3(config)#router bgp 100  // 从头配一个
R3(config-router)#no bgp default ipv4-unicast 
R3(config-router)#neighbor 11.1.1.1 remote-as 100
R3(config-router)#neighbor 11.1.1.1 up lo0 
R3(config-router)#address-family vpnv4 unicast 
R3(config-router-af)#neighbor 11.1.1.1 activate 

# PE vrf/VPN-instance
R3(config)#ip vrf cisco   // 创建 vrf ,这种配置方式仅仅支持 ipv4 【PE本地隔离】
R3(config-vrf)#rd 1:1  // 定义路由区分器的值  【64bit的一个值,全局区分】96bit 的 VPNv4路由=32bit用户路由+64bit的路由区分器
R3(config-vrf)#route-target 1:1  // 定义路由标记的值  【收发控制,实际上是一个扩展团体属性】
R3(config)#int e0/3
R3(config-if)#ip vrf forwarding cisco  // 将接口划分入vrf,与全局和其它vrf隔离开
R3(config-if)#ip address 83.1.1.3 255.255.255.0  // 注意,如果先配置了ip地址,后划分vrf,则划分vrf的操作将会移除所有ip地址
R3#show ip route vrf cisco
R3#show ip vrf 
R3#show ip vrf detail  

# vrf的另外一种配置方式:
R1(config)#vrf definition cisco
R1(config-vrf)#rd 1:1
R1(config-vrf)#address-family ipv4 
R1(config-vrf-af)#route-target 1:1
R1(config-vrf)#inter e0/3
R1(config-if)#vrf forwarding cisco  
R1(config-if)#ip address 110.1.1.1 255.255.255.0            

# PE-CE路由交互
R8
interface Loopback0
 ip address 88.1.1.1 255.255.255.0
R8(config)#ip route 10.1.1.0 255.255.255.0 83.1.1.3

R10
interface Loopback0
ip address 10.1.1.1 255.255.255.0
R10(config)#ip route 88.1.1.0 255.255.255.0 110.1.1.1

R1(config)#ip route vrf cisco 10.1.1.0 255.255.255.0 110.1.1.10  // vrf 指向CE背后网络的静态路由
R3(config)#ip route vrf cisco 88.1.1.0 255.255.255.0 83.1.1.8

# 在PE设备上对客户路由进行重分布
R3(config)#router bgp 100
R3(config-router)#address-family ipv4 vrf cisco  // 一个专属于特定客户的地址族
R3(config-router-af)#redistribute static 

# 验证:
R1#show ip route vrf cisco
R1#show bgp vpnv4 unicast all   // R1#show bgp vpnv4 unicast vrf cisco
R1#show bgp vpnv4 unicast vrf cisco 88.1.1.0/24

R3#show bgp vpnv4 unicast vrf cisco labels 
   Network          Next Hop      In label/Out label
Route Distinguisher: 1:1 (cisco)
   10.1.1.0/24      11.1.1.1        nolabel/17
   88.1.1.0/24      83.1.1.8        16/nolabel

华为

# 实现域内 IGP
# 实现域内 LDP(R1和R3)
[R1]mpls lsr-id 11.1.1.1
[R1]mpls
[R1-mpls]mpls ldp
[R1]inter g0/0/1
[R1-GigabitEthernet0/0/1]mpls
[R1-GigabitEthernet0/0/1]mpls ldp

# 实现PE之间 MP-BGP、vpnv4(R1和R3)
[R3]bgp 100
[R3-bgp]ipv4-family vpnv4
[R3-bgp-af-vpnv4]peer 11.1.1.1 enable 

#实现 vpn-instance(R1和R3)
R1
ip vpn-instance qytang
ipv4-family
route-distinguisher 1:1
vpn-target 2:2 export-extcommunity
vpn-target 2:2 import-extcommunity

interface GigabitEthernet2/0/0
ip binding vpn-instance qytang
ip address 110.1.1.1 255.255.255.0 

# 实现PE-CE路由交互
[R1]ip route-static *PN-instance qytang 10.1.1.0 24 110.1.1.10
[R10]ip route-static 88.1.1.0 24 110.1.1.1
[R3]ip route-static *PN-instance qytang 88.1.1.0 24 83.1.1.8
[R8]ip route-static 10.1.1.0 24 83.1.1.3
bgp 100
ipv4-family vpn-instance qytang 
import-route static