MPLS

MPLS基本介绍

IP 转发原理

  • 利用路由协议(静态\RIP\OSPF等)生成路由表
  • 根据目的IP地址进行转发:A访问B
  • 在IP报文转发的过程中,目的IP地址保持不变

MPLS转发原理

在二层报头与三层报头之间插入MPLS报头,可以插入多个MPLS头部,这种标签模式也被称为帧模式(Frame Mode)

MPLS 包头结构

通常,MPLS报头有32Bit,其中有:

  • 20Bit用作标签(Label)
  • 3个Bit的EXP, 协议中没有明确,通常用作COS
  • 1个Bit的S,用于标识是否是栈底,表明MPLS的标签可以嵌套。
  • 8个Bit的TTL
     MPLS 包头结构
    MPLS报文结构

名词解释

标签(Label)

标签是一个比较短的,定长的,通常只具有局部意义的标识,这些标签通常位于数据链路层的数据链路层封装头和三层数据包之间,标签通过绑定过程同FEC相映射。

FEC

Forwarding Equivalence Class,FEC(转发等价类),是在转发过程中以等价的方式处理的一组数据分组。
可以通过地址、隧道、COS等来标识创建FEC,
目前看到的MPLS中只是一条路由对应一个FEC。通常在一台设备上,对一个FEC分配相同的标签。
由于沿途所有的设备都必须具有相同的路由(前缀和掩码必须完全相同)才可以建成一条LSP
所以使用MPLS转发的所有沿途设备上,对于要使用标签转发的路由,都不能做路由聚合的操作。

LSP

标签交换通道。一个FEC的数据流,在不同的节点被赋予确定的标签,数据转发按照这些标签进行。数据流所走的路径就是LSP。

LSR

Label Switching Router,LSR是MPLS的网络的核心交换机,它提供标签交换和标签分发功能。
LSR只会选择最优路由下一跳的路由器所通告的标签映射消息进入 MPLS转发表

LER

Label Switching Edge Router,在MPLS的网络边缘,进入到MPLS网络的流量由LER分为不同的FEC,并为这些FEC请求相应的标签。它提供流量分类和标签的映射、标签的移除功能。

LDP标签数据库

LDP标签数据库中包含所有邻居所通告的标签映射消息

工作过程

数据包如何转发至目的地

PUSH动作:在边缘设备上根据FIB转发表向IP报文中插入MPLS报文头。这个是边缘路由器的操作
SWAP动作:中间传输设备收到标签报文后, 按照MPLS转发表中相关表项对报文中的标签进行替换
POP动作:倒数第二跳的设备收到标签报文后, 按照MPLS转发表中相关表项对报文中的标签进行弹出。
PHP:倒数第二跳弹出,
最后的设备到达MPLS的网络边缘按路由转发

=====================================================
LER:IP报文进入时,查找标签转发表,给IP报文打标签操作(PUSH)
IP报文离开时,对标签报文进行弹出操作(POP),按IP路由进行转发。
LSR:负责对标签报文进行快速的标签交换操作(SWAP)

控制层面

功能:负责产生和维护路由信息以及标签信息。
1、MPLS工作前,控制层面生成RIB和FIB(FIB基于RIB生成)
2、MPLS协议会启动TDP(cisco私有协议端口749)/LDP协议(公有协议646),直连设备之间将建立邻居关系
LDP:基于UDP和TCP的646端口工作;先使用UDP组播发送hello包发现邻居,获取对端邻居的IP地址,再基于此IP地址和邻居建立TCP会话,邻居建立后,为保证邻居关系稳定,一般建议用环回地址建立TCP会话,建议设置环回地址MPLS协议的router-id,该ID值将携带在组播的Hello包中,基于此RID进行TCP会话建立。
总结:MPLS协议需要在直连的邻居间使用RID进行TCP会话建立,所以前提条件就是RID必须为设备的真实的环回接口IP地址,组播的hello包在直连的物理接口上收发,来获取对端的RID,也必须满足环回之间路由可达
3、MLSP在建立完成邻居关系后,会生成邻居表,LDP协议会在基于FIB学习到目标路由条目生成标签号。

