เมื่อฉัน ping ไซต์ระยะไกลที่มีชุดบิต DF และขนาดแพ็คเก็ตที่ใหญ่เกินไปสำหรับเราเตอร์ของฉันข้อความ "การกระจายตัวที่จำเป็น" ของ ICMP แรกจะถูกส่งจากเราเตอร์ หลังจากนั้นข้อความมาจาก localhost ของฉัน
Netstat -rC (บน Linux) อนุญาตให้ฉันดูแคชตารางเส้นทาง แต่
1) ดูเหมือนว่าจะแสดง MTU ภายใต้คอลัมน์ที่ชื่อว่า MSS (ซึ่งฉันคาดว่าจะเป็น TCP MSS ที่ต่ำกว่าของลิงก์)
2) แสดงค่าเป็น 1500 เสมอ
localhost ของฉันต้องแคช PMTU ไว้ที่ใดที่หนึ่งเพื่อให้สามารถสร้างข้อความที่ต้องการการกระจายตัว แต่ฉันจะเห็นได้อย่างไร
นี่คือตัวอย่างในเครื่องของฉัน (-n บน netstat ยับยั้งการค้นหา DNS ย้อนกลับ):
[root@vbcentos ~]# ping -c 4 -M do -s 1431 212.58.244.69
PING 212.58.244.69 (212.58.244.69) 1431(1459) bytes of data.
From 217.155.134.6 icmp_seq=1 Frag needed and DF set (mtu = 1458)
From 217.155.134.4 icmp_seq=2 Frag needed and DF set (mtu = 1458)
From 217.155.134.4 icmp_seq=2 Frag needed and DF set (mtu = 1458)
From 217.155.134.4 icmp_seq=2 Frag needed and DF set (mtu = 1458)
--- 212.58.244.69 ping statistics ---
1 packets transmitted, 0 received, +4 errors, 100% packet loss, time 1002ms
[root@vbcentos ~]# netstat -rCn
Kernel IP routing cache
Source Destination Gateway Flags MSS Window irtt Iface
217.155.134.3 217.155.134.4 217.155.134.4 il 0 0 0 lo
217.155.134.4 212.58.244.69 217.155.134.6 1500 0 0 eth0
217.155.134.4 217.155.134.4 217.155.134.4 l 16436 0 0 lo
217.155.134.3 217.155.134.255 217.155.134.255 ibl 0 0 0 lo
217.155.134.4 212.58.244.69 217.155.134.6 1500 0 0 eth0
217.155.134.6 217.155.134.4 217.155.134.4 il 0 0 0 lo
212.58.244.69 217.155.134.4 217.155.134.4 l 0 0 0 lo
[root@vbcentos ~]#
แก้ไข: ตามข้อเสนอแนะ:
ip route get to 212.58.244.69
จะช่วยให้
212.58.244.69 via 217.155.134.6 dev eth1 src 217.155.134.4
cache mtu 1500 advmss 1460 hoplimit 64
ซึ่งดูเหมือนว่าผิดเนื่องจาก MSS นั้นน้อยกว่า mtu เพียง 40 ซึ่งเป็นอินเตอร์เฟส mtu มากกว่า PMTU
netstat -rCn
ไม่มีอะไรส่งคืน แต่watch ip route get to $HOST
แสดงว่ามีอะไรเกิดขึ้นรวมถึงแคช TTLip route show cached
อาจแสดงบางสิ่งบางอย่างเอาท์พุท แต่ไม่