어떻게 패킷이 길을 찾는 법, 라우팅
편지가 중간 우체국들을 거쳐 전해진다는 이야기를 했다. 그런데 갈림길마다 우체국은 다음에 어디로 보낼지 어떻게 정할까? 중앙에서 일일이 지시하는 사람은 없고, 역마다 스스로 길을 고른다. 이것이 라우팅이에요.
갈림길에서 고른다
패킷은 중간 역들을 거쳐 간다. 그런데 한 역에 도착해 보면 나가는 길이 하나만 있는 경우는 드물고, 이웃한 역이 여럿인 때가 많아요.
그렇다면 다음에는 어느 역으로 넘겨야 할까? 그것을 고르는 일이 라우팅의 시작이다. 인터넷에서는 이 역을 라우터라고 부른다.
깜빡이는 옆 역 가운데 하나를 눌러 패킷을 넘긴다. (역 = 라우터 · 누름 = 다음 역 선택) 갈림길마다 고르다 보면 목적지에 닿아요.
한 번 넘기자 패킷이 옆 역으로 갔고, 그 역에서 또 갈림길이 나왔다. 이렇게 한 역씩 넘기다 보면 언젠가는 목적지에 닿는다.
하지만 아무 옆 역이나 고르면 엉뚱한 곳을 빙빙 돌 수도 있어요. 그래서 역마다 고르는 기준이 필요하다.
길 안내표를 본다
역마다 작은 표를 한 장씩 가지고 있다. 이것을 길 안내표라고 하자. 표의 줄마다 '이 목적지로 가려면 이 옆 역에 넘겨라'라고 적혀 있다.
패킷이 도착하면 역은 목적지 주소를 보고 표에서 그 줄을 찾아, 적힌 대로 다음 역에 넘겨요. 실제 라우터에서는 이 표를 라우팅 테이블이라고 부른다.
길 안내표에서 목적지 줄을 하나 누르면, 그 목적지로 가려면 다음에 어느 역에 넘길지가 나온다. (표 = 길 안내표) 서로 다른 목적지가 같은 옆 역을 가리키기도 해요.
표가 있으면 역은 헤매지 않는다. 목적지가 어디든 그 줄만 찾으면 다음 한 걸음이 정해진다.
중요한 것은 역이 전체 길을 다 알 필요가 없다는 점이에요. 바로 다음에 누구에게 넘길지만 알면 되고, 나머지는 다음 역이 자기 표를 보고 이어 간다.
작은 표들이 이어져 긴 길을 만드는 것이다.
더 짧은 길을 고른다
목적지로 가는 길이 하나뿐인 것은 아니다. 돌아가는 길도 있고 질러가는 길도 있다. 그렇다면 표에는 어떤 길을 적어 둘까? 당연히 가장 짧은 길이에요.
이 문제는 앞에서 이미 만났다. 알고리즘 영역에서 점과 선으로 된 그래프 위에서 최단 경로를 찾던 바로 그 일을 라우팅에서 그대로 쓴다.
실제 인터넷에서는 거리만이 아니라 회선의 속도나 붐비는 정도 같은 여러 기준을 함께 따지기도 한다.
위 길과 아래 길을 눌러 거리 합을 견준다. 거쳐 가는 칸은 아래 길이 더 많지만 거리 합은 아래 길이 더 짧아서, 표에는 아래 길이 적혀요.
짧은 길을 골라 표에 적어 두면 그 목적지로 가는 패킷은 그다음부터 저절로 빠른 길로 흘러간다.
그래서 라우팅은 두 가지 일을 한다. 하나는 가장 짧은 길을 찾아 표를 만드는 일이고, 다른 하나는 패킷이 오면 표대로 넘기는 일이에요.
앞의 것이 알고리즘 영역에서 배운 최단 경로 찾기이고, 뒤의 것이 갈림길에서 고르기다.
중앙 관제탑이 없다
여기서 가장 놀라운 점이 나온다. 이 모든 것을 지휘하는 중앙 관제탑이 없다는 것이다. 전체 지도를 손에 쥔 누군가가 어디에도 없어요.
역마다 자기 표만 보고 다음 한 걸음을 스스로 정한다. 이처럼 한 곳이 다 정하지 않고 수많은 역이 나눠서 판단하는 방식을 분산이라고 한다.
역들은 이웃 역과 길 정보를 수시로 주고받으며 자기 표를 고쳐 나간다.
중앙 통제와 분산 가운데 하나를 고른 뒤 가운데 역을 눌러 멈춘다. 중앙 통제에서는 길이 끊기고, 분산에서는 옆 역들이 스스로 우회로를 찾아요.
한 역이 멈췄는데도 길은 끊기지 않았다. 옆 역들이 자기 표를 고쳐 다른 길로 돌아갔기 때문이다.
만약 중앙 관제탑 하나가 모든 길을 정하고 있었다면, 그 탑이 멈추는 순간 전부 멈췄을 거예요. 분산이라서 한 곳이 쓰러져도 전체는 계속 움직인다.
정리
라우팅을 한 줄로 모으면 이렇다. 패킷은 한 역씩 넘겨지며 길을 찾는다. 역마다 길 안내표를 보고 다음에 누구에게 넘길지 고르고, 표에는 가장 짧은 길이 적혀 있다.
중앙 관제탑은 없어요. 역마다 스스로 판단하는 분산 방식이라 한 역이 멈춰도 패킷은 우회로로 계속 간다.
네 가지 핵심을 차례로 눌러 정리한다. (갈림길에서 고르기 → 길 안내표 → 가장 빠른 길 → 중앙 없는 분산) 네 개가 모두 켜지면 정리가 끝나요.
인터넷이 좀처럼 끊기지 않는 비밀이 여기에 있다. 모든 것을 중앙 한 곳에 맡기지 않았기 때문이다. 수많은 역이 저마다 길 안내표를 보고 빠른 길로 패킷을 넘기고, 어딘가 막히면 다른 역이 우회로를 찾아요.
작은 판단들이 모여 온 세계를 잇는 거대한 길이 되는 셈이다. 다음 레슨에서는 우리가 주소창에 치는 이름을 숫자 주소로 바꿔 주는 안내소를 다룬다.