注意:华为设备基于FIB表中的32为掩码的主机路由生成标签。
原因就在于正常的32位主机路由位OSPF学习到的环回接口,正常实际下工程中只有BGP协议建立时会使用环回接口,华为此设定的意义就在于只有BGP流量(黑洞)使用标签转发,但是其他普通的流量还是基于设备的特快交换–FIB进行转发

4、标签生成后,将存储在本地的LIB–标签信息数据库,而此LIB会在LDP;邻居间尽享共享,LIB表中分配的标签号会告知本地的邻居。
5、运行MPLS协议的设备会将LIB和FIB进行整合,将标签和最佳路径关系生成LFIB表(标签信息转发数据库),数据转发时基于此LFIB表使用进行标签转发。

数据层面

功能:设备基于路由表访问目标,产生的流量
1、没有MPLS协议,基于FIB正常转发
2、如果存在MPLS协议,由第一台设备打标签,其他设备基于LFIB进行转发,最后一台设备拆标签,完成数据转发过程

LDP协议原理配置

LDP协议邻居建立

发现邻居阶段
  • 使用UDP报文
  • 源和目的端口都是UDP 646
会话建立阶段
  • 使用TCP报文,端口也是646
  • 单播一对一。
    默认情况下,transport-address大的作为发起方。默认transport-address等于router-id
    router-id和ospf router-id 选举是一样的【手动选举&自动选举】
    保证transport-address地址可达
    ① 运行IGP协议
    ②手动指定物理地址为router-id
    如果需要router-id与transport-address不一致的话,需要接口模式下使用下列命令来修改transport-address
(config-if)#mpls ldp discovery transport-address interface【指定当前接口】
(config-if)#mpls ldp discovery transport-address x.x.x.x【单独指定transport-address】

配置

LDP协议配置

R1(config)#ip CEF【路由器默认开启show run | s ip cef 】
R1(config)#mpls label protocol ldp
R1(config)#mpls label router-id loopback 0
R1(config)#mpls label range 100 199  /选配:修改本地所产生的标签数 值的范围,默认是16~220/
R1(config)#interface ex/x【发送LDP hello报文,物理接口启用mpls ip】
R4(config-if)#mpls ip

高级特性

#路由环路的预防
R1(config)#mpls ip propagate-ttl
关闭TTL复制功能:保护MPLS内网。
当外网的用户,trancert时是看不到MPLS内部网络的结构
#LDP邻居认证
R2(config)#mpls ldp neighbor x.x.x.x  password xxx

测试

验证是否收到对方的LDP Hello

验证LDP协议阶段1 是否有建立,查看哪些邻居有收到本路由器发送的LDP hello

R4#show mpls ldp discovery
Local LDP Identifier:
	4.4.4.4:0
	Discovery Sources:
	Interfaces:
	Ethernet0/0 (ldp): xmit 
	Ethernet0/1 (ldp): xmit/recv
		LDP Id: 2.2.2.2:0   

查看本路由哪些接口启用LDP

R4#show mpls interfaces
Interface              IP            Tunnel   BGP Static Operational
Ethernet0/0            Yes (ldp)     No       No  No     Yes
Ethernet0/1            Yes (ldp)     No       No  No     Yes   

验证LDP的邻居

验证LDP协议阶段2,会话建立阶段,查看本路由器和哪些设备建立了LDP session

R4# show mpls ldp neighbor
	Peer LDP Ident: 2.2.2.2:0; Local LDP Ident 4.4.4.4:0
		TCP connection: 2.2.2.2.646 - 4.4.4.4.62868
		State: Oper; Msgs sent/rcvd: 79/77; Downstream
		Up time: 00:54:24
		LDP discovery sources:
			Ethernet0/1, Src IP addr: 24.24.24.2
		Addresses bound to peer LDP Ident:
			2.2.2.2         23.23.23.2      25.25.25.2      26.26.26.2 24.24.24.2   	

