ฉันจะดู PMTU ที่แคชไว้ใต้ Linux ได้อย่างไร (และระบบปฏิบัติการอื่น ๆ ทั้งหมด)


13

เมื่อฉัน 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


1
ใน Fedora 22 netstat -rCnไม่มีอะไรส่งคืน แต่watch ip route get to $HOSTแสดงว่ามีอะไรเกิดขึ้นรวมถึงแคช TTL ip route show cachedอาจแสดงบางสิ่งบางอย่างเอาท์พุท แต่ไม่
David Tonhofer

คำตอบ:



1

ใน Windows ให้ใช้คำสั่ง netsh เพื่อดู "cache cache" ซึ่งเก็บข้อมูลนี้ ตัวอย่างเช่น (สมมติว่า IPv4):

netsh interface ipv4 show destinationcache

1

MSS ควรน้อยกว่า MTU ของคุณ 40 ไบต์ (ไม่รวม IPv4 (20 ไบต์) และ tcp (20) ส่วนหัวไบต์) ดังนั้นถูกต้อง

ข้อความที่จำเป็นในการกระจายตัวของ ICMP ถูกส่งโดยเราเตอร์ไม่ใช่เซิร์ฟเวอร์ของคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.