1.6 패킷 교환 네트워크에서의 지연과 손실

- 패킷은 한 호스트(근원지)에서 시작하고, 일련의 라우터를 통과하고, 다른 호스트(목적지)에서 긴 여행이 끝난다.


- 패킷이 경로를 따라 한 노드(호스트 혹은 라우터)에서 다음 노드(호스트 혹은 라우터)로 전달되므로, 그 패킷은 경로상의 각 노드에서 다양한 지연을 겪게 된다. 이들 지연에서 중요한 것으로는 노드 처리 지연(nodal processing delay), 큐잉 지연(queuing delay), 전송 지연(transmission delay), 전파 지연(propagation delay)을 들 수 있다. 이 지연들 중 쌓여서 전체 노드 지연을 일으킨다.


1.6.1 지연 유형


++그림 1.13++


- 그림 1.13의 각종 지연에 대해 살펴보자. 근원지와 목적지 사이 종단 간의 루트 일부로서, 한 패킷이 업스트림 노드로부터 라우터 A를 통해 라우터 B로 보내진다.


- 목표는 라우터 A에서의 노드 지연 특성을 파악하는 것이다. 라우터 A가 라우터 B에 이르는 하나의 외향(outgoing) 링크를 가지는 것에 주목하라. 이 링크 앞에 큐(버퍼)가 있다. 패킷이 업스트림 노드로부터 라우터 A에 도착하면, 라우터 A는 그 패킷에 대한 적당한 외향 링크를 결정하기 위해 패킷 헤더를 조사하고, 그 패킷을 선택된 링크로 보낸다. 이 예에서, 이 패킷에 대한 외향 링크가 라우터 B에 이르는 링크이다. 패킷은 링크에 현재 전송되는 다른 패킷은 없고 큐에 자신보다 앞선 다른 패킷들이 없으면, 링크로 전송될 수 있다. 만약 링크가 이미 이용되고 있거나 그 링크를 이용하기 위해 큐에서 대기하는 패킷이 있다면, 새로 도착하는 패킷은 큐에 들어간다.


<처리 지연>

- 패킷 헤더를 조사하고 그 패킷을 어디로 보낼지를 결정하는 시간은 처리 지연에 속한다.


- 처리지연은 업스트림 노드에서 라우터 A로 패킷의 비트들을 전송하면서 발생하는 패킷의 비트 수준 오류를 조사하는 데 필요한 시간과 같은 다른 요소를 포함할 수도 있다. 고속라우터에서의 처리지연은 일반적으로 수 밀리초이다. 이 노드 처리 후에 라우터는 그 패킷을 라우터 B에 이르는 링크의 큐로 보낸다.


<큐잉 지연>

- 큐에서 패킷은 링크로 전송되기를 기다리면서 큐잉 지연을 겪는다.


- 특정 패킷의 큐잉 지연 길이는 큐에 저장되어 링크로 전송되기를 기다리는 다른(앞서 도착한) 패킷의 수에 의해 결정된다. 따라서 주어진 패킷의 지연은 패킷마다 상당히 다르다. 큐가 비어 있고 다른 패킷이 전송 중인 상태가 아니라면, 이때 패킷의 큐잉 지연은 0이다. 반면에 트래픽이 많고 다른 많은 패킷이 전송대기 중이면, 큐잉 지연은 매우 길어진다.


<전송 지연(저장 후 전달 지연)>

