안녕하시죠. 오늘은QoS 3번째 이야기를 드리고자 합니다.
QoS 별로 어렵지도 않고 그냥 하면 되는 데라고 생각하시는 분이 많으실겁니다.
수학식 같아서 대입만 하면 되는데.. 쩝..
새로 생성하는 거야 대충 대입하면 끝나지만, 문제는 트러블 슈팅입니다.
여러 단계가 있는데 어떤 단계에서 에러가 나는지 확인하셔야 되고, 또 에러발생 단계에서 세분화하여 들어가는 거죠. 그리고 원인을 밝혀내고 다시는 그런 일이 없도록 하는 것이 트러블 슈팅입니다.
또 잡설이 길어졌네요.
그럼 시작하겠습니다.
1.Traffic이 들어온다.
2.Traffic을 기존에 할당된Classifier를 기준으로 패킷에 여러 개의Class로 구분한다.
2-1. Meter에 의해Traffic의 특성을 측정한다.
2-2. 기존에 할당된QoS Traffic과 비교한다.
2-3. Meter에 의해 비교가 끝난Traffic을Marker가QoS Class를 구분하여 표기한다.
2-4. Shaping/Droping정책을 가지고Queue Manager로 간다.
3.Queue Manager에서 각 Traffic Flow(Packet)를 Class에 맞는 Queue로 저장시킨다.
4.Queue에서 자기 차례가 되면 재빨리 나간다.
요게 QoS순서지요.
그럼 전에 빠진 2-2부터 말씀드릴게요.
스위치는 WorkGroup 스위치와 BackBone 스위치로 대충 나누어집니다.
물론 나눈 이유는 규모나 하는 일이 달라서 그렇죠. ^^
WorkGroup은 몇몇 사용자 단말들을 관리하고 정책들을 관리하는 반면 BackBone은
웍그룹에서 올라온 사내 모든 MAC - IP등을 포워딩해줍니다. 백본은 각 나누어진 L2,L3구간별 라우팅을 합니다. 그러나 이런저런 기능도 같이 쓰는데도 많죠 <요즘은 장비 성능이 좋아져서 그렇답니다.>
BackBone장비는 패브릭도 큰데다 성능도 여러가지인데 간단한 라우팅만 하는 이유는 바로
웍그룹스위치보다 훨씬 많은 MAC과 IP들을 관리하기 때문입니다.
거기다 역할이 백본인 만큼 이게 멈추면 사내 모든 라우팅 스위칭이 멈추게 되는거죠.
즉 웍그룹에서 웍그룹으로 넘어갈 수가 없습니다.
혹시라도 그러한 문제를 해결하기 위해 단순한 기능만 적은 딜레이타임을 주면서 처리하고 가용성을 높이는 쪽을 선택한거죠.
QoS에서도 마찬가지 입니다.
2번째 이야기에서 설명드린 QoS Classification과 Meter, Marker등의 분류<트래픽 컨디셔너>는 웍그룹단위에서 체크하고 백본에서는 단지 기존에 마킹된 QoS라벨을 유지해서 포워딩하는 역할만을 합니다. 근데 여기서 궁금한게 생기지 않으시나요?
어떤 스위치는 3단계인 올림픽Class를 쓰고 어떤 곳은 4단계Class를 사용한다면 어떻게 해서 QoS가 이루어 지는 걸까요. 만약 4단계 Class가 3단계 QoS라벨을 사용하는 곳으로 간다면, 마지막 Standard는 버려져야 되는건가요. 아니면 첫번째인 Committed가 버려지는 건가요. 이런생각이 드시지 않으시나요 ?
물론 그렇게 처리하지는 않습니다. 이때는 비교 매핑을 해주는 기능이 필요하겠죠.
위 그림과 같이 매핑을 해주는 겁니다. 물론 반대의 경우도 필요하겠죠.
혹은 Class이름이 틀려서 이름만 변경해 줄 수도 있고요.
이게 2-2의 기능입니다.
2-4. Shaping/Droping정책을 가지고 Queue Manager로 간다.
머 패킷이야 알아서 가겠죠.
단지 여기서 우리가 해주어야 할 사항은 Shaping 할 것인지 Droping 할 것인지 선택하는 것입니다.
이것저것 빼고 간단하게 말씀드려서 Shaping은 Buffer를 사용하고 Droping은 RateLimit 즉 Buffer를 사용하지 않습니다.
즉 Shaping은 자신의 처리 대역폭 이상 되는 패킷을 받을 경우 버퍼에 저장하였다가 우선순위에 따른 패킷을 먼저 처리하고 그 후에 버퍼에 쌓아둔 우선순위가 늦은 패킷을 전송합니다. 그러나 RateLimit는 처리 대역폭 이상이면 패킷을 버려버립니다. 무정한 놈이죠.
그럼 머 ACK신호가 안왔으니 TCP면 단말에서 재 송신할거고, UDP는 무시하고 다음 패킷이 오겠죠.
그럼 여기서 Shaping이 무조건 좋은거냐?라고 물으실 수 있는데 아닙니다. Shaping도 버퍼가 크거나 버퍼가 포트나 APP별로 나누어지지 않은 경우 딜레이가 발생할 수 있습니다. 즉 그때 그때 다른겁니다. 흔히 Case By Case죠.
그러나 평균적으로는 Shaping이 좋다고 보시면 됩니다. 딜레이가 발생해도 재송신받아 처리하는거나 버려지는 것보다 좋다고 보시면 되니까요.
또 이 부분은 혼잡제어(Congestion Control)가 있고 그 중에 대표적인 흐름제어(Flow Control)가 있지만 그냥 넘어가겠습니다. 찾아보시길 진심으로 기원 드립니다. 플로우컨트롤은 많이 쓰이니까 한번쯤은 시간 내셔서 찾아보셔도 됩니다. (Flow Control를 찾아보실때는 TCP Window방식 RED방식등은 알아두셔야 합니다.) 아니면 혹시 제가 설명드릴 기회가 있을지도 모르겠고요.
3.Queue Manager에서 각 Traffic Flow(Packet)를 Class에 맞는 Queue로 저장시킨다.
자 드디어 얼렁뚱땅…3으로 넘어왔습니다.
Queueing = Buffer에 대기하고 있는 Service될 Packet이라고 보면 됩니다.
Queue Manager에서는 특히 Scheduling의 개념이 있습니다.
대부분은 그냥 Queue라고 하면 Scheduling + Queueing을 합쳐봅니다.
여기서 보통 Queue기법하면 어떤게 생각나시나요
수업시간에 배운 FIFO기법이 생각나지 않으시나요. 먼저 줄선넘이 먼저 나간다. ^^ 만고불변의 진리죠 ㅋ~~~~~
그러나 LIFO 기법도 있습니다. 나중에 줄 선 넘이 먼저 나가드라. 새치기 기법이죠 힘있는 자가 먼저 세상의 빛을 본다. ^^ 이것도 만고불변의 진리죠 ㅋ~~~~~~
사실 알고보면 QoS도 급한 넘 먼저 보내는 거니까. 이것도 새치기 기법인거죠.
자 이제부터 3의 시작입니다.
1. Priority Queueing –각 Class마다 Queue가 있습니다. 즉 여러 개의 FIFO방식으로
Queue마다 우선순위 별도로 존재하는 거죠
2. Fair Queueing –역시 Class별로 Queue가 존재하나 큐마다 우선순위 존재하지 않음
스케쥴링 차원에서 차등된 서비스 불가능하다는 거죠.
3. Weighted Fair Queueing –각 Class별 Queue존재 Queue별로 무게값을 따로 할당하여,
FIFO로 적용하여 내보낼 때 우선순위가 낮은 Queue라도 최소한의 정해진 비율로 패킷
을 내보내도록 정책 할당 <Starvation방지>
1번은 우선순위가 있는 Queue 2번은 우선순위가 없는 Queue 3번은 우선순위도 있고 가중치도 있는 Queue입니다.
1번과 3번의 가장 큰 차이점은 Starvation방지인데 1번의 경우 우선순위가 높은 Class가 들어오면 계속해서 우선순위가 높은 Class Packet만을 보내게 됩니다. 즉 우선순위 낮은 Packet은 계속 대기하는 거죠. 그런 것을 막아주기 위하여 3번 같이 Queue마다 비율을 할당해주면 <1번 Queue에서 7번 Packet을 보내고 2번에서 2번 Packet 3번에서 1번 Packet을 보내주라고 한다면> 아무리 우선순위가 높은 1번 Queue가 들어와도 10번 중에 한번은 3번 Packet이 나가게 되는거죠. ^^;;
이걸로 대충 QoS는 마무리 짓습니다. 제가 말씀드린건 QoS의 기초이면서 개념입니다.
또 말씀드리지만 각 밴더마다 조금씩 다릅니다.
이건 이렇게 해서 QoS가 이루어지더라는 걸 알려드린겁니다.
이 글을 읽으시는 분중에서는 저보다 QoS에 대해 잘 아시는 분도 분명 있으실 거라 믿습니다. 만약 틀린 부분이 있다면 꼭 좀 알려주셨으면 합니다.<배워야죠>
마지막으로 Packet어디에 QoS 마킹되는지 이런건 나중에 Packet에 대해 설명 드릴 기회가 오면 그때 설명 드리겠습니다. 스니퍼 쓰시는 분들은 이미 아실거고요.
반복해 말씀드리지만 부족한 글입니다. 다른 분이 쓴걸 Copy & Paste한 글이 아니기 때문에 더 조잡합니다. 차라리 잘쓰신 글을 붙혀 넣어 드리는게 좋을 뻔 했습니다.
저도 어디서 읽고 배운걸 기억을 더듬어 어설프게 적는 게 참 한번 작성하기 시작한 글이라 마무리는 지었지만 서도 욕을 하셔도 됩니다만 가슴속에서만 해주세요 -_-/ ß요렇게 손들고.. 그럼 늘 건강하시고 행복하십시오 (__)