핵심 인사이트 (3줄 요약)
- 본질: 거리 벡터(Distance Vector) 라우팅은, 라우터가 동네 전체 지도를 직접 그릴 지능이 없어서, 오직 자기 바로 옆에 연결된 이웃 라우터가 건네주는 "거리(Distance)와 방향(Vector)"이라는 요약된 소문만 철석같이 믿고 자기 수첩(라우팅 테이블)을 고치는 가장 고전적인 길 찾기 방식이다.
- 벨만-포드 (Bellman-Ford) 알고리즘: 수학자 벨만이 만든 공식으로, "옆집 친구가 부산까지 3칸(Hop) 걸린다고 했으니, 나는 그 친구한테 가려면 1칸 더 가야 하니까 총 4칸(3+1)이겠네!"라고 덧셈만으로 최적 경로를 찾아내는 초단순 알고리즘이다.
- 치명적 약점 (눈뜬 장님): 남의 말만 듣고 지도를 고치다 보니, 중간 선로가 끊어지거나 이웃 라우터가 사기(잘못된 정보)를 쳤을 때, 이를 교차 검증할 능력이 없어 라우팅 루프(무한 루프)라는 거대한 재앙에 너무나도 쉽게 빠진다.
Ⅰ. 개요 및 필요성 (Context & Necessity)
-
개념: 라우터가 네트워크 토폴로지 전체를 알지 못하고, 단지 이웃 라우터로부터 전달받은 거리(Metric/Hop)와 방향(Next-hop) 정보만을 갱신하여 경로를 설정하는 IGP 라우팅 알고리즘 계열 (RIP, EIGRP).
-
필요성: 1980년대 초창기 라우터들은 CPU는 똥멍청이였고 메모리(RAM)는 KB 단위였다. OSPF처럼 온 동네 지도를 다 외워서 복잡한 수학 공식(다익스트라)을 돌릴 체력이 전혀 안 됐다. "야, 복잡하게 계산하지 말고 그냥 옆집 놈이 준 요약본에 숫자 1만 더해서 내 수첩에 적자! 메모리도 안 들고 짱 편하네!"라는 빈약한 하드웨어를 극복하기 위한 눈물겨운 아이디어였다.
-
💡 비유: 거리 벡터는 숲속에서 길을 잃었을 때 만난 **"동네 꼬마의 길 안내"**와 같습니다.
- 나: "저기 꼬마야, 기차역 가려면 어떻게 가니?"
- 꼬마: "저쪽(Vector 방향)으로 3블록(Distance 거리)만 가면 된대요! 저희 형이 그랬어요!"
- 나: "오케이 땡큐!" (나는 전체 지도를 본 적이 없지만 꼬마 말만 믿고 무작정 걸어갑니다).
📢 섹션 요약 비유: 거리 벡터 알고리즘은 교실에서 하는 **"전언 게임(소리 없는 아우성)"**입니다. 맨 뒷자리 학생은 원본 글씨(전체 지도)를 보지 못하고, 오직 바로 앞사람(이웃 라우터)이 귓속말로 속삭여주는 단어(거리 정보)만 100% 진실로 믿고 받아 적습니다.
Ⅱ. 거리 벡터의 갱신 매커니즘과 장단점 (Deep Dive)
1. 라우팅 테이블(수첩) 교환 3원칙
RIP를 돌리는 라우터들의 삶은 아주 단순무식하다.
- 주기적 발송: 라우터는 30초마다 자기 수첩(전체 라우팅 테이블)을 복사해서 옆집 라우터에게 툭 던져준다.
- 브로드캐스트 의존: 엽서를 조용히 주는 게 아니라, 브로드캐스트(
255.255.255.255)로 "동네 사람들! 내 수첩 좀 봐!!" 하고 시끄럽게 방송을 때린다. - 덧셈 갱신 (벨만-포드): 옆집 라우터 A가 "나 10번 동네까지 2칸(Hop) 만에 가!"라고 방송하면, 그걸 들은 B는 자기 수첩에 "아, A가 2칸 만에 가니까, 난 A를 거쳐서 가면 3칸(2+1) 만에 가겠네!"라고 1을 더해서 저장해 둔다.
┌─────────────────────────────────────────────────────────────┐
│ 벨만-포드(Bellman-Ford) 테이블 갱신 도식 │
├─────────────────────────────────────────────────────────────┤
│ │
│ [ 목적지 Z망 ] ──(1칸)── [ 라우터 A ] ──(1칸)── [ 라우터 B ] │
│ │
│ 1) A의 수첩 초기 상태: "Z망 ──▶ 거리: 1칸 (내가 직접 연결됨)" │
│ │
│ 2) A가 B에게 수첩을 복사해서 휙 던져줌 (30초 주기 방송) │
│ │
│ 3) B의 뇌구조 (벨만-포드 연산 작동): │
│ "음.. A가 Z망까지 1칸 걸린다고? │
│ 그럼 나는 A한테 가려면 1칸 걸리니까 (1+1 = 2칸이네!) │
│ 내 수첩에 적자! [Z망 ──▶ A방향으로 ──▶ 총 2칸!]" │
│ │
│ ▶ 단점: A가 B를 속이거나, A 뒤에 선이 끊겨도 B는 확인할 방법이 없음.│
└─────────────────────────────────────────────────────────────┘
2. 수렴 시간 (Convergence Time)의 비극
- **수렴(Convergence)**이란, 동네 어딘가 선이 끊어졌을 때 모든 라우터가 "아 1번 길 끊어졌대! 2번 우회로로 지도 고쳐!"라고 100% 지도를 갱신 완료하여 평화로워진 상태를 말한다.
- 거리 벡터는 이 수렴 속도가 지옥처럼 느리다.
- A가 죽었다는 걸 B가 아는 데 30초, B가 C한테 "A 죽었대"라고 말하는 데 또 30초... 만약 라우터가 10대 연결되어 있다면, 맨 끝 라우터가 길이 끊긴 걸 아는 데 무려 300초(5분)가 걸린다. 5분 동안 맨 끝 라우터는 끊어진 길로 데이터를 쏟아붓고 인터넷은 마비된다.
3. 무한 루프 (Routing Loop) 대재앙
- A가 Z망으로 가는 선이 끊어졌다. A는 B에게 "나 이제 Z망 못 가!"라고 말하려는데 30초 타이머가 아직 안 돌아서 가만히 있는다.
- 그때 B가 30초 타이머가 돼서 A한테 무심코 방송을 때린다. "A야! 나 Z망 갈 줄 안다! 나 2칸이면 감! (사실 아까 A한테 배운 길임)"
- A의 뇌구조: "어? 내 선은 방금 끊겼는데, B가 갈 줄 안다네? 그럼 B한테 주면 되겠네! (2+1 = 3칸)"
- 대참사: 패킷이 들어오면 A는 B한테 던지고, B는 아까 A한테 배웠으니 다시 A한테 던진다. 패킷이 탁구공처럼 A와 B 사이를 맴돌며 무한 루프에 빠진다. (이걸 막는 꼼수들은 뒤에 다룬다).
📢 섹션 요약 비유: 거리 벡터 알고리즘은 **"다단계 다이어트 약 소문"**과 같습니다. 첫 번째 사람이 "이 약 먹으면 10kg 빠진대!"라고 하면 두 번째, 세 번째 사람을 거치면서 소문(경로)은 퍼지지만, 정작 아무도 그 약(목적지)을 자기 눈으로 직접 성분 분석(전체 지형 파악)을 해 본 적이 없어 사기(루핑)에 매우 취약합니다.