TCP/IPプロトコル・スタックの省メモリ開発事例(前編) ――ミドルウェアの追加で既存の16ビット・マイコンがネット対応マイコンに変身
● 迷った結果,ふくそう回避と遅延ACKを実装
「あったら良いが,なくてもどうにかなる」というたぐいの仕様については,いろいろと悩みました.その結果,コード量,RAM使用量,性能(通信速度)などを総合的に考慮しながら,可能な限り実装する方向で検討を進めました.例えば,以下の機能については実装することにしました.
1) スロー・スタート,ふくそう回避
スロー・スタートは,通信が集中することによるパケットの消失(ふくそう)を防ぐためのアルゴリズムです.最初はゆっくりと,その後は指数関数的に通信速度を上げていきます.一度再転送が発生したら再びゆっくりと通信を開始し,前回再転送が発生した通信速度が近づいたら通信速度の上げかたをゆるやかにします.これによりふくそうの発生を防ぎます.
2) 遅延ACK
ACKの基本は,受け取ったデータに対してACKを返送することです.連続して大量のデータを受信する場合は,ACKのパケット数も非常に大きくなります.そのため,複数のパケットに対してまとめてACKを返す「遅延ACK」と呼ばれる方法があります.この方法を利用するとACKパケットの数を減らし,通信を効率化することができます.