2015年8月22日土曜日

TCP輻輳アルゴリズムについて

Xperia Zで対応させてみたCPUガバナ・IOスケジューラに続いてTCP輻輳アルゴリズムに興味を持ってちょっと調べてみました。
標準カーネルではrenoとcubicしか無い。でもカスタムカーネルには多数のアルゴリズムが表示される。それぞれの性能評価については日本語ドキュメントは見かけたことが無いですが3c Toolboxの解説サイトに以下の記載がありました。
この記載、見たとおりスループットの高さはともかく、レイテンシーがwestwoodは他のものに比較すると一段と低い。レイテンシーはデータ転送後その結果が返されるまでの遅延時間ということだから、当然転送速度が早くなるはず。

という訳で、TCP輻輳アルゴリズムの外部ソース探してみましたが、ちょっと見つからない。それではカスタムカーネルからソースを頂いて何とかしましょうということでAndroplusカーネルからソースコードを頂きました。

tcp_westwood.cとMakefileだけ複写すれば良い気もしますが、とりあえずMakefileのobj-yに記載のソースコードを全て複写してモジュールとして作成しました。
westwoodを使った印象としてはやはり転送速度はこちらのほうが体感上でも速い。ストックカーネルでなぜ使わないのか個人的には疑問です。