소개
이 문서에서는 Catalyst 9000 Series 스위치의 MTU(Maximum Transmission Unit)를 이해하고 문제를 해결하는 방법에 대해 설명합니다.
사전 요구 사항
요구 사항
이 문서에 대한 특정 요건이 없습니다.
사용되는 구성 요소
이 문서의 내용은 다음 하드웨어 버전을 기반으로 합니다.
- C9200
- C9300
- C9400
- C9500
- C9600
참고: 전역 명령 시스템 mtu를 사용하여 디바이스의 모든 인터페이스에 대한 MTU 크기를 동시에 구성할 수 있습니다. Cisco IOS® XE 17.1.1부터 Catalyst 9000 스위치는 포트당 MTU를 지원합니다. 포트별 MTU는 포트 레벨 및 포트 채널 레벨 MTU 설정을 지원합니다. 포트별 MTU를 사용하면 서로 다른 인터페이스와 포트 채널 인터페이스에 대해 서로 다른 MTU 값을 설정할 수 있습니다.
참고: 다른 Cisco 플랫폼에서 이러한 기능을 활성화하는 데 사용되는 명령은 해당 설정 가이드를 참조하십시오.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
배경 정보
MTU 요약 표
총 프레임 크기 = MTU + L2 헤더
포트 유형 |
기본 MTU - 바이트 |
구성된 MTU - 바이트 |
L2 헤더
|
총 프레임 크기 |
L2 액세스 |
1500 |
|
18 |
1518 |
|
|
9216 |
18 |
9234 |
L2 트렁크 |
1500 |
|
22 |
1522 |
|
|
9216 |
22 |
9238 |
L3 물리적 포트 |
1500 |
|
18 |
1518 |
|
|
9216 |
18 |
9234 |
L3 SVI |
1500 |
|
18 |
1518 |
|
|
9216 |
18 |
9234 |
L3 포트의 IP MTU |
1500 |
범위가 지원됨. |
18 |
IP MTU 구성 값 기반. |
MTU Q&A
MTU란?
- MTU는 디바이스가 전달할 수 있는 최대 송신 단위입니다. 일반적으로 이 단위는 IP 헤더가 포함된 IP 패킷 길이입니다.
- Dot1q 태그, MacSec, SVL 헤더 등과 같은 L2 헤더는 이 계산에서 고려되지 않습니다.
L2 헤더 및 길이는 어떻게 됩니까?
- 일반 L2 헤더는 14바이트 + CRC 4바이트이며 총 18바이트입니다.
- 트렁크는 dot1q vlan 태그에 4바이트를 더 추가하며 총 22바이트입니다.
- 마찬가지로, MacSec은 일반적인 L2 헤더 길이 위에 자체 헤더 길이를 추가합니다.
- SVL 포트는 일반적인 L2 헤더 길이에 자체 헤더 길이를 추가합니다.
- 따라서 Overall Packet on Wire가 와이어에서 부딪힙니다.
인터페이스에서 처리되는 패킷 길이는 어떻게 됩니까?
- Catalyst 9000 스위치는 64바이트에서 9238바이트까지의 패킷 크기를 처리합니다.
기본 MTU란?
- 기본 MTU는 스위치가 사용자 컨피그레이션에 앞서 설정되는 MTU입니다.
- 모든 Catalyst 9000 스위치의 기본 MTU는 1500바이트입니다.
- 이더넷 포트는 1500바이트 레이어 3 패킷 + 레이어 2 헤더를 전달합니다.
인그레스 또는 이그레스에서 MTU 확인이 이루어집니까?
이그레스: MTU는 최대 전송 단위입니다. 이그레스(Egress) 검사이며 이그레스(Egress)에 대해 조각화 또는 전송 여부를 결정하거나 삭제 여부를 결정합니다.
- 포트 MTU가 라우팅될 패킷 길이보다 크면 패킷은 그대로 전송됩니다.
- 패킷이 이그레스 포트 MTU보다 크고 이그레스 포트가
- 패킷이 MTU에 따라 프래그먼트화되는 레이어 3 포트.
- 레이어 2 포트인 경우 패킷이 삭제됩니다. (프래그먼트화는 레이어 3에서만 수행됨)
참고: 패킷에 IP 헤더에 DNF(Do not Fragment) 비트가 설정되어 있고 포트 MTU가 라우팅할 패킷보다 작으면 패킷이 삭제됩니다
인그레스: 인터페이스에 도착하는 패킷에 대해서도 MTU 확인이 수행됩니다.
- 인터페이스에서 구성된 MTU를 통해 패킷을 수신하는 경우, 이러한 패킷은 크기가 큰 패킷으로 취급되어 삭제됩니다.
점보 패킷이란?
- Catalyst 9000 스위치에서 1500바이트가 넘는 것은 모두 거대한 패킷 또는 점보 패킷입니다.
- 예-1: 인터페이스 MTU가 9216바이트의 점보 프레임 크기를 전달하도록 구성된 경우 9216바이트 + 레이어 2 헤더의 프레임을 수락하거나 전송합니다.
- 예-2: 인터페이스 MTU가 5000바이트의 점보 프레임 크기를 전달하도록 구성된 경우, 5000바이트 + 레이어 2 헤더의 프레임을 수락하거나 전송합니다.
점보 패킷 또는 오버사이즈 패킷은 오류 패킷으로 간주됩니까?
- 인터페이스는 구성된 MTU를 통해 수신된 패킷을 삭제하고 패킷을 오류로 보고합니다.
- 인터페이스가 점보 MTU를 전달하도록 설정되고, 수신된 패킷이 이 값 내에 있는 경우 오류로 계산되지 않습니다.
포트에서 처리할 수 있는 최소 패킷 크기는 얼마입니까?
- 64바이트(L2 헤더, 포함)는 스위치가 인그레스(Ingress)에서 허용하는 유효한 패킷 중 가장 작은 패킷 크기입니다.
- 유선에서 64바이트 미만의 패킷은 런트로 간주되어 인그레스에서 삭제됩니다.
- 패킷이 전송되어야 하는데 패킷이 64바이트 미만이면 스위치는 전송 전에 최소 64바이트로 되도록 패킷을 패드합니다.
시스템 MTU가 9216이고 SVL 헤더가 64바이트를 더 추가하면 어떻게 됩니까?
- 레이어 3 IP 헤더 아래의 헤더는 MTU 계산에서 고려되지 않습니다.
- SVL 링크는 9216 + L2 헤더 + 64바이트의 SVL 헤더의 패킷 크기를 전송할 수 있습니다.
IP MTU란?
- IP MTU는 IP 패킷에만 적용됩니다. 기타 비IP 패킷 크기는 이 명령에서 설명되지 않습니다.
- IP MTU는 IP 패킷에 대해 시스템 MTU 또는 포트별 MTU보다 우선적으로 적용됩니다.
- IP MTU는 프래그먼트화가 필요하기 전에 IP 패킷이 허용되는 최대 크기를 설정합니다.
- 물리적 또는 논리적 레이어 3 인터페이스의 MTU가 1500바이트이고 ip mtu가 1400바이트이면 시스템 또는 포트당 MTU 설정에 관계없이 프래그먼트화 경계는 1400바이트입니다.
- MTU는 피어 라우터/스위치와 일치해야 하는 값입니다. 피어 디바이스가 더 높은 MTU 값을 지원하지 않는 경우 IP MTU 또는 MTU를 사용하여 두 디바이스 기능을 모두 일치시킵니다.
- IP MTU가 구성되면 디바이스에서 라우팅 프로토콜 패킷의 크기를 구성된 ip MTU 값으로 조정합니다. 일부 라우팅 프로토콜은 일치하는 MTU 값에 따라 라우팅 프로토콜 네이버십을 설정합니다.
예:
- 예 1: 인터페이스 IP MTU가 500바이트로 구성되어 있고 인터페이스 MTU가 기본값(포트당 mtu 없음)이며 시스템 MTU가 9000인 경우, 인터페이스 MTU는 9000바이트이며 IP 프래그먼트화는 500바이트입니다.
- 예 2: GRE 터널은 이그레스 인터페이스이므로 패킷 크기 계산에서 GRE 헤더의 24바이트를 고려해야 합니다(IP MTU 1476 + 24바이트 GRE 헤더 = 총 MTU 1500).
시스템 MTU와 포트별 MTU의 차이점은 무엇입니까?
- 시스템 MTU는 전체 디바이스의 MTU를 설정하는 전역 설정입니다. 이렇게 하면 모든 전면 패널 물리적 포트 및 논리적 포트가 system mtu 명령으로 설정된 값으로 변경됩니다.
- 포트별 MTU를 사용하면 인터페이스별로 MTU 값을 설정할 수 있으며, 이는 시스템 MTU 구성보다 우선적으로 적용됩니다. 포트별 설정이 제거되면 인터페이스는 시스템 mtu로 돌아갑니다.
예:
- 예 1: 시스템 MTU 값이 9000으로 설정되고 모든 물리적 및 논리적 포트 MTU가 9000으로 설정됩니다.
- 예 2: 인터페이스가 MTU 4000으로 구성되어 있고 시스템 MTU가 9000인 경우, 인터페이스는 MTU 4000을 사용하는 반면 다른 포트는 MTU 9000을 사용합니다.
MTU 제한으로 인한 프래그먼트화가 미치는 영향은 무엇입니까?
- 디바이스는 이미 프래그먼트화된 패킷을 일반적으로 데이터 평면에 전달하지만, 디바이스가 프래그먼트화 또는 리어셈블리를 담당할 경우 성능/리소스 문제가 나타날 수 있습니다.
- 프래그먼트화는 프래그먼트화 처리를 담당하는 애플리케이션 및 디바이스의 전체 처리량 및 성능에 심각한 영향을 미칠 수 있습니다.
- 많은 플랫폼에서 프래그먼트화된 패킷을 처리하는 작업은 소프트웨어에서 수행되며, 프래그먼트화된 패킷을 프래그먼트화하거나 어셈블하는 데 CPU 주기가 많이 걸립니다.
- 네트워크에서 프래그먼트화가 많이 발생하는 경우, 프래그먼트화 없이 엔드 투 엔드 패킷 흐름에 맞게 MTU가 조정되어야 합니다.
경로 MTU 검색(PMTUD)이란 무엇입니까?
- 이전에 설명한 것처럼, TCP MSS는 TCP 연결의 두 엔드포인트에서 발생하는 프래그먼트화를 처리하지만, 이러한 두 엔드포인트 중간에 더 작은 MTU 링크가 있는 경우에는 처리하지 않습니다. PMTUD는 엔드포인트 간의 경로에서 프래그먼트화가 발생하는 것을 방지하기 위해 개발되었습니다. PMTUD는 패킷의 소스에서 대상까지의 경로에서 가장 낮은 MTU를 동적으로 확인하는 데 사용됩니다.
- PMTUD에 대한 자세한 내용과 문제 해결 방법은 IPv4 프래그먼트화, MTU, MSS 및 GRE와 IPsec을 사용한 PMTUD 문제 해결을 참조하십시오.
IPv6 MTU
이더넷 프레임
표준 이더넷 프레임(Dot1Q 또는 기타 태그 없음)
Dot1Q 이더넷 프레임
MTU 구성 및 확인
MTU 구성
이 컨피그레이션은 전체적으로 또는 Cisco IOS® XE 17.1.1 이상의 포트별 레벨에서 수행할 수 있습니다. 하드웨어에서 이 컨피그레이션을 지원하는지 확인하십시오.
- 포트별 컨피그레이션이 제거되면 포트는 전역 시스템 MTU 설정을 사용합니다.
### Global System MTU set to 1800 bytes ###
9500H(config)#system mtu ?
<1500-9216> MTU size in bytes <-- Size range that is configurable
9500H(config)#system mtu 1800 <-- Set global to 1800 bytes
Global Ethernet MTU is set to 1800 bytes.
Note: this is the Ethernet payload size, not the total
Ethernet frame size, which includes the Ethernet
header/trailer and possibly other tags, such as ISL or
802.1q tags. <-- CLI provides information about what is counted as MTU
### Per-Port MTU set to 9216 bytes ###
9500H(config)#int TwentyFiveGigE1/0/1
9500H(config-if)#mtu 9126 <-- Interface specific MTU configuration
MTU 확인
이 섹션에서는 MTU에 대한 소프트웨어 및 하드웨어 설정을 모두 확인하는 방법에 대해 설명합니다.
- 소프트웨어에서 설정된 MTU 및 하드웨어 MTU 확인.
- 하드웨어가 소프트웨어에서 구성된 MTU와 일치하지 않으면 트래픽 손실이 발생할 수 있습니다.
소프트웨어 MTU 확인
9500H#show system mtu
Global Ethernet MTU is 1800 bytes. <-- Global level MTU
9500H#show interfaces mtu
Port Name MTU
Twe1/0/1 9216 <-- Per-Port MTU override
Twe1/0/2 1800 <-- No per-port MTU uses global MTU
<...snip...>
9500H#show interfaces TwentyFiveGigE 1/0/1 | inc MTU
MTU 9216 bytes, BW 1000000 Kbit/sec, DLY 10 usec,
9500H#show interfaces TwentyFiveGigE 1/0/2 | inc MTU
MTU 1800 bytes, BW 25000000 Kbit/sec, DLY 10 usec,
하드웨어 MTU 확인
9500H#show platform software fed active ifm mappings
Interface IF_ID Inst Asic Core Port SubPort Mac Cntx LPN GPN Type Active
TwentyFiveGigE1/0/1 0x8 1 0 1 20 0 16 4 1 101 NIF Y <-- Retrieve the IF_ID for use in the next command
TwentyFiveGigE1/0/2 0x9 1 0 1 21 0 17 5 2 102 NIF Y
9500H#show platform software fed active ifm if-id 0x8 | inc MTU
Jumbo MTU ............ [9216] <-- Hardware matches software configuration
9500H#show platform software fed active ifm if-id 0x9 | in MTU
Jumbo MTU ............ [1800] <-- Hardware matches software configuration
참고: <active|standby>로 제공된 플랫폼 소프트웨어 표시는 달라질 수 있습니다. 특정 플랫폼에는 show platform hardware fed switch <active|standby|sw_num>이 필요합니다.
MTU 문제 해결
토폴로지
인그레스 패킷 삭제(인그레스 MTU 줄이기)
이러한 카운터 중 하나가 증가하면 일반적으로 수신된 패킷이 구성된 MTU를 통해 도착했음을 의미합니다.
- show interface 명령의 giants 카운터입니다.
- show controller 명령의 ValidOverSize 카운터입니다.
9500H#show int twentyFiveGigE 1/0/3 | i MTU
MTU 1500 bytes, BW 100000 Kbit/sec, DLY 100 usec,
0 runts, 0 giants, 0 throttles <-- No giants counted
9500H#show controllers ethernet-controller twentyFiveGigE 1/0/3 | i ValidOverSize
0 Deferred frames 0 ValidOverSize frames <-- No giants counted
### 5 pings from neighbor device with MTU 1800 to ingress port MTU 1500 ###
9500H#show int twentyFiveGigE 1/0/3 | i MTU|giant
MTU 1500 bytes, BW 100000 Kbit/sec, DLY 100 usec,
0 runts, 5 giants, 0 throttles <-- 5 giants counted
9500H#show controllers ethernet-controller twentyFiveGigE 1/0/3 | i ValidOverSize
0 Deferred frames 5 ValidOverSize frames <-- 5 giants counted
show controllers ethernet-controller 명령에 대한 세부사항
- 패킷이 구성된 MTU를 통해 도착하고 CRC 검사에 실패할 경우 InvalidOverSize로 계산됩니다.
- 패킷이 구성된 MTU 내에 도착하고 CRC 검사에 실패할 경우 FcsErr로 계산됩니다.
9500H#show controllers ethernet-controller twentyFiveGigE 1/0/3 | i Fcs|InvalidOver
0 Good (>1 coll) frames 0 InvalidOverSize frames <-- MTU too large and bad CRC
0 Gold frames dropped 0 FcsErr frames <-- MTU within limits with bad CRC
IP MTU 구성 및 확인
IP MTU 구성
이 섹션에서는 터널 인터페이스에서 ip MTU를 구성하는 방법에 대해 설명합니다.
- IP MTU는 로컬 시스템에서 생성되는 IP 패킷의 크기(예: 라우팅 프로토콜 업데이트)에 영향을 주도록 구성할 수도 있고, 프래그먼트화가 발생할 크기를 설정하는 데 사용할 수도 있습니다.
C9300(config)#interface tunnel 1
C9300(config-if)#ip mtu 1400
interface Tunnel1
ip address 10.11.11.2 255.255.255.252
ip mtu 1400 <-- IP MTU command sets this line at 1400
ip ospf 1 area 0
tunnel source Loopback0
tunnel destination 192.168.1.1
IP MTU 확인
소프트웨어 IP MTU 확인
C9300#sh ip interface tunnel 1 <-- Show the IP level configuration of the interface
Tunnel1 is up, line protocol is up
Internet address is 10.11.11.2/30
Broadcast address is 255.255.255.255
Address determined by setup command
MTU is 1400 bytes <-- max size of IP packet before fragmentation occurs
하드웨어 IP MTU 확인
C9300#sh platform software fed switch active ifm interfaces tunnel
Interface IF_ID State
----------------------------------------------------------------------
Tunnel1 0x00000050 READY <-- Retrieve the IF_ID for use in the next command
C9300#sh platform software fed switch active ifm if-id 0x00000050
Interface IF_ID : 0x0000000000000050 <-- The interface ID (IF_ID)
Interface Name : Tunnel1
Interface Block Pointer : 0x7fe98cc2d118
Interface Block State : READY
Interface State : Enabled
Interface Status : ADD, UPD
Interface Ref-Cnt : 4
Interface Type : TUNNEL
<...snip...>
Tunnel Sub-mode: 0 [none]
Hw Support : Yes
Tunnel Vrf : 0
IPv4 MTU : 1400 <-- Hardware matches software configuration
<...snip...>
IP MTU 문제 해결
토폴로지
IP 프래그먼트화
패킷이 터널 인터페이스를 통해 전송되면 이러한 예에 나와 있는 두 가지 방법으로 프래그먼트화가 발생할 수 있습니다.
표준 IP 프래그먼트화
터널 캡슐화 전에 MTU를 줄이기 위한 원래 패킷의 프래그먼트화입니다.
- 인그레스 디바이스만 이 프래그먼트화 작업을 담당하며, 프래그먼트는 터널 엔드포인트가 아닌 실제 엔드포인트에서 리어셈블됩니다.
- 이러한 종류의 패킷 단편화는 달성하는 데 리소스 집약적이지 않습니다.
### Tunnel Source Device: Tunnel IP MTU 1400 | Interface MTU 1500 ###
C9300#ping 172.16.1.1 source Loopback 1 size 1500 repeat 10 <-- ping with size over IP MTU 1400
Type escape sequence to abort.
Sending 100, 1500-byte ICMP Echos to 172.16.1.1, timeout is 2 seconds:
Packet sent with a source address of 172.16.2.1
!!!!!!!!!!
Success rate is 100 percent (100/100), round-trip min/avg/max = 1/1/1 ms
### Tunnel Destination Device: Ingress Capture Twe1/0/1 ###
9500H#show monitor capture 1
Status Information for Capture 1
Target Type:
Interface: TwentyFiveGigE1/0/1, Direction: IN <-- Ingress Physical interface
9500H#sh monitor capture 1 buffer br | inc IPv4|ICMP
9 22.285433 172.16.2.1 b^F^R 172.16.1.1 IPv4 1434 Fragmented IP protocol (proto=ICMP 1, off=0, ID=6c03)
10 22.285526 172.16.2.1 b^F^R 172.16.1.1 ICMP 162 Echo (ping) request id=0x0004, seq=0/0, ttl=255
11 22.286295 172.16.2.1 b^F^R 172.16.1.1 IPv4 1434 Fragmented IP protocol (proto=ICMP 1, off=0, ID=6c04)
12 22.286378 172.16.2.1 b^F^R 172.16.1.1 ICMP 162 Echo (ping) request id=0x0004, seq=1/256, ttl=255
<-- Fragmentation occurs on the Inner ICMP packet (proto=ICMP 1)
<-- Fragments are not reassembled until they reach the actual endpoint device 172.16.1.1
사후 터널 캡슐화 프래그먼트화
캡슐화가 발생했지만 디바이스에서 MTU가 너무 큰 것으로 탐지하면 MTU를 줄이기 위한 실제 터널 패킷의 프래그먼트화입니다.
- 이 경우 터널 대상은 프래그먼트 리어셈블리를 담당하는 디바이스이며, 실제 대상 엔드포인트입니다.
- 이는 설정 문제가 있는 경우에 발생합니다. 터널 헤더가 적용된 후 실제 포트 또는 시스템 MTU가 처리할 수 있는 것보다 높은 IP MTU에 대해 디바이스가 설정되었습니다.
- 이 경우 터널 소스는 터널 자체를 프래그먼트화해야 하며, 터널 대상은 다음 홉 또는 대상으로 패킷을 전송하기 위해 터널 헤더를 리어셈블해야 합니다.
- 이러한 헤더 프래그먼트화는 상당한 처리 오버헤드를 추가할 수 있습니다. 처리되어야 하는 플로우의 속도에 따라 달라집니다.
- 플랫폼, 코드 및 트래픽 속도에 따라 CoPP Class Forus 트래픽에서 패킷 손실 및 삭제를 확인할 수도 있습니다.
### Tunnel Source Device: Tunnel IP MTU 1500 | Interface MTU 1500 ###
C9300(config-if)#ip mtu 1500
%Warning: IP MTU value set 1500 is greater than the current transport value 1476, fragmentation may occur
<-- Device warns the user that this can cause fragmentation (this is a configuration issue)
### Tunnel Destination Device: Ingress Capture Twe1/0/1 ###
9500H#show monitor capture 1
Status Information for Capture 1
Target Type:
Interface: TwentyFiveGigE1/0/1, Direction: IN <-- Ingress Physical interface
9500H#sh monitor capture 1 buffer br | i IPv4|ICMP
1 0.000000 192.168.1.2 b^F^R 192.168.1.1 IPv4 1514 Fragmented IP protocol (proto=Generic Routing Encapsulation 47, off=0, ID=4501)
2 0.000042 172.16.2.1 b^F^R 172.16.1.1 ICMP 60 Echo (ping) request id=0x0005, seq=0/0, ttl=255
3 2.000598 192.168.1.2 b^F^R 192.168.1.1 IPv4 1514 Fragmented IP protocol (proto=Generic Routing Encapsulation 47, off=0, ID=4502)
4 2.000642 172.16.2.1 b^F^R 172.16.1.1 ICMP 60 Echo (ping) request id=0x0005, seq=1/256, ttl=255
<-- Fragmentation has occurred on the outer GRE header(proto=Generic Routing Encapsulation 47)
<-- Fragments must be reassembled at the Tunnel endpoint, in this case the 9500
Cisco 버그 ID
Cisco 버그 ID CSCvr84911 시스템 MTU를 다시 로드한 후 고려하지 않습니다.
Cisco 버그 ID CSCvq30464CAT9400: MTU 컨피그레이션이 활성 상태가 되는 비활성 포트에 적용되지 않습니다.
Cisco 버그 ID CSCvh04282 Cat9300 비기본 시스템 MTU 컨피그레이션 값은 다시 로드한 후에 고려되지 않습니다.
관련 정보