- 패킷 덤프를 하다보면 MTU 이상의 패킷 사이즈를 보는 경우가 있음
- 10G 네트워크 링크에서 MTU가 1500 바이트이면 대략 초당 800,000개 패킷 통신 → 패킷처리를 위해 CPU 오버헤드를 발생 가능
- 오버헤드를 줄이기 위해 MTU 증가 필요 → 점보프레임인 9000 바이트로 늘리면 한번에 더 큰 패킷을 처리 가능하지만, 인터넷에 연결되어 있는 모든 구간이 MTU 값을 9000 바이트로 사용 X
- 보통 일반적인 네트워크는 MTU를 1500 바이트로 사용 → 내부 네트워크라면 모르지만 인터넷 구간에서는 현실적으로 점보프레임을 사용이 힘듬
- 네트워크 어뎁터에서 TCP 세그먼테이션 오프로드 기능 사용→ TSO(TCP Segmentaion Offload)
- TSO 호환 가능 어뎁터를 통해 커널상에서 아웃바운드 데이터(밖으로 패킷)를 보낼때 데이터를 재-세그먼트 하여 작게 보냄 → 호스트 컴퓨터의 CPU 자원 사용면에서도 효율적
- TSO 외에 GSO(Generic segmentation offload)도 있음
- GSO는 TCP에만 한정을 두지 않는다는 장점이 있지만 데이터 전송에서만 동작하고 받는쪽에서는 동작 X
- 추가적으로 LRO(Large Receive Offload)도 있음 → 들어오는 패킷에 대해 한번에 Merge를 진행 (리눅스 기반의 10G 드라이버들이 LRO 를 넓게 사용)
TOE(TCP Offload Engine)이란
MTU 이상의 크기와 연관 있는 기능 → generic-receive-offload가 on
generic-receive-offload가 on으로 오프로드 기능이 동작하여 패킷을 덤프할 시에 패킷의 사이즈가 다르게 보임
GRO(generic-receive-offload)을 ON하면 네트워크 어뎁터에서 패킷을 처리해 주기에, 패킷 캡쳐 프로그램에서는 크기가 큰 패킷 사이즈를 확인 가능
ethtool 명령어에 -k 옵션을 통해 네트워크 인터페이스의 정보를 확인
$ ethtool -k eth0 Offload parameters for eth0: rx-checksumming: on tx-checksumming: off scatter-gather: off tcp-segmentation-offload: off udp-fragmentation-offload: off generic-segmentation-offload: off generic-receive-offload: on large-receive-offload: off rx-vlan-offload: on tx-vlan-offload: on ntuple-filters: off receive-hashing: off
1. GRO (generic-receive-offload) 기능 ON
- GRO 기능이 On 되어 있는 경우는 아래 그림과 같이 패킷 사이즈가 2762, 4017, 3538 과 같이 MTU 값 이상으로 출력
2. GRO (generic-receive-offload) 기능 OFF
gro 기능을 off 하고 패킷 캡쳐를 다시 해보면 패킷 데이터 전송크기가 1414로 동일
# ethtool -K eth0 gro off # ethtool -k eth0 Offload parameters for eth0: rx-checksumming: on tx-checksumming: off scatter-gather: off tcp-segmentation-offload: off udp-fragmentation-offload: off generic-segmentation-offload: off generic-receive-offload: off large-receive-offload: off rx-vlan-offload: on tx-vlan-offload: on ntuple-filters: off receive-hashing: off
GRO 기능 off 그림
'Network(네트워크)' 카테고리의 다른 글
Network Ring Buffer Size 설정하기 (0) | 2022.06.26 |
---|---|
TCP Retransmission와 RTO(Retransmission Timeout)& RTT(Round Trip Time) (0) | 2022.06.26 |
TOE(TCP offload engine) (0) | 2022.06.26 |
점보프레임(Jumbo Frame)으로 전송속도 높이기(MTU 9000)메타 데이터의 끝으로 건너뛰기 (0) | 2022.06.26 |
패킷 전송 크기를 지정하는 MTU(Maximum Transmission Unit) (0) | 2022.06.26 |