パケットが大きすぎる場合、IEEE 802.1ad(別名VLAN Tagging、QinQ)はどのように有効ですか?


8

最近、MTUの問題を扱っています。そして、それはすべて、新しいコンピュータのイーサネットアダプタのデフォルトのフレームサイズが1504バイトであるという事実から生じているようです。

>netsh interface ipv4 show subinterfaces

   MTU  MediaSenseState   Bytes In  Bytes Out  Interface
------  ---------------  ---------  ---------  -------------
  1504                1  3954161316  804790885  Local Area Connection

NetworkEngineering.stackexchange.comのランダムな人物によると、イーサネットパケットが大きすぎるため、大きすぎるパケットは受信側のネットワークインターフェイスカード(NIC)によってドロップされます。

... MTUが802.3の仕様である1500よりも大きいフレーム

最大設定よりも大きなフレームはなり NICによって落とされる-それは誤りだし、OSはそれについて知っていることはありません。(特大のフレームカウンターがクリックしますが、それだけです。)

これにより、コンピュータがゲートウェイマシンにパケットを送信しようとしたときに問題が発生します。理想的には、パスMTUディスカバリーに依存することになります。ただし、生成されるイーサネットパケットは他のどのマシンでも受信するには大きすぎるため、IP パケットが大きすぎる断片化メッセージを返す機会はありません

「断片化」はまったくありません。「断片化が必要」を示す場合、レイヤー2(イーサネット)には意味がありません。これは、ネクストホップインターフェイスに適合しないためパケットをドロップする必要がある場合に、ICMPメッセージを送信するルーターによってレイヤー3(IP)で計算されます。

最初に2つ目の質問をさせていただきます。

  • 無効なイーサネットフレームを意図的に作成する仕様があるのはなぜですか?ここで意図されている動作は何ですか?他のネットワークインターフェイスカードがこれらの新しいデフォルトサイズのパケットを受信できない場合、彼らは何を期待していたでしょうか。

次に、最初の質問に2番目に移動します。そして、これは以前に尋ねられたことです-多く。

  • 4バイトのQinQタグはイーサネットフレームヘッダーの一部ですか、それともイーサネットペイロードの一部ですか?ヘッダーの一部である場合、ペイロードボディが4バイト増加したのはなぜですか?イーサネットペイロードの一部である場合、なぜペイロードMTUが4バイト増加するのですか(4バイト増加すると無効なパケットになることがわかっている場合)。

より大きな質問は...

少し前に戻ると、より大きな質問があります。

私たちは何をすべきか?

この標準を設計した人がいたに違いありません。これらの大きすぎるパケットを生成するデバイスで人々が何をすることを期待していたのでしょうか?

私は本当に尋ねています。すべてのハードウェアデバイスに移動してMTU 1504の増加を元に戻し、それを1500に戻すつもりはなかったと思います。

netsh interface ipv4>set subinterface "Local Area Connection" mtu=1500 store=persistent
Ok.

これは、設定の悪夢になる(そして今もそうです)

VLANタギングをオフにするという考えでしょうか?設定の悪夢は別として、それは単に機能しません:

  • ステップ1:VLANタギングを無効にする

    ここに画像の説明を入力してください

  • ステップ2:機能しないことを確認します。

    netsh interface ipv4 show subinterfaces

     MTU  MediaSenseState   Bytes In  Bytes Out  Interface
    

    1504                1     238125     245855  Local Area Connection
    

これに対する解決策が手動ですべてのネットワークカードを1500のMTUに強制的に戻すことである場合、そもそもなぜそれらが最大1504バイトにバンプし、無効なパケットを作成したのですか?

パズルのピースが欠けています。

ボーナスおしゃべり

 Without 802.1Q tagging        Without 802.1Q tagging   
+------------------------+    +------------------------+
|Destination MAC: 6 bytes|    |Destination MAC: 6 bytes|
|Source MAC: 6 bytes     |    |Source MAC: 6 bytes     |
|Ethertype: 2 bytes      |    |802.1Q tag: 4 bytes     |
+------------------------+    |Ethertype: 2 bytes      |
|                        |    +------------------------+
|                        |    |                        |
/ Payload: 1500 bytes    /    / Payload: 1500 bytes    /
|                        |    |                        |
|                        |    |                        |
+------------------------+    |                        |
| Frame Check Sequence:  |    +------------------------+
|                 4 bytes|    | Frame Check Sequence:  |
+------------------------+    |                 4 bytes|
                              +------------------------+

ネットワーク図

+------------------+      +----------------+     +------------------+
| Realtek PCIe GBe |      | NetGear 10/100 |     | Realtek 10/100   |
|       (on-board) |      |     Switch     |     |     (on-board)   |
|                  |      +----------------+     |                  |
| Windows 7        |           ^    ^            |                  |
|                  |           |    |            |                  |
| 192.168.1.98/24  |-----------+    +------------| 192.168.1.10/24  |
| MTU = 1504 bytes |                             | MTU = 1500 bytes |
+------------------+                             +------------------+

