【Ethernet】車載ネットワーク その31【lwIP⑦】

車載ネットワーク

バックナンバーはこちら。
https://www.simulationroom999.com/blog/In-vehicle-network-backnumber/

はじめに

lwIPのマルチキャストグループの参加について。

登場人物

博識フクロウのフクさん

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1

エンジニア歴8年の太郎くん

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1

マルチキャストグループの参加

太郎くん
太郎くん

今回はマルチキャストグループの参加をlwIPでやる場合の話だね。

  • lwIP自身の初期化
  • ネットワークインターフェースの追加
  • マルチキャストグループの参加 ← これ
  • ネットワークインターフェースの初期化
  • リンクアップ
  • UDP Socket生成
  • IPアドレス、ポートへのBind
  • UDP受信待ち
  • EthnertFrameの疑似受信
フクさん
フクさん

さっそく使用するAPIを言うと、
igmp_joingroup_netif
という関数になる。

太郎くん
太郎くん

マルチキャストグループって、複数あることもあるの?

フクさん
フクさん

あり得るよ。

太郎くん
太郎くん

その場合は、このマルチキャストグループの数だけ呼び出すって感じになるのかな?

フクさん
フクさん

そのイメージであってる。
まぁ今回は一回呼ぶだけでOKなはずだよ。

太郎くん
太郎くん

うん。了解。

igmp_joingroup_netif関数

フクさん
フクさん

igmp_joingroup_netif関数は以下の引数を持ってる。

netif: グループに追加したいネットワークインターフェース
groupaddr: 参加するグループのIPアドレス

太郎くん
太郎くん

おー。
以外とシンプルだ。

太郎くん
太郎くん

参加するグループのIPアドレスってのは例のMACアドレスと紐づいたIPアドレスだよね?
MACアドレスが
01-00-5e-00-01-01
だったら、
IPアドレスは
236, 0, 1, 1
になるっていう。

フクさん
フクさん

そうそう。

太郎くん
太郎くん

たしかここで説明してたね。

igmp_joingroup_netif関数を読んだ際の挙動

フクさん
フクさん

あと、igmp_joingroup_netif関数を呼ぶと、
とあるパケットが送信されることになってる。

太郎くん
太郎くん

え?
そうなの?

フクさん
フクさん

関数名の一部にもなってるが、IGMPというプロトコルのパケットが送信される。
IGMPの説明はWikipediaから持ってきた。

Internet Group Management Protocol (IGMP) とは、IPネットワーク上でマルチキャスト(特定の一対多または多対多通信)を行うために、マルチキャストに参加するホストのグループを設定し、ネットワークに通知するための通信プロトコルである。マルチキャストは、動画や音楽のストリーミングなど、同時に多数のホストへ同一のデータを送信するときに通信を効率化する技術である。

Wikipedaより
太郎くん
太郎くん

ほー。
確かによくよく考えると、どういうグループがネットワーク上で形成されてるかネゴシエーションする必要はあるだろうから、
それが、IGMPで通知されるわけかー。

フクさん
フクさん

まぁ今回はIGMPを解析するわけじゃないんで、
予備知識として知っておいて。

太郎くん
太郎くん

おー。

まとめ

フクさん
フクさん

まとめだよ。

  • lwIPのマルチキャストグループの参加について説明。
    • igmp_joingroup_netif関数を使用。
    • 上記関数を呼び出すとIGMPでグループ参加を通知するためのパケットが送信される。

バックナンバーはこちら。

コメント

タイトルとURLをコピーしました