
스위치에서 너무 많은 패킷이 손실되면 어떻게 되는지 궁금합니다. 제가 묻는 이유는 지속적으로 과부하가 걸리는 스위치가 있기 때문입니다. 이는 개인이 네트워크에서 대용량 파일을 다운로드하기 때문에 발생합니다. 이것이 실패할 경우를 대비해 백업 스위치가 있습니다.
답변1
짧은 대답은 "많지는 않다"이다. 스위치에서 실제로 일어나는 일은 패킷이 손실된다는 것입니다. 그게 전부입니다. 스위치는 분실 사실을 기록하는 것 외에는 신경 쓰지 않습니다.
다음 섹션에서는 패킷 손실의 원인이 무엇인지, 그리고 아래에서는 이를 처리하기 위해 네트워크 전체가 어떻게 설계되었는지 정확히 알아봅니다.
간단히 말해서, 패킷 손실에 대한 응답은 스위치가 아닌 클라이언트에 의해 수행됩니다. 이는 스위치의 책임이며 스위치에 대한 유일한 제어는 대기열 구성과 트래픽 우선 순위를 지정하는 QoS와 같은 기능을 통해서입니다(패킷 손실을 중지하지 않음).
스위치에서는 무슨 일이 일어나고 있는 걸까요?
스위치는 대기열을 사용하여 들어오고 나가는 패킷 사이에 소량의 버퍼를 허용합니다. 그들은 일종의 캐시와 비슷하며 유사한 기능을 많이 가지고 있습니다. 일반적으로 패킷이 스위치로 들어와 곧바로 나가기를 원합니다. 이것이 가장 빠른 방법이지만 항상 가능한 것은 아닙니다.
대역폭이 부족한 연결로 수렴하는 여러 클라이언트가 있거나 더 좁은 대역폭을 통해 대상에 연결하는 경우 패킷이 장치에 들어오는 속도만큼 빠르게 전송될 수 없습니다.
추가 패킷은 패킷 버스트이고 캐시가 완전히 채워지기 전에 패킷이 줄어들기를 바라며 스위치 내에서 사용되는 대기열에 쌓입니다.
캐시가 가득 차면 이는 들어오는 다른 패킷을 저장할 위치가 없으며 패킷이 삭제되는 위치임을 의미합니다. 대기열에 충분한 공간이 생길 때까지 패킷은 단순히 삭제됩니다.
예
이에 대한 실제 사례는 사무실의 파일 서버입니다. 48x100Mbps 연결과 2x 1Gbps 연결이 있다고 가정해 보겠습니다(여기서 48개는 클라이언트용이고 2기가비트는 서버에 연결되어 있습니다). 서버와 통신을 시도하는 사람이 없다면 클라이언트는 전체 100mbps 연결을 기꺼이 활용할 수 있습니다(물론 오버헤드 포함). 그러나 20명 이상이 이미 2GB인 파일 서버에 액세스하려고 하면 21번째 사람은 그렇게 할 수 없습니다.
패킷은 선착순으로 대기열에 추가되기 시작하고 스위치에 구성된 우선 순위 설정을 사용하여 릴리스됩니다. 일반적으로 QoS와 같은 구성이 설정되지 않은 경우 선입선출(FIFO)입니다. 이 버퍼가 가득 차면(패킷이 너무 많음) 패킷이 완전히 삭제되고 이를 깨닫고 조치를 취하는 것은 클라이언트의 몫입니다.
일반적인 결과는 available_bandwidth / (number_of_clients * bandwidth_of_clients)
평균 처리량입니다. 각 클라이언트가 얻는 속도는 스위치에 대한 연결 속도에 비례합니다. 이는 결정론적 설계 결정이라기보다는 대기열의 공간을 사용할 수 있게 되자마자 패킷이 포트 중 하나에서 나올 확률의 결과입니다.
네트워크 트래픽은 어떻게 되나요?
소프트웨어/하드웨어 통신에서는 패킷이 삭제되고 있음을 식별하고 전송하려는 데이터 양을 줄이기 위해 속도 제한을 구현해야 합니다. 물론 데이터가 UDP(일반적으로 실시간 애플리케이션)인 경우 ACK 메시지가 없으므로 속도 제한을 수행하는 방법을 알 수 없습니다.
속도 제한은 일반적으로 모든 트래픽이 전송할 수 있는 가장 빠른 속도를 결정하는 방식입니다. 예를 들어, 간단한 네트워크의 라우터에 1Gbit 연결이 있을 수 있지만 업로드 속도는 20Mbit에 불과하며, 그보다 더 많은 것을 보내려고 하면 패킷이 삭제되고 PC는 ACK를 받지 못하고 속도 제한이 적용됩니다. 전체 네트워크(인터넷 포함)를 통해 목적지까지 도달할 수 있는 최대 속도와 일치합니다.
TCP에서는Nagle의 알고리즘이 속도 제한을 적용하는 데 사용되지만 UDP 연결에서는 결과적으로 품질이 낮아지거나(비디오 스트림 등의 경우) 실패할 수 있지만, 충분한 데이터 수신 실패는 명시적으로 대상에서 발생하는 것이 아니라 대상에서 발생해야 합니다. 인정이 부족해서.