Linuxで経路MTU探索を使っていくつかの実験を行っています。RFC 1191から理解した限りでは、ルーターがゼロ以外のDFビットを含むパケットを受信し、そのパケットを断片化せずに次のホストに送信できない場合、ルーターはパケットをドロップして、ICMPメッセージを最初のホストに送信する必要があります。送信者。
コンピューター上にいくつかのVMを作成し、次の方法でそれらをリンクしました。
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がインストールされた仮想マシンであり、静的ルートを持つ2つのネットワークインターフェイスがあります。V1からV2にpingを実行し、その逆も成功します。
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にはMTU1500があります。セグメント200.xにはMTU750があります。
DFを有効にしてUDPパケットを送信しようとしています。事実、パケットのサイズが750を超える場合、VM1はパケットをまったく送信しません(send()呼び出しでEMSGSIZEエラーを受け取ります)。
ただし、サイズが1500を超えるパケットでは、このような動作が予想されます。また、VM1は750〜1500のサイズのパケットをR1に送信し、R1(またはR2)はそのようなパケットをドロップしてICMPパケットをVM1に返すと予想します。 。しかし、これは起こりません。
2つの質問があります:
1)なぜですか?
2)RFC 1191に従ってICMPパケットを受信するように仮想ネットワークを設定することは可能ですか?
ありがとう。