Skip to content

필사 모드: [컴퓨터 네트워크] 03. 네트워크 지연, 손실, 처리량

한국어
0%
정확도 0%
💡 왼쪽 원문을 읽으면서 오른쪽에 따라 써보세요. Tab 키로 힌트를 받을 수 있습니다.
원문 렌더가 준비되기 전까지 텍스트 가이드로 표시합니다.

본 포스팅은 James Kurose, Keith Ross의 Computer Networking: A Top-Down Approach (6th Edition) 교재를 기반으로 정리한 내용입니다.

1. 패킷 교환 네트워크에서의 지연 개요

패킷이 출발지에서 목적지까지 이동하면서 경로상의 각 노드(라우터)에서 여러 유형의 지연을 겪는다. 가장 중요한 지연은 **노드 지연(nodal delay)** 이며, 4가지 요소로 구성된다.

노드 지연(d_nodal) = d_proc + d_queue + d_trans + d_prop

d_proc : 처리 지연 (Processing Delay)

d_queue : 큐잉 지연 (Queuing Delay)

d_trans : 전송 지연 (Transmission Delay)

d_prop : 전파 지연 (Propagation Delay)

2. 4가지 지연 요소

2.1 처리 지연 (Processing Delay)

패킷 헤더를 검사하고 어디로 보낼지 결정하는 시간이다.

- 패킷 헤더의 비트 오류 검사

- 포워딩 테이블 조회

- 일반적으로 **마이크로초(us)** 이하

패킷 도착 → [헤더 검사] → [포워딩 결정] → 큐에 진입

처리 지연 (d_proc)

2.2 큐잉 지연 (Queuing Delay)

패킷이 출력 링크의 큐에서 전송을 기다리는 시간이다.

- 큐에 대기 중인 다른 패킷의 수에 따라 결정

- **마이크로초에서 밀리초** 수준까지 변동

- 4가지 지연 중 **가장 복잡하고 예측하기 어려움**

출력 큐:

[pkt5][pkt4][pkt3][pkt2][pkt1] ──> 출력 링크

(전송 중)

← 이 패킷들의 대기 시간 = 큐잉 지연 →

2.3 전송 지연 (Transmission Delay)

패킷의 모든 비트를 링크에 밀어넣는 데 걸리는 시간이다.

전송 지연 = L / R

L: 패킷 길이 (bits)

R: 링크 전송률 (bps)

**예시**: `L = 10,000 bits`, `R = 10 Mbps`

d_trans = 10,000 / 10,000,000 = 0.001초 = 1ms

> 전송 지연은 **패킷 길이**와 **링크 전송률**에 의존하며, 두 라우터 간 거리와는 무관하다.

2.4 전파 지연 (Propagation Delay)

비트가 링크를 통해 물리적으로 전파되는 시간이다.

전파 지연 = d / s

d: 두 라우터 간 물리적 거리 (meters)

s: 매체의 전파 속도 (약 2 * 10^8 m/s ~ 3 * 10^8 m/s)

**예시**: 두 라우터 간 거리 = 5,000 km, 전파 속도 = 2.5 x 10^8 m/s

d_prop = 5,000,000 / 250,000,000 = 0.02초 = 20ms

> 전파 지연은 **거리**에 의존하며, 패킷 크기와는 무관하다.

2.5 전송 지연 vs 전파 지연 비유

고속도로 톨게이트 비유:

차량 행렬 = 패킷의 비트들

톨게이트 = 라우터

고속도로 = 링크

전송 지연: 모든 차가 톨게이트를 통과하는 시간

(차량 수 / 톨게이트 처리 속도)

전파 지연: 한 차가 톨게이트에서 다음 톨게이트까지 달리는 시간

(거리 / 차량 속도)

3. 큐잉 지연과 패킷 손실

3.1 트래픽 강도 (Traffic Intensity)

큐잉 지연의 정도는 **트래픽 강도**로 판단할 수 있다.

트래픽 강도 = L * a / R

