vol66. Ethernet AVB とmulticast通信
Ethernet AVBとmulticast
Ethernet AVB に関する仕事をしている。
Ethernet AVB では以下のようなプロトコルがあるけど、 これらのプロトコルは皆multicast通信を利用する。
- AVTP
- gPTP
- SRP
- AVDECC
あれ?でも、どうやってmulticast通信をするんだ?
broadcast 通信では、Ethernet Switch は受け取ったメッセージを問答無用全てのポート
に送ればよい。でも、multicast通信の場合は、Ethernet Switchは受信したメッセージを
どのポートにおくればいいの?
すべてのポートに送るのならば、broadcast 通信と変わらないよね。。。
また、Routerの場合はどうなるの?
そんなギモンをもったので、調べてみた。
ネットワークのプロトコルは千差万別でとても複雑なので、以下の2種類に大別して考えていく。
- IP層におけるmulticast
- Ethernet AVBにおけるmulticast
基本的な考え方としては、どちらも、multicastメッセージを送る前に、
あらかじめmulticastメッセージが送信される経路を作ることをする。
そして、そのためのプロトコルが存在する。
まずは、IP通信におけるmulticastをみてみよう。
IP通信におけるmulticast
IP通信におけるmulticastグループへの加入を通知するためのプロトコルは2種類ある。
一つは、エンドポイント(PC)からルーターまでの間で使用されるプロトコル、
もう一つは、ルーター間で使用されるプロトコルだ。
エンドポイントからルーターまでのプロトコル
ホスト(Receiver)がルーター(ラストホップルーター)に対して、マルチキャストグループへの参加、維持、離脱を通知するためのプロトコル。
IPv4向けのIGMPとIPv6向けのMLDがある。
ルーター間のプロトコル
multicastルーティングプロトコルと呼ばれる。 現在は、PIM-SMが広く使われている。
- DVMRP (Distance Vector Multicast Routing Protocol)
- 距離ベクトル型の経路制御プロトコル
- MOSPF (Multicast Open Shortest Path First)
- PIM (Protocol Independent Multicast)
- PIM-SMモード(Sparse Mode)
- PIM-DMモード(Dense Mode)
- PIM-SSM
流れ
multicast通信を行う前に、この2種類のプロトコルを駆使して、multicastのディストリビューションツリーを構築する。
その後、multicastメッセージを送信すると、構築したツリーにしたがって、
multicastグループに参加したデバイスに、メッセージが送信されるという仕組みだ。
IP通信におけるルーターとEthernet Switch
ここで、ルーター(L3 switch)とEthernet Switch(L2 switch) でのMulticast メッセージに対する挙動を整理しておく。
Ethernet Switchはデフォルトですべてのポートにおくる
ルーターはデフォルトでどこのポートにもおくらない
- IGMP、PIM等を使用してでmulticastのディストリビューションツリーを構築する
- ディストリビューションツリー構築後、そのツリーに従って送る。
- IGMP、PIM等を使用してでmulticastのディストリビューションツリーを構築する
Ethernet AVBにおけるmulticast
さて通常のTCPやUDPでのmulticastはIP通信なので上述の通りだ。
だが、Ethernet AVB はIP通信を使わないプロトコルだ。
なので、先に述べたIGMPやMLDといったプロトコルはつかえない。
ではどうやってmulticast通信するのか?
Senderはどうやって、multicast用のMACアドレスを取得し、
Receiverはどうやって、multicastのドメインに参加すればいいのか?
答えは、それぞれのメッセージによって異なる。
AVTP
AVTPはAudioやVideo、またはControl message を運ぶためのtransport protocol。
AVTPメッセージのディストリビューションツリーの構築は、SRPプロトコルを使って行う。
具体的にはMSRPプロトコルを使う。MSRPを使って、AVB talker からAVB listenerまでのAVTPメッセージが
流れる経路を構築する。
Talker から Listener までの経路の構築
大きくわけると3ステップに分かれる。
- MSRP Domain message でSRP Domain を形成
- Class A, Class B のDomain
- 使用するVID, Priority Value の値
- Class A, Class B のDomain
- MSRP talker advertise
- MSRP Listener ready
まずは、MSRP Domain メッセージでSRP Domain を構築する。
これにより、Class AのDomain、Class BのDomain が定義される。
それぞれのClassのDomain では、どのVIDとPCPの値を使うかが決定される。
次に, MSRP Talker Advertise メッセージをつかって、Talker は持っているStream の情報
(Stream IDや必要bandwidthに関する情報)をSRP Domain のSwitchやEndpointに通知する。
最後に、Talker からAdvertise されたStreamを受け取りたいListener は、
MSRP Listener ready メッセージをつかって、Talker に対して、MSRP Listener ready メッセージを送る。
この一連の流れによって、AVB talker からのAVTPのmulticast通信を受け取るAVB listener までの経路が確定する。
(注意)
- AVTPは、VLANも利用するので、MVRPプロトコルを使用して、VLANのドメインも構築しておく必要もある
- Class A 用のVLAN ドメイン、Class B用のVLANドメインが必要
Destination Address
AVTPの destination address は、MAAP(MAC Address Acquisition Protocol)でallocation されたmulticastアドレスを使用する。 MAAP はIEEE1722で定義されている。 Dynamicで動的に決定する方法と、Staticにあらかじめ用意されているアドレスを使用する方法がある。
- Dynamic
- multicastアドレスの取得には、MAAPを使う。
下図の、MAAP Dynamic Allocation Pool の範囲のアドレスが割り当てられる。
- multicastアドレスの取得には、MAAPを使う。
- Static
- MAAPで予約されたmulticastアドレスを使用する。
下図の、MAAP Locally administrated Pool の範囲のアドレスを使用できる。
- MAAPで予約されたmulticastアドレスを使用する。
- Dynamic
gPTP
gPTPは時間同期のプロトコル。
john-rama01.hatenablog.com
Destination Address に01:80:C2:00:00:0Eを用いる。
この"01:80:C2:00:00:0E"はIEEE802.1Qで"Individual LAN Scope group address,
Nearest Bridge group address"として規定されている。
つまり隣接したBridgeとの通信用のアドレスだ。
このアドレスを用いた場合、Multicast通信用のMAC addressを用いているにもかかわらず、
Ethernet switchはこのメッセージを他のポートに転送するようなことはしない。
("AVB Software Interfaces and Endpoint Architecture Guidelines"より)
https://avnu.org/wp-content/uploads/2014/05/AVnu_SWAPIs_v1.0.pdf
When using gPTP, the packets are sent to a gPTP reserved destination multicast MAC address 01:80:C2:00:00:0E using a Layer-2 (L2) encapsulation with the gPTP allocated Ethertype 88F7. Although this defined MAC address is a multicast address, the address falls within a bridge management reserved range and is not forwarded to other ports.
ちなみにLLDP(Link Layer Discovery Protocol)も同じMulticast Address "01:80:C2:00:00:0E"を使用する。
LLDPは隣接するEthernet Switchやデバイスに対して、自分の機器情報を アドバタイズするために使用するプロトコルだ。
MSRP
MSRPは、帯域予約のためのプロトコル。
このMSRPプロトコルによって予約された帯域は、FQTSSによってShaping されることによって帯域を制限する。
Destination Address に01:80:C2:00:00:0Eを用いる。 (MSRPがこのaddressを用いることは、正確には802.1Qには規定されていない。)
これは、gPTP同様、Eternet Switch でメッセージが他のポートに無条件にforward されないようにするため。
MSRPのpropagation ruleは、以下のドキュメントの"2.6. Propagation Rules "が参考になる。
https://avnu.org/wp-content/uploads/2014/05/AVnu_Stream-Reservation-Protocol-v1.pdf
MVRP
MVRPはVLAN domain を動的に形成するのに使うプロトコル。 Destination Address に01:80:C2:00:00:21を用いる。
ちなみに、01:80:C2:00:00:20 - 01:80:C2:00:00:2F は、IEEE802.1Qにて、MRPアプリケーション用に予約されている。
AVDECC
IEEE1722.1(AVDECC)は - デバイスの検出(ADP) - ストリームの接続管理(ACMP) - デバイスのパラメータ取得や制御(AECP) のプロトコルから成る。
IEEE1722.1にて、ADPやACMPで使うMulticast MAC Address は91:E0:F0:01:00:00が予約されている。
Ethernet Switchの基本動作はmulticast メッセージを受け取ると、broadcastするため、 このMAC Address を受け取ったEthernet Switch は全ポートにメッセージを送る(と思う。。。)
まとめ
今回は、multicast 通信についてまとめてみた。
ポイントは、
- IP通信の場合は、IGMP/PIMといったプロトコルでディストリビューションツリーを構築する。
- AVBの場合は、
- AVTPメッセージは
- SRPでツリーを構築
- MMRPで定義されたmulticast アドレスを使う
- AVTPメッセージは
- gptp/MSRP
- 他のportに転送されない、IEEEで規定されている特別なmulticast アドレスを使う
- MSRPのpropagation rule は特殊
- MVRP, AVDECC(ADP, ACMP等)
- IEEEで規定されているmulticast アドレスを使う
といったところだ。
- IEEEで規定されているmulticast アドレスを使う
P.S blogの記事は、あくまで、自分が調べたものを纏めたものなので、間違いがあるかもしれません。 何かおかしなところや不明瞭なところがあれば、ぜひ教えて頂ください!!