[네트워크 상식 57] IP 프로토콜에 대해 알아보자(8)
관리자 | 2025-03-10 | 조회 22
혼잡제어
네트워크에 존재하는 전송 패킷 수가 많아질수록 네트워크 성능은 자연스럽게
감소한다. 이와 같은 성능 감소 현상이 급격하게 악화되는 현상을 혼잡, 혼잡
문제를 해결하기 위한 방안을 혼잡 제어(Congestion Control)라 한다.
흐름제어(Flow Control)는 송신 호스트와 수신 호스트 사이의 점대점 전송 속도를
다룬다. 반면, 혼잡 제어는 더 넓은 관점에서 호스트와 라우터를 포함한 서브넷
에서 네트워크 전송 능력 문제를 다룬다. 아래 그림은 흐름 제어와 혼잡 제어의
역할 차이를 설명한다.
혼잡이 발생하는 원인은 다양한데, 기본적으로 네트워크의 처리 능력보다
과도하게 많은 패킷이 입력되면 발생한다. 개별 라우터 관점에서 보면 라우터의
출력 선로를 통한 전송 용량이 부족해 아직 전송하지 못한 패킷이 버퍼에
저장되고, 입력 선로로 들어오는 패킷이 늘면서 버퍼 용량은 더 부족해진다.
결과적으로 라우터의 내부 버퍼 용량 부족이 심화되어 더 이상 패킷을 보관할 수
없어 버리게 된다. 그리고 전송 패킷이 버려지면 송신 호스트는 타임아웃 동작을
통해 패킷을 재전송하므로 네트워크로 송신되는 패킷의 양이 늘어 난다.
라우터에서 패킷을 잃어버리지 않으려면 버퍼 용량을 늘려야 하는데, 버퍼
크기가 증가하면 패킷의 전송 지연 시간이 늘어난다. 패킷의 전송 지연 시간이
송신 호스트가 설정한 타임아웃 시간보다 크면 재전송 과정이 증가할 수 있다.
따라서 네트워크로 보내지는 패킷 양이 점점 증가하고, 중복 패킷을 수신하는
현상도 증가하여 네트워크 혼잡도가 계속 증가하는 악순환을 초래한다.
혼잡의 원인
앞서 지적한 것처럼 혼잡을 발생시키는 주요 요인은 전송 시간 초과에 의한
타임아웃 기능을 통해 패킷들이 재전송되는 데 있다. 특히 혼잡 초기에 패킷의
전송 지연이 점점 증가할 때, 타임아웃 값이 너무 작으면 혼잡도가 급격히
증가할 우려가 있다. 따라서 네트워크에 혼잡 징후가 보이면 이를 감지해
타임아웃 시간을 늘리는 방안이 필요하다.
패킷의 도착 순서가 뒤바뀌면 수신 호스트는 패킷을 보관하거나 그냥 버릴 수
있다. 그런데 패킷을 그냥 버리면 패킷 재전송 현상이 발생해 네트워크 혼잡도를
증가시키는 원인이 된다.
패킷이 제대로 수신되었는지를 송신 호스트에게 알려주는 응답 알고리즘도
혼잡에 영향을 준다. 즉, 수신한 패킷들에 대해 즉시 응답하는 방식을 사용하면
수신 패킷 모두에 개별 응답 패킷이 발생한다. 따라서 패킷 여러 개를 모아
하나의 응답으로 처리하는 방식이나 피기배킹(Piggybacking)을 사용하는 방식과
비교하면 혼잡도에 미치는 영향이 다르다. 그렇지만 피기배킹 방식을 사용하는
응답 방식은 혼잡이 발생하는 상황에서는 송신 호스트의 타임아웃 기능을 통한
재전송을 유발하여 혼잡을 오히려 가중시킬 우려도 있다.
라우팅 알고리즘도 혼잡에 영향을 미칠 수 있다. 예를 들어, 혼잡이 발생되고
있는 경로보다는 전송 트래픽이 적은 경로를 찾아 패킷을 전송하면 혼잡도를
줄일 수 있다.
한편 네트워크에서 전송 중인 패킷은 수신 호스트에 도착할 때까지 목적지를
향해 무한정 라우팅되지는 않는다. 패킷별로 네트워크에 존재할 수 있는 일정한
생존 시간을 지정해 이 시간을 초과하지 않도록 설계하는 것이 일반적이다. 생존
시간의 처리는 각 라우터를 통과할 때마다 홉(Hop) 수를 증가시켜 계산하는데
(논리적 측면에서 전송 과정에서 거쳐 온 홉의 개수가 증가한다는 의미고, 일반
구현 과정에서는 패킷의 특정 필드 값을 감소시키는 방식으로 동작한다), 일정한
개수 이상의 라우터를 통과하면 엉뚱한 경로를 떠도는 것으로 판단하여 해당
패킷을 네트워크에서 제거한다.
수신 호스트에 도착할 가능성이 희박한 패킷의 생존 시간을 너무 크게 설정하면
네트워크에 불필요한 부하를 가하는 문제점이 있고, 너무 작게 설정하면 수신 호스트에
도달하기도 전에 패킷을 강제로 제거함으로써 타임아웃을 통한 재전송이 발생할 수 있다.
참조문헌: 데이터 통신과 컴퓨터 네트워크