• 패킷 덤프를 하다보면 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 그림


참고 : http://www.packetinside.com/2013/02/mtu-1500.html

+ Recent posts