[QoS 강좌 ] QoS 에서의혼잡회피적용과이해 2 지난 4 번의강좌를통해 QoS 의전체적인그림을그려봤다. 이제부터는세부적인튜닝으로들어가 QoS 혼잡예방을 위한다양한메커니즘에대해알아보자. 이번호에는 TCP 프로토콜의혼잡제어메커니즘의작동방법과테일드롭시 어떤문제점이있는지, QoS 에서는어떻게적용하는지살펴볼것이다. 특히이론적으로중요한 TCP 혼잡제어 메커니즘, 글로벌싱크로나이제이션, RED, WRED 등에대해중점적으로설명한다. 네트워크의불안요소 ' 글로벌싱크로나이제이션 ' TCP 가동작하는모습을살펴보면네트워크의전송상태가좋을경우에는트래픽을많이전송하고, 패킷 손실이발생하면전송하는트래픽의양을줄이는것을알수있다. 이사실만으로본다면 TCP 는상당히 똑똑한프로토콜이라고할수도있다. 하지만바로이런 TCP 의혼잡제어메커니즘때문에사실은또 다른문제가발생할수있다. 예를들어, 일반적인소규모의네트워크구성을생각해보자. 라우터에외부네트워크가연결돼있고 내부에는스위치아래에호스트 PC 들이연결돼있다. 모든호스트 PC 들은라우터를통해서외부 네트워크와연결돼있다. 동시에여러 PC 들이인터넷을접속하게되면 TCP 의동작상황에따라 라우터의출력인터페이스버퍼 (buffer) 에는여러개의 TCP 플로우가존재하게된다. 이럴경우큐 사이즈는빠른속도로증가하게되며, 이내버퍼풀 (buffer full) 이발생하고, 오버플로우가발생하게된다. 그러면, 모든 TCP 플로우들은버퍼풀이후에도착한모든패킷들을잃게되며 ( 테일드롭발생 ), 모든 호스트 PC 들은타임아웃이발생할때까지잃어버린패킷들에대한 ACK 를받지못하게된다. 결국, 모든호스트 PC 들은자신의전송속도를줄이게되며 ( 윈도우의크기를 1 로줄인다 ) 빠른속도로 큐사이즈는줄어들게된다. 그러나, 다시슬로우스타트과정으로인해큐사이즈는증가하게되고, 오버플로우가발생하며, 모든 TCP 플로우에대해동일한과정이반복되게된다. 이런현상을글로벌 싱크로나이제이션 (Global Synchronization) 이라하는데, 트래픽양의급격한출렁거림으로인해성능은 물론네트워크장비가불안정해지는원인이된다. 글로벌싱크로나이제이션해결방법 1 : RED 실제로글로벌싱크로나이제이션은네트워크에심각한문제를유발시킨다. 물론 QoS 측면에서는더더욱
안좋은현상이기도하다. 가장큰문제는지연과지터가커진다는것이다. QoS 에서는글로벌 싱크로나이제이션현상을해결하기위해 RED(Random Early Detection), WRED(Weighted Random Early Detection) 등을사용한다. ( 그림 4) 는 RED 를적용하기전과적용한후의 TCP 트래픽흐름이어떻게차이가나는지보여주는 그림이다. RED 는 TCP 동작특성을이용한대표적인혼잡제어기법으로, 이름이암시하는것처럼, 혼잡이발생하기이전에미리랜덤한방식으로패킷을버림으로써특정한 TCP 플로우로하여금전송 속도를줄이게하는방법이다. 기본적인동작은큐에두개의쓰레시홀드 TH_min 과 TH_max 를두고세 구간에서로다른드롭확률을적용하는것이다. RED 의동작과정은다음과같다 ( 그림 5).
1 평균큐사이즈 (AQS: Average Queue Size) 가 TH_min 보다작은경우에는어떤패킷도버리지않고 모두받아들인다. 2 큐사이즈가 TH_min 보다는크지만 TH_max 보다는작은경우큐사이즈에따라특정한확률값을 갖고패킷을버린다. 3 큐사이즈가 TH_max 보다큰경우는입력되는모든패킷을버린다. 즉, 혼잡의정도가심해질수록 많은패킷을버림으로써입력되는트래픽의양을줄이려는방법이다. 일반적으로, TH_max 값이너무작으면패킷드롭이빈번히발생해서전체성능에심각한영향을줄 수도있으며, TH_max 이상에서모든입력되는패킷을버리는동작이버퍼오버플로우에의한결과와 동일하기때문에 TH_max 를큐의최대크기와같거나가까운값으로설정을하게된다. 또한, p( 드롭 가능성 ) 의값이너무작으면패킷이드롭되는빈도가낮아져혼잡제어효과가제대로나타나지않을 수도있다. 따라서, RED 를사용할때는 TH_min, TH_max, 그리고 p 값을적절하게설정해주는것이 중요하다.
RED 를진일보시킨 'WRED' RED 를적용함으로써글로벌싱크로나이제이션현상은예방할수있다. 하지만랜덤하게패킷을버리기 때문에중요한패킷이버려질수있는단점이있다. 이런문제점을해결하기위해버려질수있는 확률에대한가중치를부여했다. 즉, WRED 는하나혹은여러개의서로다른클래스트래픽에서로 다른특성을갖는 RED 를적용함으로써혼잡제어를하는것을말한다. 서로다른특성을갖는 RED 라는것은 TH_min, TH_max, 그리고 max p 값이서로다른 RED 패킷드롭확률을말한다. 동일한클래스트래픽에 WRED 를적용하는경우는, 같은클래스에속한서로다른우선순위의패킷들에 서로다른 RED 를적용하게된다. 예를들면, DiffServ 의 AFx 클래스의경우, 동일한클래스에 3 개의 서로다른드롭우선권 (drop precedence) 이존재하는데, 각각의드롭우선권에대해서로다른 RED 를 적용할수있다. ( 그림 6) 은 WRED 패킷드롭확률의일례를보여주고있다. 이그림은 DiffServ 의어떤클래스 트래픽에서파랑색과빨간색으로마크된패킷들에대해서로다른 RED 를적용할수있음을보여주고 있다.
( 그림 6) 에서볼수있듯이낮은우선순위의패킷혹은클래스에대해서는더욱공격적인패킷드롭이 발생하며, 우선순위가높은패킷혹은클래스에대해서는보수적인패킷드롭이발생된다. 그림에서는 우선순위가낮은 A 에대한 TH_max 가 Z 에대한 TH_min 보다크게설정된경우를보여주고있으나, A 에대한 TH_max 가 Z 에대한 TH_min 보다반드시작거나같아야하는조건을줄수도있다. 비록같은클래스에속한패킷들이지만, 드롭우선순위가다르며, 서로다른 RED 가적용된다. ( 그림 6) 에서큐에 10 개의패킷이들어있는상태에서새로운패킷이들어왔을경우새로들어온패킷이 빨간색이라면렌덤하게드롭이되겠지만, 파란색패킷이들어오면정상적으로서비스를하게된다. 또, 큐에패킷이 30 이상들어있는상태에서는빨간색패킷은 100% 드롭되며, 나머지의여유공간은 파란색패킷이서비스되는것이다. 즉, 중요한트래픽을파란색으로규정하고, 중요하지않은트래픽을 빨간색으로규정해서로다른우선순위를부여함으로써차별화된서비스를제공할수있게되는 것이다. IP 우선권을기준으로 WRED 를구성할때는 8 개의 WRED 설정이가능하며, DSCP 를기준으로 WRED 를구성할때는 64 개까지의 WRED 설정이가능하다.