QoS에서 사용하는 지연은 ‘End-To-End Delay(종단간 지연)’이며, 각 구간의 지연 시간을 합하여 계산한다. 지연은 크게 장비 구간에서의 지연과 전송 구간에서의 지연으로 구분된다. 여기에는 연속 지연, 전달 지연, 큐잉 지연, 포워딩 지연, 쉐이핑 지연, 네트워크 지연으로 세분화 된다. 이를 기반으로 QoS 측정하는 요소는 아래와 같다.
Serialization Delay
‘Serialization Delay’라고 불리는 연속 지연은 패켓을 링크상에서 시리얼화 하는 시간(패켓을 라우터에서 링크로 보내는데 소요되는 시간)을 말한다. 예를 들면, 12량의 전철보다 6량의 전철이 해당 역을 빠져나가는데 걸리는 시간이 빠른거 처럼, 연속 지연은 패켓의 길이와 비례적이며, 링크의 대역폭하고는 반비례적이다.
- 위의 그림을 보면서 Host에서 Server로 125 Byte 패켓을 전송한다 할 때, 실제 발생하는 연속 지연 값을 계산 해보도록 하자.
- A구간에서 125 Byte로 구성된 패켓을 100Mbps 링크에서 시리얼화를 실시 하면, ‘1000 Bit / 1,000,000,000 bps = 0.1 ms’으로 계산된다. 즉, 0.1 ms 시간이 소요된다. (이때, 1000 Bit = 125 Byte X 8)
- B 구간도 동일한 계산을 실시하면 0.1 ms 시간이 소요된다.
- C 구간의 대역폭은 56 Kbps이므로, 시리얼화 소요 시간은 ‘1000 Bit / 56,000 bps = 17.85 ms’ 가 된다.
- 이러한 방법으로 계산을 실시 하면, 각 구간의 시리얼화 소요 시간은 ’56 Kbps = 17.85 ms’, ‘128 Kbps = 7.8 ms’, ‘512 Kbps = 2 ms’, ‘1544 kbps = 0.65 ms, ‘100 Mbps = 0.01 ms’라는 결과가 나온다.
- 이처럼 같은 125 Byte 패켓 일지라도 해당 대역폭에 따라서 연속 지연의 차이가 크게 난다.
- 실제로 연속 지연은 대역폭이 높은 구간에서는 문제가 되지 않지만, 대역폭이 낮은 구간에서는 서비스의 품질에 큰 문제가 될 수 있다.
Propagation Delay
‘Propagation Delay’라고 불리는 전달 지연은 특정 매체로 구성된 링크를 통해 한 비트를 전달하는데 소요되는 시간을 말한다. 예를 들면, 전철이 역을 빠져나가 다음 역까지 도착하는데 걸리는 시간을 말한다. 위의 그림을 보면서 전달지연의 특징을 알아보도록 하자.
- 전달 지연은 동일한 물리적인 링크에서 대역폭과 패켓의 길이와는 상관없이 동일한 지연 시간을 갖는다.
- 일반적으로 네트워크에서 전달 지연은 매우 희미하게 발생되므로 큰 문제는 되지 않지만, 물리적인 링크의 길이가 길면 길수록 비례적으로 전달 지연도 증가하기 때문에 문제가 될 수 있다.
- Copper 망, Optical 망은 진공 상태에서 빛의 속도(‘3.0 x 108 m/s’)의 70% 속도인 ‘2.1 x 108 m/s’를 사용한다.
- D 구간의 거리가 현재 1000 Km이므로 전달지연을 계산하면 ‘1,000,000 / (2.1 x 108) = 4.8 ms’ 시간이 나온다.
- 각 구간에서 전달 지연과 연속 지연을 비교하면 패켓의 크기에 의해서 연속 지연은 변하지만, 전달 지연은 동일한 것을 확인 할 수 있다.
Queuing Delay
‘Queuing Delay’라고 불리는 큐잉 지연은 패켓이 전송되기 전에 라우터 큐에 패켓이 대기하는 소요 시간을 말한다. 큐의 위치에 따라 Input Queue와 Output Queue로 구성되지만, Input Queue에 대한 지연은 작기 때문에, Output Queue 지연에 대한 부분을 처리한다. 또한, 큐잉 지연이 차지 하는 부분은 다른 지연에 비해 크기 때문에 QoS 구현 시 중요하다.
- 만약 56Kbps 대역 구간으로 Host에서 Server로 4개의 1500 Byte 패켓을 전송하게 되면, 첫 번째 패켓이 라우터 큐를 떠나는데 걸리는 시리얼화 시간은 ‘1500 x 8 / 56,000 = 214 ms’가 소요된다. 즉, 두 번째 패켓은 라우터의 큐에서 214 ms를 대기하고 난 이후 전송된다. 또한, 세 번째 패켓은 시리얼화 계산을 실시하면 428 ms, 네 번째 패켓은 642 ms를 큐에서 대기하고 있을 것이다.
- 만약, 100개의 1500 Byte 패켓을 전송하게 되면, 마지막 패켓의 큐잉 지연은 ’214 ms x 99 = 21,186 ms’가 된다. 또한, TCP 패켓이라면 재전송을 실시하여 더 많은 지연을 발생할 것이다.
- 적절한 길이의 큐는 패켓 손실을 해결하지만, 너무 긴 큐는 장시간 지연의 큰 원인이 되며, 큐잉 지연은 QoS 중에 가장 비중이 큰 부분 중 하나이다.
Forwarding Delay and Shaping Delay
‘Forwarding Delay’라고 불리는 포워딩 지연은 해당 패켓이 라우터 및 스위치에 인바운드 인터페이스로 들어와서, 라우팅 및 스위칭 프로세서에 의해 경로가 결정된 이후, 아웃바운드 인터페이스의 나가는 큐에 대기할 때까지 소요되는 시간을 말한다.
- 라우팅 및 스위칭 프로세서에 따라서 차이가 있으며, 일반적으로 스위치가 라우터에 비해 지연이 작다.
- 스위치는 ‘Store-and-Forward’ 방식보다는 ‘Cut-Through’으로 동작하여, 라우터보다 더 작은 포워딩 지연을 실시하며, 라우터 또한 ‘CEF(Cisco Express Forwarding)’ 방법을 이용하여 포워딩 지연을 작게 한다.
‘Shaping Delay’라고 불리는 쉐이핑 지연은 트래픽 쉐이핑 프로세서에 의해 지연되는 소요 시간을 말한다.
- 트래픽 쉐이핑을 사용하면 지연은 길어지지만, 계약된 대역폭을 초과하는 패켓에 대해서 Drop/Discard 현상을 해결할 수 있으며, 두 가지 형태로 사용할 수 있다.
- 일반적으로 출력 시 사용이 되며, 해당 데이터에 대해서 한도 대역이 초과되면 버퍼링을 실시한다.
- 첫 번째, 패켓들이 Drop되지만, 고속 전송되는 경우
- 두 번째, 패켓들이 Drop되지 않지만, 느리게 전송되는 경우
Network Delay
‘Network Delay’라고 불리는 네트워크 지연은 해당 패켓들이 Frame-Relay 및 ATM의 ISP(Internet Service Provider) 구간에서 소요 되는 시간을 말한다. 이 지연은 사용자 입장에서 ISP 구간의 환경에 대한 정보가 없기 때문에 지연값에 대한 부분을 계산하는 어려운 문제가 있다.
- 예를 들어, R2에서 R3으로 1500 Byte 패켓을 전송한다면, ‘A 구간-B 구간-C 구간’에 대한 지연을 계산해야 한다.
- Igress R2의 연속 지연 = 1500 Byte x 8 / 128,0000 bps = 94 ms
- 전달 지연 = 1000 Km / 2.1 x 108 = 4.8 ms
- Egress R3의 연속 지연 = 1500 Byte x 8 / 1,544,000 bps = 7.8 ms
- 이렇게 계산된 지연시간을 합산하면 네트워크 지연은 ‘106.7 ms’가 된다.
- 네트워크 지연은 ISP에 의해서 의존하지만, 최근에는 ISP와 협의 하에 SLA(Service Level Agreement)를 설정하여 지연 한계에 대한 보장을 받는 방법을 사용한다.
Jitter and Packet Loss
‘Jitter’란 어떤 신호가 네트워크를 통해 전송되면서 원래의 신호로부터 왜곡된 정보를 나타내는데 사용되는 값을 말한다. 즉, 지연의 편차라고 말한다.
- 네트워크 전송에서 패켓에 대한 어느 정도의 지연은 감수해야 한다. 동일한 시간의 네트워크 서비스에서 큰 문제는 되지 않는다.
- VoIP에서도 일정한 범위내의 동일한 지연은 큰 문제를 일으키지 않지만, 지연 값이 각각 다르면 VoIP와 같은 양방향 어플리케이션 서비스를 제공하는데 큰 문제점이 될 수 있다.
- 위의 그림을 보면 R1의 VoIP 전화기에서 R3의 VoIP 전화기로 보낸 음성 데이터가 처음에는 20 ms의 동일한 지연을 가지고 전송되고 있다가, ISP 구간을 지나면서 지연의 변화가 발생됐다면, 음성 신호가 왜곡되고, 음질은 떨어지게 될 것이다.
‘Packet Loss’란 패켓이 전달되는 과정에서 발생하는 패켓의 손실률을 말한다. 물론 하드웨어적인 불량으로도 패켓 손실 현상을 일어나지만, 하드웨어가 문제가 없다면, 패켓 손실은 보통 Congestion(혼잡 현상)에 의한 버퍼 오버플로우시 발생하거나, RED(Random Early Detection)에 의한 패켓 Drop 현상에 의해 발생된다.
- Congestion(혼잡 현상) : 서비스를 할 수 있는 적정 수준 이상으로 큐에 패켓이 쌓여 있는 상태
- TCP처럼 흐름 제어를 하는 트래픽 소스가 전송 속도를 증가 시키는 경우
- 라우팅 알고리즘 때문에 많은 트래픽이 증가되는 경우
- 라우팅 패스에 오류가 발생되어 다시 라우팅 되는 경우
- 공격자로부터의 공격으로 인한 트래픽 증가 현상 경우