it-swarm-ja.com

MTUは1500ですが、IPv6で最初のフラグメントの長さが1496であるのはなぜですか?

ping6 ipv6Address -s 1500

このコマンドはフラグメントになります。 Wiresharkで観察すると、最初のフラグメントパケットの長さは1496です(レイヤー3から)。 MTUが1500であるため、この1496の長さに混乱します。それはどこから来たのですか?

4
deepsky

これは、IPv6MTUに関する私自身の参照用です。私はそれを-に追加するためにいくつかの質問が必要でした-そして私はあなたをcho-cho-chooseします。

1つ目はイーサネットパケットですが、通常は無視します。

+-------------------------+
| Ethernet - 16 bytes     |
|  6 byte destination MAC |
|  6 byte source MAC      |
|  4 byte type            |
+-------------------------+
|                         |
/  1,500 byte payload     /
|                         |
+-------------------------+

次に、IPv4またはIPv6ヘッダーを追加します。

IPv4                           IPv6
+-------------------------+    +-------------------------+
| Ethernet - 12 bytes     |    | Ethernet - 12 bytes     |
|  6 byte destination MAC |    |  6 byte destination MAC |
|  6 byte source MAC      |    |  6 byte source MAC      |
|  4 byte type            |    |  4 byte type            |
+-------------------------+    +-------------------------+
| IPv4 - 20 bytes         |    | IPv6 - 40 bytes         |
|  10  byte control flags |    |  6 byte control flags   |
|  2 byte total length    |    |  2 byte payload length  |
|  4 byte source addr     |    |  16 byte source addr    |
|  4 byte dest addr       |    |                         |
+-------------------------+    |  16 byte dest addr      |
|                         |    |                         |
|                         |    +-------------------------|
|                         |    |                         |
/ 1,480 payload           /    / 1,460 payload           /
|                         |    |                         |
+-------------------------+    +-------------------------+

次に、PPPoE接続の現実を追加します。これは、PPPoE PADSタグのパケットから8バイトを取り出します:

+-------------------------+
| Ethernet - 12 bytes     |
|  6 byte destination MAC |
|  6 byte source MAC      |
|  4 byte type            |
+-------------------------+
| PPPoE PADS - 8 bytes    |
+-------------------------+
|                         |
/ 1,492 payload           /
|                         |
+-------------------------+

これにより、IPv4およびIPv6トラフィックで使用可能なMTUが減少します。

IPv4                           IPv6
+-------------------------+    +-------------------------+
| Ethernet - 12 bytes     |    | Ethernet - 12 bytes     |
|  6 byte destination MAC |    |  6 byte destination MAC |
|  6 byte source MAC      |    |  6 byte source MAC      |
|  4 byte type            |    |  4 byte type            |
+-------------------------+    +-------------------------+
| PPPoE PADS - 8 bytes    |    | PPPoE PADS - 8 bytes    |
+-------------------------+    +-------------------------+
| IPv4 - 20 bytes         |    | IPv6 - 40 bytes         |
|  10  byte control flags |    |  6 byte control flags   |
|  2 byte total length    |    |  2 byte payload length  |
|  4 byte source addr     |    |  16 byte source addr    |
|  4 byte dest addr       |    |                         |
+-------------------------+    |  16 byte dest addr      |
|                         |    |                         |
|                         |    +-------------------------|
|                         |    |                         |
/ 1,472 payload           /    / 1,452 payload           /
|                         |    |                         |
+-------------------------+    +-------------------------+

そして、私の場合、ISPがネイティブIPv6接続を提供していないため、 Hurricane Electric 's 6in4トンネリング を使用しています。これは、IPv6トラフィックがIPv4パケットにラップされていることを意味します。

