EtherCAT は専用のデイジーチェーンセグメントで動作するよう設計されており、管理された Ethernet インフラ経由ではない。通常の Ethernet スイッチ経由で EtherCAT フレームを転送する必要がある場合(例:リモート EtherCAT セグメント用)、単純な MAC ラーニングは正しく動作しない——明示的なスイッチルールが必要。この記事ではその理由と設定すべきルールを説明する。What is the EtherType for EtherCAT と Which MAC addresses does EtherCAT use as source MAC and destination MAC も参照。
なぜ EtherCAT では MAC ラーニングが機能しないのか
通常の Ethernet スイッチは、そのホスト自身のトラフィックから宛先 MAC を学習したポートへフレームを転送する。EtherCAT ではこれが2つの理由で破綻する:
- スレーブは Ethernet フレームを決して送信しない。 EtherCAT スレーブはマスタのフレームをオンザフライで処理して通過させる;送信元 MAC は常にマスタの MAC のまま。したがってスイッチは EtherCAT セグメント上で1つの MAC——マスタのもの——しか学習しない。スイッチ背後の他のすべてのデバイスは MAC ラーニングから見えない。
- 宛先 MAC は学習されるアドレスではない。 マスタによって、宛先はブロードキャスト(
FF:FF:FF:FF:FF:FF)、マルチキャスト(01:01:01:01:01:01)、または送信元として現れないユニキャスト MAC。ブロードキャストとマルチキャストフレームは全ポートにフラッディングされる(動作はするが帯域を無駄にし、IGMP スヌーピングやストームコントロールでフィルタされる可能性がある);未知のユニキャスト宛先もフラッディングされるが、いずれかのデバイスがその MAC を主張すると動作しなくなる。
つまり EtherCAT がスイッチ経由で「なんとなく動く」のはフラッディングの偶然によるものだけ——脆弱で、スヌーピング、ストームコントロール、MAC テーブル変更が絡むと壊れうる。
推奨スイッチルール
- EtherType でフィルタ。 EtherCAT フレームは EtherType
0x88A4で識別される。対応するスイッチ(ACL、プロトコルベース VLAN)では EtherType0x88A4にマッチして EtherCAT トラフィックを分類する。 - EtherCAT を独自の VLAN に分離。 マスタポートと EtherCAT セグメントポートを専用 VLAN に入れ、EtherCAT フラッディングがネットワークの残りに漏れず、通常トラフィックが EtherCAT タイミングを妨害しないようにする。
- 宛先 MAC を明示的に転送。 宛先
FF:FF:FF:FF:FF:FF(ブロードキャスト)または01:01:01:01:01:01(マルチキャスト、マスタ次第)のフレームをその VLAN 内の EtherCAT セグメントポートに転送する静的転送/ACL ルールを作成。 - EtherCAT VLAN/ポートで干渉する機能を無効化。 EtherCAT パスで IGMP スヌーピング、マルチキャストフィルタリング、ブロードキャストストームコントロールをオフにし、フラッディングされたフレームをブロックしうる MAC ラーニングベースの制限(ポートセキュリティ)を無効化。
- 戻り方向。 フレームはマスタの MAC を宛先(または実装次第で引き続きブロードキャスト)として同じパスでマスタに戻る;ルールがマスタのポートへ対称にトラフィックを転送することを確認。
実際には、最も堅牢な構成は専用 VLAN と EtherType 0x88A4 にマッチする静的ルールの組み合わせ——これにより、マスタがどの宛先 MAC を使うかに関係なく、EtherCAT 転送が意図したポートに正確に固定される。
同じカテゴリの類似記事をチェック:
EtherCAT
この記事が役に立った場合は、TechOverflow での新しい記事の調査と公開を支援するため、「Buy Me a Coffee」でのご支援、または PayPal 経由でのご寄付をご検討ください