6番目(6-over-4)ルーターを含むIPv6ルーティングを試していますが、イーサネットを介してプライマリIPv6を実行しているルーティングセグメントに収まるほど小さいパケットサイズを使用する場合、パケットサイズが十分に小さい場合、ルーティングセグメントが大きすぎてIPv4がIPv6カプセル化に対応できない場合(つまり、1481〜1500バイト)、パケットが断片化されていない限り、パスを通過できません。応答ホストがルーティング側の6番目のルーターからPacket Too Bigエラーを受信すると、応答の断片化が始まり、しばらく続行します。
ただし、ICMPv6 はステートレスであるため、Linux には、ある期間、ターゲット ホストの大きすぎるパケット メッセージの MTU 値を格納するテーブルがどこかにあることを意味します。そうですか?それでは、この表を何とか見ることができますか?ip
このコマンドのさまざまなサブコマンドを見ましたが、似たようなものが見つかりませんでした。この表はUDPのようなプロトコルのものですか、それともICMPv6に固有のものですか?
答え1
Linuxは、検索されたMTUがターゲットに接続できるインターフェイスのMTUよりも低い場合、ルートMTU検索(RFC 1191)を介して学習されたリモートターゲットのMTUをキャッシュします。
キャッシュを表示するには、「ip ルート表示キャッシュ」を使用できます。たとえば、次のようになります。
me@server:~$ ip -6 route show cache
1234:8108:1111:111:1111:1111:ff38:57be via fe80::8243:abcd:4216:a4c0 dev eno12399np0 metric 1024 expires 35sec mtu 1280 hoplimit 64 pref medium
me@server:~$ ip route show cache
1.2.3.4 via 192.0.2.1 dev eno12399np0
cache expires 154sec mtu 1420
答え2
Linux(そして他の場所でも信じています)では、MTUはリモートホストではなくインターフェイスごとに構成されています。実行して確認してください
ip a
これにより、各インターフェイスのMTU番号が表示されます。
# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp6s1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:11:22:33:44:55 brd ff:ff:ff:ff:ff:ff
inet 10.0.42.23/24 brd 10.0.42.255 scope global enp8s0
valid_lft forever preferred_lft forever
私の場合、lo
MTUは65536バイトでenp6s1
1500バイトです。