まとめ
仕事関係で、AWSの古いEC2インスタンスで大量送信オフロードが不安定だということで、Offにしたりした。
どうやら、MTUとの関係も深いようだ。MTUに応じた分割を、CPUでやるのか、オフロードをOnにしてNIC?ドライバ?にやらせるのか、ということのようだ。
(MTUについて: 同じ仕事で、同VPC内のサーバーのMTUを揃えた方が良いとの事で、揃えかけた。確かに挙動が変わった部分があった。※MTUについては別途B!4つ(20240226~20240305)あり。)
用語:
- LSO = Large Send Offload = Large Segment Offload = 大量送信オフロード = 大規模送信オフロード = 大容量送信オフロード = 一括送信オフロード
- TSO = TCP Segmentation Offload = TCPセグメンテーションオフロード
問合せたら、上記二つの用語は同じと思ってよいとのこと。
どうやら、WindowsではLSO、Linuxでは TSO という事が多い。
厳密には、LSOのうち、TCPに限るとTSOのようで、同様に「何とかoffload」という設定も多い。1
(VMWareの何とかDriverの最新版では、TSOをLSOと言い換えた?2
具体的な設定画面/コマンド
Windows:
LSOの設定確認&変更。右のGUIと左のCUIは同じこと。 日本語で「一括送信オフロードV2」と表示される場合もあるようだ。
Linux
TSOでググったら、LINUXの設定として出てくることが多かった。
以下が表示例:
(「何とかoffload」が多い。すべてLSOの一種なのだろうか…)
[ec2-user@ip-10-xx-x-41 ~]$ ethtool -k eth0 Features for eth0: rx-checksumming: on [fixed] tx-checksumming: on tx-checksum-ipv4: on [fixed] tx-checksum-ip-generic: off [fixed] tx-checksum-ipv6: on tx-checksum-fcoe-crc: off [fixed] tx-checksum-sctp: off [fixed] scatter-gather: on tx-scatter-gather: on tx-scatter-gather-fraglist: off [fixed] tcp-segmentation-offload: on tx-tcp-segmentation: on tx-tcp-ecn-segmentation: off [fixed] tx-tcp-mangleid-segmentation: off tx-tcp6-segmentation: on udp-fragmentation-offload: off [fixed] generic-segmentation-offload: on generic-receive-offload: on large-receive-offload: off [fixed] rx-vlan-offload: off [fixed] tx-vlan-offload: off [fixed] ntuple-filters: off [fixed] receive-hashing: off [fixed] highdma: off [fixed] rx-vlan-filter: off [fixed] vlan-challenged: off [fixed] tx-lockless: off [fixed] netns-local: off [fixed] tx-gso-robust: on [fixed] tx-fcoe-segmentation: off [fixed] tx-gre-segmentation: off [fixed] tx-gre-csum-segmentation: off [fixed] tx-ipxip4-segmentation: off [fixed] tx-ipxip6-segmentation: off [fixed] tx-udp_tnl-segmentation: off [fixed] tx-udp_tnl-csum-segmentation: off [fixed] tx-gso-partial: off [fixed] tx-sctp-segmentation: off [fixed] fcoe-mtu: off [fixed] tx-nocache-copy: off loopback: off [fixed] rx-fcs: off [fixed] rx-all: off [fixed] tx-vlan-stag-hw-insert: off [fixed] rx-vlan-stag-hw-parse: off [fixed] rx-vlan-stag-filter: off [fixed] l2-fwd-offload: off [fixed] busy-poll: off [fixed] hw-tc-offload: off [fixed] [ec2-user@ip-10-xx-x-41 ~]$
参考ページ:
- 『NICのオフロード機能を無効にする #Linux - Qiita』qiita.com 今回は「LINUXは問題ない」とのことだったが、LINUXでも、(TSOに限らず)"何とかオフロード" で 問題が発生することがあるようだ。
- 『TSO(TCP Segmentation Offload)について - hana_shinのLinux技術ブログ』hana-shin.hatenablog.com こちらは、TSOについて詳細に記載。
- 『Linux から認識されている、すべてのネットワークインターフェイス名だけを取得する #Linux - Qiita』qiita.com こちらはあまり関係ないが、
ls /sys/class/net/
コマンドでNIC一覧が採れるとか、VirtualなNICを除きたければ 少し長いコマンドで取れるとか(シェルスクリプトに良さそう)。。
-
『RHEL 7 on IBM Power: Taking advantage of TCP large send and receive - Red Hat Customer Portal』access.redhat.com 引用
The technique is also called TCP segmentation offload (TSO) when applied to TCP,...
↩ -
『Understanding TCP Segmentation Offload (TSO) and Large Receive Offload (LRO) in a VMware environment (2055140)』kb.vmware.com 引用
Note: TSO is referred to as LSO (Large Segment Offload or Large Send Offload) in the latest VMXNET3 driver attributes.
↩