- 패킷들이 선입선출 방식으로 전송된다고 가정하면, 인터넷에서 일반적인 것처럼 패킷은 앞서 도착한 다른 모든 패킷들이 전송된 다음에 전송될 수 있다. 패킷의 길이를 L비트로, 라우터 A에서 라우터 B까지 링크의 전송률은 R bps(R bps라는 의미는 1초에 R비트를 처리한다는 의미이다. 예를 들어 패킷의 길이가 100비트이고, 링크의 전송률은 10 bps라고 한다면 이 링크는 1초에 10비트를 한번에 처리(전송)할 수 있다는 얘기다. 더 나아가 전송 지연을 생각하면 100bit/10bps = 10초 즉, 이 링크는 100bit를 처리(전송)하는 데 10초가 걸린다는 얘기다. 여기서 주의해야 할 것이 링크의 전송률과 링크의 전파속도는 전혀 다르다는 것이다. 위의 예를 들어 10 bps는 그 링크가 1초에 10비트를 처리(전송)할 수 있음을 의미하지만 그것이 1초에 10비트씩 다른 라우터로 전송된다는 말이 아니다. 다시 말해 1초마다 10비트를 처리할 수 있지만, 이 10비트가 링크를 통해 다른 라우터로 가는 시간은 그 링크의 전파속도와 관련있다.)로 나타내자. R은 라우터 B로 가는 링크의 전송률에 의해 결정된다. 예를 들어, 10Mbps 이더넷 링크의 경우 R은 10Mbps이다. - 전송 지연(저장 후 전달 지연)은 L/R이다. 이것은 패킷의 모든 비트들을 링크로 밀어 내는데(전송) 필요한 시간이다.


<전파 지연>

- 일단 비트가 링크에 전해지면, 라우터 B까지 전파되어야 한다. 링크의 처음에서 라우터 B까지의 전파에 필요한 시간이 전파 지연이다.


- 비트는 링크의 전파속도로 전파된다.


- 링크의 전파속도는 빛의 속도와 같거나 약간 작다.


- 전파속도는 링크의 물리 매체(광섬유, 꼬임쌍 동선 등)에 따라 다르다.


- 전파 지연은 d/s이다.(d는 라우터 A와 라우터 B 사이의 거리이고, s는 링크의 전파속도이다. s는 링크의 전송률이 아니다!!)


- 일단 패킷의 마지막 비트가 B 노드에 전파되면, 이 비트와 앞선 모든 비트는 라우터 B에 저장된다. 라우터 B에서 이러한 과정(처리 지연, 큐잉 지연, 전송 지연, 전파 지연)이 다음 노드로 전달되기 위해 반복된다.


<전송 지연과 전파 지연 비교>

- 전송 지연은 라우터가 패킷을 내보내는 데 필요한 시간이다.(패킷 길이와 링크 전송률의 함수이며, 두 라우터 사이의 거리와는 관계없다.) 반면, 전파 지연은 비트가 한 라우터에서 다음 라우터로 전파되는 데 걸리는 시간이다.(두 라우터 사이의 거리에 대한 함수이며, 패킷 길이나 링크 전송률과는 관계없다.)


- 링크의 전송률과 링크의 전파속도를 같다고 혼동하지 말 것!!!


<지연 시간을 명확히 해주는 예>

100km마다 요금계산소가 있는 고속도로를 생각하자. 고속도로 요금계산소 사이를 링크로, 요금계산소를 라우터로 생각할 수 있다. 차가 시속 100km(전파)로 고속도로를 달린다고 가정하자(차가 요금계산소를 지나면 바로 시속 100km 속도를 유지하며 달린다.) 함께 여행하는 10대의 차가 있고 이들이 일정한 순서대로 줄을 맞추어 달린다고 가정한다. 각 자동차를 비트로 생각하고 이들이 일정한 순서대로 줄을 맞춰서 달린다고 가정하자. 각 자동차를 하나의 비트로 생각한다면 일정한 순서대로 줄을 맞춘 10대의 차는 하나의 패킷으로 생각할 수 있다. 또한 각 요금계산소는 12초마다 한 대의 차를 서비스(전송)한다고 하고(1분에 5대), 늦은 밤이라서 다른 차는 고속도로에 없다고 하자. 마지막으로, 이 차량 대열의 첫 번째 자동차가 요금계산소에 도착할 때, 입구에서 다른 9대의 차가 도착할 때까지 기다려서 그 뒤에 줄서서 대기한다고 하자(저장 후 전달 방식; 전체 차량 대열이 ‘전송’되기 전에 요금계산소에 ‘저장’되어야 한다.)


- 요금계산소가 전체 자동차를 밀어내는 데 걸리는 시간은 (10대)/(5대/분) = 2분이다. 이 시간은 라우터에서의 전송 지연과 유사하다.


- 한 자동차가 한 요금계산소에서 다음 계산소로의 이동에는 100km/(100km/hour) = 1시간이다. 이 시간은 전파 지연과 유사하다.


