tl;dr
下記コマンドでTCP Segmentation Offload を無効にする。
sudo sysctl -w net.inet.tcp.tso=0
説明
(以下すべてmacOS Catalinaで検証しています。)
Mac同士をThunderbolt3ケーブルなどを繋いでThunberboltブリッジ接続しネットワーク共有をした場合に、アップロードの速度が1MB/s以下と異常に遅いのですが、それを解決する方法を見つけました。
Thunderbolt Ethernet Bridge very slow - Apple Community に答えが載っていました。
確かに下記2種類のコマンドのどちらかで解決しました。
sudo sysctl -w net.inet.tcp.tso=0
sudo sysctl -w net.link.generic.system.hwcksum_tx=0
後者の場合はファイルの書き込み速度が50%ほど遅くなる副作用がありましたので、前者をオススメします。
これらは実際のところ何の設定を変えるコマンドなのでしょうか?
我々はその謎を探るべくアマゾンの奥地へと向かった…
net.inet.tcp.tso=0
はTCP Segmentation Offload を無効にしています。
一方 net.link.generic.system.hwcksum_tx=0
は TCP Checksum Offload を無効にしています。
ではなぜ、TCP Segmentation Offloadを無効にしたりTCP Checksum Offloadを無効にしないと異常にネットの上りが遅いのか?
TCP Checksum Offloadを無効にすると書き込み速度が落ちるのか?
答えはわかりませんでした。
でも自分が何をしたか全く分からないよりはマシなので「TCP Segmentation Offloadを無効にした」とだけ覚えておくことにします。