UDP 패킷 손실을 측정하고 최소화하는 방법

UDP 패킷 손실을 측정하고 최소화하는 방법

VOIP 애플리케이션을 통해 전화를 걸 때 가끔 음성 끊김 현상이 발생합니다. 모든 VOIP 애플리케이션은 데이터 전송에 UDP를 사용하므로 Linux에는 패킷 손실량을 측정하고 네트워크 성능을 측정하는 도구가 있습니까?

UDP 패킷 손실의 일반적인 이유는 무엇이며, 패킷 손실이 많을 경우 어떤 조치를 취해야 합니까?

답변1

특히 LAN에서 UDP 손실의 주요 원인 중 하나는 버퍼 오버플로입니다. 이는 스위치나 송신 또는 수신 서버에서 발생할 수 있습니다. Linux에서 패킷 손실을 확인하기 위해 사용할 수 있는 메커니즘 중 하나는 다음 명령을 실행하는 것입니다.

watch -n 1 -d 'cat /proc/net/udp'

그러면 다음과 유사한 출력이 표시됩니다. 여기서 마지막 열은 삭제된 패킷 수입니다.

Every 1.0s: cat /proc/net/udp                                                                                                                                 Mon Sep 28 15:01:00 2015

  sl  local_address rem_address   st tx_queue rx_queue tr tm->when retrnsmt   uid  timeout inode ref pointer drops
11362: 00000000:3443 00000000:0000 07 00000000:00000000 00:00000000 00000000     0        0 18224 2 ffff880808040000 0
19543: 00000000:D438 00000000:0000 07 00000000:00000000 00:00000000 00000000     0        0 3809742 2 ffff8808060c8400 0
30819: 00000000:0044 00000000:0000 07 00000000:00000000 00:00000000 00000000     0        0 12644 2 ffff88100f2b0400 0

그런 다음 여러 가지 다른 트릭을 시도하여 이러한 문제를 해결할 수 있습니다(다시 Linux를 예로 사용).

  • 데이터를 소비하는 앱에 사용 가능한 CPU가 충분한지 확인하세요.
  • I/O를 수행하는 스레드가 네트워크 장치에 최대한 가까이 있는지 확인하세요.
  • udp 버퍼 크기가 데이터를 수용할 수 있을 만큼 충분히 큰지 확인한 다음(다시 watch 명령의 출력을 관찰하여 tx_queue또는 열이 증가하는지 확인할 수 있음) sudo , 또는 , 또는 (참고, xxx를 rx_queue사용하여 udp 버퍼를 늘립니다. ,yyyy,zzz가 정의되었습니다.sysctl -w 'net/ipv4/udp_mem=xxx yyy zzzz'sysctl -w 'net/core/rmem_default=????'sysctl -w 'net/core/wmem_default=????'여기

부끄럽지 않은 자기 홍보를 위해 저는 다음과 같은 제품을 만들었습니다.Pontus Vision 스레드 관리자지속적으로 자동으로 조정합니다.

답변2

UDP 패킷 손실의 일반적인 이유는 무엇입니까?

QOS 부족(무작위 패킷 삭제, VoIP가 우선순위로 처리되지 않음) 및/또는 장비 결함(회선 품질 등)으로 인한 혼잡(너무 많은 패킷). 먼저 QOS 지원 장비를 구입하고 후자의 경우 회선(하드웨어, 스위치, 뭐든간에) 나쁘다는 이유로.

인터넷 연결을 위해서는 양쪽 끝에 QOS 라우터가 필요합니다. (귀하의 공급자가 VoIP를 제공하지 않는 한 공급자가 인프라를 갖추고 있을 가능성이 높습니다.) 즉, 일반적으로 다운 채널이 업 채널보다 훨씬 크기 때문에 다운 채널에만 우선순위를 두는 로컬 라우터는 일반적으로 "충분합니다".

하지만 나쁜 라인 품질은 처리하기 어려운 문제입니다.

답변3

UDP 패킷 손실을 겪고 있다면 거의 확실히 TCP 패킷 손실도 겪고 있는 것입니다. 차이점은 TCP는 손실된 패킷을 재전송하고 UDP는 그렇지 않다는 것입니다. VoIP 애플리케이션은 재전송할 수 없습니다. 재전송할 경우 정보가 더 이상 좋지 않기 때문입니다.

귀하의 VoIP 통화가 인터넷을 통해 진행된다고 가정하겠습니다. QoS가 필요할 수도 있지만 인터넷 연결이 제대로 작동하지 않으면 아무 소용이 없습니다. 이것을 사용하십시오패킷 손실 테스트그것을 확인하기 위해. ISP나 로컬 사이트 등에서 패킷 손실이 발생했음을 알려줍니다.

로컬 사이트에서 문제가 발견되면 케이블이나 DSL 모뎀의 신호 잡음 비율, 출력 전력 및 감쇠(DSL)가 양호한지 확인해야 합니다.

관련 정보