查看LDP设置

R4#  show mpls ldp  parameters
LDP Feature Set Manager: State Initialized
	LDP features:
		Basic
		IP-over-MPLS
		TDP
		IGP-Sync
		Auto-Configuration
		TCP-MD5-Rollover
Protocol version: 1
Session hold time: 180 sec; keep alive interval: 60 sec    //阶段 2
Discovery hello: holdtime: 15 sec; interval: 5 sec  //阶段 1
Discovery targeted hello: holdtime: 90 sec; interval: 10 sec
Downstream on Demand max hop count: 255 
LDP for targeted sessions
LDP initial/maximum backoff: 15/120 sec
LDP loop detection: off  

查看LDP标签库

R4#show mpls ldp bindings
	lib entry: 1.1.1.1/32, rev 18    //该前缀的路由条目
		local binding:  label: 21   //本地为该前缀绑定的标签
		remote binding: lsr: 2.2.2.2:0, label: 19   //邻居为该前缀通告的标签映射信息
	lib entry: 2.2.2.2/32, rev 2   
		local binding:  label: 16
		remote binding: lsr: 2.2.2.2:0, label: imp-null
	lib entry: 3.3.3.3/32, rev 16
		local binding:  label: 20
		remote binding: lsr: 2.2.2.2:0, label: 18
	lib entry: 4.4.4.4/32, rev 4
		local binding:  label: imp-null
		remote binding: lsr: 2.2.2.2:0, label: 16
	lib entry: 5.5.5.5/32, rev 28
		local binding:  label: 26
		remote binding: lsr: 2.2.2.2:0, label: 24
	lib entry: 6.6.6.6/32, rev 26
		local binding:  label: 25
		remote binding: lsr: 2.2.2.2:0, label: 23
	lib entry: 13.13.13.0/24, rev 24
		local binding:  label: 24 
		remote binding: lsr: 2.2.2.2:0, label: 22 
	lib entry: 14.14.14.0/24, rev 6
		 local binding:  label: imp-null 

查看MPLS转发表

R4#show mpls forwarding-table
Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop
Label      Label      or Tunnel Id     Switched      interface   
//Local tag(Label):本地为路由表中的每一条IGP路由所绑定的标签(Label Allocation),因此对于本地而言,Local Label是唯一的
//本地在前缀所对应的标签映射消息中携带Local Label通告给其他LDP邻居(Label Distribution)
//Outgoing tag (Label):LDP邻居通告给本地的标签映射消息中所包含的标签。Outgoing tag(Label)可能是相同的,因为每个LDP邻居仅在本地为前缀Allocation唯一的Label,因此两个邻居很有可能为同一前缀Allocation相同的Label,这样就出现了两个LDP邻居为本地通告了同 一前缀、相同标签的标签映射消息,即在MPLS转发表中出现相同的Outgoing tag(Label)。

16         Pop Label  2.2.2.2/32       0             Et0/1      24.24.24.2
17         Pop Label  23.23.23.0/24    0             Et0/1      24.24.24.2
18         Pop Label  25.25.25.0/24    0             Et0/1      24.24.24.2
19         Pop Label  26.26.26.0/24    0             Et0/1      24.24.24.2
20         No Label   3.3.3.3/32       0             Et0/0      14.14.14.1
21         No Label   1.1.1.1/32       0             Et0/0      14.14.14.1
22         No Label   16.16.16.0/24    0             Et0/0      14.14.14.1
23         No Label   15.15.15.0/24    0             Et0/0      14.14.14.1
24         No Label   13.13.13.0/24    0             Et0/0      14.14.14.1
25         23         6.6.6.6/32       0             Et0/1      24.24.24.2
			No Label   6.6.6.6/32       684           Et0/0      14.14.14.1
26         24         5.5.5.5/32       0             Et0/1      24.24.24.2
			No Label   5.5.5.5/32       0             Et0/0      14.14.14.1    
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值