Ethtool
ethtool은 리눅스 기반 운영 체제에서 네트워크 인터페이스 카드(NIC)를 설정하고 관리하는 데 사용되는 강력한 명령줄 유틸리티임. 이 도구를 통해 사용자는 네트워크 카드의 다양한 기능과 동작을 조정할 수 있으며, 네트워크 인터페이스의 상태를 진단할 수 있다.
The "Detected Hardware Unit Hang" message related to the e1000e network driver typically indicates a problem with the network interface card (NIC) or its driver on a Linux-based system.
- ethtool -i enp0s25 driver: e1000e version: 6.8.8-4-pve firmware-version: 0.13-4 expansion-rom-version: bus-info: 0000:00:19.0 supports-statistics: yes supports-test: yes supports-eeprom-access: yes supports-register-dump: yes supports-priv-flags: yes
- ethtool enp0s25 Settings for enp0s25: Supported ports: [ TP ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Supported pause frame use: Symmetric Receive-only Supports auto-negotiation: Yes Supported FEC modes: Not reported Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Advertised pause frame use: Symmetric Receive-only Advertised auto-negotiation: Yes Advertised FEC modes: Not reported Link partner advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Link partner advertised pause frame use: Symmetric Link partner advertised auto-negotiation: Yes Link partner advertised FEC modes: Not reported Speed: 1000Mb/s Duplex: Full Auto-negotiation: on Port: Twisted Pair PHYAD: 1 Transceiver: internal MDI-X: off (auto) Supports Wake-on: pumbg Wake-on: g Current message level: 0x00000007 (7) drv probe link Link detected: yes
TSO & GSO
설정 상태 보기
sudo ethtool -k enp0s25| grep segmentation
끄기
sudo ethtool -K enp0s25 tso off gso off
TSO
TCP Segmentation Offload
일반적으로 TCP/IP 스택은 큰 데이터 스트림을 작은 TCP 세그먼트로 나누어야 하며, 각각의 세그먼트는 IP 및 TCP 헤더를 가지고 있다. TSO를 사용하면 이러한 세그먼트 분할 작업을 운영 체제의 네트워크 스택이 아닌 NIC에서 처리하게 된다. NIC는 큰 데이터 청크를 받아 이를 자체적으로 세그먼트로 나누어 전송함.
GSO
GSO(Generic Segmentation Offload)는 네트워크 스택의 성능을 향상시키기 위해 고안된 또 다른 오프로드 기술임. GSO는 TSO(TCP Segmentation Offload)와 유사한 목적을 가지고 있지만, 구현 방식과 지원 프로토콜에서 차이가 있다. GSO는 일반적으로 소프트웨어 레벨에서 동작하며, TSO를 지원하지 않는 환경에서도 유용하게 사용될 수 있다.
GSO는 운영 체제의 네트워크 스택에서 큰 네트워크 패킷을 처리할 때, 이러한 패킷을 하드웨어에 전달하기 전에 소프트웨어 레벨에서 분할을 최소화함. 실제 패킷 전송 시에는, 큰 패킷을 하드웨어(NIC)가 아닌 커널 내부에서 관리하여 세그먼트화함. 이를 통해 네트워크 카드가 지원하지 않는 경우에도 오프로드의 이점을 얻을 수 있다.