내 서버-클라이언트 아키텍처에서는멀티캐스트위성 링크를 통해 서버에서 많은 클라이언트로 100MB 파일을 보냅니다. 네트워크는 5개 홉을 통과합니다. 10Mbps(즉, 초당 1250KB) 대역폭 링크가 있습니다.
첫 번째 파일을 많은 클라이언트에 멀티캐스트할 때 첫 번째 홉에서는 약 9.0mbps의 수신 속도를 얻지만 수신 측에서는 약 4.2mbps에 불과합니다. 모든 클라이언트는 10MB 반이중입니다.
네트워크 사용량이 낮은 것은 알 수 있지만 정확히 어디에 있는지는 알 수 없습니다. 서버가 ~9.0mbps로 전송하는 경우 클라이언트는 동일한 속도를 얻어야 합니다.
멀티캐스트에 안정적인 UDP를 사용하고 있습니다.
각 홉(특정 포트)에 대해 들어오고 나가는 대역폭 사용량을 확인할 수 있는 방법이 있습니까? 이를 달성할 수 있는 도구/유틸리티/응용 프로그램이 있습니까?
모든 홉이 외진 곳에 있어서 거기까지 가는 것은 불가능합니다.
답변1
도구
각 홉(특정 포트)에 대해 들어오고 나가는 대역폭 사용량을 확인할 수 있는 방법이 있습니까?
귀하가 네트워크 요소를 소유하거나 타사 WAN 공급자가 정보를 공개하지 않는 한 귀하는추정네트워크 경로를 따라 종단 간 사용 가능한 수신 및 송신 대역폭입니다. 아래를 참조하세요.
이를 달성할 수 있는 도구/유틸리티/응용 프로그램이 있습니까?
- 위에서 언급한 "사용 가능한 대역폭 추정" 경로에 대해서는 다음을 검토해야 합니다.Sally Floyd의 종단 간 TCP/IP 대역폭 추정 도구 아카이브. 내가 가장 잘 알고 있는 것은
yaz
, 유니캐스트 UDP 패킷을 기반으로 합니다. - 특정 라우터 홉에서 패킷이 삭제되는지 확인하려면(결국 질문임) 다음을 사용할 수 있습니다.
mtr
;아직 하나 있어요win-mtr
클라이언트는 Windows를 지원합니다. 일반적으로 패킷 손실 문제를 해결하는 방법에 대한 간단한 예를 보려면,슈퍼유저에 대한 내 답변 보기. 이 기술은 패킷 손실이 발생한 첫 번째 지점에서 가시성을 제공하는 데 가장 효과적입니다(mtr
첫 번째 지점이 수정될 때까지 해당 지점 이후의 다운스트림 드롭에 대한 가시성을 많이 제공하지 않기 때문입니다).
낙하 위치를 대략적으로 추정하는 쉬운 방법은 다음을 설치하는 것입니다.mtr
서버에서 다음을 실행하십시오.mtr
100M 파일을 전송하는 동안 단일 멀티캐스트 클라이언트의 패킷 손실을 추적합니다. 보다 정확한 측정을 위해 다음을 사용할 수 있습니다.iperf
네트워크가 1억 개의 파일로 포화되지 않도록 하십시오(회사의 다른 그룹과 WAN 다운타임을 적절하게 조정하는 한).
차트
내 답변의 나머지 부분에서는 다음 이미지를 참조로 사용합니다.
사진 속에:
- R1~R5는 IP 라우터입니다.
- S1 및 S5는 이더넷 스위치입니다.
- 172.16.1.0/24의 파란색 서버는 멀티캐스트 서버를 나타냅니다.
- C51부터 C55까지는 멀티캐스트 수신기의 예입니다(수신자는 제한 없음).
일반적으로 R1과 R5 사이의 WAN 세부 사항은 중요하지 않습니다. 모두가 동의할 수 있는 기본 토폴로지만 있으면 됩니다.
내가 이해한 바로는 100MB 파일을 보낼 때 172.16.1.0/24의 R1 인터페이스는 약 9Mbps를 표시하는 반면, 클라이언트가 안정적인 UDP 멀티캐스트를 통해 수신할 때 172.16.5.0/24의 R5 인터페이스는 약 4.2Mbps. 신뢰할 수 있다는 말은 멀티캐스트 서비스에 일종의 패킷 순서가 내장되어 있고 클라이언트 응용 프로그램이 서버에서 재전송을 요청하는 방법을 알고 있다는 의미로 받아들입니다.
진단
이 설명이 정확하다면 다음과 같은 이유가 있을 수 있습니다.
- 귀하의 질문에서 주장했듯이 R1 이후 어딘가에 링크 정체가 있습니다.
- 경로(R1 및 R5 포함)에 있는 모든 Rx 장치에 대한 성능 제한(예: 멀티캐스트 복제 성능 제한 도달)
- 10M 반이중 이더넷의 처리량 제한에 직면했습니다.
이유 1 또는 2는 다음을 사용하여 드러날 수 있습니다.mtr
. 그러나 이유 3에 대해서는 더 논의할 가치가 있습니다. 10M/half 링크는 최대단방향옮기다. 10M/half 링크에서 양방향 트래픽을 전송하는 경우 일반적으로 이더넷으로 인해 10Mbps 미만이 표시됩니다.CSMA/CD 뉴스. 반이중 링크에서 이더넷은 동시에 보내고 받을 수 없습니다. 스테이션이 그렇게 하려고 하면 프레임이 충돌하고 두 스테이션 모두 임의의 시간 동안 재전송이 지연됩니다.
나는 생계를 위해 네트워크를 테스트합니다. 10M/half 링크의 효과적인 양방향 처리량을 테스트할 때 일반적으로 3Mbps에서 4Mbps 사이를 확인합니다. 위에서 공유한 숫자는 매우 비슷해 보입니다. 비난할 충분한 증거는 없지만 10M/half 링크가 문제인 경우 특히 R5와 S5 사이의 링크가 10M/half인 경우 놀라지 않을 것입니다.
답변2
각 컴퓨터에 원격으로 액세스할 수 있고 권한 있는 계정이 있다고 가정하면 이 iftop
유틸리티를 사용해 볼 수 있습니다.
이와 같은 것은 iftop -f udp -F "port <port> and host <previous hop>"
특정 포트의 특정 호스트에 대한 모든 UDP 트래픽을 제공해야 합니다. 필터 구성에 대한 자세한 내용은 매뉴얼 페이지를 참조하십시오. (또한 참고: 네트워크에 액세스할 수 있다고 가정하면 아래와 같이 네트워크/넷마스크를 지정하여 전체 네트워크를 모니터링할 수도 있습니다 -F 10.0.0.0/255.0.0.0
. :)
iftop을 설치하고 싶지 않거나 설치할 수 없지만 iptables에 액세스할 수 있는 경우 트래픽을 기록하고 이를 사용하여 대역폭을 계산할 수도 있습니다.
먼저 애플리케이션에 대한 체인을 설정하고 모든 수신/발신 트래픽을 전달합니다.
iptables -N $CHAIN && iptables -A FORWARD
그런 다음 별도의 업로드/다운로드 규칙을 설정합니다.
# Downloads
iptables -A FORWARD -d $PREVIOUSHOP -j $CHAIN
# Town A Uploads
iptables -A FORWARD -s $PREVIOUSHOP -j $CHAIN`
이제 각 체인의 트래픽 사용량을 확인하세요.iptables -L -v -n