MPLS练习
- 一、静态LSP
- 1、IGP构建FEC
- 2、全网运行MPLS
- 3、打通LSP通道
- 3.1、静态LSP配置
- 3.2、转发过程
- 3.3、验证标签转发过程
- 4、利用LSP传递任意流量
- 4.1、配置
- 4.2、验证
- 二、LDP协议
- 1、IGP构建FEC
- 2、全网运行mpls、ldp
- 3、mpls ldp邻居关系、LIB表
- 4、转发过程
- 5、验证mpls转发过程
- 6、调整IGP路由标签分发
- 三、MPLS解决BGP黑洞
- 1、运行IGP
- 2、运行BGP
- 3、bgp黑洞现象
- 4、 mpls解决bgp黑洞
- 5、分析原因
- 6、解决方法
- 7、 验证连通性
一、静态LSP
需求:全网运行OSPF,全网运行mpls 静态标签分配
R1的环回口1.1.1.1去往R4的4.4.4.4构建一条LSP
R1,R4再各自起一个11.11.11.11和44.44.44.44的环回口,让这两个环回口互访也通过相同的LSP进行标签转发(R2,R3没有11.11.11.11和44.44.44.44的路由)
1、IGP构建FEC
R1和R4之间建立OSPF(配置忽略)
配置完成后,R1和R4环回口互ping
2、全网运行MPLS
R1
mpls lsr-id 1.1.1.1 //配置mpls lsr id
mpls //全局开启mpls功能
interface GigabitEthernet0/0/1
mpls //接口激活mpls(理解为具备接受发送mpls标签功能)
R2
mpls lsr-id 2.2.2.2
mpls
interface GigabitEthernet0/0/0
mpls
interface GigabitEthernet0/0/1
mpls
R3
mpls lsr-id 3.3.3.3
mpls
interface GigabitEthernet0/0/0
mpls
interface GigabitEthernet0/0/1
mpls
R4
mpls lsr-id 4.4.4.4
mpls
interface GigabitEthernet0/0/1
mpls
3、打通LSP通道
注:手动在R1、R2、R3、R4上为4.4.4.4这条路由依次配置静态标签,形成完整的LSP
前提:保证每台路由器上都拥有4.4.4.4这条路由
3.1、静态LSP配置
R1
static-lsp ingress r1-r4 destination 4.4.4.4 32 nexthop 12.1.1.2 out-label 102
注:为去往4.4.4.4的数据设置一个出向标签102 – 形成FIB
R2
static-lsp transit r1-r4 incoming-interface g0/0/1 in-label 102 nexthop 23.1.1.3 out-label 203
注:将收到的102标签的数据进行标签交换至203传出给23.1.1.3 – 形成LFIB
R3
static-lsp transit r1-r4 incoming-interface g0/0/0 in-label 203 nexthop 34.1.1.4 out-label 304
注:将收到的203标签的数据进行标签交换至304传出给34.1.1.4 – 形成LFIB
R4
static-lsp egress r1-r4 incoming-interface g0/0/1 in-label 304
注:将收到的304标签的数据进行标签弹出,然后继续查看FIB进行转发
3.2、转发过程
R1
查看R1的FIB表(因为是MPLS边界,所以收到去往4.4.4.4肯定是ip包,需要查FIB)
display fib
display fib 4.4.4.4 verbose
R2
display mpls static-lsp //查看R2的LFIB表
G0/0/1收到的102标签包,标签交换成203 从g0/0/0口传出
R3
display mpls static-lsp //查看R3的LFIB表
G0/0/0口收到的203标签数据包,标签交换成304,从g0/0/1口传出
R4
display mpls static-lsp //查看R4的LFIB表
G0/0/1接口收到的304 标签数据包,将标签弹出,再根据目的ip 4.4.4.4查看FIB表
display fib
FIB表得出4.4.4.4为直连loop0接口
3.3、验证标签转发过程
R1
tracert lsp ip 4.4.4.4 32
同一个FEC(ipv4路由条目),上游路由器的出标签 = 自己的入标签
4、利用LSP传递任意流量
4.1、配置
R4
interface LoopBack1
ip address 44.44.44.44 255.255.255.255 sub
R1
ip route-static 44.44.44.44 32 4.4.4.4
将流量引入之前4.4.4.4的LSP,告知R1去往44.44.44.44下一跳走4.4.4.4
4.2、验证
R1
分析:不通?为什么
因为R1、R2、R3没有去往44.44.44.44的路由,没路由就不能通么?- 不是,可以利用已经构建的LSP通道。
华为必须单独开启下一跳递归功能,不开启递归去往44.44.44.44没有单独配置静态标签,也没有路由,所以不通。
R1查看自己的FIB表
display fib 44.44.44.44
R1开启递归功能
route recursive-lookup tunnel
注:此条递归功能一旦开启,在R1上去往44.44.44.44的路由会根据之前配置的静态路由走4.4.4.4,再递归查找FIB下一跳4.4.4.4是否存在标签,如4.4.4.4有标签,就继承4.4.4.4的标签(其实就是继承4.4.4.4整条LSP)
R1查看FIB表
display fib
R1测试去往44.44.44.44的连通性
二、LDP协议
需求:全网运行OSPF,mpls,实现R1 loopback口去往4.4.4.4走LDP标签mpls转发
1、IGP构建FEC
R1和R4之间建立OSPF(配置忽略)
2、全网运行mpls、ldp
R1
mpls lsr-id 1.1.1.1 //配置mpls lsr id
mpls //全局开启mpls功能
mpls ldp //全局开启mpls ldp功能
interface GigabitEthernet0/0/1
mpls //接口激活mpls(理解为具备接受发送mpls标签功能)
mpls ldp //接口激活mpls ldp功能
R2
mpls lsr-id 2.2.2.2
mpls
mpls ldp
interface GigabitEthernet0/0/0
mpls
mpls ldp
interface GigabitEthernet0/0/1
mpls
mpls ldp
R3
mpls lsr-id 3.3.3.3
mpls
interface GigabitEthernet0/0/0
mpls
mpls ldp
interface GigabitEthernet0/0/1
mpls
mpls ldp
R4
mpls lsr-id 4.4.4.4
mpls
mpls ldp
interface GigabitEthernet0/0/1
mpls
mpls ldp
3、mpls ldp邻居关系、LIB表
R2为例查看ldp邻居关系
display mpls ldp peer
R2为例查看ldp session
display mpls ldp session //状态必须是operational
注:display mpls ldp peer - 只是邻居发现结果
display mpls ldp session - Operational为邻居建立成功
display mpls ldp peer只是邻居发现,邻居发现是路由器使用自己出接口ip地址访问224.0.0.2进行发现。不是使用loopback接口互访进行的发现。
Display mpls ldp session才是使用ldp id(loopback)作为源目的访问成功的结果。
所以如果出现peer有邻居,session不正常,很有可能是loopback口不可达
R1为例查看LIB表
display mpls ldp lsp
R1为例查看LFIB表
display mpls lsp
分析:为什么去往同一个4.4.4.4/32有两条?
上面那条是给R1本地产生数据做标签压入使用
下面那条是给穿越R1的流量做标签交换使用
4、转发过程
分析从R1 去往R4的4.4.4.4的转发过程(R1自己产生的数据)
R1
display mpls lsp
R1自己产生的数据,会打上1027的标签从G0/0/1传出
R2
display mpls lsp
R2收到R1发送的1027标签包,将标签交换至1027从g0/0/0传出
R3
display mpls lsp
R3收到R2发送的1027标签包,查看LFIB,由于收到下游设备的标签是3,3代表隐式空标签,做标签弹出,还原成ip包将数据从g0/0/1口传出
R4
display fib 4.4.4.4
R4收到ip包,查看FIB表,根据出接口发送到达loop0
5、验证mpls转发过程
R1为例访问4.4.4.4
tracert lsp -a 1.1.1.1 ip 4.4.4.4 32
6、调整IGP路由标签分发
默认情况下,华为设备配置LDP,LDP只为32位主机路由分配标签
验证:R4上起一个新的24位loopback口,激活进OSPF
R4
interface LoopBack1
ip address 44.44.44.44 255.255.255.0
R4查看本地LIB表 – 发现R4本没有为自己24为路由分配标签,只分配了32位的
R1查看LIB:发现没有去往44.44.44.0/24的标签
更改R4标签分发方式,为所有IGP路由分标签
mpls
lsp-trigger all //为所有IGP路由分配标签
查看R4的LIB表项
display mpls ldp lsp
三、MPLS解决BGP黑洞
需求:R1、R2、R3、 R4运行isis、mpls ldp
R1、R4、R6、R7运行bgp
R6 、R7的loopback接口可以互访
1、运行IGP
R1和R4之间建立OSPF(配置忽略)
2、运行BGP
R1
bgp 100
peer 4.1.1.1 as-number 100
peer 4.1.1.1 connect-interface LoopBack0
peer 4.4.4.4 next-hop-local
peer 16.1.1.6 as-number 6
R4
bgp 100
peer 1.1.1.1 as-number 100
peer 1.1.1.1 connect-interface LoopBack0
peer 47.1.1.7 as-number 7
peer 1.1.1.1 enable
peer 1.1.1.1 next-hop-local
R6
bgp 6
peer 16.1.1.1 as-number 100
network 6.1.1.1 32
R7
bgp 7
peer 47.1.1.4 as-number 100
network 7.1.1.1 32
R1、R4查看邻居关系
3、bgp黑洞现象
R6、R7查看彼此bgp路由
R6尝试以6.1.1.1为源访问7.1.1.1
为什么不通?因为R2,R3为bgp黑洞,根本原因是因为R2,R3没有运行bgp,所以无法收到去往6.1.1.1和7.1.1.1的bgp路由,而AS 100内部传递的是普通ip包,需要查路由表,没有路由就直接丢包
4、 mpls解决bgp黑洞
R1、R2、R3、R4运行mpls ldp
R2、R3查看ldp邻居
display mpls ldp session
R6访问R7 loop0口
为什么不通。分析查找原因
5、分析原因
R6去往R7的loop口
查看R6路由表(FIB表):有路由可以转发
R1收到ip包,查看FIB表
发现R1是mpls边界,但是去往7.1.1.1的bgp路由没有打标签,tunnel为0
分析原因: mpls ldp不会为R1路由表里的去往7.1.1.1的BGP路由分标签(BGP路由不分标签),所以当R1收到去往7.1.1.1的路由会根据FIB表将包给R2,R2路由黑洞丢包
6、解决方法
在R1、R4(回包给6.1.1.1)这两个MPLS边界路由器开启递归功能,让R1在去往7.1.1.1的时候走BGP路由下一跳地址(4.1.1.1)的标签,因为4.1.1.1属于IGP路由,已经提前构建好了LSP,实现R1去往7.1.1.1走4.1.1.1的LSP进行标签转发
R1
route recursive-lookup tunnel //开启BGP递归
注:开启此命令后,R1上的所有bgp路由,在查找FIB表转发时,都走的是BGP路由下一跳的LSP
R4
route recursive-lookup tunnel //开启BGP递归
7、 验证连通性
Ping -a 6.1.1.1 7.1.1.1
解析:
1:LDP默认不会(可改)为BGP的路由分配label
2:不分label不代表BGP的路由无label可用。
3:BGP的路由会继承使用下一跳的标签。(BGP下一跳就是邻居的loopback口。),但是此功能需要单独开启,默认不开启,就不会对bgp路由递归下一跳的标签。
4:下一跳的标签的LSP通道依靠IGP+LDP形成。
总结:
1:只能用loopback 0建立LDP邻居,否则会提前弹出标签(因为倒数第二跳就向前发隐式空标签)。
2:华为设备默认只为32位路由分标签。
用直连建立BGP邻居会有什么问题?
R1--------R2-------R3-------R4
1:建立邻居的IP地址,就是将来学到的BGP路由的下一跳地址。
2:BGP路由下一跳地址,就是数据层面LSP通道所使用的FEC。
3:此FEC标签分配:
a. R2上34网段是由R3分配的
b. R3分配的是3
c. R2就会执行次末跳弹出。 - 提前弹出没有bgp路由丢包
只要是BGP的路由,都要打上此路由下一跳的LABEL