먼저 알아둬야 할 것은 프로바이더라는 고급 용어를 사용했지만 결국 프로바이더 내부 또한 지금까지 배웠던 TCP/IP 프로토콜로 동작한다는 것이다.
일단 최종 목적지가 되는 웹 서버가 클라이언트와 같은 프로바이더에 접속되어 있는 경우 어떻게 패킷이 전달되는지 알아보자.
프로바이더의 라우터는 인접한 라우터끼리 경로 정보를 교환하고 이를 경로표에 자동으로 등록해 놓았을 것이다.
이 과정은 이전에도 설명했으므로 자세한 설명은 생략하겠다.
프로바이더의 POP에 존재하는 라우터가 패킷을 전달할 중계 대상은 NOC일 수도 있고 인접한 POP일 수도 있다.
중계 대상이 무엇이든 그 중계 대상에는 라우터가 존재할 것이고 현재 POP의 라우터에 이미 등록되어 있는 경로표를 사용하여 패킷을 다음 라우터로 중계할 것이다.
패킷의 수신지와 송신지가 같은 프로바이더에 접속되어 있다면 1개의 프로바이더 내에 존재하는 NOC 및 POP에 존재하는 라우터들이 패킷을 중계하며 결국 웹 서버 측의 POP에 설치된 라우터에 도착할 것이며 POP에서 웹 서버로 패킷을 보냄으로써 패킷 송신 과정이 종료된다.
그렇다면 패킷의 송신지와 수신지의 프로바이더가 다를 경우는 어떻게 동작할까?
사실 이 경우도 패킷의 송/수신지가 1개의 프로바이더에 속한 경우와 큰 차이는 없다.
프로바이더는 인접한 라우터 중 자신의 프로바이더에 속한 라우터 정보만 저장하는 것이 아닌 다른 프로바이더의 라우터와도 경로 정보를 교환하기 때문에 다른 프로바이더의 경로 정보 또한 저장하고 있다.
자세한 과정은 뒤에서 설명하겠지만, 이미 현재 프로바이더의 라우터에 다른 프로바이더의 경로 정보를 저장하고 있으므로 평범하게 경로표에서 중계 대상을 찾아 거기에 패킷을 보내기만 하면 되는 것이다.
정리하자면 인터넷의 라우터는 패킷의 송/수신지가 동일한 프로바이더인지 다른 프로바이더인지와 관계없이 인접한 라우터에 대한 모든 경로를 경로표에 등록시켜 놓는다.
자세히 파고 들면 등록하지 않는 라우터도 존재하지만 이는 뒤에서 더 자세히 다룰 것이다.
따라서 경로표에서 다음 중계 대상을 찾아 패킷을 보낸다는 동작을 반복하면 결국 웹 서버 측 POP에 패킷이 도착할 것이며, 이런 원리로 지구 반대편에 패킷을 전달하는 것도 가능해지는 것이다.
프로바이더를 통해 패킷을 전달하기 위해서 가장 중요한 것은 인터넷의 라우터에 경로 정보를 등록하는 것이다.
경로 정보를 등록하지 않으면 라우터는 어디에 패킷을 중계해야 하는지 알 수 없기 때문이다.
이 과정은 그렇게 어렵지는 않은데, 라우터와 접속해 있는 접속 상대가 경로 정보를 가르쳐주는 것이다.
접속 상대가 경로 정보를 가르쳐주면 라우터는 어떤 경로를 통해 특정 네트워크에 갈 수 있다는 것을 알 수 있으므로 이 경로 정보를 경로표에 등록하면 특정 네트워크에 패킷을 보낼 수 있게 되는 것이다.
상대가 경로 정보를 가르쳐주면 현재 라우터 또한 접속 상대에게 자신이 속한 네트워크에 도달할 수 있는 경로 정보를 통지한다. 그렇다면 상대측에서도 현재 네트워크에 도달할 수 있는 경로 정보를 저장할 수 있을 것이며 이 과정을 통해 접속 상대와 현재 라우터는 패킷을 주고받을 수 있는 상태가 되는 것이다.
이러한 경로 정보 교환 동작은 라우터가 자동적으로 수행하는데 이 때 사용하는 구조를 "BGP"라고 한다.
이러한 경로 정보 교환은 통지하는 경로 정보의 내용에 따라 2가지 유형으로 나눌 수 있다.
먼저 "트랜지트(transit)"이다.
이는 접속 상대에게 알고 있는 인터넷의 경로를 전부 상대에게 통지하는 것이다.
이 개념은 위 예시 이미지를 통해 이해하면 더 쉬워진다.
프로바이더 D가 프로바이더 E에게 트랜지트 방법으로 경로를 통지했다고 가정하자.
그럼 프로바이더 E는 프로바이더 D에 대한 경로 정보 뿐 아니라 프로바이더 D가 알고 있는 경로 정보인 프로바이더 A, B, C에 대한 경로 정보 또한 전부 파악할 수 있게 된다.
결국 프로바이더 E는 "프로바이더 A,B,C를 가기 위해선 프로바이더 D를 거쳐야 한다"라는 정보를 통해 프로바이더 D에 패킷을 송신하는 것이다.
다른 방법은 "비트랜지트"이다.
이는 두 프로바이더가 각각의 네트워크에 관한 경로 정보만 접속 상대에게 통지하는 경로 정보 교환 방식이다.
위 이미지에서 프로바이더 D와 프로바이더 E가 비트랜지트 방식으로 경로 정보 교환을 수행했다고 가정하자.
그럼 프로바이더 E는 프로바이더 D로 가기 위한 경로 정보 밖에 알 수 없다.
이런 상황에서 프로바이더 A로 패킷을 보내야 할 경우 패킷을 어디로 보내야 할지는 정확히 모르겠으나 현재 가지고 있는 정보는 프로바이더 D에 대한 경로 정보이므로 프로바이더 D로 패킷을 보내는 것이다.
BGP의 구조에서는 정보를 교환하는 상대를 피어(peer)라고 부르는데 피어는 트랜지트와 비트랜지트를 모두 포함하고 있다.
이 중 비트랜지트에 해당하는 피어로 "IX 경유 피어"와 "직접 접속 피어"가 존재한다.
IX 경유 피어의 경우 IX에 경로를 통지한 라우터들 사이에만 패킷이 흐르는 경로 정보 교환 방식을 말하며 직접 접속 피어의 경우 자신과 직접 연결되어 있는 네트워크에 대해서만 경로 정보를 교환하는 비트랜지트 방식을 말한다.
프로바이더 간 경로 정보 교환에 대해 알아보기 전 잠깐 사내 네트워크에서 라우터끼리 경로 정보를 교환하는 과정을 짚어보고 가자.
사내 네트워크에서도 라우터끼리 서로 경로 정보를 교환하며 경로표를 자동으로 설정한다.
이때 사내에서 사용하는 경로 정보 교환 구조는 목적지까지의 최단 경로를 찾아 그 경로를 통해 패킷을 중계하도록 만들어져 있다.
이는 어찌 보면 당연한데 사내 네트워크에 연결되어 있는 기기라는 말은 사내 네트워크를 사용할 수 있는 기기라는 것이 자명하기 때문에 굳이 인증 과정이나 복잡한 경로를 통하지 않고 가장 최단 경로의 길로 패킷을 전달해도 아무런 문제가 생기지 않을 것이다.
하지만 프로바이더가 이런 방식(최단 경로 우선 방식)을 사용하여 라우터 간 경로 정보를 교환할 경우 곤란한 일이 발생할 수 있다.
한국에서 미국으로 패킷을 송신해야 한다고 가정하자.
이때 패킷을 보내는 방법은 여러 개 있겠지만 이 중 가장 빠른 방법은 한국 → 일본 → 미국 경로라고 가정하자.
이런 상황에서 만약 최단 경로로 패킷을 보내는 구조를 사용한다면 허락하지 않은 프로바이더의 패킷이 회선에 유입될 수 있다.
한국과 일본을 연결하고 있는 통신 회선을 사용하려 하는데 한국 측 프로바이더가 일본 측 프로바이더에게 회선 비용을 안 냈다고 가정하자. 이런 상황에서는 한국 → 일본으로 패킷을 송신할 수 없어야 하지만 최단 경로 로직을 사용하면 일본으로 패킷을 송신할 것이며, 이 경우 한국의 프로바이더는 무임승차로 통신 회선을 사용하게 되는 것이다.
즉, 무임승차 당하는 통신 회선을 관리하는 프로바이더 입장에선 매우 큰 비용적 손실이 발생하는 것이다.
그리고 이런 문제를 해결하기 위해 인터넷의 경로 정보 교환에는 의도하지 않은 상대로부터 오는 패킷을 중지하는 구조를 가지고 있다.
먼저 경로 정보를 교환하는 상대를 지정할 수 있다.
사내 네트워크에서는 브로드캐스트 주소를 통해 무차별적으로 모든 라우터와 경로 정보를 교환하지만 프로바이더 간 경로 정보 교환은 특정 라우터와 1:1로 이루어진다.
해당 라우터가 비용 부담 등의 교섭에 응했을 경우 경로 정보 교환을 수행하고 응하지 않았을 경우 경로 정보 교환을 수행하지 않는다면 경로 정보를 통해 패킷을 중계하는 라우터의 동작 구조 상 교섭에 응한 프로바이더의 라우터에만 패킷을 송/수신할 수 있을 것이다.
또한 경로를 판단할 때 최단 경로 여부가 아닌 다른 판단 요소를 매개변수로 설정할 수 있는데, 1개의 목적지에 대해 복수의 경로가 있는 경우 우선순위를 설정할 수 있는 것이 이러한 예이다.
이렇게 선별적으로 경로 정보를 교환할 경우 경로 정보를 교환하지 않은 프로바이더 측에 액세스 대상 웹 서버가 있을 경우 웹 서버에 접속할 수 없다는 문제가 생길 수 있다 걱정하겠지만 그런 걱정을 할 필요는 없다.
프로바이더는 이러한 사태가 일어나지 않도록 경로 정보를 교환하기 때문이다.
인터넷에는 다수의 프로바이더가 존재하며 1개의 프로바이더는 복수의 프로바이더와 상호 접속되어 있다. 따라서 한쪽의 프로바이더에 문제가 발생했을 경우 다른 쪽의 프로바이더에 패킷을 송신함으로써 인터넷 구석구석까지 패킷을 보낼 수 있도록 경로 정보를 교환하고 있다.
만약 A와 C가 직접 연결되어 있지 않더라도 A-B, B-C가 상호 계약되어 있다면 A-B-C 루트를 통해 패킷을 전달할 수 있는 것이다.
만약 이것이 불가능한 프로바이더라면 해당 프로바이더는 살아남을 수 없을 것이다.
기본적으로 프로바이더끼리 접속하는 방법은 프로바이더끼리 1:1 형태로 접속하는 형태이다.
지금도 이 방법을 사용하고 있지만 이 방법만을 사용하기에는 불편한 점이 존재한다.
만약 프로바이더끼리 1:1로만 접속해야 한다면 프로바이더가 많아질수록 사용해야 할 통신 회선의 개수가 많아진다.
N개의 점을 모두 연결하는 선은 총 N(N-1)/2이다. 만약 프로바이더가 10개만 되더라도 45개의 통신 회선이 필요해지는 것인데 이는 매우 비효율적이다.
이전에 말했듯 통신 회선을 가설하기 위해선 지중에 광섬유를 매설하는 공사가 필요한데 통신 회선이 많이 필요할수록 이 비용 또한 증가할 것이다.
따라서 이런 비효율성을 줄이기 위해 IX 설비를 도입했다.
프로바이더의 중심이 되는 설비를 설치하고 중심이 되는 설비를 경유하여 다른 프로바이더에 접속하는 방법을 선택하면 통신 회선의 개수를 N개로 확 줄일 수 있으므로 효율적이다.
IX는 정전이나 화재 등의 사고나 지진 등의 재해가 있어도 네트워크 기기가 정지하지 않도록 자가발전 설비를 갖춘 내진 구조의 건물 안에 있어야 하는데, 이는 프로바이더의 NIC에도 공통으로 적용된다.
하지만 이러한 안정성을 가지고 있는 건물은 그렇게 많지 않으며 대개 이런 건물에는 이미 NOC나 IX가 집중되어 있다.
이러한 건물 어딘가에는 IX가 있으며 IX의 중심에는 고속 LAN의 인터페이스를 다수 장착한 레이어 2 스위치가 있다.
이전에 말했듯 레이어 2 스위치의 기본 동작은 스위칭 허브와 동일하므로 매우 고성능의 스위칭 허브가 IX의 핵심이라고 생각하면 된다.
레이어 2 스위치에 프로바이더의 라우터를 연결할 텐데 연결 방법은 다양하다.
먼저 IX와 같은 건물에 NOC를 설치한 프로바이더가 선택하는 ① 방법이다.
이 경우 NOC의 라우터와 IX의 레이어 2 스위치가 동일한 건물에 있으므로 광섬유 케이블을 가설하여 IX 스위치에 접속하는 것이 통례이다.
가정이나 회사의 LAN에서 라우터를 스위칭 허브에 접속하는 것과 같이 생각하면 된다.
② 방법은 프로바이더가 IX 건물 내부에 레이어 2 스위치에 패킷을 전달하는 용도의 라우터를 설치하는 방법이다.
이 경우 IX에 가지고 들어간 라우터는 통신 회선이나 다크 파이버 등으로 프로바이더센터와 접속하게 된다.
③ 방법은 프로바이더의 라우터가 IX 건물 외부에 있는 상황에서 활용하는 방법이다.
NOC의 라우터를 통신 회선이나 다크 파이버 등의 방식으로 IX의 레이어-2 스위치와 접속시키는 방법이다.
이전에는 한 장소에 레이어-2 스위치를 설치하는 형태밖에 없어 IX는 점에 불과했다. NOC의 라우터 또한 점으로 생각하면 점과 점 사이를 잇는 선의 형태로 둘을 연결하는 방식이었다.
하지만 현재는 IX의 레이어-2 스위치를 넓게 설치할 수 있게 되었다.
데이터 센터 등 패킷(트래픽)의 흐름이 집중되는 장소에 IX의 목적지가 되는 스위치를 설치하고 이곳에 프로바이더의 라우터를 연결하는 방식인데 이 방법이 바로 ④ 방법이다.
일단 패킷이 집중되는 곳에 설치된 서브 레이어-2 스위치와 IX 본체의 메인 레이어-2 스위치를 통신 회선 등으로 접속하여 IX 본체에 패킷을 전달할 수 있는 구조를 만들어 놓는다.
이후 서브 레이어-2 스위치와 프로바이더의 라우터를 연결함으로써 "라우터 → 서브 레이어 2 스위치 → 메인 레이어 2 스위치"과정을 거쳐 프로바이더의 라우터가 IX에 접근할 수 있게 되는 것이다.
이런 방식으로 IX는 점차 점에서 선으로 넓어지고 있다.