2.6. 패킷 드롭다운의 원인
일반적으로 큐가 충분히 빨리 드레이닝되지 않은 경우 패킷이 큐가 가득 찼을 때 삭제됩니다. 병목 현상이 발생하면 대기열이 충분히 빨리 드레이닝되지 않을 때 큐를 드레이닝해야 하는 엔티티입니다. 대부분의 경우 드롭 카운터는 삭제된 패킷을 추적하는 데 사용됩니다. 하드웨어 또는 소프트웨어 설계 버그로 인해 패킷이 드롭 카운터를 건너뛸 수 있습니다.
DPDK(Data Plan Development Kit)에는 패킷 전달을 위한 testpmd 애플리케이션이 포함되어 있습니다. 이 장에 표시된 시나리오에서 testpmd 는 VM에 설치되고 할당된 논리 코어(lcores)가 있는 포트를 폴링하여 한 포트에서 다른 포트로 패킷을 전달합니다. testpmd 는 일반적으로 테스트할 트래픽 생성기와 함께 사용됩니다. 이 경우 물리적 가상 물리적(PVP) 경로의 처리량을 처리량으로 사용합니다.
2.6.1. 물리적 NIC 드레이닝에 OVS-DPDK Too Slow 링크 복사링크가 클립보드에 복사되었습니다!
이 예에서는 PMD 스레드가 물리적 네트워크 어댑터(dpdk0)의 수신(RX) 큐를 폴링하는 작업을 수행함을 보여줍니다. PMD 스레드가 패킷 볼륨을 따라 유지할 수 없거나 중단된 경우 패킷이 삭제될 수 있습니다.
그림 2.1. 물리적 어댑터 RX 큐 폴링
다음 명령은 dpdk0 인터페이스의 통계를 보여줍니다. ovs-dpdk가 물리적 어댑터를 충분히 빠르게 드레이닝하지 않기 때문에 패킷이 삭제되는 경우 rx_dropped 의 값이 빠르게 증가합니다.
PMD에 대한 NUMA 노드당 물리적 CPU 코어가 두 개 이상 없어야 합니다.
2.6.2. VM Too Slow to Drain vhost-user 링크 복사링크가 클립보드에 복사되었습니다!
이 예는 figure 2.1 의 예와 유사합니다. 이 예제에서는 lcore 스레드가 인스턴스 수신(RX) 큐로 전송된 패킷 볼륨에 의해 압도되는 경우 패킷 손실이 발생할 수 있다는 것입니다.
자세한 내용은 다음 문서를 참조하십시오.
그림 2.2. 가상 어댑터 RX 큐 폴링
호스트의 tx_dropped 값이 VM의 rx_dropped 값에 해당하는지 확인하려면 다음 명령을 실행합니다.
ovs-vsctl --column statistics list interface vhud8ada965-ce
statistics : {"rx_1024_to_1522_packets"=0, "rx_128_to_255_packets"=0, "rx_1523_to_max_packets"=0,
"rx_1_to_64_packets"=0, "rx_256_to_511_packets"=0, "rx_512_to_1023_packets"=0, "rx_65_to_127_packets"=0, rx_bytes=0,
rx_dropped=0, rx_errors=0, rx_packets=0, tx_bytes=0, tx_dropped=0, tx_packets=0}
ovs-vsctl --column statistics list interface vhud8ada965-ce
statistics : {"rx_1024_to_1522_packets"=0, "rx_128_to_255_packets"=0, "rx_1523_to_max_packets"=0,
"rx_1_to_64_packets"=0, "rx_256_to_511_packets"=0, "rx_512_to_1023_packets"=0, "rx_65_to_127_packets"=0, rx_bytes=0,
rx_dropped=0, rx_errors=0, rx_packets=0, tx_bytes=0, tx_dropped=0, tx_packets=0}
2.6.3. vhost-user 드레인 OVS-DPDK Too Slow 링크 복사링크가 클립보드에 복사되었습니다!
이 예에서 PMD 스레드는 호스트 관점에서 수신 대기열인 virtio TX를 폴링합니다. PMD 스레드가 패킷 볼륨에 의해 압도되거나 중단된 경우 패킷이 삭제될 수 있습니다.
그림 2.3. 가상 어댑터 TX 큐 폴링
VM에서 패킷의 반환 경로를 추적하고 호스트(tx_dropped) 및 VM(rx_dropped)의 드롭 카운터에서 값을 제공하며 다음 명령을실행합니다.
ovs-vsctl --column statistics list interface vhue5146cdf-aa
statistics : {"rx_1024_to_1522_packets"=0, "rx_128_to_255_packets"=0, "rx_1523_to_max_packets"=0,
"rx_1_to_64_packets"=0, "rx_256_to_511_packets"=0, "rx_512_to_1023_packets"=0, "rx_65_to_127_packets"=0,
rx_bytes=0, rx_dropped=0, rx_errors=0, rx_packets=0, tx_bytes=0, tx_dropped=0, tx_packets=0}
ovs-vsctl --column statistics list interface vhue5146cdf-aa
statistics : {"rx_1024_to_1522_packets"=0, "rx_128_to_255_packets"=0, "rx_1523_to_max_packets"=0,
"rx_1_to_64_packets"=0, "rx_256_to_511_packets"=0, "rx_512_to_1023_packets"=0, "rx_65_to_127_packets"=0,
rx_bytes=0, rx_dropped=0, rx_errors=0, rx_packets=0, tx_bytes=0, tx_dropped=0, tx_packets=0}
2.6.4. Egress 물리 인터페이스에서 패킷 손실 링크 복사링크가 클립보드에 복사되었습니다!
PCIe와 RAM 간의 전송 속도가 느리면 물리적 어댑터가 TX 큐에서 패킷을 삭제할 수 있습니다. 이 문제가 거의 발생하지 않지만 이 문제를 식별하고 해결하는 방법을 아는 것이 중요합니다.
그림 2.4. 물리적 어댑터 TX 큐 폴링
다음 명령은 dpdk1 인터페이스의 통계를 보여줍니다. tx_dropped 가 0보다 크고 빠르게 증가하는 경우 Red Hat에서 지원 케이스를 열 수 있습니다.
이러한 유형의 패킷 손실이 표시되면 메모리 채널 재구성을 고려하십시오.
- 메모리 채널을 계산하려면 다음을 참조하십시오. Network Functions Virtualization Planning and Conifguration Guide 의 메모리 매개변수 입니다.
- 메모리 채널 수를 확인하려면 다음을 참조하십시오. Red Hat OpenStack Platform에서 NeutronDpdkMemoryChannels 또는 OvsDpdkMemoryChannels의 메모리 채널 수를 확인하는 방법은 무엇입니까.