最大許容1500バイト数よりも大きいパケットを生成して、好きな構成に置き換えることもできます。

+------------------+      +----------------+     +------------------+
| Realtek PCIe GBe |      | NetGear 10/100 |     | Realtek 10/100   |
|       (on-board) |      |     Switch     |     |     (on-board)   |
|                  |      +----------------+     |                  |
| Windows 7        |           ^    ^            | MTU = 1500 bytes |
| MTU = 16384bytes |           |    |            |                  |
|                  |-----------+    +------------|                  |
+------------------+                             +------------------+

一部のデバイスが意図的に無効なパケットを生成した場合にイーサネットがどのように機能するかという、技術的、概念的、論理的、根本的、理論的な問題に対処できるサイトを見つけようとしています。

問題は、無効なイーサネットパケットを別のイーサネットデバイスに送信しようとしたときです。

  • コンピューターがイーサネットパケットを生成する

    Source MAC:      xx-xx-xx-xx-xx-xx
    Destination MAC: yy-yy-yy-yy-yy-yy
    Ethertype:       0x0800
    Payload:         ...1504 bytes...  (or could be ...16384 bytes, anything larger than 1500...)
    CRC:             4 bytes                
    

このパケットは、ターゲット802.3uデバイスが受信するには大きすぎるため、無効です。ターゲットのホストオペレーティングシステムはパケットを認識せず、イーサネットには無効なパケットを送信者に報告する機能がないため、「大きな」パケットは失われます。

ボーナスおしゃべり

Ciscoのスイッチ間リンクとIEEE 802.1Qのフレーム形式

フレームサイズ

インターフェイスのデフォルトの最大転送単位(MTU)は1500バイトです。イーサネットフレームに外部VLANタグが接続されている場合、パケットサイズは4バイト増加します。したがって、プロバイダーネットワークの各インターフェイスのMTUを適切に増やすことをお勧めします。推奨される最小MTUは1504バイトです。

その間:

IEEE 802.3イーサネット規格では、1500バイトのMTUフレームのサポートのみが義務付けられています。


3
これは、dot1q(ethertype == 0x8100)をサポートしないNIC(ファームウェアがある)の問題です。フレーム内の余分なバイトを処理するために必要なWindowsエラー/アーティファクト/何でも表示されていると思います-通常、 IPペイロードのMTUは変更されませんが、ドライバーはハードウェアに追加のデータを受け入れるように指示します。
リッキービーム

イアン、確かにあなたはここで問題に遭遇しているようですが、投稿には疑わしい説明的な仮定があります... SEコメントは限定的ですが、私は上から始めましょう:RE:"機会はありませんIPパケットが大きすぎて断片化メッセージが返されない場合" <-純粋に非IPサービス(FCoEなど)を実行している場合を除き、偽に見えます。この最初のステートメントが最初の質問を駆動するので(無効なイーサネットフレームを意図的に作成する仕様があるのはなぜですか?)、私は詳細について尋ねる傾向があります。トポロジー/図などが必要
Mike Pennington 2014

パスにあるデバイスの詳細を追加し、VLAN / IP構成の詳細を要約し、すべてのイーサネットリンクの特定のMTU情報を含めてください。また、関連するネットワーク機器のメーカー/モデル番号(NICを含めるため)も知っておく必要があります。また、これまでに行ったトラブルシューティングの手順と、実行したスニファーキャプチャからの出力も含めます。説明が必要な場合は、ネットワークエンジニアリングメタまたはNEチャット
Mike Pennington

@MikePenningtonまた、「IPパケットが大きすぎる断片化メッセージが返される機会はありません」は、不正な形式のイーサネットパケットがオペレーティングシステムのTCP / IPスタックに到着しないという問題が原因です。IPがパケットを受信しない場合は、どのような形式のICMPタイプ3パケットでも応答する機会がありません。
Ian Boyd

マップを見るまでは、それを検証する方法がありませんでした。多くの人々がネットワークについて誤解してここに来て、私たちは彼らが実際に何を言おうとしているのか対現実を解読しなければならないことを理解してください。私は助けることができる入力を持っています。しかし、私が答える前に対処する必要がある他の現実の問題があります
マイクペニントン2014

回答:


6

投稿での個々の懸念への対応...

パスMTUディスカバリーについて

理想的には、パスMTU検出に依存することになります。しかし、生成されるイーサネットパケットは他のどのマシンでも受信するには大きすぎるため、IPパケットが大きすぎる断片化メッセージを返す機会はありません。

