Topic sizeについての注意事項

1 post / 0 new
Offline
Last seen: 10 years 3 weeks ago
Joined: 06/26/2013
Posts: 15
Topic sizeについての注意事項

RTI Connextは、通信効率および転送層(主にUDPv4)の制限からTopic sizeが64KiB弱(*1)を超えると自動的にTopicを分割して送信する様に作成されています。しかしながら、この分割送信処理については、最適化された処理を行っているわけではありません。

また、reliable 通信での送信失敗時に必要となる再送コスト(*2)を考えると、Topic sizeを大きくすることはお勧めできません。

以上のことと、RTPSプロトコルにおけるオーバーヘッド分を考え、Topic sizeが63KiBを超えるようであればアプリケーションレベルでTopicを分割し、63KiB以下に分割して送信する様にしてください。

(*1) UDPがパケットごとに送信可能なデータサイズは65507Byteです。
(*2) reliable modeではEthernetおよびUDPレベルでのエラーを検出すると、そのエラーが発生したTopicを再送します。このときTopic sizeが63KiB以下であれば、UDPパケット一つを送りなおすだけで済みますが、複数パケットにわたるTopicであれば、そのパケットすべてを送りなおします。結果、通信に必要な時間が増大します。例えば、1GiB size Topicの通信して、最後のEthernet frameでエラーが検出されると、このTopicを破棄し、1GiBのデータ全てを再送することになります。このようにTopic sizeが大きくなればなるほど、エラー発生時の再送コストは増大します。

上記の63KiB以下というのは、あくまで平文のTopicを送る場合の制限であり、セキュア通信を行ったり、Limited-Bandwidth Plug-inを使用した場合には変化します。

なお、DDSレベルで分割されるサイズのデータはLarge Dataと呼ばれます。
RTI ConnextではLarge Data送信時、Asynchronous publisherを使用する様になっています。(ConnextはAsynchronouse publisherを使用しなければLarge Dataを送信できません。)