소개
이 문서에서는 패딩 정보가 손상되거나 형식이 잘못된 경우 Cisco Nexus 9000에서 손상된 이더넷 패킷을 해결하는 방법에 대해 설명합니다.
배경 정보
이더넷 프레임의 최소 크기는 64바이트입니다. VLAN 태그가 있는지 여부에 관계없이 가능합니다.
최소 이더넷 페이로드 크기는 다음과 같습니다.
- VLAN 태그가 없는 경우 46바이트
- VLAN 태그가 있는 경우 42바이트
다음 사실을 확인할 수 있습니다.
이더넷 패킷의 최소 크기는 64바이트입니다. VLAN 헤더가 있는지 여부에 관계없이 가능합니다.서버는 VLAN이 포함된 64바이트 길이의 패킷을 전송할 수 있습니다. 이 패킷을 수락하고 올바르게 처리해야 합니다.
참고:이 동작은 Nexus 9k가 아닌 Catalyst 4500x에 의해 올바르게 처리됩니다.
스위치에서 패킷을 처리하는 방법
1단계. 유효한 64바이트 이더넷 프레임을 수신합니다.
2단계. 패킷의 길이가 60바이트가 되도록 FCS(Frame Check Sequence)를 제거합니다.
3단계. 패킷의 길이가 56바이트가 되도록 VLAN 태그를 제거합니다.
4단계. 패킷을 60바이트 길게 만들려면 패딩을 추가합니다.
5단계. FCS를 추가하여 패킷의 길이가 64바이트입니다.
패킷이 컷스루 스위치를 통과할 때는 패딩이 수정되지 않아야 합니다.
트래픽이 N9K를 통과할 때 태그가 지정된 VLAN으로 수정된 패딩
패킷에 0으로 패딩하는 대신 가비지 문자가 패딩됩니다. 대부분의 경우 체크섬이 수정되지 않아 아무도 이러한 데이터를 사용하지 않기 때문에 패킷은 아무런 영향을 주지 않습니다.그러나 고객이 특별한 사용을 하고 체크섬을 다시 계산해야 하는 경우 이러한 가비지 데이터는 결국 체크섬이 손상될 수 있습니다(NAT/로드 밸런서 같은 다른 어플라이언스도 문제가 발생할 수 있음).
디바이스는 N9K 93120TX입니다(그러나 9372TX에서 처음 탐지됨). 최신 NXOS 7.0(3)I2(2a) 버전입니다.
Linux 호스트를 N9K(어떤 종류의 가상화 없음)에 직접 연결된 하드웨어를 사용합니다(1000base-T 링크).
이 구성 사용:
interface Ethernet1/59
switchport mode trunk
!
interface Ethernet1/60
switchport mode trunk
linux configurations:
inet 10.2.1.1/24 brd 10.2.1.255 scope global eth1 <= native vlan
inet 10.1.1.1/24 brd 10.1.1.255 scope global eth1.100 <= taggued vlan 100
또는
Windows 호스트를 연결하고 태그 있는 프레임을 보내면 문제가 발생합니다.또한 NIC(Network Interface Card)에서 패킷에 태그를 지정할 수 있는지 확인합니다.
스위치에서 통과하는 프레임에 0이 아닌 패딩이 추가됩니다.
예를 들면 다음과 같습니다.호스트 — [트렁크] N9K [트렁크] — 호스트
netcat을 사용하여 패킷을 보내고 받을 수 있습니다.
이미지에 표시된 대로 스위치에서 Side(VLAN 100 태그 있음), 포트 e1/59를 전송합니다.
다음 이미지에 표시된 대로 스위치에서 측면(VLAN 100 태그 있음), 포트 e1/60을 수신합니다.
이미지에 표시된 대로 패킷이 전송됩니다.
이미지에 표시된 대로 패킷이 수신됩니다.
이미지에 표시된 것처럼 잘못된 패딩이 강조 표시됩니다.
또한 패킷 분석기와 함께 표시됩니다(다른 패킷에서는 데이터가 이전 스크린샷과 다르지만 테스트 및 버그가 동일함).
솔루션
해결 방법은 이 서버가 연결된 인터페이스에서 buffer-boost를 비활성화하는 것입니다.
C9396PX-1(config)# int et 1/7
C9396PX-1(config-if)# no buffer-boost
관련 결함:
CSCva46849 60바이트 프레임(N9k에서 dot1q 헤더 L2 스위칭 포함)