首页 > 技术文章 > MPLS浅析——静态LSP

xiaohuihui4956 2021-08-08 15:56 原文

验证理论:

  1.MPLS域内不查路由表,仅标签交换,实现高速转发

  2.使用静态LSP实现互通

  3.分析路由,标签,数据

 

实验拓扑

 

 

 

初始配置

除接口地址外,仅在AR1245上配置路由如下

[AR1]ip route-static 150.1.5.5 32 155.1.12.2

[AR2]ip route-static 150.1.1.1 32 155.1.12.1 

[AR4]ip route-static 150.1.5.5 32 155.1.45.5

[AR5]ip route-static 150.1.1.1 32 155.1.45.4

 

 

初始结果

AR1环回口150.1.1.1无法访问AR5环回口150.1.5.5

 

 

 

实验步骤

第一步:配置往返静态LSP

  注意:往返目的地址是不一样的,即FEC是不一样的,所以标签不能分配成一样的

AR2:

mpls lsr-id 150.1.2.2
mpls
#
interface GigabitEthernet0/0/1
ip address 155.1.23.2 255.255.255.0
mpls                                                                                            //全局和接口开启MPLS
#
ip route-static 150.1.1.1 255.255.255.255 155.1.12.1               //原先就有的,用来让AR2知道怎么到150.1.1.1的路由
ip route-static 150.1.4.4 255.255.255.255 155.1.23.3               //虽然静态LSP不依赖动态路由,但是在LSP的Ingress节点处,LSP对应的FEC在本地路由表中需要存在相应的路由前缀,为LSP指定的下一跳也要和本地路由表一致。而中间Transit节点就不一样了,Transit节点配置指向目标的nexthop时,这个nexthop可以和该目标在本地路由表中的nexthop不一致,甚至,本地路由表可以没有这个FEC   
ip route-static 150.1.5.5 255.255.255.255 150.1.4.4                 //手动设置去往150.1.5.5的下一跳是150.1.4.4,结合下面的route recursive-lookup tunnel实现隧道迭代。将去往目的前缀150.1.5.5的数据包,扔上这个前缀的下一跳转发等价类150.1.4.4所在隧道上

#
route recursive-lookup tunnel
#
static-lsp ingress R2->R4 destination 150.1.4.4 32 nexthop 155.1.23.3 out-label 301
static-lsp egress R4->R2 incoming-interface GigabitEthernet0/0/1 in-label 201
#

 

 

AR3:

mpls lsr-id 150.1.3.3
mpls
#
interface GigabitEthernet0/0/0
ip address 155.1.34.3 255.255.255.0
mpls
#
interface GigabitEthernet0/0/1
ip address 155.1.23.3 255.255.255.0
mpls
#
static-lsp transit R2->R4 incoming-interface GigabitEthernet0/0/1 in-label 301 nexthop 155.1.34.4 out-label 401
static-lsp transit R4->R2 incoming-interface GigabitEthernet0/0/0 in-label 341 nexthop 155.1.23.2 out-label 201

 

AR4:

mpls lsr-id 150.1.4.4
mpls
#
interface GigabitEthernet0/0/0
ip address 155.1.34.4 255.255.255.0
mpls
#
ip route-static 150.1.1.1 255.255.255.255 150.1.2.2
ip route-static 150.1.2.2 255.255.255.255 155.1.34.3
ip route-static 150.1.5.5 255.255.255.255 155.1.45.5
#
route recursive-lookup tunnel
#
static-lsp egress R2->R4 incoming-interface GigabitEthernet0/0/0 in-label 401
static-lsp ingress R4->R2 destination 150.1.2.2 32 nexthop 155.1.34.3 out-label 341

 

 

第二步:查看结果

[AR1]ping -c 1 -a 150.1.1.1 150.1.5.5
PING 150.1.5.5: 56 data bytes, press CTRL_C to break
Reply from 150.1.5.5: bytes=56 Sequence=1 ttl=252 time=30 ms

[AR1]tracert -v -q 1 -a 150.1.1.1 150.1.5.5
traceroute to 150.1.5.5(150.1.5.5), max hops: 30 ,packet length: 40,press CTRL_C to break
1 155.1.12.2 40 ms
2 *
3 155.1.34.4 50 ms
4 155.1.45.5 30 ms 

ICMP中LSR将TTL超时消息回应给报文发送者的方式有两种:

1.如果LSR上存在到达报文发送者的路由,则可以通过IP路由直接向发送者回应TTL超时消息

2.如果LSR上不存在到达报文发送者的路由,则ICMP响应报文将按照LSP继续传输,到达LSP出节点后,由Engress节点将该消息返回给发送者

通常情况下,收到的MPLS报文只带一层标签时,LSR可以采用第一种方式回应TTL超时消息;收到的MPLS报文包含多层标签时,LSR采用第二种方式回应TTL超时消息

*号出现原因分析:

  此时仅有一层标签,默认按照第一种方式回应TTL超时信息,但是AR3上并没有150.1.1.1的路由,所以丢弃数据包。此时在AR2的0/0/1口上抓包只能看到AR4,5的ICMP回复

 

   通过在AR2,4上配置undo ttl  expiration pop,强行让ICMP TTL超时消息按第二种方式回复给AR1也是不行的,因为AR3也没有单独和AR4建立LSP

[AR1]tracert -v -q 1 -a 150.1.1.1 150.1.5.5
traceroute to 150.1.5.5(150.1.5.5), max hops: 30 ,packet length: 40,press CTRL_C to break
1 155.1.12.2 20 ms
2 *
3 155.1.34.4 20 ms
4 155.1.45.5 40 ms

 

 

 

 

第三步:(AR1->AR5)分析路由,标签,数据

  路由:

    在AR1上,通过手动设置静态路由,使得要去150.1.5.5,走下一跳155.1.12.2到达AR2;

    在AR2上,因为AR2是LSP:AR2->AR4的Ingress设备,需要手动设置LSP对应的FEC的本地路由表,且路由的下一跳与LSP指定的下一跳相同,使得LSP生效。另外因为AR2没有去往150.1.5.5的路由或标签,无法到达150.1.5.5,所以AR2设置去往150.1.5.5的下一跳是150.1.4.4,而AR2上由于配置了route recursive-lookup tunnel ,使得去往150.1.5.5的非标签公网路由,迭代到AR2-4之间的隧道

    在AR3上,无路由

    在AR4上,手动设置静态路由,使得要去150.1.5.5,走下一跳155.1.45.5

    在AR5上,手动设置静态路由,使得要去150.1.1.1,走下一跳155.1.45.4,进行回包

  标签:

    手动配置,无标签分发过程

  数据:

    首先,在AR1上根据路由去往155.1.12.2到达AR2

    然后,在AR2上根据去往150.1.5.5的路由得到要寻找下一跳150.1.4.4;而根据隧道迭代,打上301的标签传递给了155.1.23.3

    然后,在AR3上根据设置好的标签,把收到的301的标签替换为401的标签,并转发给155.1.34.4 

    最后,在AR4上根据设置好的标签,将401标签弹出,LSP隧道走完,查询IP路由表,根据AR4上的150.1.5.5的路由到达AR5

 

推荐阅读