itLinkedInPocketCopyTCP通信のパフォーマンスを決める要素の一つとしてウィンドウサイズがあります。今回は簡単にウィンドウサイズについての説明とLinuxにおける設定方法を解説していきます。おすすめ記事ウィンドウサイズとはウィンドウサイズとは簡単に説明するとパケットの到着応答なしに一度に送れるパケットの数です。相手の返事を待たずに送れる量が増えると通信効率がよくなりますが、ただ闇雲にウィンドウサイズを増やせばよいという訳ではありません。TCP通信は輻輳(ふくそう)制御などでこのウィンドウサイズを通信しているネットワーク経路で効率のよいサイズに動的に変更しています。輻輳制御を変えるとウィンドウサイズを増減するアルゴリズムが変わるのでパフォーマンスも変化しますが、輻輳制御についてはまた別の機会に説明しようと思います。TCP通信開始直後の初期ウィンドウサイズは設定されているサイズが使用されます。TCPの3ハンドシェイク時にお互い申告したウィンドウサイズで小さいサイズが初期ウィンドウサイズとして使用されます。初期ウィンドウサイズの値として、昔のLinuxは4、最近のLinuxは10、CDN(コンテンツデリバリーネットワーク)は20~40程度になっています。routeコマンドを使用してinitcwndとinitrwindを設定します。doneinitcwndは送信する場合の初期ウィンドウサイズの設定で、通信相手のinitrwndと比べて小さい方が使われます。initrwndは受信する場合の初期ウィンドウサイズの設定で、通信相手のinitcwndと比べて小さい方が使われます。上記はスクリプトで他のパラメータはそのままに全ての経路に対してinitcwndとinitrwndを設定しています。routeで確認したパラメータにinitcwndやinitrwndを追加したものを個別に書いても構いません。まとめCDNからデータを受信することが多い場合はinitrwndの値を大きめにしておくと通信パフォーマンスが上がる可能性があります。パケットロスのほとんどない内部ネットーワーク通信では大きめに設定しておいてもいいかもしれません。サーバ等は用途に応じて設定を変更した方がよいと思います。...【Linux】CLI上で使用ネットワーク帯域を確認できるツールiftopの紹介ネットワークの帯域がどのように使われているか知りたい時があると思います。...このアカスブログは全てリンクフリーです。無断リンクして頂いて全く問題ございません。(※転載は禁止)相互リンク希望の方は「お問合せ」かTwitterのDMにご連絡ください。