L: 패킷 크기 (bits)

a: 평균 패킷 도착률 (packets/sec)

R: 링크 전송률 (bps)

트래픽 강도에 따른 큐잉 지연

큐잉 지연

^

│ │

│ │ /

│ │ /

│ │ /

│ │ /

│ __│_/

│ ___/ │

│__/ │

└──────────┴──────> 트래픽 강도 (La/R)

0 1

La/R → 0 : 큐잉 지연 거의 없음

La/R → 1 : 큐잉 지연 급격히 증가

La/R > 1 : 큐가 무한히 증가 (시스템 불안정)

핵심 규칙

| 트래픽 강도 | 큐잉 지연 상태 |

| ------------------ | ---------------------------------- |

| La/R 이 0에 가까움 | 거의 없음 |

| La/R 이 1에 가까움 | 급격히 증가 |

| La/R 이 1 초과 | 무한히 증가 (실질적으로 패킷 손실) |

> 시스템 설계의 황금률: **트래픽 강도가 1을 초과하지 않도록** 설계해야 한다.

3.2 패킷 손실 (Packet Loss)

현실에서 큐(버퍼)의 크기는 유한하다.

버퍼가 가득 찬 상태에서 새 패킷 도착:

[pkt_n][...][pkt2][pkt1] ──> 출력 링크

^^^^^^^^^^^^^^^^^^^^^^^^

버퍼 용량 = n (가득 참)

pkt_new 도착 → 드롭! (패킷 손실)

- 손실된 패킷은 이전 노드나 출발지에서 **재전송**될 수 있음

- 또는 아예 재전송되지 않을 수도 있음 (애플리케이션에 따라 다름)

- 혼잡한 네트워크에서는 손실률이 크게 증가

4. 종단 간 지연 (End-to-End Delay)

출발지에서 목적지까지의 전체 지연을 계산해 보자.

N개의 링크를 거치는 경우 (혼잡 없다고 가정):

d_end-to-end = N * (d_proc + d_trans + d_prop)

= N * (d_proc + L/R + d/s)

**예시**: 라우터 3개(링크 3개), `d_proc = 0.003ms`, `L = 1,500 bytes`, `R = 2 Mbps`, `d = 5,000 km`, `s = 2.5 * 10^8 m/s`

각 홉의 지연:

d_proc = 0.003 ms

d_trans = (1500 * 8) / 2,000,000 = 6 ms

d_prop = 5,000,000 / 250,000,000 = 20 ms

한 홉 지연 = 0.003 + 6 + 20 = 26.003 ms

총 지연 = 3 * 26.003 = 78.009 ms

4.1 Traceroute

`traceroute` (Windows에서는 `tracert`) 명령으로 실제 종단 간 경로와 각 홉의 지연을 측정할 수 있다.

traceroute www.example.com

출력 예시:

1 192.168.1.1 1.234 ms 1.123 ms 1.345 ms

2 10.0.0.1 5.678 ms 5.432 ms 5.789 ms

3 72.14.215.85 15.234 ms 14.987 ms 15.123 ms

...

각 행은 하나의 라우터(홉)를 나타내며, 3번의 RTT 측정값이 표시된다.

4.2 다른 종류의 종단 간 지연

의도적 지연

- **미디어 패킷화 지연**: VoIP에서 음성 데이터를 패킷으로 모으는 시간

- **처리 지연**: 이메일 서버에서 바이러스 검사 등

5. 처리량 (Throughput)

5.1 정의

**처리량(throughput)** 은 단위 시간당 출발지에서 목적지로 전달되는 비트 수다.

- **순간 처리량(instantaneous throughput)**: 특정 시점의 전송률

- **평균 처리량(average throughput)**: 전체 전송 시간 동안의 평균 전송률

F 비트 파일 전송에 T초 소요:

평균 처리량 = F / T (bps)

5.2 병목 링크 (Bottleneck Link)

종단 간 처리량은 **경로상 가장 느린 링크**에 의해 결정된다.

