• frrouting mpls sr


     各个节点的mpls初始化

    root@mpls4:~# cat mpls_init.sh 
    modprobe mpls_router
    modprobe mpls_iptunnel
    modprobe mpls_gso
    modprobe dummy
    cat >/etc/modules-load.d/mpls.conf <<EOF
    mpls_router
    mpls_iptunnel
    mpls_gso
    dummy
    EOF
    cat >/etc/sysctl.d/90-mpls-router.conf <<EOF
    net.ipv4.ip_forward=1
    net.ipv6.conf.all.forwarding=1
    net.ipv4.conf.all.rp_filter=0
    net.mpls.platform_labels=1048575
    net.ipv4.tcp_l3mdev_accept=1
    net.ipv4.udp_l3mdev_accept=1
    net.mpls.conf.lo.input=1
    EOF
    sysctl -p /etc/sysctl.d/90-mpls-router.conf

     mpls1 配置 

    root@mpls1:~# cat /etc/frr/frr.conf
    frr version 7.3.1
    frr defaults traditional
    hostname mpls1
    log syslog informational
    service integrated-vtysh-config
    !
    interface enp7s0
     ip address 172.16.0.1/30
     ip ospf area 0.0.0.0
    !
    interface enp8s0
     ip address 172.16.0.9/30
     ip ospf area 0.0.0.0
    !
    interface lo
     ip address 192.168.0.1/32
     ip ospf area 0.0.0.0
    !
    router ospf
     ospf router-id 192.168.0.1
     router-info area 0.0.0.0
     passive-interface lo
     capability opaque
     mpls-te on
     mpls-te router-address 192.168.0.1
     segment-routing on
     segment-routing global-block 16000 19999
     segment-routing node-msd 8
     segment-routing prefix 192.168.0.1/32 index 1001
    !
    line vty
    !
    log file /var/log/frr/frr.log
    !
    root@mpls1:~# 
    root@mpls1:~# cat mpls_sr.sh 
     sysctl -w net.ipv4.ip_forward=1
     sysctl -w net.ipv4.conf.all.rp_filter=0
     sysctl -w net.ipv4.conf.lo.rp_filter=0
     sysctl -w net.mpls.conf.enp7s0.input=1
     sysctl -w net.mpls.conf.enp8s0.input=1
     sysctl -w net.mpls.conf.lo.input=1
     sysctl -w net.mpls.platform_labels=1048575
    root@mpls1:~# ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet 192.168.0.1/32 brd 192.168.0.1 scope global lo
           valid_lft forever preferred_lft forever
        inet6 3000::11/128 scope global 
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 52:54:00:e5:30:19 brd ff:ff:ff:ff:ff:ff
        inet 192.168.122.2/24 scope global enp1s0
           valid_lft forever preferred_lft forever
    3: enp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 52:54:00:d9:52:82 brd ff:ff:ff:ff:ff:ff
        inet 172.16.0.1/30 brd 172.16.0.3 scope global enp7s0
           valid_lft forever preferred_lft forever
    4: enp8s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 52:54:00:ff:18:f4 brd ff:ff:ff:ff:ff:ff
        inet 172.16.0.9/30 brd 172.16.0.11 scope global enp8s0
           valid_lft forever preferred_lft forever
    root@mpls1:~#

     mpls2 配置 

    root@mpls2:~# ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet 192.168.0.2/32 brd 192.168.0.2 scope global lo
           valid_lft forever preferred_lft forever
        inet6 3000::22/128 scope global 
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 52:54:00:73:55:cd brd ff:ff:ff:ff:ff:ff
        inet 172.16.0.2/30 brd 172.16.0.3 scope global enp1s0
           valid_lft forever preferred_lft forever
        inet 192.168.123.2/24 scope global enp1s0
           valid_lft forever preferred_lft forever
    3: enp5s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 52:54:00:ea:64:6e brd ff:ff:ff:ff:ff:ff
        inet 172.16.0.5/30 brd 172.16.0.7 scope global enp5s0
           valid_lft forever preferred_lft forever
    4: enp6s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 52:54:00:d7:a1:de brd ff:ff:ff:ff:ff:ff
        inet 172.16.0.13/30 brd 172.16.0.15 scope global enp6s0
           valid_lft forever preferred_lft forever
    root@mpls2:~# cat /etc/frr/frr.conf
    frr version 7.3.1
    frr defaults traditional
    hostname mpls2
    log file /var/log/frr/ospfd.log
    log syslog informational
    service integrated-vtysh-config
    !
    interface enp1s0
     ip address 172.16.0.2/30
     ip ospf area 0.0.0.0
    !
    interface enp5s0
     ip address 172.16.0.5/30
     ip ospf area 0.0.0.0
    !
    interface enp6s0
     ip address 172.16.0.13/30
     ip ospf area 0.0.0.0
    !
    interface lo
     ip address 192.168.0.2/32
     ip ospf area 0.0.0.0
    !
    router ospf
     ospf router-id 192.168.0.2
     router-info area 0.0.0.0
     passive-interface lo
     capability opaque
     mpls-te on
     mpls-te router-address 192.168.0.2
     segment-routing on
     segment-routing global-block 16000 19999
     segment-routing node-msd 9 -----------可以不改
     segment-routing prefix 192.168.0.2/32 index 1002
    !
    line vty
    !
    log file /var/log/frr/frr.log
    !
    root@mpls2:~# 
    sysctl -w  net.ipv4.ip_forward=1
    sysctl -w  net.ipv4.conf.all.rp_filter=0
    sysctl -w  net.ipv4.conf.lo.rp_filter=0
    sysctl -w  net.mpls.conf.enp1s0.input=1
    sysctl -w  net.mpls.conf.enp5s0.input=1
    sysctl -w  net.mpls.conf.enp6s0.input=1
    sysctl -w  net.mpls.conf.lo.input=1
    sysctl -w  net.mpls.platform_labels=1048575

     mpls3 配置 

    root@mpls3:~# ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet 192.168.0.3/32 brd 192.168.0.3 scope global lo
           valid_lft forever preferred_lft forever
        inet6 3000::33/128 scope global 
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 52:54:00:5a:42:f2 brd ff:ff:ff:ff:ff:ff
        inet 172.16.0.6/30 brd 172.16.0.7 scope global enp1s0
           valid_lft forever preferred_lft forever
        inet 192.168.124.2/24 scope global enp1s0
           valid_lft forever preferred_lft forever
        inet 192.168.122.35/24 brd 192.168.122.255 scope global dynamic enp1s0
           valid_lft 3073sec preferred_lft 3073sec
    3: enp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 52:54:00:98:81:e8 brd ff:ff:ff:ff:ff:ff
        inet 172.16.0.17/30 brd 172.16.0.19 scope global enp7s0
           valid_lft forever preferred_lft forever
    root@mpls3:~# cat mpls_sr.sh 
    sysctl -w  net.ipv4.ip_forward=1
    sysctl -w  net.ipv4.conf.all.rp_filter=0
    sysctl -w  net.ipv4.conf.lo.rp_filter=0
    sysctl -w  net.mpls.conf.enp1s0.input=1
    sysctl -w  net.mpls.conf.enp7s0.input=1
    sysctl -w  net.mpls.conf.lo.input=1
    sysctl -w  net.mpls.platform_labels=1048575
    root@mpls3:~# 
    root@mpls3:~# cat /etc/frr/frr.conf
    frr version 7.3.1
    frr defaults traditional
    hostname mpls3
    log file /var/log/frr/ospfd.log
    log syslog informational
    service integrated-vtysh-config
    !
    interface enp1s0
     ip address 172.16.0.6/30
     ip ospf area 0.0.0.0
    !
    interface enp7s0
     ip address 172.16.0.17/30
     ip ospf area 0.0.0.0
    !
    interface lo
     ip address 192.168.0.3/32
     ip ospf area 0.0.0.0
    !
    router ospf
     ospf router-id 192.168.0.3
     passive-interface lo
     capability opaque
     mpls-te on
     mpls-te router-address 192.168.0.3
     segment-routing on
     segment-routing global-block 16000 19999
     segment-routing node-msd 10
     segment-routing prefix 192.168.0.3/32 index 1003
     router-info area
    !
    line vty
    !
    root@mpls3:~# 

     mpls4 配置 

    root@mpls4:~# ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet 192.168.0.4/32 brd 192.168.0.4 scope global lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 52:54:00:07:5e:47 brd ff:ff:ff:ff:ff:ff
        inet 172.16.0.10/30 brd 172.16.0.11 scope global enp1s0
           valid_lft forever preferred_lft forever
        inet 192.168.125.2/24 scope global enp1s0
           valid_lft forever preferred_lft forever
    3: enp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 52:54:00:2e:96:79 brd ff:ff:ff:ff:ff:ff
        inet 172.16.0.14/30 brd 172.16.0.15 scope global enp7s0
           valid_lft forever preferred_lft forever
    4: enp8s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 52:54:00:a1:92:7d brd ff:ff:ff:ff:ff:ff
        inet 172.16.0.18/30 brd 172.16.0.19 scope global enp8s0
           valid_lft forever preferred_lft forever
    root@mpls4:~# cat /etc/frr/frr.conf 
    # default to using syslog. /etc/rsyslog.d/45-frr.conf places the log
    # in /var/log/frr/frr.log
    
    frr version 7.3.1
    frr defaults traditional
    hostname mpls3
    log file /var/log/frr/ospfd.log
    log syslog informational
    service integrated-vtysh-config
    !
    interface enp1s0
     ip address 172.16.0.10/30
     ip ospf area 0.0.0.0
    !
    interface enp7s0
     ip address 172.16.0.14/30
     ip ospf area 0.0.0.0
    !
    interface enp8s0
     ip address 172.16.0.18/30
     ip ospf area 0.0.0.0
    !
    interface lo
     ip address 192.168.0.4/32
     ip ospf area 0.0.0.0
    !
    router ospf
     ospf router-id 192.168.0.4
     passive-interface lo
     capability opaque
     mpls-te on
     mpls-te router-address 192.168.0.4
     segment-routing on
     segment-routing global-block 16000 19999
     segment-routing node-msd 11
     segment-routing prefix 192.168.0.4/32 index 1004
     router-info area
    !
    line vty
    !
    root@mpls4:~# 
    root@mpls4:~# cat mpls_sr.sh 
    sysctl -w  net.ipv4.ip_forward=1
    sysctl -w  net.ipv4.conf.all.rp_filter=0
    sysctl -w  net.ipv4.conf.lo.rp_filter=0
    sysctl -w  net.mpls.conf.enp1s0.input=1
    sysctl -w  net.mpls.conf.enp7s0.input=1
    sysctl -w  net.mpls.conf.enp8s0.input=1
    sysctl -w  net.mpls.conf.lo.input=1
    sysctl -w  net.mpls.platform_labels=1048575
    root@mpls4:~# 

     

    mpls1# sh ip ospf database  segment-routing 
    
                    OSPF Segment Routing database for ID 192.168.0.1
    
    SR-Node: 192.168.0.4    SRGB (Size/Label): 4000/16000   Algorithm(s): SPF       MSD: 11
    
        Prefix or Link  Label In  Label Out       Node or Adj. SID  Interface          Nexthop
    ------------------  --------  ---------  ---------------------  ---------  ---------------
        192.168.0.4/32     17004        pop      SR Pfx (idx 1004)     enp8s0      172.16.0.10
    
    SR-Node: 192.168.0.2    SRGB (Size/Label): 4000/16000   Algorithm(s): SPF       MSD: 9
    
        Prefix or Link  Label In  Label Out       Node or Adj. SID  Interface          Nexthop
    ------------------  --------  ---------  ---------------------  ---------  ---------------
        192.168.0.2/32     17002        pop      SR Pfx (idx 1002)     enp7s0       172.16.0.2
    
    SR-Node: 192.168.0.1    SRGB (Size/Label): 4000/16000   Algorithm(s): SPF       MSD: 8
    
        Prefix or Link  Label In  Label Out       Node or Adj. SID  Interface          Nexthop
    ------------------  --------  ---------  ---------------------  ---------  ---------------
        192.168.0.1/32         0          0      SR Pfx (idx 1001)         lo      192.168.0.1
         172.16.0.1/32     50001        pop    SR Adj. (lbl 50001)     enp7s0       172.16.0.2
         172.16.0.1/32     50000        pop    SR Adj. (lbl 50000)     enp7s0       172.16.0.2
         172.16.0.9/32     50003        pop    SR Adj. (lbl 50003)     enp8s0      172.16.0.10
         172.16.0.9/32     50002        pop    SR Adj. (lbl 50002)     enp8s0      172.16.0.10
    
    SR-Node: 192.168.0.3    SRGB (Size/Label): 4000/16000   Algorithm(s): SPF       MSD: 10
    
        Prefix or Link  Label In  Label Out       Node or Adj. SID  Interface          Nexthop
    ------------------  --------  ---------  ---------------------  ---------  ---------------
        192.168.0.3/32     17003      17003      SR Pfx (idx 1003)     enp7s0       172.16.0.2 --------------mpls
    
    mpls1# sh mpls table
     Inbound Label  Type       Nexthop          Outbound Label  
     -----------------------------------------------------------
     16             LDP        2000:2001::1002  implicit-null   
     17             LDP        172.16.0.2       implicit-null   
     18             LDP        172.16.0.2       implicit-null   
     18             LDP        172.16.0.10      implicit-null   
     19             LDP        172.16.0.10      implicit-null   
     20             LDP        172.16.0.2       implicit-null   
     21             LDP        172.16.0.2       implicit-null   
     22             LDP        172.16.0.10      implicit-null   
     23             LDP        172.16.0.2       implicit-null   
     24             LDP        172.16.0.2       implicit-null   
     24             LDP        172.16.0.10      implicit-null   
     25             LDP        172.16.0.10      implicit-null   
     17002          SR (OSPF)  172.16.0.2       implicit-null   
     17003          SR (OSPF)  172.16.0.2       17003           
     17004          SR (OSPF)  172.16.0.10      implicit-null   
     50000          SR (OSPF)  172.16.0.2       implicit-null   
     50001          SR (OSPF)  172.16.0.2       implicit-null   
     50002          SR (OSPF)  172.16.0.10      implicit-null   
     50003          SR (OSPF)  172.16.0.10      implicit-null   
    
    mpls1# 

    mpls1

     ip route add 192.168.0.3/32 encap mpls 17004/17003 via 172.16.0.2 ------------------没有17002
    mpls1# sh mpls table
     Inbound Label  Type       Nexthop          Outbound Label  
     -----------------------------------------------------------
     16             LDP        2000:2001::1002  implicit-null   
     17             LDP        172.16.0.2       implicit-null   
     18             LDP        172.16.0.2       implicit-null   
     18             LDP        172.16.0.10      implicit-null   
     19             LDP        172.16.0.10      implicit-null   
     20             LDP        172.16.0.2       implicit-null   
     21             LDP        172.16.0.2       implicit-null   
     22             LDP        172.16.0.10      implicit-null   
     23             LDP        172.16.0.2       implicit-null   
     24             LDP        172.16.0.2       implicit-null   
     24             LDP        172.16.0.10      implicit-null   
     25             LDP        172.16.0.10      implicit-null   
     17002          SR (OSPF)  172.16.0.2       implicit-null   
     17003          SR (OSPF)  172.16.0.2       17003           
     17004          SR (OSPF)  172.16.0.10      implicit-null   --------------- encap 17004/17003  via 172.16.0.2 不会走172.16.0.10直接走172.16.0.10
     50000          SR (OSPF)  172.16.0.2       implicit-null   
     50001          SR (OSPF)  172.16.0.2       implicit-null   
     50002          SR (OSPF)  172.16.0.10      implicit-null   
     50003          SR (OSPF)  172.16.0.10      implicit-null   
    
    mpls1# sh ip ospf route
    ============ OSPF network routing table ============
    N    172.16.0.0/30         [1] area: 0.0.0.0
                               directly attached to enp7s0
    N    172.16.0.4/30         [2] area: 0.0.0.0
                               via 172.16.0.2, enp7s0
    N    172.16.0.8/30         [1] area: 0.0.0.0
                               directly attached to enp8s0
    N    172.16.0.12/30        [2] area: 0.0.0.0
                               via 172.16.0.2, enp7s0
                               via 172.16.0.10, enp8s0
    N    172.16.0.16/30        [2] area: 0.0.0.0
                               via 172.16.0.10, enp8s0
    N    192.168.0.1/32        [0] area: 0.0.0.0
                               directly attached to lo
    N    192.168.0.2/32        [1] area: 0.0.0.0
                               via 172.16.0.2, enp7s0
    N    192.168.0.3/32        [2] area: 0.0.0.0
                               via 172.16.0.2, enp7s0   -------------mpls2
                               via 172.16.0.10, enp8s0  ------------mpls4              
    N    192.168.0.4/32        [1] area: 0.0.0.0
                               via 172.16.0.10, enp8s0
    N    192.168.122.0/24      [3] area: 0.0.0.0
                               via 172.16.0.2, enp7s0
                               via 172.16.0.10, enp8s0
    N    192.168.123.0/24      [2] area: 0.0.0.0
                               via 172.16.0.2, enp7s0
    N    192.168.124.0/24      [3] area: 0.0.0.0
                               via 172.16.0.2, enp7s0
                               via 172.16.0.10, enp8s0
    N    192.168.125.0/24      [2] area: 0.0.0.0
                               via 172.16.0.10, enp8s0
    
    ============ OSPF router routing table =============
    
    ============ OSPF external routing table ===========
    
    
    mpls1# 
    root@mpls1:~# ip r
    172.16.0.0/30 dev enp7s0 proto kernel scope link src 172.16.0.1 
    172.16.0.4/30 via 172.16.0.2 dev enp7s0 proto ospf metric 20 
    172.16.0.8/30 dev enp8s0 proto kernel scope link src 172.16.0.9 
    172.16.0.12/30 proto ospf metric 20 
            nexthop via 172.16.0.2 dev enp7s0 weight 1 
            nexthop via 172.16.0.10 dev enp8s0 weight 1 
    172.16.0.16/30 via 172.16.0.10 dev enp8s0 proto ospf metric 20 
    192.168.0.2 via 172.16.0.2 dev enp7s0 proto ospf metric 20 
    192.168.0.3 proto ospf metric 20 
            nexthop  encap mpls  17003 via 172.16.0.2 dev enp7s0 weight 1 
            nexthop via 172.16.0.10 dev enp8s0 weight 1 
    192.168.0.4 via 172.16.0.10 dev enp8s0 proto ospf metric 20 
    192.168.122.0/24 dev enp1s0 proto kernel scope link src 192.168.122.2 
    192.168.123.0/24 via 172.16.0.2 dev enp7s0 proto ospf metric 20 
    192.168.124.0/24 proto ospf metric 20 
            nexthop via 172.16.0.2 dev enp7s0 weight 1 
            nexthop via 172.16.0.10 dev enp8s0 weight 1 
    192.168.125.0/24 via 172.16.0.10 dev enp8s0 proto ospf metric 20 
    root@mpls1:~# ip -M  r
    17 via inet 172.16.0.2 dev enp7s0 proto ldp 
    18 proto ldp 
            nexthop via inet 172.16.0.10 dev enp8s0 
            nexthop via inet 172.16.0.2 dev enp7s0 
    19 via inet 172.16.0.10 dev enp8s0 proto ldp 
    20 via inet 172.16.0.2 dev enp7s0 proto ldp 
    21 proto ldp 
            nexthop via inet 172.16.0.2 dev enp7s0 
            nexthop via inet 172.16.0.10 dev enp8s0 
    22 via inet 172.16.0.10 dev enp8s0 proto ldp 
    23 via inet 172.16.0.2 dev enp7s0 proto ldp 
    24 proto ldp 
            nexthop via inet 172.16.0.10 dev enp8s0 
            nexthop via inet 172.16.0.2 dev enp7s0 
    25 via inet 172.16.0.10 dev enp8s0 proto ldp 
    17002 via inet 172.16.0.2 dev enp7s0 proto ospf 
    17003 as to 17003 via inet 172.16.0.2 dev enp7s0 proto ospf 
    17004 via inet 172.16.0.10 dev enp8s0 proto ospf 
    50000 via inet 172.16.0.10 dev enp8s0 proto ospf 
    50001 via inet 172.16.0.10 dev enp8s0 proto ospf 
    50002 via inet 172.16.0.2 dev enp7s0 proto ospf 
    50003 via inet 172.16.0.2 dev enp7s0 proto ospf 
    50008 via inet 172.16.0.10 dev enp8s0 proto ospf 
    50009 via inet 172.16.0.10 dev enp8s0 proto ospf 
    root@mpls1:~# 

    mpls3

    ip route add 192.168.0.1/32 encap mpls 17002/17001 via 172.16.0.18
    root@mpls3:~# ip r
    default via 192.168.122.1 dev enp1s0 proto dhcp src 192.168.122.35 metric 100 
    172.16.0.0/30 via 172.16.0.5 dev enp1s0 proto ospf metric 20 
    172.16.0.4/30 dev enp1s0 proto kernel scope link src 172.16.0.6 
    172.16.0.8/30 via 172.16.0.18 dev enp7s0 proto ospf metric 20 
    172.16.0.12/30 proto ospf metric 20 
            nexthop via 172.16.0.5 dev enp1s0 weight 1 
            nexthop via 172.16.0.18 dev enp7s0 weight 1 
    172.16.0.16/30 dev enp7s0 proto kernel scope link src 172.16.0.17 
    192.168.0.1  encap mpls  17002/17001 via 172.16.0.18 dev enp7s0  ----------------------
    192.168.0.2 via 172.16.0.5 dev enp1s0 proto ospf metric 20 
    192.168.0.4 via 172.16.0.18 dev enp7s0 proto ospf metric 20 
    192.168.122.0/24 dev enp1s0 proto kernel scope link src 192.168.122.35 
    192.168.122.1 dev enp1s0 proto dhcp scope link src 192.168.122.35 metric 100 
    192.168.123.0/24 via 172.16.0.5 dev enp1s0 proto ospf metric 20 
    192.168.124.0/24 dev enp1s0 proto kernel scope link src 192.168.124.2 
    192.168.125.0/24 via 172.16.0.18 dev enp7s0 proto ospf metric 20 
    root@mpls3:~# ip -M  r
    17 via inet 172.16.0.5 dev enp1s0 proto ldp 
    18 via inet 172.16.0.18 dev enp7s0 proto ldp 
    19 proto ldp 
            nexthop via inet 172.16.0.18 dev enp7s0 
            nexthop via inet 172.16.0.5 dev enp1s0 
    20 via inet 172.16.0.18 dev enp7s0 proto ldp 
    21 via inet 172.16.0.5 dev enp1s0 proto ldp 
    22 via inet 172.16.0.18 dev enp7s0 proto ldp 
    23 via inet 172.16.0.5 dev enp1s0 proto ldp 
    24 via inet 172.16.0.18 dev enp7s0 proto ldp 
    17001 as to 17001 via inet 172.16.0.5 dev enp1s0 proto ospf 
    17002 via inet 172.16.0.5 dev enp1s0 proto ospf 
    17004 via inet 172.16.0.18 dev enp7s0 proto ospf 
    50000 via inet 172.16.0.18 dev enp7s0 proto ospf 
    50001 via inet 172.16.0.18 dev enp7s0 proto ospf 
    50002 via inet 172.16.0.5 dev enp1s0 proto ospf 
    50003 via inet 172.16.0.5 dev enp1s0 proto ospf 
    50004 via inet 192.168.122.164 dev enp1s0 proto ospf 
    50005 via inet 192.168.122.164 dev enp1s0 proto ospf 
    50006 via inet 172.16.0.18 dev enp7s0 proto ospf 
    50007 via inet 172.16.0.18 dev enp7s0 proto ospf 
    root@mpls3:~# 

    mpls1 ping

    root@mpls1:~# ping 192.168.0.3 -I 192.168.0.1
    PING 192.168.0.3 (192.168.0.3) from 192.168.0.1 : 56(84) bytes of data.
    64 bytes from 192.168.0.3: icmp_seq=1 ttl=63 time=0.328 ms
    64 bytes from 192.168.0.3: icmp_seq=2 ttl=63 time=0.287 ms
    64 bytes from 192.168.0.3: icmp_seq=3 ttl=63 time=0.239 ms
    64 bytes from 192.168.0.3: icmp_seq=4 ttl=63 time=0.282 ms
    ^C
    --- 192.168.0.3 ping statistics ---
    4 packets transmitted, 4 received, 0% packet loss, time 3057ms
    rtt min/avg/max/mdev = 0.239/0.284/0.328/0.031 ms
    root@mpls1:~# 

    root@mpls1:~# ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    valid_lft forever preferred_lft forever
    inet 192.168.0.1/32 brd 192.168.0.1 scope global lo
    valid_lft forever preferred_lft forever
    inet6 3000::11/128 scope global
    valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
    valid_lft forever preferred_lft forever
    2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:e5:30:19 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.2/24 scope global enp1s0
    valid_lft forever preferred_lft forever
    3: enp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:d9:52:82 brd ff:ff:ff:ff:ff:ff
    inet 172.16.0.1/30 brd 172.16.0.3 scope global enp7s0
    valid_lft forever preferred_lft forever
    4: enp8s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:ff:18:f4 brd ff:ff:ff:ff:ff:ff
    inet 172.16.0.9/30 brd 172.16.0.11 scope global enp8s0
    valid_lft forever preferred_lft forever


    root@mpls1:~# tcpdump -i enp7s0 "mpls 17004 && mpls 17003" -env -------------------------mpls封装
    tcpdump: listening on enp7s0, link-type EN10MB (Ethernet), capture size 262144 bytes
    14:17:30.004653 52:54:00:d9:52:82 > 52:54:00:73:55:cd, ethertype MPLS unicast (0x8847), length 106: MPLS (label 17004, exp 0, ttl 64)
    (label 17003, exp 0, [S], ttl 64)
    (tos 0x0, ttl 64, id 23238, offset 0, flags [DF], proto ICMP (1), length 84)
    192.168.0.1 > 192.168.0.3: ICMP echo request, id 16251, seq 29, length 64
    14:17:31.024645 52:54:00:d9:52:82 > 52:54:00:73:55:cd, ethertype MPLS unicast (0x8847), length 106: MPLS (label 17004, exp 0, ttl 64)
    (label 17003, exp 0, [S], ttl 64)
    (tos 0x0, ttl 64, id 23300, offset 0, flags [DF], proto ICMP (1), length 84)
    192.168.0.1 > 192.168.0.3: ICMP echo request, id 16251, seq 30, length 64
    14:17:32.048636 52:54:00:d9:52:82 > 52:54:00:73:55:cd, ethertype MPLS unicast (0x8847), length 106: MPLS (label 17004, exp 0, ttl 64)
    (label 17003, exp 0, [S], ttl 64)
    (tos 0x0, ttl 64, id 23378, offset 0, flags [DF], proto ICMP (1), length 84)
    192.168.0.1 > 192.168.0.3: ICMP echo request, id 16251, seq 31, length 64
    14:17:33.072636 52:54:00:d9:52:82 > 52:54:00:73:55:cd, ethertype MPLS unicast (0x8847), length 106: MPLS (label 17004, exp 0, ttl 64)
    (label 17003, exp 0, [S], ttl 64)
    (tos 0x0, ttl 64, id 23396, offset 0, flags [DF], proto ICMP (1), length 84)
    192.168.0.1 > 192.168.0.3: ICMP echo request, id 16251, seq 32, length 64
    ^C
    4 packets captured
    4 packets received by filter
    0 packets dropped by kernel
    root@mpls1:~#





    root@mpls2:~# ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    valid_lft forever preferred_lft forever
    inet 192.168.0.2/32 brd 192.168.0.2 scope global lo
    valid_lft forever preferred_lft forever
    inet6 3000::22/128 scope global
    valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
    valid_lft forever preferred_lft forever
    2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:73:55:cd brd ff:ff:ff:ff:ff:ff
    inet 172.16.0.2/30 brd 172.16.0.3 scope global enp1s0
    valid_lft forever preferred_lft forever
    inet 192.168.123.2/24 scope global enp1s0
    valid_lft forever preferred_lft forever
    3: enp5s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:ea:64:6e brd ff:ff:ff:ff:ff:ff
    inet 172.16.0.5/30 brd 172.16.0.7 scope global enp5s0
    valid_lft forever preferred_lft forever
    4: enp6s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:d7:a1:de brd ff:ff:ff:ff:ff:ff
    inet 172.16.0.13/30 brd 172.16.0.15 scope global enp6s0
    valid_lft forever preferred_lft forever

    root@mpls2:~# tcpdump -i enp1s0  "mpls 17004 && mpls 17003" -env
    tcpdump: listening on enp1s0, link-type EN10MB (Ethernet), capture size 262144 bytes
    14:15:10.690940 52:54:00:d9:52:82 > 52:54:00:73:55:cd, ethertype MPLS unicast (0x8847), length 106: MPLS (label 17004, exp 0, ttl 64)
            (label 17003, exp 0, [S], ttl 64)
            (tos 0x0, ttl 64, id 16498, offset 0, flags [DF], proto ICMP (1), length 84)
        192.168.0.1 > 192.168.0.3: ICMP echo request, id 16110, seq 1, length 64
    14:15:11.700321 52:54:00:d9:52:82 > 52:54:00:73:55:cd, ethertype MPLS unicast (0x8847), length 106: MPLS (label 17004, exp 0, ttl 64)
            (label 17003, exp 0, [S], ttl 64)
            (tos 0x0, ttl 64, id 16712, offset 0, flags [DF], proto ICMP (1), length 84)
        192.168.0.1 > 192.168.0.3: ICMP echo request, id 16110, seq 2, length 64
    14:15:12.724323 52:54:00:d9:52:82 > 52:54:00:73:55:cd, ethertype MPLS unicast (0x8847), length 106: MPLS (label 17004, exp 0, ttl 64)
            (label 17003, exp 0, [S], ttl 64)
            (tos 0x0, ttl 64, id 16837, offset 0, flags [DF], proto ICMP (1), length 84)
        192.168.0.1 > 192.168.0.3: ICMP echo request, id 16110, seq 3, length 64
    14:15:13.748338 52:54:00:d9:52:82 > 52:54:00:73:55:cd, ethertype MPLS unicast (0x8847), length 106: MPLS (label 17004, exp 0, ttl 64)
            (label 17003, exp 0, [S], ttl 64)
            (tos 0x0, ttl 64, id 16988, offset 0, flags [DF], proto ICMP (1), length 84)
        192.168.0.1 > 192.168.0.3: ICMP echo request, id 16110, seq 4, length 64
    root@mpls2:~# tcpdump -i enp1s0  "mpls 17004 && mpls 17003" -env                     
    tcpdump: listening on enp1s0, link-type EN10MB (Ethernet), capture size 262144 bytes
    14:35:07.860349 52:54:00:d9:52:82 > 52:54:00:73:55:cd, ethertype MPLS unicast (0x8847), length 106: MPLS (label 17004, exp 0, ttl 64)
            (label 17003, exp 0, [S], ttl 64)
            (tos 0x0, ttl 64, id 30618, offset 0, flags [DF], proto ICMP (1), length 84)
        192.168.0.1 > 192.168.0.3: ICMP echo request, id 16265, seq 297, length 64
    14:35:09.876353 52:54:00:d9:52:82 > 52:54:00:73:55:cd, ethertype MPLS unicast (0x8847), length 106: MPLS (label 17004, exp 0, ttl 64)
            (label 17003, exp 0, [S], ttl 64)
            (tos 0x0, ttl 64, id 30955, offset 0, flags [DF], proto ICMP (1), length 84)
        192.168.0.1 > 192.168.0.3: ICMP echo request, id 16265, seq 298, length 64
    ^C
    2 packets captured
    2 packets received by filter
    0 packets dropped by kernel
    root@mpls2:~# tcpdump -i enp6s0  "mpls 17004 && mpls 17003" -env
    tcpdump: listening on enp6s0, link-type EN10MB (Ethernet), capture size 262144 bytes
    ^C
    0 packets captured
    0 packets received by filter
    0 packets dropped by kernel
    root@mpls2:~# tcpdump -i enp6s0  "17003" -env
    tcpdump: syntax error in filter expression: syntax error
    root@mpls2:~# tcpdump -i enp6s0  "mpls 17003" -env ---------------剥掉了17004
    tcpdump: listening on enp6s0, link-type EN10MB (Ethernet), capture size 262144 bytes
    14:35:50.196369 52:54:00:d7:a1:de > 52:54:00:2e:96:79, ethertype MPLS unicast (0x8847), length 102: MPLS (label 17003, exp 0, [S], ttl 64)
            (tos 0x0, ttl 64, id 35694, offset 0, flags [DF], proto ICMP (1), length 84)
        192.168.0.1 > 192.168.0.3: ICMP echo request, id 16265, seq 318, length 64
    14:35:52.212345 52:54:00:d7:a1:de > 52:54:00:2e:96:79, ethertype MPLS unicast (0x8847), length 102: MPLS (label 17003, exp 0, [S], ttl 64)
            (tos 0x0, ttl 64, id 35904, offset 0, flags [DF], proto ICMP (1), length 84)
        192.168.0.1 > 192.168.0.3: ICMP echo request, id 16265, seq 319, length 64
    14:35:54.228351 52:54:00:d7:a1:de > 52:54:00:2e:96:79, ethertype MPLS unicast (0x8847), length 102: MPLS (label 17003, exp 0, [S], ttl 64)
            (tos 0x0, ttl 64, id 35931, offset 0, flags [DF], proto ICMP (1), length 84)
        192.168.0.1 > 192.168.0.3: ICMP echo request, id 16265, seq 320, length 64
    ^C
    3 packets captured
    3 packets received by filter
    0 packets dropped by kernel
    root@mpls2:~# 
    root@mpls4:~# tcpdump -i enp7s0  "mpls 17004 && mpls 17003" -env
    tcpdump: listening on enp7s0, link-type EN10MB (Ethernet), capture size 262144 bytes
    ^C
    0 packets captured
    0 packets received by filter
    0 packets dropped by kernel

     从enp6s0进入然后从enp7s0 输出

    root@mpls4:~# tcpdump -i enp7s0  "mpls 17004" -env
    tcpdump: listening on enp7s0, link-type EN10MB (Ethernet), capture size 262144 bytes
    ^C
    0 packets captured
    0 packets received by filter
    0 packets dropped by kernel
    root@mpls4:~# tcpdump -i enp7s0  "mpls 17003" -env
    tcpdump: listening on enp7s0, link-type EN10MB (Ethernet), capture size 262144 bytes
    14:26:08.009678 52:54:00:d7:a1:de > 52:54:00:2e:96:79, ethertype MPLS unicast (0x8847), length 102: MPLS (label 17003, exp 0, [S], ttl 64) --------剥掉了一层mpls17004
            (tos 0x0, ttl 64, id 24550, offset 0, flags [DF], proto ICMP (1), length 84)
        192.168.0.1 > 192.168.0.3: ICMP echo request, id 16265, seq 25, length 64
    14:26:10.025675 52:54:00:d7:a1:de > 52:54:00:2e:96:79, ethertype MPLS unicast (0x8847), length 102: MPLS (label 17003, exp 0, [S], ttl 64)
            (tos 0x0, ttl 64, id 24710, offset 0, flags [DF], proto ICMP (1), length 84)
        192.168.0.1 > 192.168.0.3: ICMP echo request, id 16265, seq 26, length 64
    14:26:12.041695 52:54:00:d7:a1:de > 52:54:00:2e:96:79, ethertype MPLS unicast (0x8847), length 102: MPLS (label 17003, exp 0, [S], ttl 64)
            (tos 0x0, ttl 64, id 25132, offset 0, flags [DF], proto ICMP (1), length 84)
        192.168.0.1 > 192.168.0.3: ICMP echo request, id 16265, seq 27, length 64
    14:26:14.057734 52:54:00:d7:a1:de > 52:54:00:2e:96:79, ethertype MPLS unicast (0x8847), length 102: MPLS (label 17003, exp 0, [S], ttl 64)
            (tos 0x0, ttl 64, id 25350, offset 0, flags [DF], proto ICMP (1), length 84)
        192.168.0.1 > 192.168.0.3: ICMP echo request, id 16265, seq 28, length 64
    ^C
    4 packets captured
    4 packets received by filter
    0 packets dropped by kernel
    root@mpls4:~#
    mpls2# sh mpls table
     Inbound Label  Type       Nexthop          Outbound Label  
     -----------------------------------------------------------
     16             LDP        2000:2002::1004  implicit-null   
     17             LDP        172.16.0.1       implicit-null   
     17             LDP        172.16.0.14      implicit-null   
     18             LDP        172.16.0.14      implicit-null   
     18             LDP        172.16.0.6       implicit-null   
     19             LDP        172.16.0.1       implicit-null   
     20             LDP        172.16.0.6       implicit-null   
     21             LDP        172.16.0.14      implicit-null   
     22             LDP        172.16.0.6       implicit-null   
     23             LDP        172.16.0.6       implicit-null   
     24             LDP        172.16.0.14      implicit-null   
     17001          SR (OSPF)  172.16.0.1       implicit-null   
     17003          SR (OSPF)  172.16.0.6       implicit-null   
     17004          SR (OSPF)  172.16.0.14      implicit-null    ---------------剥掉mpls 17004然后转发给172.0.14
     50000          SR (OSPF)  172.16.0.6       implicit-null   
     50001          SR (OSPF)  172.16.0.6       implicit-null   
     50002          SR (OSPF)  172.16.0.14      implicit-null   
     50003          SR (OSPF)  172.16.0.14      implicit-null   
     50004          SR (OSPF)  172.16.0.1       implicit-null   
     50005          SR (OSPF)  172.16.0.1       implicit-null   
    
    mpls2# 
    root@mpls4:~# tcpdump -i enp8s0  icmp -env
    tcpdump: listening on enp8s0, link-type EN10MB (Ethernet), capture size 262144 bytes
    14:27:44.778279 52:54:00:a1:92:7d > 52:54:00:98:81:e8, ethertype IPv4 (0x0800), length 98: (tos 0x0, ttl 63, id 37628, offset 0, flags [DF], proto ICMP (1), length 84)
        192.168.0.1 > 192.168.0.3: ICMP echo request, id 16265, seq 73, length 64
    14:27:46.794238 52:54:00:a1:92:7d > 52:54:00:98:81:e8, ethertype IPv4 (0x0800), length 98: (tos 0x0, ttl 63, id 37914, offset 0, flags [DF], proto ICMP (1), length 84)
        192.168.0.1 > 192.168.0.3: ICMP echo request, id 16265, seq 74, length 64
    14:27:48.810252 52:54:00:a1:92:7d > 52:54:00:98:81:e8, ethertype IPv4 (0x0800), length 98: (tos 0x0, ttl 63, id 38184, offset 0, flags [DF], proto ICMP (1), length 84)
        192.168.0.1 > 192.168.0.3: ICMP echo request, id 16265, seq 75, length 64
    ^C
    3 packets captured
    3 packets received by filter
    0 packets dropped by kernel
    root@mpls4:~# tcpdump -i enp8s0  "mpls 17003" -env --------------报文从mpl4 的 enp7s0进入,剥掉mpls17003然后从enp8s0输出
     tcpdump: listening on enp8s0, link-type EN10MB (Ethernet), capture size 262144 bytes ^C 0 packets captured 0 packets received by filter 0 packets dropped by kernel root@mpls4:~#
    root@mpls4:~# ip -M r
    16 proto ldp 
            nexthop via inet 172.16.0.9 dev enp1s0 
            nexthop via inet 172.16.0.13 dev enp7s0 
    17 proto ldp 
            nexthop via inet 172.16.0.17 dev enp8s0 
            nexthop via inet 172.16.0.13 dev enp7s0 
    18 via inet 172.16.0.9 dev enp1s0 proto ldp 
    19 via inet 172.16.0.13 dev enp7s0 proto ldp 
    20 via inet 172.16.0.17 dev enp8s0 proto ldp 
    21 via inet 172.16.0.13 dev enp7s0 proto ldp 
    22 via inet 172.16.0.17 dev enp8s0 proto ldp 
    23 via inet 172.16.0.17 dev enp8s0 proto ldp 
    17001 via inet 172.16.0.9 dev enp1s0 proto ospf 
    17002 via inet 172.16.0.13 dev enp7s0 proto ospf 
    17003 via inet 172.16.0.17 dev enp8s0 proto ospf 
    50000 via inet 172.16.0.13 dev enp7s0 proto ospf 
    50001 via inet 172.16.0.13 dev enp7s0 proto ospf 
    50002 via inet 172.16.0.9 dev enp1s0 proto ospf 
    50003 via inet 172.16.0.9 dev enp1s0 proto ospf 
    50004 via inet 172.16.0.17 dev enp8s0 proto ospf 
    50005 via inet 172.16.0.17 dev enp8s0 proto ospf 
    50006 via inet 172.16.0.17 dev enp8s0 proto ospf 
    50007 via inet 172.16.0.17 dev enp8s0 proto ospf
    mpls4# show ip ospf database segment-routing
    
                    OSPF Segment Routing database for ID 192.168.0.4
    
    SR-Node: 192.168.0.4    SRGB (Size/Label): 4000/16000   Algorithm(s): SPF       MSD: 11
    
        Prefix or Link  Label In  Label Out       Node or Adj. SID  Interface          Nexthop
    ------------------  --------  ---------  ---------------------  ---------  ---------------
        192.168.0.4/32         0          0      SR Pfx (idx 1004)         lo      192.168.0.4
        172.16.0.14/32     50001        pop    SR Adj. (lbl 50001)     enp7s0      172.16.0.13
        172.16.0.14/32     50000        pop    SR Adj. (lbl 50000)     enp7s0      172.16.0.13
        172.16.0.10/32     50003        pop    SR Adj. (lbl 50003)     enp1s0       172.16.0.9
        172.16.0.10/32     50002        pop    SR Adj. (lbl 50002)     enp1s0       172.16.0.9
        172.16.0.18/32     50005        pop    SR Adj. (lbl 50005)     enp8s0      172.16.0.17
        172.16.0.18/32     50004        pop    SR Adj. (lbl 50004)     enp8s0      172.16.0.17
    
    SR-Node: 192.168.0.2    SRGB (Size/Label): 4000/16000   Algorithm(s): SPF       MSD: 9
    
        Prefix or Link  Label In  Label Out       Node or Adj. SID  Interface          Nexthop
    ------------------  --------  ---------  ---------------------  ---------  ---------------
        192.168.0.2/32     17002        pop      SR Pfx (idx 1002)     enp7s0      172.16.0.13
    
    SR-Node: 192.168.0.1    SRGB (Size/Label): 4000/16000   Algorithm(s): SPF       MSD: 8
    
        Prefix or Link  Label In  Label Out       Node or Adj. SID  Interface          Nexthop
    ------------------  --------  ---------  ---------------------  ---------  ---------------
        192.168.0.1/32     17001        pop      SR Pfx (idx 1001)     enp1s0       172.16.0.9
    
    SR-Node: 192.168.0.3    SRGB (Size/Label): 4000/16000   Algorithm(s): SPF       MSD: 10
    
        Prefix or Link  Label In  Label Out       Node or Adj. SID  Interface          Nexthop
    ------------------  --------  ---------  ---------------------  ---------  ---------------
        192.168.0.3/32     17003        pop      SR Pfx (idx 1003)     enp8s0      172.16.0.17
    
    mpls4# show mpls table
     Inbound Label  Type       Nexthop      Outbound Label  
     -------------------------------------------------------
     16             LDP        172.16.0.13  implicit-null   
     16             LDP        172.16.0.9   implicit-null   
     17             LDP        172.16.0.13  implicit-null   
     17             LDP        172.16.0.17  implicit-null   
     18             LDP        172.16.0.9   implicit-null   
     19             LDP        172.16.0.13  implicit-null   
     20             LDP        172.16.0.17  implicit-null   
     21             LDP        172.16.0.13  implicit-null   
     22             LDP        172.16.0.17  implicit-null   
     23             LDP        172.16.0.17  implicit-null   
     17001          SR (OSPF)  172.16.0.9   implicit-null   
     17002          SR (OSPF)  172.16.0.13  implicit-null   
     17003          SR (OSPF)  172.16.0.17  implicit-null  ---------------------- 剥掉mpls 17003  
     50000          SR (OSPF)  172.16.0.13  implicit-null   
     50001          SR (OSPF)  172.16.0.13  implicit-null   
     50002          SR (OSPF)  172.16.0.9   implicit-null   
     50003          SR (OSPF)  172.16.0.9   implicit-null   
     50004          SR (OSPF)  172.16.0.17  implicit-null   
     50005          SR (OSPF)  172.16.0.17  implicit-null   
    
    mpls4# 

    mpls3的reply报文

    root@mpls3:~# tcpdump -i enp7s0 'mpls 17002&&mpls 17001' -env   -------------封装两层mpls
    tcpdump: listening on enp7s0, link-type EN10MB (Ethernet), capture size 262144 bytes
    15:16:58.384963 52:54:00:98:81:e8 > 52:54:00:a1:92:7d, ethertype MPLS unicast (0x8847), length 106: MPLS (label 17002, exp 0, ttl 64)
            (label 17001, exp 0, [S], ttl 64)
            (tos 0x0, ttl 64, id 2766, offset 0, flags [none], proto ICMP (1), length 84)
        192.168.0.3 > 192.168.0.1: ICMP echo reply, id 16633, seq 38, length 64
    15:17:00.400964 52:54:00:98:81:e8 > 52:54:00:a1:92:7d, ethertype MPLS unicast (0x8847), length 106: MPLS (label 17002, exp 0, ttl 64)
            (label 17001, exp 0, [S], ttl 64)
            (tos 0x0, ttl 64, id 3044, offset 0, flags [none], proto ICMP (1), length 84)
        192.168.0.3 > 192.168.0.1: ICMP echo reply, id 16633, seq 39, length 64
    15:17:02.416999 52:54:00:98:81:e8 > 52:54:00:a1:92:7d, ethertype MPLS unicast (0x8847), length 106: MPLS (label 17002, exp 0, ttl 64)
            (label 17001, exp 0, [S], ttl 64)
            (tos 0x0, ttl 64, id 3261, offset 0, flags [none], proto ICMP (1), length 84)
        192.168.0.3 > 192.168.0.1: ICMP echo reply, id 16633, seq 40, length 64
    ^C
    3 packets captured
    3 packets received by filter
    0 packets dropped by kernel
    root@mpls3:~# 
    3: enp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 52:54:00:2e:96:79 brd ff:ff:ff:ff:ff:ff
        inet 172.16.0.14/30 brd 172.16.0.15 scope global enp7s0
           valid_lft forever preferred_lft forever
    4: enp8s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 52:54:00:a1:92:7d brd ff:ff:ff:ff:ff:ff
        inet 172.16.0.18/30 brd 172.16.0.19 scope global enp8s0
           valid_lft forever preferred_lft forever
    root@mpls4:~# tcpdump -i enp8s0 'mpls 17002&&mpls 17001' -env             --------------输入
    tcpdump: listening on enp8s0, link-type EN10MB (Ethernet), capture size 262144 bytes
    15:18:23.803797 52:54:00:98:81:e8 > 52:54:00:a1:92:7d, ethertype MPLS unicast (0x8847), length 106: MPLS (label 17002, exp 0, ttl 64)
            (label 17001, exp 0, [S], ttl 64)
            (tos 0x0, ttl 64, id 13186, offset 0, flags [none], proto ICMP (1), length 84)
        192.168.0.3 > 192.168.0.1: ICMP echo reply, id 16633, seq 76, length 64
    15:18:25.819798 52:54:00:98:81:e8 > 52:54:00:a1:92:7d, ethertype MPLS unicast (0x8847), length 106: MPLS (label 17002, exp 0, ttl 64)
            (label 17001, exp 0, [S], ttl 64)
            (tos 0x0, ttl 64, id 13612, offset 0, flags [none], proto ICMP (1), length 84)
        192.168.0.3 > 192.168.0.1: ICMP echo reply, id 16633, seq 77, length 64
    ^C
    2 packets captured
    2 packets received by filter
    0 packets dropped by kernel
    root@mpls4:~# ip -M r
    16 proto ldp 
            nexthop via inet 172.16.0.13 dev enp7s0 
            nexthop via inet 172.16.0.9 dev enp1s0 
    17 proto ldp 
            nexthop via inet 172.16.0.13 dev enp7s0 
            nexthop via inet 172.16.0.17 dev enp8s0 
    18 via inet 172.16.0.9 dev enp1s0 proto ldp 
    19 via inet 172.16.0.13 dev enp7s0 proto ldp 
    20 via inet 172.16.0.17 dev enp8s0 proto ldp 
    21 via inet 172.16.0.13 dev enp7s0 proto ldp 
    22 via inet 172.16.0.17 dev enp8s0 proto ldp 
    23 via inet 172.16.0.17 dev enp8s0 proto ldp 
    17001 via inet 172.16.0.9 dev enp1s0 proto ospf 
    17002 via inet 172.16.0.13 dev enp7s0 proto ospf 
    17003 via inet 172.16.0.17 dev enp8s0 proto ospf 
    50000 via inet 172.16.0.13 dev enp7s0 proto ospf 
    50001 via inet 172.16.0.13 dev enp7s0 proto ospf 
    50002 via inet 172.16.0.9 dev enp1s0 proto ospf 
    50003 via inet 172.16.0.9 dev enp1s0 proto ospf 
    50004 via inet 172.16.0.17 dev enp8s0 proto ospf 
    50005 via inet 172.16.0.17 dev enp8s0 proto ospf 
    50006 via inet 172.16.0.17 dev enp8s0 proto ospf 
    50007 via inet 172.16.0.17 dev enp8s0 proto ospf 
    root@mpls4:~# tcpdump -i enp7s0 'mpls 17001' -env ----------------剥掉170002,输出
    tcpdump: listening on enp7s0, link-type EN10MB (Ethernet), capture size 262144 bytes
    15:18:52.027962 52:54:00:2e:96:79 > 52:54:00:d7:a1:de, ethertype MPLS unicast (0x8847), length 102: MPLS (label 17001, exp 0, [S], ttl 64)
            (tos 0x0, ttl 64, id 16320, offset 0, flags [none], proto ICMP (1), length 84)
        192.168.0.3 > 192.168.0.1: ICMP echo reply, id 16633, seq 90, length 64
    15:18:54.043898 52:54:00:2e:96:79 > 52:54:00:d7:a1:de, ethertype MPLS unicast (0x8847), length 102: MPLS (label 17001, exp 0, [S], ttl 64)
            (tos 0x0, ttl 64, id 16620, offset 0, flags [none], proto ICMP (1), length 84)
        192.168.0.3 > 192.168.0.1: ICMP echo reply, id 16633, seq 91, length 64
    ^C
    2 packets captured
    2 packets received by filter
    0 packets dropped by kernel
    root@mpls4:~# 
    mpls4# show mpls table
     Inbound Label  Type       Nexthop      Outbound Label  
     -------------------------------------------------------
     16             LDP        172.16.0.9   implicit-null   
     16             LDP        172.16.0.13  implicit-null   
     17             LDP        172.16.0.17  implicit-null   
     17             LDP        172.16.0.13  implicit-null   
     18             LDP        172.16.0.9   implicit-null   
     19             LDP        172.16.0.13  implicit-null   
     20             LDP        172.16.0.17  implicit-null   
     21             LDP        172.16.0.13  implicit-null   
     22             LDP        172.16.0.17  implicit-null   
     23             LDP        172.16.0.17  implicit-null   
     17001          SR (OSPF)  172.16.0.9   implicit-null   
     17002          SR (OSPF)  172.16.0.13  implicit-null   
     17003          SR (OSPF)  172.16.0.17  implicit-null   
     50000          SR (OSPF)  172.16.0.13  implicit-null   
     50001          SR (OSPF)  172.16.0.13  implicit-null   
     50002          SR (OSPF)  172.16.0.9   implicit-null   
     50003          SR (OSPF)  172.16.0.9   implicit-null   
     50004          SR (OSPF)  172.16.0.17  implicit-null   
     50005          SR (OSPF)  172.16.0.17  implicit-null   
    
    mpls4# 
    4: enp6s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 52:54:00:d7:a1:de brd ff:ff:ff:ff:ff:ff
        inet 172.16.0.13/30 brd 172.16.0.15 scope global enp6s0
           valid_lft forever preferred_lft forever
    root@mpls2:~# tcpdump -i enp6s0  "mpls 17002" -env
    tcpdump: listening on enp6s0, link-type EN10MB (Ethernet), capture size 262144 bytes
    ^C
    0 packets captured
    0 packets received by filter
    0 packets dropped by kernel
    root@mpls2:~# tcpdump -i enp6s0  "mpls 17001" -env           
    tcpdump: listening on enp6s0, link-type EN10MB (Ethernet), capture size 262144 bytes
    15:21:30.836497 52:54:00:2e:96:79 > 52:54:00:d7:a1:de, ethertype MPLS unicast (0x8847), length 102: MPLS (label 17001, exp 0, [S], ttl 64)
            (tos 0x0, ttl 64, id 38056, offset 0, flags [none], proto ICMP (1), length 84)
        192.168.0.3 > 192.168.0.1: ICMP echo reply, id 16633, seq 173, length 64
    15:21:32.852499 52:54:00:2e:96:79 > 52:54:00:d7:a1:de, ethertype MPLS unicast (0x8847), length 102: MPLS (label 17001, exp 0, [S], ttl 64)
            (tos 0x0, ttl 64, id 38109, offset 0, flags [none], proto ICMP (1), length 84)
        192.168.0.3 > 192.168.0.1: ICMP echo reply, id 16633, seq 174, length 64
    15:21:34.868527 52:54:00:2e:96:79 > 52:54:00:d7:a1:de, ethertype MPLS unicast (0x8847), length 102: MPLS (label 17001, exp 0, [S], ttl 64)
            (tos 0x0, ttl 64, id 38491, offset 0, flags [none], proto ICMP (1), length 84)
        192.168.0.3 > 192.168.0.1: ICMP echo reply, id 16633, seq 175, length 64
    ^C
    3 packets captured
    3 packets received by filter
    0 packets dropped by kernel
    root@mpls2:~# 
    root@mpls2:~# ip -M r
    17 proto ldp 
            nexthop via inet 172.16.0.14 dev enp6s0 
            nexthop via inet 172.16.0.1 dev enp1s0 
    18 proto ldp 
            nexthop via inet 172.16.0.6 dev enp5s0 
            nexthop via inet 172.16.0.14 dev enp6s0 
    19 via inet 172.16.0.1 dev enp1s0 proto ldp 
    20 via inet 172.16.0.6 dev enp5s0 proto ldp 
    21 via inet 172.16.0.14 dev enp6s0 proto ldp 
    22 via inet 172.16.0.6 dev enp5s0 proto ldp 
    23 via inet 172.16.0.6 dev enp5s0 proto ldp 
    24 via inet 172.16.0.14 dev enp6s0 proto ldp 
    17001 via inet 172.16.0.1 dev enp1s0 proto ospf -------------剥掉从enp1s0发出
    17003 via inet 172.16.0.6 dev enp5s0 proto ospf 
    17004 via inet 172.16.0.14 dev enp6s0 proto ospf 
    50000 via inet 172.16.0.6 dev enp5s0 proto ospf 
    50001 via inet 172.16.0.6 dev enp5s0 proto ospf 
    50002 via inet 172.16.0.14 dev enp6s0 proto ospf 
    50003 via inet 172.16.0.14 dev enp6s0 proto ospf 
    50004 via inet 172.16.0.1 dev enp1s0 proto ospf 
    50005 via inet 172.16.0.1 dev enp1s0 proto ospf 
    50008 via inet 172.16.0.6 dev enp5s0 proto ospf 
    50009 via inet 172.16.0.6 dev enp5s0 proto ospf
    root@mpls2:~# tcpdump -i enp1s0 icmp   -env
    tcpdump: listening on enp1s0, link-type EN10MB (Ethernet), capture size 262144 bytes
    15:22:41.396545 52:54:00:73:55:cd > 52:54:00:d9:52:82, ethertype IPv4 (0x0800), length 98: (tos 0x0, ttl 63, id 46239, offset 0, flags [none], proto ICMP (1), length 84)
        192.168.0.3 > 192.168.0.1: ICMP echo reply, id 16633, seq 208, length 64
    15:22:43.412512 52:54:00:73:55:cd > 52:54:00:d9:52:82, ethertype IPv4 (0x0800), length 98: (tos 0x0, ttl 63, id 46705, offset 0, flags [none], proto ICMP (1), length 84)
        192.168.0.3 > 192.168.0.1: ICMP echo reply, id 16633, seq 209, length 64
    ^C
    2 packets captured
    2 packets received by filter
    0 packets dropped by kernel
    root@mpls2:~# 
    root@mpls2:~# ip r
    172.16.0.0/30 dev enp1s0 proto kernel scope link src 172.16.0.2 
    172.16.0.4/30 dev enp5s0 proto kernel scope link src 172.16.0.5 
    172.16.0.8/30 proto ospf metric 20 
            nexthop via 172.16.0.1 dev enp1s0 weight 1 
            nexthop via 172.16.0.14 dev enp6s0 weight 1 
    172.16.0.12/30 dev enp6s0 proto kernel scope link src 172.16.0.13 
    172.16.0.16/30 proto ospf metric 20 
            nexthop via 172.16.0.6 dev enp5s0 weight 1 
            nexthop via 172.16.0.14 dev enp6s0 weight 1 
    192.168.0.1 via 172.16.0.1 dev enp1s0 proto ospf metric 20 
    192.168.0.3 via 172.16.0.6 dev enp5s0 proto ospf metric 20  ----------172.16.0.6是mpls3的ip
    192.168.0.4 via 172.16.0.14 dev enp6s0 proto ospf metric 20 
    192.168.122.0/24 via 172.16.0.6 dev enp5s0 proto ospf metric 20 
    192.168.123.0/24 dev enp1s0 proto kernel scope link src 192.168.123.2 
    192.168.124.0/24 via 172.16.0.6 dev enp5s0 proto ospf metric 20 
    192.168.125.0/24 via 172.16.0.14 dev enp6s0 proto ospf metric 20 
    root@mpls2:~# 

    mpls1 删掉ip route del 192.168.0.3/32 encap mpls 17004/17003 via 172.16.0.2

     

    root@mpls2:~# tcpdump -i enp1s0  mpls  -env
    tcpdump: listening on enp1s0, link-type EN10MB (Ethernet), capture size 262144 bytes
    17:27:31.439423 52:54:00:d9:52:82 > 52:54:00:73:55:cd, ethertype MPLS unicast (0x8847), length 102: MPLS (label 17003, exp 0, [S], ttl 64)
            (tos 0x0, ttl 64, id 21595, offset 0, flags [DF], proto ICMP (1), length 84)
        192.168.0.1 > 192.168.0.3: ICMP echo request, id 2011, seq 1, length 64
    17:27:33.453747 52:54:00:d9:52:82 > 52:54:00:73:55:cd, ethertype MPLS unicast (0x8847), length 102: MPLS (label 17003, exp 0, [S], ttl 64)
            (tos 0x0, ttl 64, id 21693, offset 0, flags [DF], proto ICMP (1), length 84)
        192.168.0.1 > 192.168.0.3: ICMP echo request, id 2011, seq 2, length 64
    17:27:35.469756 52:54:00:d9:52:82 > 52:54:00:73:55:cd, ethertype MPLS unicast (0x8847), length 102: MPLS (label 17003, exp 0, [S], ttl 64)
            (tos 0x0, ttl 64, id 22023, offset 0, flags [DF], proto ICMP (1), length 84)
        192.168.0.1 > 192.168.0.3: ICMP echo request, id 2011, seq 3, length 64
    ^C
    3 packets captured
    3 packets received by filter
    0 packets dropped by kernel
    root@mpls2:~# ip -M r
    17 proto ldp 
            nexthop via inet 172.16.0.14 dev enp6s0 
            nexthop via inet 172.16.0.1 dev enp1s0 
    18 proto ldp 
            nexthop via inet 172.16.0.14 dev enp6s0 
            nexthop via inet 172.16.0.6 dev enp5s0 
    19 via inet 172.16.0.1 dev enp1s0 proto ldp 
    20 via inet 172.16.0.6 dev enp5s0 proto ldp 
    21 via inet 172.16.0.14 dev enp6s0 proto ldp 
    23 via inet 172.16.0.6 dev enp5s0 proto ldp 
    24 via inet 172.16.0.14 dev enp6s0 proto ldp 
    17001 via inet 172.16.0.1 dev enp1s0 proto ospf 
    17003 via inet 172.16.0.6 dev enp5s0 proto ospf  ------------------直接在mpls3,不经过mpls4
    17004 via inet 172.16.0.14 dev enp6s0 proto ospf 
    50000 via inet 172.16.0.1 dev enp1s0 proto ospf 
    50001 via inet 172.16.0.1 dev enp1s0 proto ospf 
    50002 via inet 172.16.0.6 dev enp5s0 proto ospf 
    50003 via inet 172.16.0.6 dev enp5s0 proto ospf 
    50004 via inet 172.16.0.14 dev enp6s0 proto ospf 
    50005 via inet 172.16.0.14 dev enp6s0 proto ospf 
    50008 via inet 172.16.0.6 dev enp5s0 proto ospf 
    50009 via inet 172.16.0.6 dev enp5s0 proto ospf 
    root@mpls2:~# 
    mpls2# sh mpls table
     Inbound Label  Type       Nexthop          Outbound Label  
     -----------------------------------------------------------
     16             LDP        2000:2002::1004  implicit-null   
     17             LDP        172.16.0.1       implicit-null   
     17             LDP        172.16.0.14      implicit-null   
     18             LDP        172.16.0.6       implicit-null   
     18             LDP        172.16.0.14      implicit-null   
     19             LDP        172.16.0.1       implicit-null   
     20             LDP        172.16.0.6       implicit-null   
     21             LDP        172.16.0.14      implicit-null   
     23             LDP        172.16.0.6       implicit-null   
     24             LDP        172.16.0.14      implicit-null   
     17001          SR (OSPF)  172.16.0.1       implicit-null   
     17003          SR (OSPF)  172.16.0.6       implicit-null  ----------------剥掉 
     17004          SR (OSPF)  172.16.0.14      implicit-null   
     50000          SR (OSPF)  172.16.0.1       implicit-null   
     50001          SR (OSPF)  172.16.0.1       implicit-null   
     50002          SR (OSPF)  172.16.0.6       implicit-null   
     50003          SR (OSPF)  172.16.0.6       implicit-null   
     50004          SR (OSPF)  172.16.0.14      implicit-null   
     50005          SR (OSPF)  172.16.0.14      implicit-null   
    
    mpls2# 
    root@mpls2:~# tcpdump -i enp5s0  icmp  -env ----------剥掉mpls
    tcpdump: listening on enp5s0, link-type EN10MB (Ethernet), capture size 262144 bytes
    17:30:45.039583 52:54:00:ea:64:6e > 52:54:00:5a:42:f2, ethertype IPv4 (0x0800), length 98: (tos 0x0, ttl 63, id 41462, offset 0, flags [DF], proto ICMP (1), length 84)
        192.168.0.1 > 192.168.0.3: ICMP echo request, id 2013, seq 1, length 64
    17:30:47.053744 52:54:00:ea:64:6e > 52:54:00:5a:42:f2, ethertype IPv4 (0x0800), length 98: (tos 0x0, ttl 63, id 41902, offset 0, flags [DF], proto ICMP (1), length 84)
        192.168.0.1 > 192.168.0.3: ICMP echo request, id 2013, seq 2, length 64
    17:30:49.069761 52:54:00:ea:64:6e > 52:54:00:5a:42:f2, ethertype IPv4 (0x0800), length 98: (tos 0x0, ttl 63, id 42079, offset 0, flags [DF], proto ICMP (1), length 84)
        192.168.0.1 > 192.168.0.3: ICMP echo request, id 2013, seq 3, length 64
    ^C
    3 packets captured
    3 packets received by filter
    0 packets dropped by kernel
    root@mpls2:~# 

    测试adjacent id

    root@mpls1:~# vtysh
    
    Hello, this is FRRouting (version 7.3.1).
    Copyright 1996-2005 Kunihiro Ishiguro, et al.
    
    mpls1# sh ip ospf  database segment-routing 
    
                    OSPF Segment Routing database for ID 192.168.0.1
    
    SR-Node: 192.168.0.4    SRGB (Size/Label): 4000/16000   Algorithm(s): SPF       MSD: 11
    
        Prefix or Link  Label In  Label Out       Node or Adj. SID  Interface          Nexthop
    ------------------  --------  ---------  ---------------------  ---------  ---------------
        192.168.0.4/32     17004        pop      SR Pfx (idx 1004)     enp8s0      172.16.0.10
    
    SR-Node: 192.168.0.2    SRGB (Size/Label): 4000/16000   Algorithm(s): SPF       MSD: 9
    
        Prefix or Link  Label In  Label Out       Node or Adj. SID  Interface          Nexthop
    ------------------  --------  ---------  ---------------------  ---------  ---------------
        192.168.0.2/32     17002      17002      SR Pfx (idx 1002)     enp8s0      172.16.0.10
    
    SR-Node: 192.168.0.1    SRGB (Size/Label): 4000/16000   Algorithm(s): SPF       MSD: 8
    
        Prefix or Link  Label In  Label Out       Node or Adj. SID  Interface          Nexthop
    ------------------  --------  ---------  ---------------------  ---------  ---------------
        192.168.0.1/32         0          0      SR Pfx (idx 1001)         lo      192.168.0.1
         172.16.0.9/32     50001        pop    SR Adj. (lbl 50001)     enp8s0      172.16.0.10
         172.16.0.9/32     50000        pop    SR Adj. (lbl 50000)     enp8s0      172.16.0.10
         172.16.0.1/32     50003        pop    SR Adj. (lbl 50003)     enp7s0       172.16.0.2
         172.16.0.1/32     50002        pop    SR Adj. (lbl 50002)     enp7s0       172.16.0.2
    
    SR-Node: 192.168.0.3    SRGB (Size/Label): 4000/16000   Algorithm(s): SPF       MSD: 10
    
        Prefix or Link  Label In  Label Out       Node or Adj. SID  Interface          Nexthop
    ------------------  --------  ---------  ---------------------  ---------  ---------------
        192.168.0.3/32     17003      17003      SR Pfx (idx 1003)     enp8s0      172.16.0.10
    
    mpls1# quit
    root@mpls1:~# ip route del 192.168.0.3/32 encap mpls 50003/17004/17003 
    Error: unexpected end of line after "encap"
    root@mpls1:~# ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet 192.168.0.1/32 brd 192.168.0.1 scope global lo
           valid_lft forever preferred_lft forever
        inet6 3000::11/128 scope global 
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 52:54:00:e5:30:19 brd ff:ff:ff:ff:ff:ff
        inet 192.168.122.199/24 brd 192.168.122.255 scope global enp1s0
           valid_lft forever preferred_lft forever
    3: enp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 52:54:00:d9:52:82 brd ff:ff:ff:ff:ff:ff
        inet 172.16.0.1/30 brd 172.16.0.3 scope global enp7s0
           valid_lft forever preferred_lft forever
    4: enp8s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 52:54:00:ff:18:f4 brd ff:ff:ff:ff:ff:ff
        inet 172.16.0.9/30 brd 172.16.0.11 scope global enp8s0
           valid_lft forever preferred_lft forever
    root@mpls1:~# ip route add 192.168.0.3/32 encap mpls 50003/17004/17003 dev enp7s0
    root@mpls1:~# ping 192.168.0.3 -I 192.168.0.1
    PING 192.168.0.3 (192.168.0.3) from 192.168.0.1 : 56(84) bytes of data.
    ^C
    --- 192.168.0.3 ping statistics ---
    5 packets transmitted, 0 received, 100% packet loss, time 4098ms
    
    root@mpls1:~# ip route del 192.168.0.3/32 encap mpls 50003/17004/17003 dev enp7s0
    root@mpls1:~# ip route add 192.168.0.3/32 encap mpls 50002/17004/17003 dev enp7s0
    root@mpls1:~# ping 192.168.0.3 -I 192.168.0.1
    PING 192.168.0.3 (192.168.0.3) from 192.168.0.1 : 56(84) bytes of data.
    ^C
    --- 192.168.0.3 ping statistics ---
    4 packets transmitted, 0 received, 100% packet loss, time 3065ms
    
    root@mpls1:~# 
    root@mpls1:~# ip r flush dev enp7s0
    root@mpls1:~# ip r flush dev enp8s0
    root@mpls1:~# ping 192.168.0.3 -I 192.168.0.1
    PING 192.168.0.3 (192.168.0.3) from 192.168.0.1 : 56(84) bytes of data.
    ping: sendmsg: Network is unreachable
    ping: sendmsg: Network is unreachable
    ping: sendmsg: Network is unreachable
    ^C
    --- 192.168.0.3 ping statistics ---
    3 packets transmitted, 0 received, 100% packet loss, time 2046ms
    
    root@mpls1:~# ip r
    172.16.0.12/30 proto ospf metric 20 
            nexthop via 172.16.0.2 dev enp7s0 weight 1 
            nexthop via 172.16.0.10 dev enp8s0 weight 1  -------------
    192.168.122.0/24 dev enp1s0 proto kernel scope link src 192.168.122.2 
    192.168.124.0/24 proto ospf metric 20 
            nexthop via 172.16.0.2 dev enp7s0 weight 1  -------------------两跳
            nexthop via 172.16.0.10 dev enp8s0 weight 1 
    root@mpls1:~# ping 192.168.124.2
    PING 192.168.124.2 (192.168.124.2) 56(84) bytes of data.
    64 bytes from 192.168.124.2: icmp_seq=1 ttl=63 time=0.281 ms
    64 bytes from 192.168.124.2: icmp_seq=2 ttl=63 time=0.197 ms
    ^C
    --- 192.168.124.2 ping statistics ---
    2 packets transmitted, 2 received, 0% packet loss, time 1019ms
    rtt min/avg/max/mdev = 0.197/0.239/0.281/0.042 ms
    root@mpls1:~# ping 192.168.124.2
    root@mpls1:~# ip r
    172.16.0.0/30 dev enp7s0 proto kernel scope link src 172.16.0.1 
    172.16.0.4/30 via 172.16.0.2 dev enp7s0 proto ospf metric 20 
    172.16.0.8/30 dev enp8s0 proto kernel scope link src 172.16.0.9 
    172.16.0.12/30 proto ospf metric 20 
            nexthop via 172.16.0.2 dev enp7s0 weight 1 
            nexthop via 172.16.0.10 dev enp8s0 weight 1 
    172.16.0.16/30 via 172.16.0.10 dev enp8s0 proto ospf metric 20 
    192.168.0.2 via 172.16.0.2 dev enp7s0 proto ospf metric 20 
    192.168.0.3 proto ospf metric 20 
            nexthop  encap mpls  17003 via 172.16.0.2 dev enp7s0 weight 1 ------------下一跳是mpls2
            nexthop via 172.16.0.10 dev enp8s0 weight 1 
    192.168.0.4 via 172.16.0.10 dev enp8s0 proto ospf metric 20 
    192.168.122.0/24 dev enp1s0 proto kernel scope link src 192.168.122.2 
    192.168.123.0/24 via 172.16.0.2 dev enp7s0 proto ospf metric 20 
    192.168.124.0/24 proto ospf metric 20 
            nexthop via 172.16.0.2 dev enp7s0 weight 1 
            nexthop via 172.16.0.10 dev enp8s0 weight 1 
    192.168.125.0/24 via 172.16.0.10 dev enp8s0 proto ospf metric 20 
    root@mpls1:~# ip -M  r
    16 via inet 172.16.0.2 dev enp7s0 proto ldp 
    17 proto ldp 
            nexthop via inet 172.16.0.10 dev enp8s0 
            nexthop via inet 172.16.0.2 dev enp7s0 
    18 via inet 172.16.0.10 dev enp8s0 proto ldp 
    19 via inet 172.16.0.2 dev enp7s0 proto ldp 
    20 proto ldp 
            nexthop via inet 172.16.0.10 dev enp8s0 
            nexthop via inet 172.16.0.2 dev enp7s0 
    21 via inet 172.16.0.10 dev enp8s0 proto ldp 
    22 via inet 172.16.0.2 dev enp7s0 proto ldp 
    23 proto ldp 
            nexthop via inet 172.16.0.10 dev enp8s0 
            nexthop via inet 172.16.0.2 dev enp7s0 
    24 via inet 172.16.0.10 dev enp8s0 proto ldp 
    17002 via inet 172.16.0.2 dev enp7s0 proto ospf 
    17003 as to 17003 via inet 172.16.0.2 dev enp7s0 proto ospf 
    17004 via inet 172.16.0.10 dev enp8s0 proto ospf 
    50000 via inet 172.16.0.2 dev enp7s0 proto ospf 
    50001 via inet 172.16.0.2 dev enp7s0 proto ospf 
    50002 via inet 172.16.0.10 dev enp8s0 proto ospf 
    50003 via inet 172.16.0.10 dev enp8s0 proto ospf 
    root@mpls1:~# 
    root@mpls1:~# ip route add 192.168.0.3/32 encap mpls 50002/17003  dev enp8s0
    root@mpls1:~# ping 192.168.0.3 -I 192.168.0.1 -i 2
    PING 192.168.0.3 (192.168.0.3) from 192.168.0.1 : 56(84) bytes of data.
    ^C
    --- 192.168.0.3 ping statistics ---
    20 packets transmitted, 0 received, 100% packet loss, time 38291ms
    
    root@mpls1:~# ip r
    172.16.0.0/30 dev enp7s0 proto kernel scope link src 172.16.0.1 
    172.16.0.4/30 via 172.16.0.2 dev enp7s0 proto ospf metric 20 
    172.16.0.8/30 dev enp8s0 proto kernel scope link src 172.16.0.9 
    172.16.0.12/30 proto ospf metric 20 
            nexthop via 172.16.0.2 dev enp7s0 weight 1 
            nexthop via 172.16.0.10 dev enp8s0 weight 1 
    172.16.0.16/30 via 172.16.0.10 dev enp8s0 proto ospf metric 20 
    192.168.0.2 via 172.16.0.2 dev enp7s0 proto ospf metric 20 
    192.168.0.3  encap mpls  50002/17003 dev enp8s0 scope link 
    192.168.0.4 via 172.16.0.10 dev enp8s0 proto ospf metric 20 
    192.168.122.0/24 dev enp1s0 proto kernel scope link src 192.168.122.2 
    192.168.123.0/24 via 172.16.0.2 dev enp7s0 proto ospf metric 20 
    192.168.124.0/24 proto ospf metric 20 
            nexthop via 172.16.0.2 dev enp7s0 weight 1 
            nexthop via 172.16.0.10 dev enp8s0 weight 1 
    192.168.125.0/24 via 172.16.0.10 dev enp8s0 proto ospf metric 20 
    root@mpls1:~# 
    root@mpls1:~# 
    root@mpls1:~# ip route del  192.168.0.3/32 encap mpls 50003/17003  dev enp8s0
    root@mpls1:~# ip route add 192.168.0.3/32 encap mpls 50003/17003  via 172.16.0.10
    root@mpls1:~# ping 192.168.0.3 -I 192.168.0.1 -i 2     --------------可以了
    PING 192.168.0.3 (192.168.0.3) from 192.168.0.1 : 56(84) bytes of data.
    64 bytes from 192.168.0.3: icmp_seq=1 ttl=63 time=0.286 ms
    ^C
    --- 192.168.0.3 ping statistics ---
    1 packets transmitted, 1 received, 0% packet loss, time 0ms
    rtt min/avg/max/mdev = 0.286/0.286/0.286/0.000 ms
    root@mpls1:~# 
    root@mpls1:~# ip -M r
    16 via inet 172.16.0.2 dev enp7s0 proto ldp 
    17 proto ldp 
            nexthop via inet 172.16.0.2 dev enp7s0 
            nexthop via inet 172.16.0.10 dev enp8s0 
    18 via inet 172.16.0.10 dev enp8s0 proto ldp 
    19 via inet 172.16.0.2 dev enp7s0 proto ldp 
    20 via inet 172.16.0.10 dev enp8s0 proto ldp 
    21 via inet 172.16.0.10 dev enp8s0 proto ldp 
    22 via inet 172.16.0.2 dev enp7s0 proto ldp 
    23 proto ldp 
            nexthop via inet 172.16.0.2 dev enp7s0 
            nexthop via inet 172.16.0.10 dev enp8s0 
    24 via inet 172.16.0.10 dev enp8s0 proto ldp 
    17002 via inet 172.16.0.2 dev enp7s0 proto ospf 
    17003 as to 17003 via inet 172.16.0.2 dev enp7s0 proto ospf 
    17004 via inet 172.16.0.10 dev enp8s0 proto ospf 
    50000 via inet 172.16.0.2 dev enp7s0 proto ospf 
    50001 via inet 172.16.0.2 dev enp7s0 proto ospf 
    50002 via inet 172.16.0.10 dev enp8s0 proto ospf 
    50003 via inet 172.16.0.10 dev enp8s0 proto ospf 
    root@mpls1:~# ip  r
    172.16.0.0/30 dev enp7s0 proto kernel scope link src 172.16.0.1 
    172.16.0.4/30 via 172.16.0.2 dev enp7s0 proto ospf metric 20 
    172.16.0.8/30 dev enp8s0 proto kernel scope link src 172.16.0.9 
    172.16.0.12/30 proto ospf metric 20 
            nexthop via 172.16.0.2 dev enp7s0 weight 1 
            nexthop via 172.16.0.10 dev enp8s0 weight 1 
    172.16.0.16/30 via 172.16.0.10 dev enp8s0 proto ospf metric 20 
    192.168.0.2 via 172.16.0.2 dev enp7s0 proto ospf metric 20 
    192.168.0.3  encap mpls  50003/17003 via 172.16.0.10 dev enp8s0 
    192.168.0.4 via 172.16.0.10 dev enp8s0 proto ospf metric 20 
    192.168.122.0/24 dev enp1s0 proto kernel scope link src 192.168.122.2 
    192.168.123.0/24 via 172.16.0.2 dev enp7s0 proto ospf metric 20 
    192.168.124.0/24 proto ospf metric 20 
            nexthop via 172.16.0.2 dev enp7s0 weight 1 
            nexthop via 172.16.0.10 dev enp8s0 weight 1 
    192.168.125.0/24 via 172.16.0.10 dev enp8s0 proto ospf metric 20 
    root@mpls1:~# 

    改成50002

    root@mpls1:~# ip route del 192.168.0.3/32 encap mpls 50003/17003  via 172.16.0.10
    root@mpls1:~# ip route del 192.168.0.3/32 encap mpls 50002/17003  via 172.16.0.10
    RTNETLINK answers: No such process
    root@mpls1:~# ip route add 192.168.0.3/32 encap mpls 50002/17003  via 172.16.0.10
    root@mpls1:~# ping 192.168.0.3 -I 192.168.0.1 -i 2
    PING 192.168.0.3 (192.168.0.3) from 192.168.0.1 : 56(84) bytes of data.
    64 bytes from 192.168.0.3: icmp_seq=1 ttl=63 time=0.337 ms
    64 bytes from 192.168.0.3: icmp_seq=2 ttl=63 time=0.283 ms
    ^C
    --- 192.168.0.3 ping statistics ---
    2 packets transmitted, 2 received, 0% packet loss, time 2005ms
    rtt min/avg/max/mdev = 0.283/0.310/0.337/0.027 ms
    root@mpls1:~# 
    root@mpls1:~# ip r
    172.16.0.0/30 dev enp7s0 proto kernel scope link src 172.16.0.1 
    172.16.0.4/30 via 172.16.0.2 dev enp7s0 proto ospf metric 20 
    172.16.0.8/30 dev enp8s0 proto kernel scope link src 172.16.0.9 
    172.16.0.12/30 proto ospf metric 20 
            nexthop via 172.16.0.2 dev enp7s0 weight 1 
            nexthop via 172.16.0.10 dev enp8s0 weight 1 
    172.16.0.16/30 via 172.16.0.10 dev enp8s0 proto ospf metric 20 
    192.168.0.2 via 172.16.0.2 dev enp7s0 proto ospf metric 20 
    192.168.0.3  encap mpls  50002/17003 via 172.16.0.10 dev enp8s0 
    192.168.0.4 via 172.16.0.10 dev enp8s0 proto ospf metric 20 
    192.168.122.0/24 dev enp1s0 proto kernel scope link src 192.168.122.2 
    192.168.123.0/24 via 172.16.0.2 dev enp7s0 proto ospf metric 20 
    192.168.124.0/24 proto ospf metric 20 
            nexthop via 172.16.0.2 dev enp7s0 weight 1 
            nexthop via 172.16.0.10 dev enp8s0 weight 1 
    192.168.125.0/24 via 172.16.0.10 dev enp8s0 proto ospf metric 20 
    root@mpls1:~# 
    mpls1# sh ip ospf  database segment-routing 
    
                    OSPF Segment Routing database for ID 192.168.0.1
    
    SR-Node: 192.168.0.4    SRGB (Size/Label): 4000/16000   Algorithm(s): SPF       MSD: 11
    
        Prefix or Link  Label In  Label Out       Node or Adj. SID  Interface          Nexthop
    ------------------  --------  ---------  ---------------------  ---------  ---------------
        192.168.0.4/32     17004        pop      SR Pfx (idx 1004)     enp8s0      172.16.0.10
    
    SR-Node: 192.168.0.2    SRGB (Size/Label): 4000/16000   Algorithm(s): SPF       MSD: 9
    
        Prefix or Link  Label In  Label Out       Node or Adj. SID  Interface          Nexthop
    ------------------  --------  ---------  ---------------------  ---------  ---------------
        192.168.0.2/32     17002        pop      SR Pfx (idx 1002)     enp7s0       172.16.0.2
    
    SR-Node: 192.168.0.1    SRGB (Size/Label): 4000/16000   Algorithm(s): SPF       MSD: 8
    
        Prefix or Link  Label In  Label Out       Node or Adj. SID  Interface          Nexthop
    ------------------  --------  ---------  ---------------------  ---------  ---------------
        192.168.0.1/32         0          0      SR Pfx (idx 1001)         lo      192.168.0.1
         172.16.0.1/32     50001        pop    SR Adj. (lbl 50001)     enp7s0       172.16.0.2
         172.16.0.1/32     50000        pop    SR Adj. (lbl 50000)     enp7s0       172.16.0.2
         172.16.0.9/32     50003        pop    SR Adj. (lbl 50003)     enp8s0      172.16.0.10
         172.16.0.9/32     50002        pop    SR Adj. (lbl 50002)     enp8s0      172.16.0.10
    
    SR-Node: 192.168.0.3    SRGB (Size/Label): 4000/16000   Algorithm(s): SPF       MSD: 10
    
        Prefix or Link  Label In  Label Out       Node or Adj. SID  Interface          Nexthop
    ------------------  --------  ---------  ---------------------  ---------  ---------------
        192.168.0.3/32     17003      17003      SR Pfx (idx 1003)     enp7s0       172.16.0.2
    
    mpls1# 

    mpl4抓包

    2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 52:54:00:07:5e:47 brd ff:ff:ff:ff:ff:ff
        inet 172.16.0.10/30 brd 172.16.0.11 scope global enp1s0
           valid_lft forever preferred_lft forever
        inet 192.168.125.2/24 scope global enp1s0
           valid_lft forever preferred_lft forever
    3: enp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 52:54:00:2e:96:79 brd ff:ff:ff:ff:ff:ff
        inet 172.16.0.14/30 brd 172.16.0.15 scope global enp7s0
           valid_lft forever preferred_lft forever
    4: enp8s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 52:54:00:a1:92:7d brd ff:ff:ff:ff:ff:ff
        inet 172.16.0.18/30 brd 172.16.0.19 scope global enp8s0
           valid_lft forever preferred_lft forever
    root@mpls4:~# tcpdump -i enp1s0 'mpls 50002 && mpls 17003'
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on enp1s0, link-type EN10MB (Ethernet), capture size 262144 bytes
    17:55:54.902140 MPLS (label 50002, exp 0, ttl 64) (label 17003, exp 0, [S], ttl 64) IP 192.168.0.1 > 192.168.0.3: ICMP echo request, id 1854, seq 29, length 64
    17:55:56.918140 MPLS (label 50002, exp 0, ttl 64) (label 17003, exp 0, [S], ttl 64) IP 192.168.0.1 > 192.168.0.3: ICMP echo request, id 1854, seq 30, length 64
    17:55:58.934157 MPLS (label 50002, exp 0, ttl 64) (label 17003, exp 0, [S], ttl 64) IP 192.168.0.1 > 192.168.0.3: ICMP echo request, id 1854, seq 31, length 64
    17:56:00.950164 MPLS (label 50002, exp 0, ttl 64) (label 17003, exp 0, [S], ttl 64) IP 192.168.0.1 > 192.168.0.3: ICMP echo request, id 1854, seq 32, length 64
    17:56:02.966170 MPLS (label 50002, exp 0, ttl 64) (label 17003, exp 0, [S], ttl 64) IP 192.168.0.1 > 192.168.0.3: ICMP echo request, id 1854, seq 33, length 64
    ^C
    5 packets captured
    5 packets received by filter
    0 packets dropped by kernel
    root@mpls4:~# 
    root@mpls4:~# ip -M r
    16 proto ldp 
            nexthop via inet 172.16.0.13 dev enp7s0 
            nexthop via inet 172.16.0.9 dev enp1s0 
    17 proto ldp 
            nexthop via inet 172.16.0.13 dev enp7s0 
            nexthop via inet 172.16.0.17 dev enp8s0 
    18 via inet 172.16.0.9 dev enp1s0 proto ldp 
    19 via inet 172.16.0.13 dev enp7s0 proto ldp 
    20 via inet 172.16.0.17 dev enp8s0 proto ldp 
    21 via inet 172.16.0.13 dev enp7s0 proto ldp 
    22 via inet 172.16.0.17 dev enp8s0 proto ldp 
    23 via inet 172.16.0.17 dev enp8s0 proto ldp 
    17001 via inet 172.16.0.9 dev enp1s0 proto ospf 
    17002 via inet 172.16.0.13 dev enp7s0 proto ospf 
    17003 via inet 172.16.0.17 dev enp8s0 proto ospf 
    50000 via inet 172.16.0.13 dev enp7s0 proto ospf 
    50001 via inet 172.16.0.13 dev enp7s0 proto ospf 
    50002 via inet 172.16.0.9 dev enp1s0 proto ospf 
    50003 via inet 172.16.0.9 dev enp1s0 proto ospf 
    50004 via inet 172.16.0.17 dev enp8s0 proto ospf 
    50005 via inet 172.16.0.17 dev enp8s0 proto ospf 
    50006 via inet 172.16.0.17 dev enp8s0 proto ospf 
    50007 via inet 172.16.0.17 dev enp8s0 proto ospf 
    root@mpls4:~# ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet 192.168.0.4/32 brd 192.168.0.4 scope global lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 52:54:00:07:5e:47 brd ff:ff:ff:ff:ff:ff
        inet 172.16.0.10/30 brd 172.16.0.11 scope global enp1s0
           valid_lft forever preferred_lft forever
        inet 192.168.125.2/24 scope global enp1s0
           valid_lft forever preferred_lft forever
    3: enp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 52:54:00:2e:96:79 brd ff:ff:ff:ff:ff:ff
        inet 172.16.0.14/30 brd 172.16.0.15 scope global enp7s0
           valid_lft forever preferred_lft forever
    4: enp8s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 52:54:00:a1:92:7d brd ff:ff:ff:ff:ff:ff
        inet 172.16.0.18/30 brd 172.16.0.19 scope global enp8s0
           valid_lft forever preferred_lft forever
    root@mpls4:~# vtysh
    
    Hello, this is FRRouting (version 7.3.1).
    Copyright 1996-2005 Kunihiro Ishiguro, et al.
    
    mpls4# show mpls table
     Inbound Label  Type       Nexthop      Outbound Label  
     -------------------------------------------------------
     16             LDP        172.16.0.9   implicit-null   
     16             LDP        172.16.0.13  implicit-null   
     17             LDP        172.16.0.17  implicit-null   
     17             LDP        172.16.0.13  implicit-null   
     18             LDP        172.16.0.9   implicit-null   
     19             LDP        172.16.0.13  implicit-null   
     20             LDP        172.16.0.17  implicit-null   
     21             LDP        172.16.0.13  implicit-null   
     22             LDP        172.16.0.17  implicit-null   
     23             LDP        172.16.0.17  implicit-null   
     17001          SR (OSPF)  172.16.0.9   implicit-null   
     17002          SR (OSPF)  172.16.0.13  implicit-null   
     17003          SR (OSPF)  172.16.0.17  implicit-null   
     50000          SR (OSPF)  172.16.0.13  implicit-null   
     50001          SR (OSPF)  172.16.0.13  implicit-null   
     50002          SR (OSPF)  172.16.0.9   implicit-null   
     50003          SR (OSPF)  172.16.0.9   implicit-null   
     50004          SR (OSPF)  172.16.0.17  implicit-null   
     50005          SR (OSPF)  172.16.0.17  implicit-null   
    
    mpls4# 
    root@mpls4:~# ip -M r
    16 proto ldp 
            nexthop via inet 172.16.0.13 dev enp7s0 
            nexthop via inet 172.16.0.9 dev enp1s0 
    17 proto ldp 
            nexthop via inet 172.16.0.13 dev enp7s0 
            nexthop via inet 172.16.0.17 dev enp8s0 
    18 via inet 172.16.0.13 dev enp7s0 proto ldp 
    19 via inet 172.16.0.17 dev enp8s0 proto ldp 
    20 via inet 172.16.0.13 dev enp7s0 proto ldp 
    21 via inet 172.16.0.17 dev enp8s0 proto ldp 
    22 via inet 172.16.0.9 dev enp1s0 proto ldp 
    17001 via inet 172.16.0.9 dev enp1s0 proto ospf 
    17002 via inet 172.16.0.13 dev enp7s0 proto ospf 
    17003 via inet 172.16.0.17 dev enp8s0 proto ospf 
    50000 via inet 172.16.0.9 dev enp1s0 proto ospf 
    50001 via inet 172.16.0.9 dev enp1s0 proto ospf 
    50002 via inet 172.16.0.13 dev enp7s0 proto ospf  -----------走mpls2,先用50002路由,再剥掉外层mpls label 50002,留下170003
    50003 via inet 172.16.0.13 dev enp7s0 proto ospf 
    50004 via inet 172.16.0.17 dev enp8s0 proto ospf 
    50005 via inet 172.16.0.17 dev enp8s0 proto ospf 
    50006 via inet 172.16.0.17 dev enp8s0 proto ospf 
    50007 via inet 172.16.0.17 dev enp8s0 proto ospf 
    root@mpls4:~# exit
    root@mpls4:~# tcpdump -i enp7s0 mpls  -env
    tcpdump: listening on enp7s0, link-type EN10MB (Ethernet), capture size 262144 bytes
    18:12:09.243735 52:54:00:2e:96:79 > 52:54:00:d7:a1:de, ethertype MPLS unicast (0x8847), length 102: MPLS (label 17003, exp 0, [S], ttl 64)
            (tos 0x0, ttl 64, id 38386, offset 0, flags [DF], proto ICMP (1), length 84)
        192.168.0.1 > 192.168.0.3: ICMP echo request, id 1891, seq 138, length 64
    18:12:11.259739 52:54:00:2e:96:79 > 52:54:00:d7:a1:de, ethertype MPLS unicast (0x8847), length 102: MPLS (label 17003, exp 0, [S], ttl 64)
            (tos 0x0, ttl 64, id 38569, offset 0, flags [DF], proto ICMP (1), length 84)
        192.168.0.1 > 192.168.0.3: ICMP echo request, id 1891, seq 139, length 64
    18:12:13.275769 52:54:00:2e:96:79 > 52:54:00:d7:a1:de, ethertype MPLS unicast (0x8847), length 102: MPLS (label 17003, exp 0, [S], ttl 64)
            (tos 0x0, ttl 64, id 38893, offset 0, flags [DF], proto ICMP (1), length 84)
        192.168.0.1 > 192.168.0.3: ICMP echo request, id 1891, seq 140, length 64
    ^C
    3 packets captured
    3 packets received by filter
    0 packets dropped by kernel
    1 packet dropped by interface
    root@mpls4:~# 

    mpls2抓包

    root@mpls2:~# tcpdump -i enp6s0 mpls -env
    tcpdump: listening on enp6s0, link-type EN10MB (Ethernet), capture size 262144 bytes
    18:13:17.272643 52:54:00:2e:96:79 > 52:54:00:d7:a1:de, ethertype MPLS unicast (0x8847), length 102: MPLS (label 17003, exp 0, [S], ttl 64)
            (tos 0x0, ttl 64, id 47681, offset 0, flags [DF], proto ICMP (1), length 84)
        192.168.0.1 > 192.168.0.3: ICMP echo request, id 1891, seq 176, length 64
    18:13:19.288637 52:54:00:2e:96:79 > 52:54:00:d7:a1:de, ethertype MPLS unicast (0x8847), length 102: MPLS (label 17003, exp 0, [S], ttl 64)
            (tos 0x0, ttl 64, id 48172, offset 0, flags [DF], proto ICMP (1), length 84)
        192.168.0.1 > 192.168.0.3: ICMP echo request, id 1891, seq 177, length 64
    18:13:21.304632 52:54:00:2e:96:79 > 52:54:00:d7:a1:de, ethertype MPLS unicast (0x8847), length 102: MPLS (label 17003, exp 0, [S], ttl 64)
            (tos 0x0, ttl 64, id 48347, offset 0, flags [DF], proto ICMP (1), length 84)
        192.168.0.1 > 192.168.0.3: ICMP echo request, id 1891, seq 178, length 64
    ^C
    3 packets captured
    3 packets received by filter
    0 packets dropped by kernel
    root@mpls2:~# 
    root@mpls3:~# tcpdump -i enp7s0 icmp and  src host 192.168.0.1 -env
    tcpdump: listening on enp7s0, link-type EN10MB (Ethernet), capture size 262144 bytes
    18:09:00.949225 52:54:00:a1:92:7d > 52:54:00:98:81:e8, ethertype IPv4 (0x0800), length 98: (tos 0x0, ttl 62, id 13311, offset 0, flags [DF], proto ICMP (1), length 84)
        192.168.0.1 > 192.168.0.3: ICMP echo request, id 1891, seq 49, length 64

     adjacent id

    mpls1# sh ip ospf  database segment-routing 
    
                    OSPF Segment Routing database for ID 192.168.0.1
    
    SR-Node: 192.168.0.4    SRGB (Size/Label): 4000/16000   Algorithm(s): SPF       MSD: 11
    
        Prefix or Link  Label In  Label Out       Node or Adj. SID  Interface          Nexthop
    ------------------  --------  ---------  ---------------------  ---------  ---------------
        192.168.0.4/32     17004        pop      SR Pfx (idx 1004)     enp8s0      172.16.0.10
    
    SR-Node: 192.168.0.2    SRGB (Size/Label): 0/0  Algorithm(s): S-SPF
    
        Prefix or Link  Label In  Label Out       Node or Adj. SID  Interface          Nexthop
    ------------------  --------  ---------  ---------------------  ---------  ---------------
    
    SR-Node: 192.168.0.1    SRGB (Size/Label): 4000/16000   Algorithm(s): SPF       MSD: 8
    
        Prefix or Link  Label In  Label Out       Node or Adj. SID  Interface          Nexthop
    ------------------  --------  ---------  ---------------------  ---------  ---------------
        192.168.0.1/32         0          0      SR Pfx (idx 1001)         lo      192.168.0.1
         172.16.0.1/32     50001        pop    SR Adj. (lbl 50001)     enp7s0       172.16.0.2
         172.16.0.1/32     50000        pop    SR Adj. (lbl 50000)     enp7s0       172.16.0.2
         172.16.0.9/32     50003        pop    SR Adj. (lbl 50003)     enp8s0      172.16.0.10
         172.16.0.9/32     50002        pop    SR Adj. (lbl 50002)     enp8s0      172.16.0.10      label 是mpls1 和mpls4间的标签
    
    SR-Node: 192.168.0.3    SRGB (Size/Label): 4000/16000   Algorithm(s): SPF       MSD: 10
    
        Prefix or Link  Label In  Label Out       Node or Adj. SID  Interface          Nexthop
    ------------------  --------  ---------  ---------------------  ---------  ---------------
        192.168.0.3/32     17003      17003      SR Pfx (idx 1003)     enp8s0      172.16.0.10
    
    mpls1# ping 192.168.0.4
    PING 192.168.0.4 (192.168.0.4) 56(84) bytes of data.
    64 bytes from 192.168.0.4: icmp_seq=1 ttl=64 time=0.124 ms
    ^C
    --- 192.168.0.4 ping statistics ---
    1 packets transmitted, 1 received, 0% packet loss, time 0ms
    rtt min/avg/max/mdev = 0.124/0.124/0.124/0.000 ms
    mpls1# 

     ip route add 192.168.0.3/32 encap mpls 50002/17003  via 172.16.0.10

    mpls4# show ip ospf database segment-routing 
    
                    OSPF Segment Routing database for ID 192.168.0.4
    
    SR-Node: 192.168.0.4    SRGB (Size/Label): 4000/16000   Algorithm(s): SPF       MSD: 11
    
        Prefix or Link  Label In  Label Out       Node or Adj. SID  Interface          Nexthop
    ------------------  --------  ---------  ---------------------  ---------  ---------------
        192.168.0.4/32         0          0      SR Pfx (idx 1004)         lo      192.168.0.4
        172.16.0.10/32     50001        pop    SR Adj. (lbl 50001)     enp1s0       172.16.0.9
        172.16.0.10/32     50000        pop    SR Adj. (lbl 50000)     enp1s0       172.16.0.9
        172.16.0.14/32     50003        pop    SR Adj. (lbl 50003)     enp7s0      172.16.0.13
        172.16.0.14/32     50002        pop    SR Adj. (lbl 50002)     enp7s0      172.16.0.13      -----------------label 50002 是mpls4 和mpls2间的标签
        172.16.0.18/32     50005        pop    SR Adj. (lbl 50005)     enp8s0      172.16.0.17
        172.16.0.18/32     50004        pop    SR Adj. (lbl 50004)     enp8s0      172.16.0.17
    
    SR-Node: 192.168.0.2    SRGB (Size/Label): 0/0  Algorithm(s): S-SPF
    
        Prefix or Link  Label In  Label Out       Node or Adj. SID  Interface          Nexthop
    ------------------  --------  ---------  ---------------------  ---------  ---------------
    
    SR-Node: 192.168.0.1    SRGB (Size/Label): 4000/16000   Algorithm(s): SPF       MSD: 8
    
        Prefix or Link  Label In  Label Out       Node or Adj. SID  Interface          Nexthop
    ------------------  --------  ---------  ---------------------  ---------  ---------------
        192.168.0.1/32     17001        pop      SR Pfx (idx 1001)     enp1s0       172.16.0.9
    
    SR-Node: 192.168.0.3    SRGB (Size/Label): 4000/16000   Algorithm(s): SPF       MSD: 10
    
        Prefix or Link  Label In  Label Out       Node or Adj. SID  Interface          Nexthop
    ------------------  --------  ---------  ---------------------  ---------  ---------------
        192.168.0.3/32     17003        pop      SR Pfx (idx 1003)     enp8s0      172.16.0.17
    
    mpls4# 
    mpls2# show ip ospf database segment-routing
    
                    OSPF Segment Routing database for ID 192.168.0.2
    
    SR-Node: 192.168.0.4    SRGB (Size/Label): 4000/16000   Algorithm(s): SPF       MSD: 11
    
        Prefix or Link  Label In  Label Out       Node or Adj. SID  Interface          Nexthop
    ------------------  --------  ---------  ---------------------  ---------  ---------------
        192.168.0.4/32     17004        pop      SR Pfx (idx 1004)     enp6s0      172.16.0.14
    
    SR-Node: 192.168.0.2    SRGB (Size/Label): 4000/16000   Algorithm(s): SPF       MSD: 9
    
        Prefix or Link  Label In  Label Out       Node or Adj. SID  Interface          Nexthop
    ------------------  --------  ---------  ---------------------  ---------  ---------------
        192.168.0.2/32         0          0      SR Pfx (idx 1002)         lo      192.168.0.2
         172.16.0.2/32     50001        pop    SR Adj. (lbl 50001)     enp1s0       172.16.0.1
         172.16.0.2/32     50000        pop    SR Adj. (lbl 50000)     enp1s0       172.16.0.1
         172.16.0.5/32     50003        pop    SR Adj. (lbl 50003)     enp5s0       172.16.0.6
         172.16.0.5/32     50002        pop    SR Adj. (lbl 50002)     enp5s0       172.16.0.6
        172.16.0.13/32     50005        pop    SR Adj. (lbl 50005)     enp6s0      172.16.0.14
        172.16.0.13/32     50004        pop    SR Adj. (lbl 50004)     enp6s0      172.16.0.14
    
    SR-Node: 192.168.0.1    SRGB (Size/Label): 4000/16000   Algorithm(s): SPF       MSD: 8
    
        Prefix or Link  Label In  Label Out       Node or Adj. SID  Interface          Nexthop
    ------------------  --------  ---------  ---------------------  ---------  ---------------
        192.168.0.1/32     17001        pop      SR Pfx (idx 1001)     enp1s0       172.16.0.1
    
    SR-Node: 192.168.0.3    SRGB (Size/Label): 4000/16000   Algorithm(s): SPF       MSD: 10
    
        Prefix or Link  Label In  Label Out       Node or Adj. SID  Interface          Nexthop
    ------------------  --------  ---------  ---------------------  ---------  ---------------
        192.168.0.3/32     17003        pop      SR Pfx (idx 1003)     enp5s0       172.16.0.6
    
    mpls2# 
    mpls3# show ip ospf database segment-routing
    
                    OSPF Segment Routing database for ID 192.168.0.3
    
    SR-Node: 192.168.0.4    SRGB (Size/Label): 4000/16000   Algorithm(s): SPF       MSD: 11
    
        Prefix or Link  Label In  Label Out       Node or Adj. SID  Interface          Nexthop
    ------------------  --------  ---------  ---------------------  ---------  ---------------
        192.168.0.4/32     17004        pop      SR Pfx (idx 1004)     enp7s0      172.16.0.18
    
    SR-Node: 192.168.0.2    SRGB (Size/Label): 4000/16000   Algorithm(s): SPF       MSD: 9
    
        Prefix or Link  Label In  Label Out       Node or Adj. SID  Interface          Nexthop
    ------------------  --------  ---------  ---------------------  ---------  ---------------
        192.168.0.2/32     17002        pop      SR Pfx (idx 1002)     enp1s0       172.16.0.5
    
    SR-Node: 192.168.0.1    SRGB (Size/Label): 4000/16000   Algorithm(s): SPF       MSD: 8
    
        Prefix or Link  Label In  Label Out       Node or Adj. SID  Interface          Nexthop
    ------------------  --------  ---------  ---------------------  ---------  ---------------
        192.168.0.1/32     17001      17001      SR Pfx (idx 1001)     enp7s0      172.16.0.18
    
    SR-Node: 192.168.0.3    SRGB (Size/Label): 4000/16000   Algorithm(s): SPF       MSD: 10
    
        Prefix or Link  Label In  Label Out       Node or Adj. SID  Interface          Nexthop
    ------------------  --------  ---------  ---------------------  ---------  ---------------
        192.168.0.3/32         0          0      SR Pfx (idx 1003)         lo      192.168.0.3
        172.16.0.17/32     50001        pop    SR Adj. (lbl 50001)     enp7s0      172.16.0.18
        172.16.0.17/32     50000        pop    SR Adj. (lbl 50000)     enp7s0      172.16.0.18
         172.16.0.6/32     50003        pop    SR Adj. (lbl 50003)     enp1s0       172.16.0.5
         172.16.0.6/32     50002        pop    SR Adj. (lbl 50002)     enp1s0       172.16.0.5
    
    mpls3# 

    root@mpls1:~# ip route del 192.168.0.3/32 encap mpls 50002/17003  via 172.16.0.10 ------------删除
    root@mpls1:~# ping 192.168.0.3 -I 192.168.0.1 -i 2
    PING 192.168.0.3 (192.168.0.3) from 192.168.0.1 : 56(84) bytes of data.
    64 bytes from 192.168.0.3: icmp_seq=1 ttl=63 time=0.255 ms
    ^C
    --- 192.168.0.3 ping statistics ---
    1 packets transmitted, 1 received, 0% packet loss, time 0ms
    rtt min/avg/max/mdev = 0.255/0.255/0.255/0.000 ms
    root@mpls1:~# ip r
    172.16.0.0/30 dev enp7s0 proto kernel scope link src 172.16.0.1 
    172.16.0.4/30 via 172.16.0.2 dev enp7s0 proto ospf metric 20 
    172.16.0.8/30 dev enp8s0 proto kernel scope link src 172.16.0.9 
    172.16.0.12/30 proto ospf metric 20 
            nexthop via 172.16.0.2 dev enp7s0 weight 1 
            nexthop via 172.16.0.10 dev enp8s0 weight 1 
    172.16.0.16/30 via 172.16.0.10 dev enp8s0 proto ospf metric 20 
    192.168.0.2 via 172.16.0.2 dev enp7s0 proto ospf metric 20 
    192.168.0.3 proto ospf metric 20 
            nexthop via 172.16.0.2 dev enp7s0 weight 1 
            nexthop via 172.16.0.10 dev enp8s0 weight 1 
    192.168.0.4 via 172.16.0.10 dev enp8s0 proto ospf metric 20 
    192.168.122.0/24 dev enp1s0 proto kernel scope link src 192.168.122.2 
    192.168.123.0/24 via 172.16.0.2 dev enp7s0 proto ospf metric 20 
    192.168.124.0/24 proto ospf metric 20 
            nexthop via 172.16.0.2 dev enp7s0 weight 1 
            nexthop via 172.16.0.10 dev enp8s0 weight 1 
    192.168.125.0/24 via 172.16.0.10 dev enp8s0 proto ospf metric 20 
    root@mpls1:~#
    root@mpls1:~# ip route add  192.168.0.3/32 encap mpls 50002/50005  via 172.16.0.10
    root@mpls1:~# ping 192.168.0.3 -I 192.168.0.1 -i 2
    PING 192.168.0.3 (192.168.0.3) from 192.168.0.1 : 56(84) bytes of data.
    ^C
    --- 192.168.0.3 ping statistics ---
    3 packets transmitted, 0 received, 100% packet loss, time 4029ms
    
    root@mpls1:~# 

    因为mpls4收到50002标签根据50002查找路由,然后剥掉50002,最会丢给mpls2,
    因为mpls2收到50005标签根据50005查找路由,然后剥掉50005,最会丢给mpls4, 
    root@mpls1:~# ping 192.168.0.3 -I 192.168.0.1 -i 2
    PING 192.168.0.3 (192.168.0.3) from 192.168.0.1 : 56(84) bytes of data.
    ^C
    --- 192.168.0.3 ping statistics ---
    29 packets transmitted, 0 received, 100% packet loss, time 56432ms
    
    root@mpls1:~# 
    root@mpls4:~# tcpdump -i enp1s0 'mpls 50002 && mpls  50005'  -env             -----抓到mpls 50002,50005
    tcpdump: listening on enp1s0, link-type EN10MB (Ethernet), capture size 262144 bytes
    19:52:51.678399 52:54:00:ff:18:f4 > 52:54:00:07:5e:47, ethertype MPLS unicast (0x8847), length 106: MPLS (label 50002, exp 0, ttl 64)
            (label 50005, exp 0, [S], ttl 64)
            (tos 0x0, ttl 64, id 50356, offset 0, flags [DF], proto ICMP (1), length 84)
        192.168.0.1 > 192.168.0.3: ICMP echo request, id 1928, seq 21, length 64
    19:52:53.694408 52:54:00:ff:18:f4 > 52:54:00:07:5e:47, ethertype MPLS unicast (0x8847), length 106: MPLS (label 50002, exp 0, ttl 64)
            (label 50005, exp 0, [S], ttl 64)
            (tos 0x0, ttl 64, id 50532, offset 0, flags [DF], proto ICMP (1), length 84)
        192.168.0.1 > 192.168.0.3: ICMP echo request, id 1928, seq 22, length 64
    19:52:55.710420 52:54:00:ff:18:f4 > 52:54:00:07:5e:47, ethertype MPLS unicast (0x8847), length 106: MPLS (label 50002, exp 0, ttl 64)
            (label 50005, exp 0, [S], ttl 64)
            (tos 0x0, ttl 64, id 50548, offset 0, flags [DF], proto ICMP (1), length 84)
        192.168.0.1 > 192.168.0.3: ICMP echo request, id 1928, seq 23, length 64
    ^C
    3 packets captured
    3 packets received by filter
    0 packets dropped by kernel
    root@mpls4:~# 
    root@mpls2:~# tcpdump -i enp6s0 'mpls 50005' -env         ---------------抓到mpls 50005
    tcpdump: listening on enp6s0, link-type EN10MB (Ethernet), capture size 262144 bytes
    19:54:00.639222 52:54:00:2e:96:79 > 52:54:00:d7:a1:de, ethertype MPLS unicast (0x8847), length 102: MPLS (label 50005, exp 0, [S], ttl 64)
            (tos 0x0, ttl 64, id 65256, offset 0, flags [DF], proto ICMP (1), length 84)
        192.168.0.1 > 192.168.0.3: ICMP echo request, id 1930, seq 1, length 64
    19:54:02.648642 52:54:00:2e:96:79 > 52:54:00:d7:a1:de, ethertype MPLS unicast (0x8847), length 102: MPLS (label 50005, exp 0, [S], ttl 64)
            (tos 0x0, ttl 64, id 65529, offset 0, flags [DF], proto ICMP (1), length 84)
        192.168.0.1 > 192.168.0.3: ICMP echo request, id 1930, seq 2, length 64
    ^C
    2 packets captured
    4 packets received by filter
    0 packets dropped by kernel
    root@mpls2:~# 
    root@mpls4:~# tcpdump -i enp1s0 'mpls 50002 && mpls  50005'  -env      ------------------又路由给mpls4
    tcpdump: listening on enp1s0, link-type EN10MB (Ethernet), capture size 262144 bytes
    19:52:51.678399 52:54:00:ff:18:f4 > 52:54:00:07:5e:47, ethertype MPLS unicast (0x8847), length 106: MPLS (label 50002, exp 0, ttl 64)
            (label 50005, exp 0, [S], ttl 64)
            (tos 0x0, ttl 64, id 50356, offset 0, flags [DF], proto ICMP (1), length 84)
        192.168.0.1 > 192.168.0.3: ICMP echo request, id 1928, seq 21, length 64
    19:52:53.694408 52:54:00:ff:18:f4 > 52:54:00:07:5e:47, ethertype MPLS unicast (0x8847), length 106: MPLS (label 50002, exp 0, ttl 64)
            (label 50005, exp 0, [S], ttl 64)
            (tos 0x0, ttl 64, id 50532, offset 0, flags [DF], proto ICMP (1), length 84)
        192.168.0.1 > 192.168.0.3: ICMP echo request, id 1928, seq 22, length 64
    19:52:55.710420 52:54:00:ff:18:f4 > 52:54:00:07:5e:47, ethertype MPLS unicast (0x8847), length 106: MPLS (label 50002, exp 0, ttl 64)
            (label 50005, exp 0, [S], ttl 64)
            (tos 0x0, ttl 64, id 50548, offset 0, flags [DF], proto ICMP (1), length 84)
        192.168.0.1 > 192.168.0.3: ICMP echo request, id 1928, seq 23, length 64
    ^C
    3 packets captured
    3 packets received by filter
    0 packets dropped by kernel
    root@mpls4:~# 

    全部换成adjacent id

    root@mpls1:~# ip route del  192.168.0.3/32 encap mpls 50002/50005  via 172.16.0.10
    root@mpls1:~# ip route del  192.168.0.3/32 encap mpls 50002/50002  via 172.16.0.10
    RTNETLINK answers: No such process
    root@mpls1:~# ip route add  192.168.0.3/32 encap mpls 50002/50002  via 172.16.0.10
    root@mpls1:~# ping 192.168.0.3 -I 192.168.0.1 -i 2
    PING 192.168.0.3 (192.168.0.3) from 192.168.0.1 : 56(84) bytes of data.
    64 bytes from 192.168.0.3: icmp_seq=1 ttl=63 time=0.258 ms
    64 bytes from 192.168.0.3: icmp_seq=2 ttl=63 time=0.256 ms
    ^C
    --- 192.168.0.3 ping statistics ---
    2 packets transmitted, 2 received, 0% packet loss, time 2012ms
    rtt min/avg/max/mdev = 0.256/0.257/0.258/0.001 ms
    root@mpls1:~#
    因为mpls4收到50002标签根据50002查找路由,然后剥掉50002,最会丢给mpls2, 
    因为mpls2收到50002标签根据50002查找路由,然后剥掉50002,最会丢给mpls3,


    root@mpls4:~# tcpdump -i enp1s0 'mpls 50002 && mpls 50002 '  -env   -------------接收
    tcpdump: listening on enp1s0, link-type EN10MB (Ethernet), capture size 262144 bytes
    20:03:33.282094 52:54:00:ff:18:f4 > 52:54:00:07:5e:47, ethertype MPLS unicast (0x8847), length 106: MPLS (label 50002, exp 0, ttl 64)
            (label 50002, exp 0, [S], ttl 64)
            (tos 0x0, ttl 64, id 25173, offset 0, flags [DF], proto ICMP (1), length 84)
        192.168.0.1 > 192.168.0.3: ICMP echo request, id 2009, seq 86, length 64
    20:03:35.298108 52:54:00:ff:18:f4 > 52:54:00:07:5e:47, ethertype MPLS unicast (0x8847), length 106: MPLS (label 50002, exp 0, ttl 64)
            (label 50002, exp 0, [S], ttl 64)
            (tos 0x0, ttl 64, id 25667, offset 0, flags [DF], proto ICMP (1), length 84)
        192.168.0.1 > 192.168.0.3: ICMP echo request, id 2009, seq 87, length 64
    ^C
    2 packets captured
    2 packets received by filter
    0 packets dropped by kernel
    root@mpls4:~# 


    root@mpls4:~# tcpdump -i enp7s0 mpls  -env  --------------剥掉一层转发 
    tcpdump: listening on enp7s0, link-type EN10MB (Ethernet), capture size 262144 bytes
    20:00:41.924301 52:54:00:2e:96:79 > 52:54:00:d7:a1:de, ethertype MPLS unicast (0x8847), length 102: MPLS (label 50002, exp 0, [S], ttl 64)
            (tos 0x0, ttl 64, id 5062, offset 0, flags [DF], proto ICMP (1), length 84)
        192.168.0.1 > 192.168.0.3: ICMP echo request, id 2009, seq 1, length 64
    20:00:43.937117 52:54:00:2e:96:79 > 52:54:00:d7:a1:de, ethertype MPLS unicast (0x8847), length 102: MPLS (label 50002, exp 0, [S], ttl 64)
            (tos 0x0, ttl 64, id 5290, offset 0, flags [DF], proto ICMP (1), length 84)
        192.168.0.1 > 192.168.0.3: ICMP echo request, id 2009, seq 2, length 64
    20:00:45.953134 52:54:00:2e:96:79 > 52:54:00:d7:a1:de, ethertype MPLS unicast (0x8847), length 102: MPLS (label 50002, exp 0, [S], ttl 64)
            (tos 0x0, ttl 64, id 5573, offset 0, flags [DF], proto ICMP (1), length 84)
        192.168.0.1 > 192.168.0.3: ICMP echo request, id 2009, seq 3, length 64
    ^C
    3 packets captured
    3 packets received by filter
    0 packets dropped by kernel
    root@mpls4:~# 
    root@mpls2:~# tcpdump -i enp6s0 'mpls 50002' -env -------------------接收
    tcpdump: listening on enp6s0, link-type EN10MB (Ethernet), capture size 262144 bytes
    20:00:55.480634 52:54:00:2e:96:79 > 52:54:00:d7:a1:de, ethertype MPLS unicast (0x8847), length 102: MPLS (label 50002, exp 0, [S], ttl 64)
            (tos 0x0, ttl 64, id 8559, offset 0, flags [DF], proto ICMP (1), length 84)
        192.168.0.1 > 192.168.0.3: ICMP echo request, id 2009, seq 12, length 64
    20:00:57.496627 52:54:00:2e:96:79 > 52:54:00:d7:a1:de, ethertype MPLS unicast (0x8847), length 102: MPLS (label 50002, exp 0, [S], ttl 64)
            (tos 0x0, ttl 64, id 9062, offset 0, flags [DF], proto ICMP (1), length 84)
        192.168.0.1 > 192.168.0.3: ICMP echo request, id 2009, seq 13, length 64
    ^C
    2 packets captured
    2 packets received by filter
    0 packets dropped by kernel
    root@mpls2:~# tcpdump -i enp5s0 icmp and src host  192.168.0.1 -env   -------------剥掉一层转发
    tcpdump: listening on enp5s0, link-type EN10MB (Ethernet), capture size 262144 bytes
    20:01:29.752656 52:54:00:ea:64:6e > 52:54:00:5a:42:f2, ethertype IPv4 (0x0800), length 98: (tos 0x0, ttl 63, id 13058, offset 0, flags [DF], proto ICMP (1), length 84)
        192.168.0.1 > 192.168.0.3: ICMP echo request, id 2009, seq 29, length 64
    20:01:31.768655 52:54:00:ea:64:6e > 52:54:00:5a:42:f2, ethertype IPv4 (0x0800), length 98: (tos 0x0, ttl 63, id 13294, offset 0, flags [DF], proto ICMP (1), length 84)
        192.168.0.1 > 192.168.0.3: ICMP echo request, id 2009, seq 30, length 64
    ^C
    2 packets captured
    4 packets received by filter
    0 packets dropped by kernel
    root@mpls2:~# 

     

     nodeA  可以发送外层mpls label =X/Y的报文给nodeB

     nodeB  可以发送外层mpls label =C/D的报文给nodeA

     
  • 相关阅读:
    【12】python模块:itsdangerous(生成临时身份令牌)
    python作业/练习/实战:下载QQ群所有人的头像
    【4】Python操作redis
    【7】Python网络请求:requests模块
    【6】Python网络请求:urllib模块
    python学习笔记:目录结构
    【9】Python接口开发:flask Demo实例
    【8】Python接口开发:PythonWEB框架之Flask
    前端学习笔记——引入css文件、样式优先级
    Yii2模型介绍
  • 原文地址:https://www.cnblogs.com/dream397/p/13529202.html
Copyright © 2020-2023  润新知