TSO و GSO دو نوع Offload در مبحث NIC Offload می باشند که TSO مخفف TCP Segmentation Offload و GSO مخفف Generic Segmentation Offload می باشد و تنظیم TSO و GSO تقریبا وابسته به یکدیگر می باشد.گفتنی است به TSO در برخی موارد LSO که مخفف Large segment offload می باشد،نیز گفته می شود.
توضیح هر کدام از این Offload ها بسیار مفصل می باشد که جهت اطلاعات بیشتر در این زمینه می توانید به لینک های پایین مراجعه نمایید :
https://en.wikipedia.org/wiki/Large_segment_offload
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Performance_Tuning_Guide/network-nic-offloads.html
https://wiki.linuxfoundation.org/networking/tso
https://wiki.linuxfoundation.org/networking/gso
اکنون در این مطلب قصد داریم تا TSO و GSO را بر روی سرور که ما در این مورد از CentOS 7.2 استفاده کردیم،غیر فعال کنیم.ابتدا جهت بررسی اینکه آیا TSO و GSO فعال می باشند یا خیر کافیست تا از دستور پایین استفاده نمایید :
# ethtool -k interface
نکته اول اینکه اگر ethtool نصب نیست آن را نصب کنید و نکته دوم اینکه توجه داشته باشید بجای interface نام کارت شبکه مورد نظر خود را بنویسید.یک نمونه از خروجی دستور گفته شده را در پایین مشاهده می کنید :
# ethtool -k enp0s3
Features for enp0s3:
rx-checksumming: off
tx-checksumming: on
tx-checksum-ipv4: off [fixed]
tx-checksum-ip-generic: on
tx-checksum-ipv6: off [fixed]
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-tcp6-segmentation: off [fixed]
udp-fragmentation-offload: off [fixed]
generic-segmentation-offload: on
generic-receive-offload: on
large-receive-offload: off [fixed]
rx-vlan-offload: on
tx-vlan-offload: on [fixed]
ntuple-filters: off [fixed]
receive-hashing: off [fixed]
highdma: off [fixed]
rx-vlan-filter: on [fixed]
vlan-challenged: off [fixed]
tx-lockless: off [fixed]
netns-local: off [fixed]
tx-gso-robust: off [fixed]
tx-fcoe-segmentation: off [fixed]
tx-gre-segmentation: off [fixed]
tx-ipip-segmentation: off [fixed]
tx-sit-segmentation: off [fixed]
tx-udp_tnl-segmentation: off [fixed]
tx-mpls-segmentation: off [fixed]
fcoe-mtu: off [fixed]
tx-nocache-copy: off
loopback: off [fixed]
rx-fcs: off
rx-all: off
tx-vlan-stag-hw-insert: off [fixed]
rx-vlan-stag-hw-parse: off [fixed]
rx-vlan-stag-filter: off [fixed]
busy-poll: off [fixed]
همانطور که در خروجی بالا که مربوط به کارت شبکه ای با نام enp0s3 می باشد،TSO و GSO فعال می باشند.
جهت غیرفعال کردن آنها کافیست تا این دستورات را اجرا کنید :
# ethtool -K enp0s3 tso off
# ethtool -K enp0s3 gso off
نکته اینکه به جای enp0s3 نام کارت شبکه مورد نظر خود را بنویسید.اکنون یکبار دیگر بررسی کنید که TSO و GSO غیرفعال شده باشند :
# ethtool -k enp0s3
Features for enp0s3:
rx-checksumming: off
tx-checksumming: on
tx-checksum-ipv4: off [fixed]
tx-checksum-ip-generic: on
tx-checksum-ipv6: off [fixed]
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: off
tx-tcp-segmentation: off
tx-tcp-ecn-segmentation: off [fixed]
tx-tcp6-segmentation: off [fixed]
udp-fragmentation-offload: off [fixed]
generic-segmentation-offload: off
generic-receive-offload: on
large-receive-offload: off [fixed]
rx-vlan-offload: on
tx-vlan-offload: on [fixed]
ntuple-filters: off [fixed]
receive-hashing: off [fixed]
highdma: off [fixed]
rx-vlan-filter: on [fixed]
vlan-challenged: off [fixed]
tx-lockless: off [fixed]
netns-local: off [fixed]
tx-gso-robust: off [fixed]
tx-fcoe-segmentation: off [fixed]
tx-gre-segmentation: off [fixed]
tx-ipip-segmentation: off [fixed]
tx-sit-segmentation: off [fixed]
tx-udp_tnl-segmentation: off [fixed]
tx-mpls-segmentation: off [fixed]
fcoe-mtu: off [fixed]
tx-nocache-copy: off
loopback: off [fixed]
rx-fcs: off
rx-all: off
tx-vlan-stag-hw-insert: off [fixed]
rx-vlan-stag-hw-parse: off [fixed]
rx-vlan-stag-filter: off [fixed]
busy-poll: off [fixed]
همانطور که در خروجی بالا مشاهده می کنید TSO و GSO غیرفعال شده اند.
اکنون برای اینکه تنظیمات انجام شده هنگام reboot شدن سرور از بین نرود و تنظیمات به صورت دائمی بر روی این کارت شبکه و سرور اعمال شود کافیست تا فایل تنظیمات کارت شبکه مورد نظر خود را باز کنید :
# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
اکنون این خط را به آخر فایل اضافه کنید و فایل را ذخیره کنید :
ETHTOOL_OPTS=”-K ${DEVICE} gso off;-K ${DEVICE} tso off”
توجه داشته باشید که خط پایین نیز حتما در تنظیمات فایل وجود داشته باشد :
DEVICE=enp0s3