研究に関連する実験で,遅延ACK(Delayed ACK)オプションを無効にした状態で, データ通信をする必要があったのですが,その時に陥ってしまった事例. 今まではFreeBSDのPCで実験を行っていたため,sysctlで簡単に無効にすることができたのですが, どうやらLinux系ではその方法では無効にできないようです.そこで, JM Projectで調べたところ,setsockopt()を用いてquickackモードを有効にすれば良い, という記述を発見したので,早速コードを修正してテストしてみたのですが・・・tcpdump で観察している限り,遅延ACKオプションは有効になったままの様子. 試行錯誤した結果,どうやら以下の記述が問題となっていたようです. TCP_QUICKACK ・・・(中略)・・・ このフラグは永続的なものではなく、 quickack モードから/モードへ切り替え