Làm cách nào để tôi xem PMTU được lưu trong bộ nhớ cache trong Linux (và tất cả các HĐH khác)


13

Khi tôi ping một trang web từ xa với bit DF được đặt và kích thước gói quá lớn cho bộ định tuyến của tôi, thông báo "yêu cầu phân mảnh" ICMP đầu tiên được gửi từ bộ định tuyến. Sau đó, tin nhắn đến từ localhost của tôi.

Netstat -rC (trên Linux) cho phép tôi xem bộ đệm của bảng định tuyến, nhưng

1) Có vẻ hiển thị MTU dưới một cột được gọi là MSS (mà tôi mong đợi là MSS TCP thấp hơn của liên kết)

2) Luôn hiển thị giá trị là 1500

Localhost của tôi phải lưu trữ PMTU ở đâu đó để nó có thể tạo ra thông điệp cần phân mảnh. Nhưng làm thế nào để tôi thấy điều đó?

Dưới đây là một ví dụ trên máy của tôi (-n trên netstat ức chế tra cứu DNS ngược):

[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: Theo đề nghị:

ip route get to 212.58.244.69

cho

212.58.244.69 via 217.155.134.6 dev eth1  src 217.155.134.4
    cache  mtu 1500 advmss 1460 hoplimit 64

Điều này cũng có vẻ sai vì MSS chỉ kém 40 so với mtu, đó là mtu giao diện chứ không phải PMTU


1
Trên Fedora 22, netstat -rCnkhông trả về gì, nhưng watch ip route get to $HOSThiển thị những gì đã xảy ra, bao gồm cả bộ đệm cache. ip route show cachedcho thấy có lẽ cũng đầu ra một cái gì đó nhưng không.
David Tonhofer

Câu trả lời:



1

Trong Windows, sử dụng lệnh Netsh để xem "bộ đệm đích" chứa thông tin này. Ví dụ: giả sử IPv4):

netsh interface ipv4 show destinationcache

1

MSS phải nhỏ hơn 40 byte so với MTU của bạn (nó không bao gồm các tiêu đề byte IPv4 (20 byte) và tcp (20)). Vậy là đúng.

Thông điệp cần thiết phân mảnh ICMP được gửi bởi bộ định tuyến, không phải máy chủ của bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.