我试图在mininet上实现MPLS,并且能够成功地完成这项工作。 我能够正确推送,交换和popup标签。
当我试图从一台主机ping到另一台主机时,我遇到了困难。 这是我正在使用的networking:
H1 – S1 – R1 – R5 – R8 – 4 – S4 – H4
我注意到,当r4将数据包传递给s4时,s4不做任何事情,并且它不会到达主机(h4),所以我决定彻底删除交换机,只使用主机和路由器
H1 – R1 – R5 – R8 – 4 – H4
我开始捕捉到h4正在接收什么,我注意到他正在接收来自h1(10.0.1.10)的ping,但是h4(10.0.4.10)从未回复。
这是h4的输出:
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on h4-eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 18:11:31.984633 IP 10.0.1.10 > 10.0.4.10: ICMP echo request, id 5767, seq 1, length 64 18:11:31.984961 ARP, Request who-has 10.0.4.1 tell 10.0.4.10, length 28 18:11:31.984970 ARP, Reply 10.0.4.1 is-at fe:65:4f:0c:2f:17 (oui Unknown), length 28 18:11:31.984972 IP 10.0.4.10.49609 > 172.16.219.2.domain: 52855+ PTR? 10.4.0.10.in-addr.arpa. (40) 18:11:31.984983 IP 10.0.4.1 > 10.0.4.10: ICMP net 172.16.219.2 unreachable, length 76 18:11:36.990650 IP 10.0.4.10.49609 > 172.16.219.2.domain: 52855+ PTR? 10.4.0.10.in-addr.arpa. (40) 18:11:36.990609 ARP, Request who-has 10.0.4.10 tell 10.0.4.1, length 28 18:11:52.006132 IP 10.0.4.10.38978 > 172.16.219.2.domain: 7045+ PTR? 1.4.0.10.in-addr.arpa. (39) 18:12:02.018454 IP 10.0.4.10.45969 > 172.16.219.2.domain: 62742+ PTR? 2.219.16.172.in-addr.arpa. (43) 18:12:02.018478 IP 10.0.4.1 > 10.0.4.10: ICMP net 172.16.219.2 unreachable, length 79
这是H4路由表,它有一个网关:
Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default 10.0.4.1 0.0.0.0 UG 0 0 0 h4-eth0 10.0.4.0 * 255.255.255.0 U 0 0 0 h4-eth0
任何帮助是极大的赞赏。
UPDATE
testing前的h4的netstat -s
Ip: 1329 total packets received 0 forwarded 0 incoming packets discarded 1329 incoming packets delivered 1329 requests sent out Icmp: 24 ICMP messages received 0 input ICMP message failed. ICMP input histogram: destination unreachable: 8 echo requests: 8 echo replies: 8 16 ICMP messages sent 0 ICMP messages failed ICMP output histogram: echo request: 8 echo replies: 8 IcmpMsg: InType0: 8 InType3: 8 InType8: 8 OutType0: 8 OutType8: 8 Tcp: 1 active connections openings 1 passive connection openings 0 failed connection attempts 0 connection resets received 2 connections established 1305 segments received 1305 segments send out 0 segments retransmited 0 bad segments received. 0 resets sent Udp: 0 packets received 0 packets to unknown port received. 0 packet receive errors 8 packets sent UdpLite: TcpExt: 65 delayed acks sent 856 packet headers predicted 28 acknowledgments not containing data payload received 805 predicted acknowledgments TCPRcvCoalesce: 14 TCPOrigDataSent: 974 TCPKeepAlive: 1 IpExt: InOctets: 3413476 OutOctets: 3413252 InNoECTPkts: 1329
testing后的h4的netstat -s
Ip: 1384 total packets received 0 forwarded 0 incoming packets discarded 1384 incoming packets delivered 1384 requests sent out Icmp: 32 ICMP messages received 0 input ICMP message failed. ICMP input histogram: destination unreachable: 16 echo requests: 8 echo replies: 8 16 ICMP messages sent 0 ICMP messages failed ICMP output histogram: echo request: 8 echo replies: 8 IcmpMsg: InType0: 8 InType3: 16 InType8: 8 OutType0: 8 OutType8: 8 Tcp: 1 active connections openings 1 passive connection openings 0 failed connection attempts 0 connection resets received 2 connections established 1352 segments received 1352 segments send out 0 segments retransmited 0 bad segments received. 0 resets sent Udp: 0 packets received 0 packets to unknown port received. 0 packet receive errors 16 packets sent UdpLite: TcpExt: 72 delayed acks sent 872 packet headers predicted 28 acknowledgments not containing data payload received 828 predicted acknowledgments TCPRcvCoalesce: 16 TCPOrigDataSent: 1000 TCPKeepAlive: 1 IpExt: InOctets: 3421472 OutOctets: 3421024 InNoECTPkts: 1384
首先我使用静态路由,这是路由:
r1 ip route add 10.0.4.0/24 via 172.16.1.2 r4 ip route add 10.0.1.0/24 via 172.16.4.2 r5 ip route add 10.0.1.0/24 via 172.16.1.1 r5 ip route add 10.0.4.0/24 via 172.16.8.2 r8 ip route add 10.0.1.0/24 via 172.16.8.1 r8 ip route add 10.0.4.0/24 via 172.16.4.1
然后我用MPLS代替它:
r1 ip route add 10.0.4.0/24 encap mpls 400 via inet 172.16.1.2 r5 ip -f mpls route add 400 as 400 via inet 172.16.8.2 r8 ip -f mpls route add 400 as 400 via inet 172.16.4.1 r4 ip -f mpls route add 400 dev r4-eth0 r4 ip route add 10.0.1.0/24 encap mpls 100 via inet 172.16.4.2 r8 ip -f mpls route add 100 as 100 via inet 172.16.8.1 r5 ip -f mpls route add 100 as 100 via inet 172.16.1.1 r1 ip -f mpls route add 100 dev r1-eth0
任何帮助是极大的赞赏。
UPDATE
附加wireshark捕获证实h4不回答
目前,/etc/resolv.conf中的清单172.16.219.2似乎没有帮助。
testingh4是否可以ping自己的环回地址,然后testing它的10.0.4.10地址。 看一眼,看看是否dmesg或系统日志提供任何提示。
validationiptables或其他数据包filter没有做出阻止传入数据包的策略决定(tcpdump看到它,但也许内核端点没有)或阻止传出出站回复。
查看h4的netstat -s输出的前几个部分,并注意哪些计数器在实验探测的开始和结束之间递增。
您在18:11:31.984633向我们展示了一个入站数据包,然后是默认路由器的ARPcaching未命中。 如果h1连续发送ping,并且h4没有caching未命中,我们会看到不同的结果吗?
H1正在用ICMP数据包刺激被测系统。 在使用tcpdump监听三次握手的同时,尝试从h1,可能是端口22或端口80的另一个激励: telnet 10.0.4.10 80
编辑:你观察到“[删除]使用MPLS的路线后,问题就开始了。” 这表明数据包不会通过默认路由离开。 尝试一个出境刺激(也许ping),以帮助确定是否r4甚至看到你希望从h4出口的数据包。
而在netstat -s上,+8 ICMP dest unreach似乎很麻烦,再次指向静态路由与默认路由。 它与发送的+0个ICMP匹配,你已经用tcpdump确认了。