서버 ──Rs──> 라우터 ──Rc──> 클라이언트

Rs = 서버 측 링크 전송률

Rc = 클라이언트 측 링크 전송률

처리량 = min(Rs, Rc)

예시 1: 서버 측이 병목

서버 ──2 Mbps──> 라우터 ──10 Mbps──> 클라이언트

처리량 = min(2, 10) = 2 Mbps

병목 링크: 서버 측 링크

예시 2: 클라이언트 측이 병목

서버 ──100 Mbps──> 라우터 ──1.5 Mbps──> 클라이언트

처리량 = min(100, 1.5) = 1.5 Mbps

병목 링크: 클라이언트 측 링크 (접속 네트워크)

5.3 다수 연결이 공유하는 링크

10개의 서버-클라이언트 쌍이 하나의 코어 링크(R)를 공유:

서버1 ──Rs──┐ ┌──Rc──> 클라이언트1

서버2 ──Rs──┤ ├──Rc──> 클라이언트2

... ├── R (공유 링크) ───┤

서버10──Rs──┘ └──Rc──> 클라이언트10

각 연결의 처리량:

처리량 = min(Rs, Rc, R/10)

실제 인터넷에서는 코어 링크의 용량이 매우 크므로, 대부분의 경우 **접속 네트워크**가 병목이 된다.

일반적인 경우:

코어 링크 >> 접속 네트워크 전송률

→ 처리량 = min(Rs, Rc)

→ 병목은 거의 항상 접속 네트워크 쪽

6. 지연과 처리량의 관계

지연(Delay)과 처리량(Throughput)은 독립적인 성능 지표:

지연: 하나의 패킷이 도착하는 데 걸리는 시간

처리량: 단위 시간당 전달되는 데이터의 양

파이프 비유:

┌─────────────────────────────┐

│ 물(데이터)이 흐르는 파이프 │

└─────────────────────────────┘

← 파이프 길이 = 지연 →

파이프 단면적 = 처리량

7. 정리

| 지연 요소 | 의존하는 변수 | 크기 |

| --------- | ----------------------- | ------- |

| 처리 지연 | 라우터 성능 | us 이하 |

| 큐잉 지연 | 트래픽 강도 | us ~ ms |

| 전송 지연 | 패킷 크기 / 링크 전송률 | us ~ ms |

| 전파 지연 | 링크 거리 / 전파 속도 | ms |

핵심 공식:

d_nodal = d_proc + d_queue + d_trans + d_prop

트래픽 강도 = La/R (1 미만이어야 안정)

처리량 = min(경로상 모든 링크의 전송률)

8. 확인 문제

- **전송 지연**: 패킷의 모든 비트를 링크에 밀어넣는 시간. `L/R`로 계산하며, 패킷 크기와 링크 전송률에 의존한다.

- **전파 지연**: 비트가 링크를 통해 물리적으로 이동하는 시간. `d/s`로 계산하며, 거리와 전파 속도에 의존한다.

톨게이트 비유: 전송 지연은 모든 차가 톨게이트를 통과하는 시간, 전파 지연은 한 차가 다음 톨게이트까지 달리는 시간이다.

패킷의 평균 도착률이 링크의 전송 능력을 초과하므로, 큐가 끝없이 증가한다. 실제로는 버퍼가 유한하므로 **패킷 손실**이 대량 발생한다. 따라서 트래픽 강도가 1을 초과하지 않도록 네트워크를 설계해야 한다.

경로상 가장 느린 링크, 즉 **병목 링크(bottleneck link)** 가 종단 간 처리량을 결정한다. 실제 인터넷에서는 대부분 접속 네트워크(가정의 DSL, 케이블 등)가 병목이 된다.

현재 단락 (1/148)

본 포스팅은 James Kurose, Keith Ross의 Computer Networking: A Top-Down Approach (6th Edition) 교재를 기반으로 정리한...

작성 글자: 0원문 글자: 4,227작성 단락: 0/148