~/network/qos
트래픽 관리

QoS

Quality of Service

QoS는 한정된 네트워크 자원을 트래픽의 중요도에 따라 차등적으로 할당하는 기법이다. 회선의 대역폭 자체를 늘리는 것이 아니라, 있는 자원 안에서 어떤 트래픽을 먼저 처리할지 결정하는 메커니즘이다.

왜 필요한가

기본적으로 네트워크는 Best-Effort 방식으로 동작한다. 즉 도착한 패킷을 도착한 순서대로 처리하고, 자원이 부족하면 뒤쪽 패킷부터 버린다. 평소에는 문제가 없지만, 회선이 혼잡해지는 순간 모든 트래픽이 똑같이 영향을 받는다.

이때 다음과 같은 트래픽은 다른 트래픽과 동등하게 취급되면 안 된다.

  • 음성(VoIP): 지연이 150ms를 넘으면 통화 품질이 무너진다.
  • 영상 회의: 패킷이 흩어져 도착하면 화면이 깨진다.
  • 실시간 거래(증권, 게임): 수십 ms의 지연이 비즈니스 손실로 이어진다.

반면 파일 다운로드, 백업, 메일 동기화 같은 트래픽은 몇 초 늦게 끝나도 문제가 되지 않는다.

QoS는 이런 트래픽을 분류하고, 표시하고, 차등적으로 처리하여 한정된 자원에서도 중요한 트래픽이 안정적으로 동작하게 한다. 중요한 트래픽이 혼잡 상황에서도 보장된 품질로 전달되게 하는 것이 목표이다.

적용 지점

QoS는 병목이 발생하는 좁은 구간에 적용해야 의미가 있다. 구간별로 정리하면 다음과 같다.

구간왜 병목인가QoS 적용
WAN 출구내부 LAN(1Gbps) → 외부 회선(100Mbps)필수
인터넷 회선 입구/출구가장 좁은 구간필수
무선 AP무선 매체는 본질적으로 대역폭 제한권장
내부 LAN/백본충분한 대역폭실효성 낮음

4가지 품질 요소

QoS는 보통 다음 네 가지 지표를 기준으로 트래픽 품질을 정의한다.

지표의미영향받는 서비스
Bandwidth (대역폭)단위 시간당 전송 가능한 데이터 양영상 스트리밍, 파일 전송
Delay (지연)송신부터 수신까지 걸리는 시간VoIP, 실시간 게임, 거래
Jitter (지연 변동)패킷 간 지연 시간의 편차VoIP, 영상 회의
Packet Loss (손실률)도중에 버려지는 패킷 비율모든 실시간 트래픽

QoS의 목적은 중요한 트래픽에 대해 이 네 가지를 보장하거나 우선시하는 것이다.

동작 흐름

QoS는 단일 기능이 아니라 여러 단계의 메커니즘이 조합된 형태로 동작한다.

QoS 동작 흐름 다이어그램: Classification → Marking → Queuing → Shaping/Policing

1. Classification

먼저 패킷이 어떤 종류의 트래픽인지 식별한다. 분류 기준은 다양하다.

  • 출발지/목적지 IP, TCP/UDP 포트
  • 애플리케이션 시그니처 (DPI 기반)
  • VLAN 번호, 입력 인터페이스
  • 이미 표시된 DSCP/CoS 값

2. Marking

분류된 패킷에 우선순위 값을 표시한다. 이후의 모든 라우터/스위치가 이 표시를 보고 처리하기 위함이다.

  • DSCP (Differentiated Services Code Point): IP 헤더의 6비트 필드. L3에서 사용하는 표준
  • CoS (Class of Service): 802.1Q VLAN 태그의 3비트 필드. L2에서 사용
  • MPLS EXP: MPLS 환경에서 사용하는 3비트 필드

대표적인 DSCP 값:

이름DSCP용도
EF (Expedited Forwarding)46VoIP 음성
AF4134영상 회의
AF3126영상 스트리밍
AF2118일반 비즈니스 트래픽
CS0 / Default0Best-Effort

3. Queuing

라우터/스위치 내부에 여러 개의 큐를 두고, 표시된 우선순위에 따라 다른 큐에 패킷을 넣는다. 그리고 큐 사이의 처리 순서를 다르게 한다.

  • PQ (Priority Queue): 높은 우선순위 큐를 먼저 비울 때까지 다른 큐는 대기 (VoIP에 사용)
  • WFQ (Weighted Fair Queuing): 큐별 가중치에 따라 비율대로 처리
  • CBWFQ (Class-Based WFQ): 클래스별 대역폭을 보장하면서 공정 처리
  • LLQ (Low Latency Queuing): PQ + CBWFQ 조합. 실무에서 가장 흔하게 쓰임

4. Policing & Shaping