- 따라서 차량 대열이 한 요금계산서 앞에 저장되는 시간으로부터 다음 요금계산서 앞에 저장될 때까지의 시간은 ‘전송 지연’과 ‘전파 지연’의 합이다.(62분)


이 예를 더 살펴보자. 요금계산소의 차량 대열(자동차 10대)에 대한 서비스 시간이 한 자동차가 요금계산소 사이를 이동하는 데 걸리는 시간보다 크다면 무슨 일이 발생할까?(즉, 자동차는 막 들어오는데 요금계산소에서 처리가 늦은 것이다.) 예를 들어, 자동차가 시속 1,000km로 달리고 요금계산소는 1분에 1대의 서비스를 한다고 하자. 이 때 요금계산소 간의 이동지연(전파 지연)은 6분이고((100km)/(1000km/h)=0.1h=6min), 차량 대열을 서비스하는데 걸리는 시간은 10분이다. 이 경우에 차량 대열에서 처음 몇 개의 자동차는 마지막 자동차가 첫 번째 요금계산소를 벗어나기도 전에 두 번째 요금계산소에 먼저 도착한다. 이러한 경우가 패킷 교환 네트워크에서도 발생할 수 있다. 패킷의 앞선 비트들이 패킷의 나머지 다른 비트가 라우터에서 전송되기를 기다리는 동안에 이미 다음 라우터에 도착할 수 있는 것이다.


전체 노드 지연 = 처리 지연 + 큐잉 지연 + 전송 지연 + 전파 지연


- 이런 지연 요소의 기여도에는 상당히 차이가 있을 수 있다. 예를 들어, 전파 지연은 대학 캠퍼스 내부의 두 라우터를 연결하는 링크에서는 무시할 수 있다.(수 마이크로초 정도) 그러나 정지 위성 링크로 연결된 두 라우터의 경우 전파 지연은 수백 밀리초이고, 전체 노드 지연에서 주요 요소이다.


- 전송 지연도 마찬가지로 무시할 수 있는 정도에서부터 상당한 지연에까지 이를 수 있다. 100Mbps나 그 이상의 전송률인 경우는 일반적으로 무시할 수 있으나 저속 다이얼업 모뎀 링크에서 보내지는 커다란 인터넷 패킷은 수백 밀리초에 이를 수 있다.


- 처리 지연은 보통 무시될 수 있다.


1.6.2 큐잉 지연과 패킷 손실

- 노드 지연 중 가장 복잡하고 흥미로운 요소는 큐잉 지연이다.(큐잉 지연 관련 논문과 책만 수천 개)


- 큐잉 지연은 처리 지연, 전송 지연, 전파 지연과 다르게 패킷마다 다를 수 있다. 예를 들어 동시에 10개의 패킷이 비어 있는 큐에 도착한다면, 전송된 첫 패킷은 큐잉 지연을 겪지 않지만 마지막으로 전송되는 패킷은 상당히 많은 큐잉 지연을 겪을 것이다.(다른 9개의 패킷이 전송되기를 기다려야 하므로) 따라서 큐잉 지연의 특성을 묘사할 때, 평균 큐잉 지연, 큐잉 지연의 분산, 큐잉 지연이 어느 특정 값을 넘을 확률 같은 통계 측정을 일반적으로 이용한다.


- 언제 큐잉 지연이 크고, 언제 미미한가? 이것에 대한 대답은 트래픽이 큐에 도착하는 비율, 링크의 전송률, 도착하는 트래픽의 특성, 즉 그 트래픽이 주기에 맞춰서 또는 버스트(burst)하게 도착하느냐에 의해 주로 결정된다. 이를 이해하기 위해, 먼저 a는 패킷이 큐에 도착하는 평균율이라고 하자(a의 단위는 패킷/초). R은 전송률, 즉 비트가 큐에서 밀려나는 비율(비트/초)임을 기억하자. 또한 편의상 모든 패킷이 L비트라고 가정하자. 이때 비트가 큐에 도착하는 평균율은 La비트/초이다. 끝으로, 큐가 매우 커서 무한대 비트를 저장할 수 있다고 가정한다. 트래픽 강도(traffic intensity), 즉 La/R은 큐잉 지연의 정도를 측정하는 데 매우 중요하다. La/R > 1이면, 비트가 큐에 도착하는 평균율이 비트가 큐에서 전송되는 비율을 초과한다. 이 경우에 큐는 끝없이 증가하고 큐잉 지연은 무한대에 도달한다. 따라서 트래픽 공학의 주요 규칙 중 하나는 “트래픽 강도가 1보다 크지 않게 시스템을 설계하라”는 것이다.


