VLC를 사용한 RTP 스트리밍 - 내 PC에서 막대한 전송 UDP 패킷 손실이 발생합니다. 이유는 무엇입니까?

VLC를 사용한 RTP 스트리밍 - 내 PC에서 막대한 전송 UDP 패킷 손실이 발생합니다. 이유는 무엇입니까?

Windows 7 PC에서 이상한 문제가 발생했습니다. RTP를 통해 오디오를 스트리밍하도록 VLC 미디어 플레이어를 설정하려고 했지만 엄청난 양의 아웃바운드 UDP 패킷이 손실되었습니다.

몇 번의 디버깅 후에 내 PC가 다른 PC에서 동일한 스트리밍 패킷을 전혀 잘 수신할 수 있지만(인바운드 UDP 손실 없음), 내 PC가 스트림을 전송하도록 설정되면 26%가 넘는 UDP 패킷 손실이 발생하는 것을 확인했습니다. 직선형 CAT5 케이블을 사용하여 PC를 연결한 경우에도 마찬가지입니다.

일부 Wireshark 파킹을 통해 내 PC가 해당 패킷을 전혀 보내지 않는 것 같습니다. 뭔가가 전송을 방해하고 있습니다. 그 원인은 무엇입니까? 나는 단서가 없다.

힌트를 주셔서 감사합니다.

//편집: 추가하는 것을 잊었습니다. 스트림이 유니캐스트인지 멀티캐스트인지는 중요하지 않습니다. 결과는 동일합니다.

답변1

마침내 해결책을 찾았습니다. 처음부터 걱정했던 것처럼 문제는 실제로 Windows에 있었습니다. 어떤 이유로 IP 스택은 기본적으로 8kByte 버퍼만 사용합니다. (재밌지 않나요?) VLC가 생성하는 몇 kB UDP 버스트에는 충분하지 않습니다.

레지스트리 키를 사용하여 IP 스택 보내기/받기 버퍼 크기를 늘릴 수 있습니다. 어떤 이유에서인지 내 컴퓨터에는 이러한 키가 완전히 누락되어 크기가 기본 키였습니다.

보내기/받기 버퍼 크기를 변경하려면 이 레지스트리 키를 업데이트(또는 생성)하세요. 내 경우에는 64kB 버퍼 크기를 설정하면 문제가 해결되었습니다. 이제 UDP 아웃바운드 손실이 없습니다.

[HKEY_LOCAL_MACHINE \SYSTEM \CurrentControlSet \Services \Afd \Parameters]
DefaultReceiveWindow = 65536
DefaultSendWindow = 65536

두 값을 모두 생성해야 하는 경우 두 값 모두 DWORD(32비트)입니다.

(또한 네트워크 컨트롤러의 버퍼 크기 설정을 수정했지만 아무 소용이 없습니다.)

관련 정보