俺の雑記帳

My random memorandumです。(つまり、個人的な備忘録であり、その点ご容赦を。)

LSO/TSO(~送信オフロード)の設定(Windows/Linux)。不安定化要因になり得るのでOffに?

まとめ

仕事関係で、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は同じこと。

古いWindowsの大量送信オフロード設定(GUIPowerShell)(Windows Server 2012 R2)
日本語で「一括送信オフロード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を除きたければ 少し長いコマンドで取れるとか(シェルスクリプトに良さそう)。。

  1. RHEL 7 on IBM Power: Taking advantage of TCP large send and receive - Red Hat Customer Portalaccess.redhat.com 引用 The technique is also called TCP segmentation offload (TSO) when applied to TCP,...
  2. 『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.