큐잉만으로 부족할 때 트래픽 자체의 속도를 조절한다.

  • Policing: 초과되는 트래픽을 즉시 폐기하거나 마킹을 강등한다. 지연은 없지만 손실이 발생한다.
  • Shaping: 초과되는 트래픽을 버퍼에 잠시 담아두었다가 천천히 흘려보낸다. 지연이 늘지만 손실은 적다.

쉽게 말해 Policing은 "잘라내기", Shaping은 "기다려주기"이다. 같은 속도 제어 기법이지만, 트래픽 흐름에서 동작하는 지점이 서로 다르다.

고객이 대역폭 약정을 초과할 때

ISP는 한정된 백본 회선을 수많은 고객에게 나눠 판매하고, 각 고객은 "100Mbps 약정"처럼 CIR(Committed Information Rate)을 계약한다. 만약 특정 고객이 약정 이상으로 트래픽을 보내면 ISP는 어떻게 해야 할까?

Shaping을 쓰면 문제가 생긴다:

초과 트래픽을 버퍼에 쌓아둬야 하는데, 수천 명의 고객 트래픽을 모두 버퍼링하려면 엄청난 메모리가 필요하다. 또한 버퍼링 자체가 지연(delay)과 jitter를 유발해서 ISP의 백본 성능에 부정적 영향을 끼친다.

ISP는 "고객이 약정을 어겼을 때 그 패킷을 보호해줄 의무가 없다." 오히려 다른 고객에게 피해 가지 않게 막아야 한다.

Policing이 적합한 이유:

Policing은 약정을 초과한 트래픽을 백본에 진입하기 전에 즉시 drop한다. 따라서 별도의 버퍼나 큐잉이 필요없어 ISP 네트워크에 추가 지연을 만들지 않으며, 다른 고객의 품질에도 영향을 주지 않는다. 무엇보다 인바운드(수신) 방향에도 적용할 수 있어, ISP 입장에서 가장 통제가 필요한 "고객으로부터 들어오는 트래픽"을 진입 지점에서 직접 다룰 수 있다는 점이 장점이다.

ISP는 고객이 Committed Bandwidth를 초과할 경우 다른 고객에게 피해가 가지 않도록 백본 진입 전에 차단하는 Policing을 적용한다.

일반적인 적용 위치

위치방향기법이유
ISP측 (PE 라우터)InboundPolicing"약정 초과분은 받지 않겠다" — 백본 보호
고객측 (CE 라우터)OutboundShaping"어차피 ISP가 drop할 거면 미리 속도를 맞춰 보내자" — 패킷 손실 방지

Policing은 약정 초과 트래픽을 잘라내는 수신측(ISP)의 통제, Shaping은 자기 트래픽을 보호하려는 송신측의 매너

Outbound Policing 사례

위 표에서는 ISP가 고객 트래픽을 Inbound로 policing하는 사례를 다뤘지만, Policing은 Outbound 방향에서도 쓰인다.

  • ISP → 고객 다운스트림 제한: PE 라우터가 고객에게 내려보내는 방향에서 약정 속도(예: 100Mbps)를 초과하지 않도록 outbound policer를 건다. 고객이 구매한 만큼만 흘려주기 위함이다.
  • 데이터센터 출구 상한: 백업/복제 트래픽이 외부 회선을 점유하지 않도록, 출구 인터페이스 outbound에서 클래스별 상한을 강제한다. Shaping과 달리 버퍼링 없이 즉시 drop하므로 지연 민감 트래픽과 섞일 때 유리하다.
  • 멀티테넌트/클라우드 송신 상한: 테넌트(VM, 컨테이너, VRF)별로 송신 대역폭을 격리할 때 hypervisor/PE의 outbound 방향에 policer를 둔다.
  • DDoS/스캐닝 트래픽 억제: 특정 ACL에 매칭되는 트래픽을 outbound에서 낮은 임계치로 policing하여 하류 장비를 보호한다.

정리하면 Inbound Policing은 "들어오는 약정 위반을 진입 지점에서 차단", Outbound Policing은 "나가는 트래픽의 상한을 강제"하는 용도이며, 둘 다 버퍼링 없는 즉시 drop이라는 동작은 동일하다.

한계점

QoS를 적용할 때는 다음 내용을 함께 고려해야 한다.

  • 대역폭을 만들지 않는다: 회선이 근본적으로 부족하면 QoS로 해결되지 않는다. 회선 증설이 우선이다.
  • 혼잡이 없을 때는 효과가 없다: 혼잡 시점에서만 차등 처리가 일어난다.
  • 모든 장비에서 일관되게 적용되어야 한다: 도중 한 장비가 QoS를 무시하면 그 시점에서 우선순위가 사라진다.
  • 마킹은 Trust Boundary에서 검증되어야 한다: 사용자 단말이 임의로 마킹한 값을 그대로 믿으면 안 된다. 보통 Access Layer에서 마킹을 다시 한다.