IPv4                           IPv6
+-------------------------+    +-------------------------+
| Ethernet - 12 bytes     |    | Ethernet - 12 bytes     |
|  6 byte destination MAC |    |  6 byte destination MAC |
|  6 byte source MAC      |    |  6 byte source MAC      |
|  4 byte type            |    |  4 byte type            |
+-------------------------+    +-------------------------+
| PPPoE PADS - 8 bytes    |    | PPPoE PADS - 8 bytes    |
+-------------------------+    +-------------------------+
| IPv4 - 20 bytes         |    | IPv4 - 20 bytes         |
|  10  byte control flags |    |  10  byte control flags |
|  2 byte total length    |    |  2 byte total length    |
|  4 byte source addr     |    |  4 byte source addr     |
|  4 byte dest addr       |    |  4 byte dest addr       |
+-------------------------+    +-------------------------+
|                         |    | IPv6 - 40 bytes         |
|                         |    |  6 byte control flags   |
|                         |    |  2 byte payload length  |
|                         |    |  16 byte source addr    |
|                         |    |                         |
|                         |    |  16 byte dest addr      |
|                         |    |                         |
|                         |    +-------------------------|
|                         |    |                         |
/ 1,472 payload           /    / 1,432 payload           /
|                         |    |                         |
+-------------------------+    +-------------------------+

