各个节点的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