1

私の組み込みシステムは、2つの「内部」デバイス(内部とは物理的に同じボード上にあることを意味します)とLANに接続されたMicrelKSZ8995Mスイッチを使用しています。

デバイス1は、Busybox Linuxを実行しているARMv5プロセッサであり、LAN IPはDHCPまたは静的に構成されてeth0おり、リンクローカル/APIPA169.254.137.10アドレスはにありeth0:0ます。

169.254.137.11デバイス2は、ARTOSを実行している小さなチップであり、リンクローカル/ APIPAアドレスのみを使用して、他に何を知っているかを知っています。

+----------------------------+
| +----------+  +----------+ |
| | Device 1 |  | Device 2 | |
| +-----+----+  +-----+----+ |
|       |             |      |   <-- a "unit"
| +-----+-------------+----+ |
| | Micrel KSZ899M switch  | |
| +-----------+------------+ |
+-------------|--------------+
              |
           +--+--+
           | LAN |
           +  -  +

デバイス1とデバイス2は、LAN上の他のデバイス(または再帰的に接続されたネットワーク)がデバイス2を認識したり、2つの間を行き来するデータを確認したりすることなく、TCP/IPを介して相互に通信できるようにすることを目的としています。デバイス。

また、ネットワーク上にユニット全体の複数のインスタンスが存在する可能性があり、リンクローカルアドレスがユニット間で衝突してはなりません。

私の理解では、RFC 3927で定義されているリンクローカルアドレッシングは「内部」通信のみを対象としており、リンクローカルアドレッシングを使用してインターフェイス間でディスパッチされたパケットはスイッチやルーターによって転送されるべきではありません。

残念ながら、システム全体がLANに接続されていると、より広いネットワーク上の複数のデバイスからデバイス2へのARP応答が見られます。これは、リンクローカルIPが表示され、ネットワーク全体で衝突していることを意味します。つまり、Micrelはこれらを転送しているように見え、停止させるための構成がわかりません。

APIPAアドレッシングが機能する方法を誤解しましたか?

または、私が正しいのに、Micrelがそれらを適切にサポートしていない場合、強制的に準拠させることはできますか?


参照:

4

2 に答える 2

1

私の理解では、RFC 3927で定義されているリンクローカルアドレッシングは「内部」通信のみを対象としており、リンクローカルアドレッシングを使用してインターフェイス間でディスパッチされたパケットはスイッチやルーターによって転送されるべきではありません。

ええと、レイヤ2スイッチはIPアドレスについてさえ知りません。あなたの理解は間違っています。RFC 3927で定義されているように、リンクローカルアドレスはルーターによって転送されてはなりません。(レイヤー3ネットワーク機器)

ただし、ARP要求はスイッチによって転送されます。(レイヤー2ネットワーク機器)

データシートの最初の文を参照してください。

KS8995Mは、高度に統合されたレイヤー2マネージドスイッチです。

レイヤー2(MAC /イーサネット)通信とレイヤー3(TCP / IP)通信の違いの詳細については、ネットワークスイッチOSIモデルを参照してください。

すでに指摘したように、KSZ8895Mは次のように「ローカル」を定義します。

「ローカル」パケット。DA(宛先アドレス)ルックアップに基づきます。ルックアップテーブルの宛先ポートがパケットの送信元のポートと一致する場合、パケットは「ローカル」として定義されます。

これは、このパケットの宛先がパケットの送信元のポートに割り当てられている場合、スイッチがパケットを転送しないことを意味します(レイヤー2、イーサネット、MAC!)。「宛先アドレス」は、この問題ではMACアドレスであり、IPアドレスではありません。

結論:( 改訂)

デフォルトでは、内部スイッチがLANに物理的に接続されている限り、スイッチに接続されているすべてのデバイスが外部に表示されます。

これを回避するには、ネットワークセグメントを物理的または仮想的に分離する必要があります。

しかし、幸運なことに、KS8995MはVLANをサポートしています。VLANを使用すると、「内部」ネットワークを外部から分離できます。

  • 「デバイス1」のポートを「VLAN1」(プライベートVLAN)に追加
  • 「デバイス2」のポートを「VLAN1」(プライベートVLAN)にのみ追加
  • 「デバイス1」のポートを「VLAN2」(VLAN外)に追加
  • 「外部LAN」のあるポートに「VLAN2」(外部VLAN)しかないことを確認してください
  • 「VLAN0」(デフォルトVLAN)がすべてのポートから削除されていることを確認してください。

このようにして、「デバイス1」を備えたポートは、外部LANセグメントとプライベート内部LANセグメントの両方と通信できます。「デバイス2」は実質的に外部から分離されているため、LANは「デバイス2」と通信できません。

VLAN構成については、CLIユーザーガイドの6ページを参照してください。

于 2012-12-01T11:53:59.923 に答える
0

KSZ8895Mデータシート(代わりに全体を通してKS8895Mを参照しているので、機能的に同等であると仮定します)は24ページに次のように述べています。

KS8895Mは、次のパケットを転送しません。

  • エラーパケット。これらには、フレーミングエラー、FCSエラー、アライメントエラー、および不正なサイズのパケットエラーが含まれます。
  • 802.3xポーズフレーム。KS8895Mはこれらのパケットを傍受し、適切なアクションを実行します。
  • 「ローカル」パケット。DA(宛先アドレス)ルックアップに基づきます。ルックアップテーブルの宛先ポートがパケットの送信元のポートと一致する場合、パケットは「ローカル」として定義されます。

これは、MicrelがRFC 3927に準拠していないと思いますが、上記で定義された方法でのみ「ローカル」を定義していることを示唆しています。

そうすると、残念ながらこれを機能させることはできません。

于 2012-12-01T11:47:16.270 に答える