ただし、重要な数値は[〜#〜] mtu [〜#〜]です。これは、IPv4またはIPv6がそれ自体で使用できるサイズです(そのヘッダー):

IPv4                           IPv6
+-------------------------+    +-------------------------+
| Ethernet - 12 bytes     |    | Ethernet - 12 bytes     |
|  6 byte destination MAC |    |  6 byte destination MAC |
|  6 byte source MAC      |    |  6 byte source MAC      |
|  4 byte type            |    |  4 byte type            |
+-------------------------+    +-------------------------+
| PPPoE PADS - 8 bytes    |    | PPPoE PADS - 8 bytes    |
+-------------------------+    +-------------------------+
|                         |    | IPv4 - 20 bytes         |
/ MTU = 1492              /    |  10  byte control flags |
|                         |    |  2 byte total length    |
+-------------------------+    |  4 byte source addr     |
                               |  4 byte dest addr       |
                               +-------------------------+
                               |                         |
                               / MTU = 1472              |
                               |                         |
                               +-------------------------+

次は、ペイロードサイズに関する混乱です。これは、フラグメント化しないフラグを使用して誰かにpingを実行するときに使用されます。 ICMPはIPを介して動作し、独自のヘッダーオーバーヘッドを追加します。

IPv4                           IPv6
+-------------------------+    +-------------------------+
| Ethernet - 12 bytes     |    | Ethernet - 12 bytes     |
|  6 byte destination MAC |    |  6 byte destination MAC |
|  6 byte source MAC      |    |  6 byte source MAC      |
|  4 byte type            |    |  4 byte type            |
+-------------------------+    +-------------------------+
| IPv4 - 20 bytes         |    | IPv6 - 40 bytes         |
|  10  byte control flags |    |  6 byte control flags   |
|  2 byte total length    |    |  2 byte payload length  |
|  4 byte source addr     |    |  16 byte source addr    |
|  4 byte dest addr       |    |                         |
+-------------------------+    |  16 byte dest addr      |
| ICMP - 8 bytes          |    |                         |
+-------------------------+    +-------------------------|    
|                         |    | ICMP - 8 bytes          |
|                         |    +-------------------------+
|                         |    |                         |
/ 1,472 ping payload      /    / 1,452 ping payload      /
|                         |    |                         |
+-------------------------+    +-------------------------+

:これがyouが必要になる前に1,452バイトペイロードでpingできる理由です断片。

私の場合、PPPoE PADSタグのオーバーヘッド:

IPv4                           IPv6
+-------------------------+    +-------------------------+
| Ethernet - 12 bytes     |    | Ethernet - 12 bytes     |
|  6 byte destination MAC |    |  6 byte destination MAC |
|  6 byte source MAC      |    |  6 byte source MAC      |
|  4 byte type            |    |  4 byte type            |
+-------------------------+    +-------------------------+
| PPPoE PADS - 8 bytes    |    | PPPoE PADS - 8 bytes    |
+-------------------------+    +-------------------------+
| IPv4 - 20 bytes         |    | IPv6 - 40 bytes         |
|  10  byte control flags |    |  6 byte control flags   |
|  2 byte total length    |    |  2 byte payload length  |
|  4 byte source addr     |    |  16 byte source addr    |
|  4 byte dest addr       |    |                         |
+-------------------------+    |  16 byte dest addr      |
| ICMP - 8 bytes          |    |                         |
+-------------------------+    +-------------------------|    
|                         |    | ICMP - 8 bytes          |
|                         |    +-------------------------+
|                         |    |                         |
/ 1,464 ping payload      /    / 1,444 ping payload      /
|                         |    |                         |
+-------------------------+    +-------------------------+

そして、6in4の私の追加のオーバーヘッド:

IPv4                           IPv6
+-------------------------+    +-------------------------+
| Ethernet - 12 bytes     |    | Ethernet - 12 bytes     |
|  6 byte destination MAC |    |  6 byte destination MAC |
|  6 byte source MAC      |    |  6 byte source MAC      |
|  4 byte type            |    |  4 byte type            |
+-------------------------+    +-------------------------+
| PPPoE PADS - 8 bytes    |    | PPPoE PADS - 8 bytes    |
+-------------------------+    +-------------------------+
| IPv4 - 20 bytes         |    | IPv4 - 20 bytes         |
|  10  byte control flags |    |  10  byte control flags |
|  2 byte total length    |    |  2 byte total length    |
|  4 byte source addr     |    |  4 byte source addr     |
|  4 byte dest addr       |    |  4 byte dest addr       |
+-------------------------+    +-------------------------+
| ICMP - 8 bytes          |    | IPv6 - 40 bytes         |
+-------------------------+    |  6 byte control flags   |    
|                         |    |  2 byte payload length  |
|                         |    |  16 byte source addr    |
|                         |    |                         |
|                         |    |  16 byte dest addr      |
|                         |    |                         |
|                         |    +-------------------------|
|                         |    | ICMP - 8 bytes          |
|                         |    +-------------------------+
|                         |    |                         |
/ 1,464 ping payload      /    / 1,424 ping payload      /
|                         |    |                         |
+-------------------------+    +-------------------------+

そして、なぜ私が1,424バイトのペイロードでしかpingできないのかがわかります。

6
Ian Boyd

これは、ネイティブでサポートされていないインターフェイスにVLANタグ付けがある場合に表示されます。802.1QVLANタグにはさらに4バイトかかります。 NICはそれらをネイティブにサポートし、(古い1518バイトではなく)1522バイトのイーサネットフレームをサポートするため、1500バイトのMTUを維持できます。NIC =はネイティブでサポートしていません。ソフトウェアでサポートできますが、MTUを1496に縮小して、NICがサポートする古い1518バイトフレームにすべてが収まるようにする必要があります。

4
Paul

レイヤーの通信プロトコルの最大伝送ユニット(MTU)は、レイヤーが転送できる最大のプロトコルデータユニットのバイト単位のサイズです。 PPPoA/VC-MUXを使用したIPover DSL接続の例では、以前と同様に31個のATMセルを埋めることを選択すると、10バイトのオーバーヘッドを考慮して1478 = 31 * 48-10の望ましい最適な削減MTU値が得られます。 2バイトのポイントツーポイントプロトコルオーバーヘッド、および8バイトのAAL5オーバーヘッドの。これにより、PPPoAに渡される1478バイトのパケットからATMを介して送信される合計コストは31 * 53 = 1643バイトになります。 PPPoAを使用してADSL経由で送信されるIPの場合、1478の数字は、IPヘッダーを含むIPパケットの全長になります。したがって、この例では、全長1500のIPパケットを送信するのではなく、1478の自主的に削減されたMTUを維持すると、IPパケットの長さが22バイト削減されますが、ATM層でパケットあたり53バイトが節約されます。

RFC 2516は、1492バイトのPPPoE/DSL接続の最大MTUを規定しています。1500バイトの最大イーサネットペイロードから8バイトのPPPoEヘッダー(PPP)の場合は2バイト) =オーバーヘッド、PPPoEヘッダー)の場合は6バイト。これは必ずしも整数のATMセルを埋めるわけではありません。データリンク層は、コンピューターネットワーキングの7層OSIモデルの層2です。 。TCP/ IPリファレンスモデルのリンクレイヤーに対応するか、その一部です。レイヤー3で測定するため、違いは明らかです。使用しているネットワークの種類により、4バイトが使用されます。ネットワーク管理の目的。

1
supstj

DSLを使用していますか? PPPoEヘッダーは8バイトを消費します。

1
LawrenceC