핵심 인사이트 (3줄 요약)
- 본질: Leaky Bucket / Token Buc…는 라우팅과 경로 제어에서 핵심 동작과 제약을 이해하게 해 주는 개념이다.
- 가치: Leaky Bucket / Token Buc…를 이해하면 수렴 속도과 확장성 사이의 균형을 더 정확히 볼 수 있다.
- 판단 포인트: 설계 시에는 개념 자체보다 적용 조건, 운영 복잡도, 인접 기술과의 경계를 함께 판단해야 한다.
Ⅰ. 개요 및 필요성
-
개념: 네트워크로 유입되는 트래픽의 전송률(Rate)을 측정하고, 돌발적인 폭주(Burst) 트래픽을 평탄화(Smoothing)하거나 제한하기 위해 고안된 두 가지 고전적인 트래픽 계측 알고리즘.
-
필요성: 라우터에 "10Mbps로 속도 제한해!"라고 명령어를 쳤다. 컴퓨터가 0.1초 동안 20Mbps로 쏘고 나머지 0.9초를 쉬면 평균은 10Mbps 이하다. 이걸 막아야 할까 봐줘야 할까? **"순간적인 폭주(Burst)를 용납하지 않고 칼같이 썰어버릴 것인가, 아니면 평균값만 맞으면 융통성 있게 한 번에 훅 통과시켜 줄 것인가?"**를 결정하는 판단 기준이 필요했다.
-
💡 비유: 두 버킷은 놀이공원의 **"입장 게이트 통제 방식"**과 같습니다.
- Leaky Bucket: 회전문입니다. 밖에 1,000명이 몰려와도 무조건 "1초에 1명씩만" 돌아갑니다. 극도의 안정성을 주지만 융통성이 0입니다.
- Token Bucket: 게이트 직원이 1초마다 '입장권(Token)'을 10장씩 발급해 바구니에 모아둡니다. 손님이 없어서 입장권이 1,000장 쌓였습니다. 이때 단체 관광객 1,000명이 훅 몰려오면? 직원이 모아둔 입장권을 한 번에 다 주고 **1,000명을 0.1초 만에 논스톱으로 통과(Burst 허용)**시켜 줍니다.
[트래픽 쉐이핑 / 폴리싱]
│
▼
[Leaky Bucket / Token Buc…]
│
└──▶ [WRED 혼잡 제어 꼬리 짜르기 제한]
- 📢 섹션 요약 비유: ** 리키 버킷은 아무리 링거액을 세게 틀어도 핏줄에는 **무조건 한 방울씩 똑똑 떨어지게 만드는 "수액 조절기"**이고, 토큰 버킷은 평소에 돈(토큰)을 저축해 두었다가 세일 기간(폭주)이 오면 모아둔 돈을 **한방에 터뜨려 물건을 쓸어 담는(허용) "스마트 저축 계좌"**입니다.
Ⅱ. 아키텍처 및 핵심 원리
1. Leaky Bucket (리키 버킷) - 절대 평탄화
ATM(비동기 전송 모드) 네트워크에서 주로 썼던 구형 방식이다.
- 동작: 물(패킷)을 양동이 위로 들이붓는다. 양동이 밑바닥엔 구멍이 뚫려 있어 일정 속도로만 물이 빠져나간다.
- 결과: 입력 속도가 아무리 지멋대로 뛰어도, 출력 속도는 무조건 $V$ 라는 상수(Constant Rate)로 100% 일정하게 고정된다.
- 오버플로우: 너무 많이 부어서 양동이 위로 물이 넘치면? 그 패킷들은 가차 없이 버려진다(Drop).
- 특징: Burst(순간 폭주)를 단 1%도 허락하지 않는다.
2. Token Bucket (토큰 버킷) - 현대 QoS의 지배자
시스코(Cisco)를 비롯한 모든 현대 라우터의 쉐이핑/폴리싱 명령어(police cir..., shape average...)의 근간이 되는 수학 모델이다.
- $Tc$ (Time Interval): 보통 1초의 1/1000 단위. 토큰을 채워 넣는 주기.
- $Bc$ (Committed Burst): 양동이의 크기 (최대 모을 수 있는 동전 개수).
- $CIR$ (Committed Information Rate): 계약한 속도. 1초에 동전을 몇 개씩 부어줄 것인가.
- 동작 원리:
- 시스템이 일정 시간마다 양동이에 토큰(동전)을 떨어뜨린다.
- 패킷 1바이트가 지나가려면 바구니에서 토큰 1개를 빼서 내야(지불해야) 나갈 수 있다.
- 바구니에 토큰이 없으면? 패킷은 버려지거나(Policing) 큐에 대기(Shaping)한다.
- 마법의 순간(Burst): 밤새 통신을 안 해서 바구니에 토큰이 1억 개 꽉 찼다. 아침에 직원이 출근해서 1억 바이트짜리 파일을 던진다. 바구니에 토큰이 1억 개나 있으므로, 1억 바이트가 단 0.1초 만에 빛의 속도로 톨게이트를 뚫고 나간다. (계약 속도를 초과하는 융통성 발휘!)
┌─────────────────────────────────────────────────────────────┐
│ Token Bucket 폴리싱의 실무 파라미터(Bc, Be) │
├─────────────────────────────────────────────────────────────┤
│ │
│ 라우터 명령어: police cir 10000 bc 1500 be 2000 │
│ │
│ 1. CIR (10M): 평소에 초당 채워주는 기본 토큰의 양 (계약 속도). │
│ 2. Bc (기본 양동이): 토큰을 최대 1,500개까지만 저축할 수 있는 바구니. │
│ 3. Be (초과 양동이, Excess): Bc 양동이가 꽉 차면, 옆에 있는 비상용 │
│ Be 양동이에 추가로 2,000개를 더 저축함! │
│ │
│ ▶ 패킷이 들어올 때: │
│ Bc 토큰으로 결제 -> 통과 (정상, 초록색) │
│ Bc 없고 Be 토큰으로 결제 -> 통과 (근데 노란색 딱지 붙여서 강등함) │
│ Bc, Be 토큰 다 없음 -> 사살! (Drop, 빨간색) │
│ │
│ ▶ "이것이 통신사 망에서 쓰이는 Two-Rate Three-Color Policer다!" │
└─────────────────────────────────────────────────────────────┘
- 📢 섹션 요약 비유: ** 토큰 버킷은 통신사가 고객에게 제공하는 **"이월 가능한 데이터 요금제"**입니다. 이번 달에 데이터를 안 쓰면 다음 달로 이월(토큰 저축)되어, 다음 달에 갑자기 유튜브를 미친 듯이 봐도(Burst) 안 끊기고 쾌적하게 볼 수 있게 해주는 합리적인 정산 시스템입니다.
Ⅲ. 비교 및 연결
Leaky Bucket / Token Buc…를 볼 때는 앞뒤 개념과의 경계를 함께 봐야 전체 흐름이 선명해진다. 트래픽 쉐이핑 / 폴리싱이 기반 조건을 만든다면, Leaky Bucket / Token Buc…는 그 위에서 핵심 메커니즘을 구현하고, WRED 혼잡 제어 꼬리 짜르기 제한은 이를 더 확장된 적용 단계로 연결한다. 따라서 단일 정의보다 수렴 속도과 확장성에 어떤 차이를 만드는지 비교하는 것이 중요하다.
| 관점 | 선행 개념 | 현재 개념 | 확장 개념 |
|---|---|---|---|
| 초점 | 트래픽 쉐이핑 / 폴리싱의 기반 정리 | Leaky Bucket / Token Buc…의 핵심 동작 | WRED 혼잡 제어 꼬리 짜르기 제한의 확장 적용 |
| 자원 관점 | 기본 조건 확보 | 수렴 속도 최적화 | 규모와 범위 확대 |
| 판단 포인트 | 도입 가능성 확인 | 현재 메커니즘의 적합성 판단 | 운영·확장 전략 연결 |
- 📢 섹션 요약 비유: Leaky Bucket / Token Buc…는 비슷한 기술들 사이의 차선을 구분하는 분기점과 같다. 어디서 갈라지는지 알아야 헷갈리지 않는다.
Ⅳ. 실무 적용 및 기술사 판단
실무에서는 Leaky Bucket / Token Buc…를 단독 개념으로 외우기보다 어떤 병목을 줄이기 위한 선택인지 먼저 따져야 한다. 특히 트래픽 쉐이핑 / 폴리싱 수준의 기본 대책으로 충분한지, 아니면 Leaky Bucket / Token Buc…가 제공하는 메커니즘이 실제로 필요한지 구분해야 한다. 이후 확장 단계에서는 WRED 혼잡 제어 꼬리 짜르기 제한와 같은 후속 기술, 자동화 체계, 표준 호환성까지 함께 검토해야 한다.
실무 체크리스트
- 현재 문제의 핵심이 수렴 속도 부족인지, 확장성 악화인지 먼저 분리한다.
- Leaky Bucket / Token Buc…가 추가하는 복잡도와 운영 이득이 균형을 이루는지 확인한다.
- 도입 후에는 인접 기술인 WRED 혼잡 제어 꼬리 짜르기 제한와의 연계 방식을 함께 검증한다.
안티패턴
-
Leaky Bucket / Token Buc…의 장점만 보고 트래픽 패턴이나 운영 비용을 무시한 채 과도 도입하는 설계
-
트래픽 쉐이핑 / 폴리싱와의 경계를 정리하지 않아 중복 투자나 정책 충돌을 만드는 설계
-
📢 섹션 요약 비유: Leaky Bucket / Token Buc…를 실제로 쓰는 판단은 도구 상자를 고르는 일과 비슷하다. 좋아 보이는 도구보다 지금 문제에 맞는 도구가 중요하다.
Ⅴ. 기대효과 및 결론
Leaky Bucket / Token Buc…는 라우팅과 경로 제어를 이해할 때 핵심 축을 잡아 주는 개념이다. 올바르게 적용하면 수렴 속도 개선과 구조적 단순화에 기여하지만, 조건을 잘못 잡으면 오히려 복잡도와 운영 부담이 커질 수 있다. 앞으로는 WRED 혼잡 제어 꼬리 짜르기 제한, 의도 기반 라우팅, 자동화 운영과의 결합을 통해 더 정교하게 발전할 가능성이 크다. 따라서 이 개념은 정의 자체보다 “언제 쓰고 언제 다른 방법으로 넘길 것인가”의 관점으로 기억하는 것이 좋다. 향후에는 의도 기반 라우팅 같은 자동화 흐름과 결합되어 더 정교한 형태로 확장될 가능성이 크다.
- 📢 섹션 요약 비유: Leaky Bucket / Token Buc…는 큰 흐름 속에서 기억해야 오래 남는다. 지금의 장점과 다음 확장 방향을 같이 보면 전체 그림이 선명해진다.
📌 관련 개념 맵
| 개념 | 연결 포인트 |
|---|---|
| 트래픽 쉐이핑 / 폴리싱 | 현재 개념이 등장하기 전에 갖춰야 할 배경이나 인접 선행 개념이다. |
| 라우팅 테이블 (Routing Table) | 패킷 전달 의사결정의 기준이 된다. |
| 메트릭 (Metric) | 최적 경로를 선택하는 비교 척도다. |
| WRED 혼잡 제어 꼬리 짜르기 제한 | 현재 개념이 확장되거나 적용 단계로 이어질 때 자주 함께 언급된다. |
📈 관련 키워드 및 발전 흐름도
[선행 개념: 트래픽 쉐이핑 / 폴리싱]
│
▼
[현재 개념: Leaky Bucket / Token Buc…]
│
├──▶ [확장 A: WRED 혼잡 제어 꼬리 짜르기 제한]
└──▶ [확장 B: 의도 기반 라우팅]
Leaky Bucket / Token Buc…는 트래픽 쉐이핑 / 폴리싱에서 출발해 현재 메커니즘을 정교화하고, 이후 WRED 혼잡 제어 꼬리 짜르기 제한와 의도 기반 라우팅 같은 확장 흐름으로 이어진다고 보면 기억이 오래간다.
👶 어린이를 위한 3줄 비유 설명
- 여러 갈림길이 있는 미로에서 가장 좋은 길을 고르는 게임과 같아요.
- 이 개념은 길이 막히면 다른 길로 빨리 바꾸는 규칙도 알려줘요.
- 그래서 인터넷 길찾기가 덜 헤매고 더 똑똑해져요.