Network(네트워크)
점보프레임(Jumbo Frame)으로 전송속도 높이기(MTU 9000)메타 데이터의 끝으로 건너뛰기
hippo 데브옵스
2022. 6. 26. 01:30
점보프레임(Jumbo Frame)
- 기본적으로 사용하는 MTU(Maximum Transmission Unit) 값은 1500 바이트
- 실제 전송시에는 프레임 헤더를 붙이면 18 바이트가 추가되어 기본적으로는 1518 바이트가 됨 → 이더넷 헤더가 18 바이트(Link Layer)
- 점보프레임은 프레임 크기를 크게 늘려주는 것으로, 9000 바이트까지 MTU를 확장시켜 줌
- 처음 이더넷 프레임으로 1500 바이트가 사용된 것은 과거 낮은 통신속도와 비교적 높게 발생되었던 에러 비율 때문임 → 데이터를 전송하다가 에러가 발생되면 단지 1500 바이트 부분만 에러를 정정하여 재전송하면 됨
- 각 프레임은 네트워크 하드웨어와 소프트웨어적으로 프로세싱하는 것이 필요 → 프레임 사이즈가 커진다면 시스템에서 전송하기 위해 사용되는 처리 CPU가 더 줄어듬
- 9000 바이트 이상으로 커진다면 데이터를 자르는 기준이 적어지므로 빠른 속도로 전달 가능 → 한번에 1500 바이트가 아닌 9000 바이트를 전송
- 하드웨어 성능은 워낙 좋아졌기 때문에 점보프레임으로 인한 성능 향상은 그리 크지 않음
- 점보프레임이 2000년대 초에는 어느 정도 효과를 볼 수 있었을지 몰라도 빠르게 발전하는 하드웨어 속도에 비하면 프레임을 나누기 위한 CPU 사용은 적음
- 점보프레임(Jumbo Frame)을 사용할 때 효율적인 성능 향상를 얻을 수 있는 방법은 좋은 하드웨어를 사용하지 않는 것 → 현재 하드웨어 발전 상황에서는 큰 차이 X
- 점보프레임을 사용하기 위해서는 스위치, NIC 카드등에서 지원 필요 → 요즘 사용되는 장비들은 대부분 지원
점보프레임이 설정된 패킷을 덤프
- 데이터 크기가 8920 바이트나 되는 것을 확인 가능
시스템상에서의 설정은 MTU 값을 변경
- 설정 전에는 MTU가 1500
- 리눅스의 경우 커널 2.6.17 이상이면 지원됨
ip route 명령어를 통해 MTU 확인
$ ip route get 111.6.0.25 111.6.0.25 dev bond1 src 111.6.0.30 cache mtu 1500 advmss 1460 hoplimit 64
ifconfig 명령어를 통해 MTU 확인
$ ifconfig eth6 eth6 Link encap:Ethernet HWaddr [삭제] UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1 RX packets:2892 errors:0 dropped:0 overruns:0 frame:0 TX packets:2728 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:256450 (250.4 KiB) TX bytes:2785780 (2.6 MiB) Interrupt:32 Memory:d8000000-d8012800
ifconfig 명령어를 통해 인터페이스의 MTU를 변경
$ ifconfig eth6 mtu 9000
ip route 명령어를 통해 MTU 확인
$ ip route get 111.6.0.25 111.6.0.25 dev bond1 src 111.6.0.30 cache mtu 9000 advmss 8960 hoplimit 64
ifconfig 명령어를 통해 MTU 확인
$ ifconfig eth6 eth6 Link encap:Ethernet HWaddr [삭제] UP BROADCAST RUNNING SLAVE MULTICAST MTU:9000 Metric:1 RX packets:2892 errors:0 dropped:0 overruns:0 frame:0 TX packets:2728 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:256450 (250.4 KiB) TX bytes:2785780 (2.6 MiB) Interrupt:32 Memory:d8000000-d8012800
tcpdump 명령어로 트래픽을 캡쳐 설정
- 캡쳐 크기를 늘려줘야 패킷을 캡처할 수 있기에, -s 옵션으로 9000 바이트를 지정
- tcpdump 명령어는 기본 MTU이 1500임으로 점보 프레임을 패킷 캡처를 위해서는 MTU 9000으로 변경 필요
$ tcpdump -i bond1 -s 9000 -n -w jumbo.pcap tcpdump: listening on bond1, link-type EN10MB (Ethernet), capture size 9000 bytes
tshark 명령어로 프레임 크기 확인
- 1500 바이트 이상의 크기가 많이 보이는 것을 확인 가능
$ tshark -i bond1 -e frame.len -Tfields 9014 9014 66 9014 9014 66 9014 430 66 114 4210 66 114 9014 7550 66 114 114 66 4210 9014 66 9014 9014 66 6038 114 9014 ^C1947 packets captured
네트워크 인터페이스에 MTU=9000으로 지정
- CentOS, 레드햇 계열은 /etc/sysconfig/network-script/ifcfg-eth0 파일에 MTU=9000으로 설정 추가 후 네트워크 재실행
$ vi /etc/sysconfig/network-script/ifcfg-eth0 # 중략 # 맨 아래에 추가 MTU=9000