Як переглянути кешований PMTU під Linux (та всі інші ОС)


13

Коли я пінг віддаленого сайту з встановленим бітом DF і розміром пакета, який занадто великий для мого маршрутизатора, перше ICMP повідомлення "потрібна фрагментація" надсилається від маршрутизатора. Після цього повідомлення надходить від мого локального господаря.

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 ~]#

EDIT: Відповідно до пропозиції:

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 просто на 40 менше, ніж mtu, що є інтерфейсом mtu, а не PMTU


1
У Fedora 22 netstat -rCnнічого не повертає, але watch ip route get to $HOSTпоказує, що відбувається, включаючи кеш TTL. ip route show cachedпоказує, ймовірно, також щось виводить, але не робить.
Девід Тонхофер

Відповіді:



1

У Windows використовуйте команду netsh для перегляду «кешу призначення», який містить цю інформацію. Наприклад (якщо припустити IPv4):

netsh interface ipv4 show destinationcache

1

MSS має бути на 40 байт менше, ніж ваш MTU (він не включає заголовки IPv4 (20 байт) та tcp (20) байтів). Так що це правильно.

Потрібне повідомлення про фрагментацію ICMP надсилає маршрутизатор, а не ваш сервер.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.