핵심 인사이트 (3줄 요약)
- 본질: IntServ(Integrated Services)는 "데이터 전송 중 단 한 방울의 지연이나 끊김도 용납할 수 없다"는 강박증에서 출발하여, 트래픽을 쏘기 전에 목적지까지 가는 경로에 있는 모든 라우터의 멱살을 잡고 "내가 쓸 대역폭 10Mbps 치 무조건 비워놔!"라고 강제로 빈자리를 알박기(예약)하는 극단적인 QoS 모델이다.
- RSVP 프로토콜의 헌신: 이 알박기를 수행하기 위해 **RSVP(Resource Reservation Protocol)**라는 특수 요원 패킷을 쓴다. 얘가 길목의 모든 라우터에게 가서 "A가 B로 갈 건데 10M 비워둬"라는 각서(State)를 일일이 받아내야만 비로소 진짜 데이터가 출발할 수 있다.
- 처참한 실패 (확장성의 무덤): 개념은 완벽했으나, 수억 명이 몰려다니는 거대한 인터넷망(Core Router)에서 수억 개의 예약 장부를 라우터 메모리에 꾸역꾸역 외우게(Stateful) 하려다가 **라우터 CPU와 메모리가 다 타버리는 재앙(Scalability 붕괴)**을 낳고 결국 역사 속으로 묻혔다.
Ⅰ. 개요 및 필요성 (Context & Necessity)
-
개념: 엔드 투 엔드(End-to-End) 간에 트래픽 플로우별로 절대적인 품질을 보장하기 위해, 통신 전 사전에 대역폭 등의 네트워크 자원을 명시적으로 예약(Reservation)하는 IETF의 초기 QoS 아키텍처.
-
필요성: 1990년대, 인터넷 위로 실시간 화상 회의(VoIP, Video) 패킷을 보내고 싶었다. 기존 Best Effort 방식(먼저 온 놈 먼저 처리)으로는 패킷이 가다가 큐(대기열)에 밀려 1초 뒤에 도착하기 일쑤였다. 화상 회의는 0.1초만 끊겨도 모자이크가 뜬다. **"내 회의 패킷이 라우터에 도착했을 때 대기열에 줄 서는 것조차 용납할 수 없어! 아예 출발하기 전에 경로 전체를 내가 쓸 만큼 통째로 대관(예약)해버리자!"**라는 무시무시한 완벽주의가 IntServ를 탄생시켰다.
-
💡 비유: IntServ는 꽉 막힌 퇴근길 서울 시내를 통과하는 **"대통령 호송 차량 작전"**과 같습니다.
- 차가 출발하기 전에 경찰(RSVP) 오토바이가 목적지까지의 모든 교차로(라우터)에 미리 가서 섭니다.
- "10분 뒤에 VIP 지나가니까, 1차선 무조건 싹 비워두고 아무도 못 들어오게 막아(자원 예약)!!"
- 차가 지나갈 땐 단 1초의 신호등 대기(Delay)도 없이 완벽하게 직진하지만, 경찰들은 10분 내내 1차선을 지키느라 진을 빼야 하고(메모리 유지 부하), 시민들(일반 패킷)은 남은 좁은 차선에 미어터져 죽어 나갑니다.
📢 섹션 요약 비유: IntServ는 KTX 열차표를 끊을 때, 내가 앉을 4호 차 15번 좌석(10Mbps)을 서울부터 부산까지 가는 내내 **"오직 나만 앉을 수 있게 100% 비워두는 절대 예약제"**입니다. 내 자리는 완벽히 보장되지만, 기차 회사(라우터)는 내가 타든 안 타든 그 자리를 절대 남에게 못 파니 극도의 자원 낭비가 발생합니다.
Ⅱ. IntServ의 동작 시나리오와 몰락의 이유 (Deep Dive)
1. RSVP (자원 예약 프로토콜)의 2단계 핑퐁
IntServ는 혼자서 굴러가지 않고 반드시 RSVP(Resource Reservation Protocol)의 어깨에 올라타서 동작한다.
- Path 메시지 발송 (길 찾기): 송신자 A가 목적지 B로 패킷을 쏘기 전에
Path메시지를 날린다. 이 메시지는 OSPF 지도를 따라 목적지까지 가면서 중간 라우터들에게 "나 이 길로 갈 거야, 준비해 둬"라고 눈도장만 찍는다. - Resv 메시지 회신 (진짜 예약 쾅!): 목적지 B가 Path를 받고 "오케이, 그럼 나한테 10Mbps 속도로 쏴줘"라는
Resv(Reservation)메시지를 거꾸로(역방향으로) 쏴 올린다. - 알박기 (Soft State 유지): Resv 메시지가 거꾸로 올라오면서, 중간 라우터들은 자기 큐(대기열 버퍼)의 10Mbps 치를 딱 떼어내서 A 전용으로 자물쇠를 채운다. (이제 다른 패킷은 이 버퍼를 못 쓴다).
- 드디어 A가 실시간 영상을 부드럽게 쏘기 시작한다!
┌─────────────────────────────────────────────────────────────┐
│ IntServ (RSVP)의 자원 예약 과정 시각화 │
├─────────────────────────────────────────────────────────────┤
│ │
│ [ PC A ] [ 서버 B ] │
│ │ 1. "나 길 좀 쓸게" (Path 엽서) │
│ ├──────▶ [ 라우터 1 ] ──────▶ [ 라우터 2 ] ──────▶ │
│ │ │
│ │ 2. "오냐! 10Mbps 치 공간 예약해라!!" (Resv 엽서) │
│ ◀────── [ 라우터 1 ] ◀────── [ 라우터 2 ] ◀────── │
│ (10M 버퍼 할당!) (10M 버퍼 할당!) │
│ │
│ 3. 실제 영상 데이터 초광속 논스톱 전송 개시!!! │
│ │
│ ▶ "라우터 1과 2는 이 예약 정보(장부)를 유지하기 위해 계속 CPU를 씀"│
└─────────────────────────────────────────────────────────────┘
2. IntServ가 멸망한 3대 이유 (Stateful의 비극)
이론상 완벽하지만, 인터넷의 실전(규모)을 무시했다.
- 메모리 폭발 (Scalability 이슈): 라우터는 들어오는 모든 트래픽의 예약 장부(State)를 기억해야 한다. 사용자가 1,000명이면 장부도 1,000개다. 통신사 백본은 수백만 명이 쓰는데 라우터 RAM이 버틸 재간이 없다.
- 대역폭 낭비: 10Mbps를 예약해 놨는데, A가 화장실 가느라 영상을 안 쏜다. 그래도 예약석이라 남(웹서핑, 다운로드 패킷)이 그 대역폭을 못 쓴다. (극강의 비효율).
- 모두가 동의해야 함: A부터 B까지 가는 길에 라우터가 10대 있다면, 10대가 모두 IntServ를 지원하고 예약에 동의해야만 터널이 뚫린다. 단 1대라도 "나 예약 기능 안 킬 건데?" 하면 전체 예약이 싹 다 무효가 된다. (인터넷 환경에선 불가능).
📢 섹션 요약 비유: IntServ 시스템은 손님이 예약석에 오지도 않았는데 **"다른 대기 손님 수십 명을 문 밖에 덜덜 떨게 세워두고, 빈 테이블을 절대 내어주지 않는 꽉 막힌 초고급 레스토랑 지배인"**과 같습니다. 소규모 프라이빗 파티(사내망)에는 완벽하지만, 수백만 명이 오가는 대형 푸드코트(인터넷 백본)에서는 절대 굴러갈 수 없는 낭비 시스템입니다.