- La/R <= 1인 경우를 생각해보자. 여기서 도착 트래픽의 특성이 큐잉 지연에 영향을 미친다. 예를 들어 패킷이 주기적으로 도착한다면, 즉 하나의 패킷이 L/R초마다 도착한다면, 이때 모든 패킷은 빈 큐에 도착할 것이고 큐잉 지연은 없을 것이다. 반면에 패킷이 주기적이 아니라 몰려서(burst) 도착한다면, 상당한 평균 큐잉 지연이 생길 것이다. 예를 들어, N개 패킷이 동시에 (L/R)N ...


- 주기적인 도착에 대한 앞의 두 예는 다소 이론적인 것이다. 일반적으로 큐에 도착하는 프로세스는 랜덤(random)하다. 즉, 패킷의 도착에 전혀 고정된 패턴이 없다. 패킷은 임의의 시간만큼 떨어져서 도착하게 된다. 사실 현실적인 경우 La/R은 지연에 대한 통계를 완전히 분석하는 데 충분하지 않다. 그럼에도 불구하고 큐잉 지연에 대한 어느 정도의 직관적 이해를 얻는 데 유용하다. 특히 트래픽 강도가 0에 가까우면, 패킷 도착이 드물고 간격이 멀어서 다음에 도착하는 패킷이 큐에서 다른 패킷을 발견하는 경우가 없을 것이다. 그래서 평균 큐잉 지연은 0에 가까워진다. 반면에 트래픽 강도가 1에 가까우면, 패킷 도착이 전송용량을 초과하여 큐가 생성될 것이다. 트래픽 강도가 1에 접근할수록 평균 큐 길이는 점점 증가한다.


<패킷 손실>

- 현실에서 큐의 용량은 스위치 설계와 비용에 크게 의존하며, 일반적으로 유한 용량을 가진다. 큐 용량이 유한하기 때문에, 트래픽 강도가 1에 접근함에 따라 패킷 지연이 실제로 무한대가 되진 않는다. 대신에, 패킷이 도착해서 큐가 꽉 찬 것을 발견하게 된다. 이렇게 패킷을 저장할 수 없는 경우에 라우터는 그 패킷을 버린다. 즉, 그 패킷을 잃어버린다.


- 종단 시스템 입장에서 이는 패킷이 네트워크 코어로 전송되었으나 네트워크로부터 목적지에 나타나지 않는 것으로 보일 것이다.


- 손실 패킷의 비율은 트래픽 강도가 클수록 증가한다. 그러므로 노드에서의 성능은 흔히 지연뿐 아니라 패킷 손실 확률로도 측정한다.(손실 패킷은 애플리케이션 계층이나 트랜스포트 계층 프로토콜에 의해 종단 간에 재전송 될 수 있다)


<종단 간의 지연>

- 지금까지 노드 지연, 즉 한 라우터에서의 지연에 대하여 초점을 맞추었다. 이제 근원지에서 목적지까지의 지연을 살펴보자


- 근원지 호스트와 목적지 호스트 사이에 N-1개의 라우터가 있다고 하자. 그리고 네트워크가 혼잡하지 않으며(큐잉 지연을 무시할 수 있음), 각 라우터와 근원지 호스트의 처리지연은 dproc이고 각 호스트와 근원지 호스트에서의 전송률은 R 비트/초이다. 그리고 각 링크에서의 전파지연은 dprop라고 하자. 이제 노드 지연을 더하여 종단 간의 지연을 얻을 수 있다.

dend-end = N(dproc + dtrans + dprop)

여기서 dtrans = L/R이고, L은 패킷 크기이다.

+ Recent posts