我正在做一些在Linux中進行路徑MTU發現的實驗。就我從RFC 1191中瞭解到的情況來看,如果路由器收到一個DF零非零的數據包,並且該數據包不能在沒有分段的情況下發送給下一個主機,則路由器應丟棄數據包並將ICMP消息發送到初始發件人。路徑MTU發現 - ICMP響應在哪裏?
我已經創建了幾個虛擬機在我的電腦上,並通過以下方式聯繫他們:
VM1 (192.168.100.2)
R1 (192.168.100.1,
192.168.150.1)
R2 (192.168.150.2,
192.168.200.1)
VM2 (192.168.200.2)
的Rx - 被虛擬機安裝了Linux,他們有一個靜態路由兩個網絡接口。從V1開始Ping V2,反之亦然。
traceroute from 192.168.100.2 to 192.168.200.2 (192.168.200.2)
1 192.168.100.1 (192.168.100.1) 0.437 ms 0.310 ms 0.312 ms
2 192.168.150.2 (192.168.150.2) 2.351 ms 2.156 ms 1.989 ms
3 192.168.200.2 (192.168.200.2) 43.649 ms 43.418 ms 43.244 ms
tracepath 192.168.200.2
1: ubuntu-VirtualBox.local 0.211ms pmtu 1500
1: 192.168.100.1 0.543ms
1: 192.168.100.1 0.546ms
2: 192.168.150.2 0.971ms
3: 192.168.150.2 1.143ms pmtu 750
3: 192.168.200.2 1.059ms reached
段100.x和150.x有MTU 1500段200.x有MTU 750
我試圖發送UDP報文的DF啓用。事實是,如果數據包的大小大於750(我接收到send()調用的EMSGSIZE錯誤),VM1根本不發送數據包。
但是,我期望這種行爲的數據包大小超過1500.我期望VM1發送數據包的大小在750和1500到R1,和R1(或R2)丟棄這樣的數據包並返回ICMP數據包發送給VM1。但是這並沒有發生。
有兩個問題:
1)爲什麼?
2)是否可以根據RFC 1191設置我的虛擬網絡接收ICMP數據包?
謝謝。
是的,你說得對。它工作:)謝謝。 – Rom098