TCP/IPプロトコル・スタックの省メモリ開発事例(前編) ――ミドルウェアの追加で既存の16ビット・マイコンがネット対応マイコンに変身
● 迷った結果,緊急データやNagleは実装せず
逆に,以下の機能については実装しませんでした.
1) 緊急データとしての扱い
あるコネクション上で通常のデータ通信を行っているときに,それとは別のデータを急いで送信したい場合,「緊急データ」という扱いで送信することができます.緊急データを受信した場合,受信途中の通常データとは別の領域に格納し,すぐにアプリケーションに通知します.
組み込み機器におけるこの機能の使用頻度は少ないと考えられます.実装した場合のメモリ使用量の増加に見合わないと判断したため,この機能は実装しないことにしました.
2)Nagleアルゴリズム
小さなサイズのデータを複数送信する場合,しばらく送信せずにバッファリングして,ある程度まとめて1パケットにして送信します.これを実現しているのがNagleアルゴリズムです.
筆者らの実装では,メモリを削減するために,一つのコネクションに対して同時に複数の送信要求を出せない仕様にしました.そのため,この機能を実装する必要がなくなりました.