あなたの図に基づいて、PMTUDは同じLANセグメント内の2つの異なるPC間では機能しないことに同意します。PCは、PMTUDに必要なICMPエラーメッセージを生成しません。

ジャンボフレーム

一部のベンダー(Ciscoなど)には、1500バイトを超えるイーサネットペイロードをサポートするスイッチモデルがあります。正式にはIEEEはこの構成を推奨していませんが、業界では元の1500バイトMTUから慎重に逸脱する必要があります。正当な理由でジャンボフレームを活用するストレージLAN /バックアップネットワークがあります。ただし、ジャンボフレームを展開するときに、すべてのMTUが同じVLAN内で一致することを確認しました。

ブロードキャストドメイン内のMTUの不一致

つまり、同じイーサネットブロードキャストドメイン内では、イーサネットMTUの不一致が発生しないようにする必要があります。もしそうなら、それはバグまたは設定エラーです。バグやエラーに関係なく、これらの問題は手動で解決する必要があります。

そのすべての議論が次の質問につながります...

無効なイーサネットフレームを意図的に作成する仕様があるのはなぜですか?

同意するかどうかわかりません... IEEE 802.3シリーズ、またはRFC 894が無効なフレームを作成する方法がわかりません。ホストの実装またはホストの設定ミスにより、無効なフレームが作成されます。実装が仕様に従っているかどうかを理解するには、さらに多くの証拠が必要です...

この図は、MTUがブロードキャストドメイン内で一致していないことを示す一応の証拠です...

+------------------+      +----------------+     +------------------+
| Realtek PCIe GBe |      | NetGear 10/100 |     | Realtek 10/100   |
|       (on-board) |      |     Switch     |     |     (on-board)   |
|                  |      +----------------+     |                  |
| Windows 7        |           ^    ^            |                  |
|                  |           |    |            |                  |
| 192.168.1.98/24  |-----------+    +------------| 192.168.1.10/24  |
| MTU = 1504 bytes |                             | MTU = 1500 bytes |
+------------------+                             +------------------+

802.3準拠の実装はMTUの不一致にどのように対応すべきですか?

彼ら(これらの「スペック」の作者たち)が、これらの大きすぎるパケットを生成するデバイスで人々に何をすることを期待したのでしょうか?

同じブロードキャストドメイン内のMTU 1504およびMTU 1500は、単に設定ミスです。不一致のIPネットマスク以上の機能は期待できません。一致しないIPサブネットの機能が期待できます。あなたの会社はMTUの不一致の根本的な原因を突き止めて修正する必要があります...現時点では、根本的な原因がユーザーエラー、実装のバグ、またはこれらの組み合わせのどれであるかを判断するのは困難です。

影響を受けるWindowsマシンがActive Directoryドメインに正常にログインしている場合は、Windowsログインスクリプトを作成して、ドメインログインスクリプト内の適切に構築されたテストに基づいてMTUの問題を自動的に修正できます(ドメインコントローラーがMTUの一部ではない場合)問題)。

マシンがドメインにログインしていない場合は、手作業で作業することもできます。

ダメージを抑えるための他の可能性

レイヤー3スイッチ注1を使用して、MTUが壊れているすべてのカスタムVLANを構築し、レイヤー3スイッチのイーサネットMTUを壊れたマシンに一致するように設定します。これは、IP層でのMTU問題を解決するためにPMTUDに依存しています。Layer3スイッチは、PMTUDで必要なICMPエラーを生成します。

このオプションは、壊れたマシンのアドレスをDHCPで変更できる場合に最適です。壊れたマシンはmac-addressで識別できます。

...そもそもなぜ1504バイトまでバンプして、無効なパケットを作成したのですか?

この時点で言うのは難しい

802.1adと802.1q

パケットが大きすぎる場合、IEEE 802.1ad(別名VLAN Tagging、QinQ)はどのように有効ですか?

QinQを使用しているという証拠はこれまで見ていません。私がこれまで見てきた限られた証拠から、簡単な使用しているの802.1qカプセル化、必要がある NICドライバがサポートすると仮定すると、Windowsで正しく動作し802.1Q ENCAPを。


エンドノート

注1 すべてのレイヤー3スイッチで実行できます... Cisco、Juniper、およびBrocadeはすべて、この種の機能を実行できます。


2

私はあなたの概念的な質問に答えようとすることができます。

実際の見積もりは見つかりませんが、.1adと.1qがPCや他のエンドホストで処理されることを意図していないことは明らかです。それらは(通常)インフラ設備によってのみ処理されます。デザイナーの心の中に何があったかはわかりませんが、実際のシナリオでQinQパケットがPCに送信されることを想像するのは困難です。インフラストラクチャ機器(ルート、スイッチなど)のイーサネットインターフェイスは、より大きなパケットを処理できます。

したがって、パケットはPCに対してのみ無効であり、理論的にはそれらを決して見るべきではありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.