【Ethernet】車載ネットワーク その41【lwIP疑似受信④】

【Ethernet】車載ネットワーク その41【lwIP疑似受信④】 車載ネットワーク

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

はじめに

IPフラグメントの受信フレーム順違いを再現する疑似受信コード。

登場人物

博識フクロウのフクさん

イラスト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

IPフラグメントの順番入れ替えの疑似受信

太郎くん
太郎くん

で、順番入れ替えの疑似受信はどうやるの?

フクさん
フクさん

あー。
そこはすごくシンプルで、
main関数内のinput_pkts関数の引数をランダムにするだけ。

太郎くん
太郎くん

ランダム?

フクさん
フクさん

元々こうなってたんだけど。

  input_pkts(&net_test, txdata1, sizeof(txdata1));
  input_pkts(&net_test, txdata2, sizeof(txdata2));
  input_pkts(&net_test, txdata3, sizeof(txdata3));
  input_pkts(&net_test, txdata4, sizeof(txdata4));
  input_pkts(&net_test, txdata5, sizeof(txdata5));
  input_pkts(&net_test, txdata6, sizeof(txdata6));
  input_pkts(&net_test, txdata7, sizeof(txdata7));
  input_pkts(&net_test, txdata8, sizeof(txdata8));
フクさん
フクさん

こうする。

  input_pkts(&net_test, txdata7, sizeof(txdata7));
  input_pkts(&net_test, txdata3, sizeof(txdata3));
  input_pkts(&net_test, txdata6, sizeof(txdata6));
  input_pkts(&net_test, txdata5, sizeof(txdata5));
  input_pkts(&net_test, txdata4, sizeof(txdata4));
  input_pkts(&net_test, txdata2, sizeof(txdata2));
  input_pkts(&net_test, txdata8, sizeof(txdata8));
  input_pkts(&net_test, txdata1, sizeof(txdata1));

修正コード所感

太郎くん
太郎くん

これはまたすごいことになったねぇ。
まともに動く気がしない。

太郎くん
太郎くん

そもそも最初の受信フレームにUDPヘッダもいないもんね。

フクさん
フクさん

UDPの判定はIPフラグメントを解決した後だから、
最初の受信フレームに居る必要はないね。

太郎くん
太郎くん

まぁ理屈上はそうだろうけど。
設計上、実装上は大変なんじゃない?

フクさん
フクさん

まぁ大変だろうけど、不可能ではない。

太郎くん
太郎くん

組み込み系のメモリリソース制約にも反するんじゃない?

フクさん
フクさん

そこは設計/実装次第だねー。

太郎くん
太郎くん

フクさんの話ぶりを聞いてると、
なんかうまいやり方があって、
lwIPはそのやり方に則ってるって話?

フクさん
フクさん

まぁlwIPが則ってるかはこれから見ることなんでわからないが、
割と組み込みの通信周りとしては王道のやり方は存在するね。

太郎くん
太郎くん

なるほど。
それで妙に楽観的なのね。

フクさん
フクさん

(まぁこの予想が外れたらヤバいけど)

太郎くん
太郎くん

(大丈夫かなぁ。楽観視してたらやっぱアカーンってのは開発で散々味わったからなぁ)

まとめ

フクさん
フクさん

まとめだよ。

  • IPフラグメントの受信フレーム順を変える疑似受信コード作成。
    • 渡す受信フレームの順番を入れ替えるだけ。
  • 組み込み系として、この仕様は重くないか?
    • 重いが、割とよくある話でもあり、lwIPも対応しているであろうと楽観視。

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

コメント

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