업데이트됨 1개월 전
웹페이지를 불러올 때, 당신의 요청은 미리 정해진 경로를 따르지 않습니다. 마스터 라우팅 컴퓨터도 없고, 트래픽을 지시하는 중앙 기관도 없습니다. 대신, 당신의 데이터는 라우터에서 라우터로 홉을 거치며, 각 라우터는 패킷을 어느 방향으로 던질지 독립적으로 판단합니다.
어떤 라우터도 인터넷 전체를 보지 못합니다. 각 라우터는 이웃 라우터들만 보고, 패킷을 대략 올바른 방향으로 전달하면 다음 라우터가 나머지를 처리할 것이라고 신뢰합니다. 그럼에도 불구하고, 수십억 개의 장치들이 이런 방식으로 서로를 찾아냅니다.
네트워크들의 네트워크
인터넷은 하나의 네트워크가 아닙니다—서로의 트래픽을 전달하기로 합의한 수천 개의 독립적인 네트워크입니다. 이 네트워크들 각각을 **자율 시스템(AS, Autonomous System)**이라고 합니다.
당신의 ISP는 자율 시스템입니다. Google(AS15169), Cloudflare(AS13335), Amazon, Microsoft, 그리고 수천 개의 대학교, 기업, 지역 통신 사업자들도 마찬가지입니다. 각각은 원하는 방식으로 내부 라우팅을 운영합니다. 마법은 경계에서 일어납니다—이 독립적인 시스템들이 만나 공통 언어인 Border Gateway Protocol(BGP)을 사용해 트래픽을 교환하는 곳에서요.
이것은 통제된 무질서라고 생각하면 됩니다. 자신의 영역 안에서 네트워크 운영자는 완전한 권한을 갖습니다. 경계에서는 협상하고 협력하기도 하고—아니기도 합니다. 자율 시스템은 다른 시스템의 트래픽 전달을 거부할 수도 있고, 비즈니스 이유로 특정 경로를 선호할 수도 있으며, 마음대로 라우팅을 변경할 수도 있습니다. 최적 라우팅을 강제하는 인터넷 경찰 같은 것은 없습니다.
패킷이 길을 찾는 방법
당신의 노트북에서 전 세계 서버까지 패킷이 여행하는 과정:
당신의 기기는 목적지 IP 주소를 보고 그것이 로컬 네트워크에 없음을 인식합니다. 패킷을 홈 라우터—기본 게이트웨이—에 넘깁니다.
홈 라우터는 그보다 더 모릅니다. 그냥 모든 것을 ISP에 보냅니다.
ISP의 라우터들은 라우팅 테이블을 참조합니다. 이 테이블에는 "142.250.x.x로 시작하는 주소는 이 링크를 통해 Google의 네트워크로 패킷을 보내라"는 식의 내용이 담겨 있습니다. 라우터는 Google까지의 전체 경로를 모릅니다—그 방향의 다음 홉만 알 뿐입니다.
패킷은 네트워크 경계를 넘으며, 아마도 세 개 또는 네 개의 자율 시스템을 통과합니다. 각 홉에서 라우터는 목적지를 확인하고, 테이블을 참조하며, 패킷을 한 단계 더 가까이 전달합니다. 각 라우터는 본질적으로 이렇게 말하는 셈입니다: "이게 정확히 어디로 가는지는 모르지만, 저 방향이 맞는 것 같아."
목적지 네트워크가 패킷을 수신하고 내부적으로 특정 서버로 라우팅합니다.
응답은 다른 경로를 취합니다. 인터넷 라우팅은 비대칭적입니다—요청은 시카고를 거쳐 갈 수 있지만, 응답은 달라스를 통해 돌아올 수 있습니다. 어느 경로도 "올바른" 것이 아닙니다. 둘 다 작동합니다.
라우팅 테이블: 라우터가 실제로 아는 것
모든 라우터는 라우팅 테이블을 유지합니다—목적지 목록과 각각에 대해 패킷을 어느 방향으로 보낼지를 담은 표입니다:
| 목적지 | 다음 홉 | 이 정보를 어떻게 알았나 |
|---|---|---|
| 192.0.2.0/24 | 10.0.0.1 | AS64500으로부터 BGP |
| 203.0.113.0/24 | 10.0.0.5 | AS64501으로부터 BGP |
| 0.0.0.0/0 | 10.0.0.9 | 기본 경로 |
패킷이 도착하면, 라우터는 가장 구체적으로 일치하는 항목을 찾습니다. 192.0.2.50을 목적지로 하는 패킷은 /24 경로와 일치하므로 10.0.0.1로 갑니다. 구체적으로 일치하는 항목이 없는 주소를 목적지로 하는 패킷은 기본 경로를 따릅니다.
라우팅 테이블은 라우터의 세계 전부입니다. 다음 홉 이후에 무슨 일이 일어나는지 모릅니다. 경로가 혼잡한지, 또는 세 홉 더 가면 더 좋은 경로가 있는지 모릅니다. 그냥 알고 있는 것은: 이 목적지에 대해서는 저기로 보내라.
라우터가 경로를 배우는 방법
라우터는 인터넷에 대한 지식이 미리 탑재된 채로 출시되지 않습니다. 라우팅 프로토콜—이웃과의 지속적인 대화—을 통해 배웁니다.
네트워크 내부에서(자율 시스템 안에서), OSPF 같은 프로토콜을 통해 라우터들은 내부 토폴로지를 매핑합니다. 어떤 링크가 존재하는지와 그 비용에 대한 정보를 공유하고, 각 라우터는 모든 내부 목적지까지의 최단 경로를 독립적으로 계산합니다.
네트워크 사이에서는, BGP가 조율을 담당합니다. 자율 시스템들은 이웃에게 알립니다: "나는 이 주소 범위에 도달할 수 있어." 이웃들은 이것을 기록하고, 그들의 이웃에게 전합니다: "나는 AS64500을 통해 저 범위에 도달할 수 있어." 정보가 라우터에서 라우터로 전파되어, 결국 인터넷 전체가 대략 모든 곳에 어떻게 도달하는지 알게 됩니다.
이 과정은 끊임없이 계속됩니다. 링크가 끊어집니다. 새 네트워크가 연결됩니다. 정책이 변경됩니다. 라우터들은 지속적으로 업데이트를 교환하고, 라우팅 테이블은 천천히 현재 토폴로지를 반영하도록 변화합니다.
여러 경로가 존재하는 이유
주요 목적지에 대해, 라우터는 일반적으로 여러 가지 가능한 경로를 알고 있습니다. 어떻게 선택할까요?
최단 경로는 라우터 홉 수를 기준으로 합니다—홉이 적을수록 유리합니다. 단순하지만, 빠른 링크 세 개를 거치는 경로가 느린 링크 두 개보다 낫습니다.
비용 지표는 링크 용량을 고려합니다. 10 Gbps 링크는 1 Gbps 링크보다 "비용"이 낮으므로, 라우터는 더 많은 대역폭을 가진 경로를 선호합니다.
정책 선호도는 비즈니스 결정을 반영합니다. ISP는 유리한 조건을 협상한 파트너를 통한 경로를 선호하고, 가능하면 비용이 많이 드는 트랜짓 공급자를 피합니다.
BGP의 선택 알고리즘은 여러 요소를 순서대로 고려합니다: 로컬 선호도, AS 경로 길이, 출처 유형 등. 네트워크 운영자들은 이것들을 조정해 놀랍도록 정교한 라우팅 정책을 구현합니다.
결과적으로: 같은 목적지로 향하는 두 패킷이 몇 초 간격으로 전송되더라도 완전히 다른 경로를 취할 수 있습니다. 둘 다 도착합니다. 어느 경로도 잘못된 것이 아닙니다.
문제가 생길 때
네브래스카에서 광케이블이 끊어집니다. 프랑크푸르트에서 라우터가 다운됩니다. 상파울루에서 잘못된 설정이 발생합니다. 인터넷은 끊임없이 장애를 처리합니다.
감지는 직접 연결된 링크에 대해 빠르게 일어납니다—라우터는 이웃이 응답을 중단하면 즉시 알아챕니다. 더 먼 곳의 장애는 라우팅 프로토콜 메시지가 더 이상 도달하지 않으면서 감지하는 데 시간이 더 걸립니다.
재계산은 장애가 확인되면 시작됩니다. 라우터는 남은 링크를 사용해 새 경로를 계산합니다. 대안 경로가 있다면, 반드시 찾아냅니다.
전파는 소식을 퍼뜨립니다. 라우터들이 이웃에게 변경 사항을 알리고, 그들이 다시 이웃에게 알리며, 영향을 받은 전체 지역이 라우팅 테이블을 업데이트할 때까지 계속됩니다.
수렴 시간은 상황에 따라 다릅니다. 네트워크 내 현대 프로토콜은 몇 초 만에 재수렴합니다. 인터넷 전반의 BGP는 몇 분이 걸릴 수 있습니다. 이 시간 동안 일부 패킷은 막힌 곳으로 흘러들어가 버려집니다.
인터넷의 회복력은 중복성에서 나옵니다. 대부분의 목적지는 여러 독립적인 경로를 통해 도달할 수 있습니다. 링크 하나를 끊으면 트래픽이 그 주위로 흐릅니다. 이것은 놀랍도록 잘 작동합니다—작동하지 않을 때까지는요. 단 하나의 잘못된 설정이 지역 규모의 장애로 연쇄될 수 있습니다.
인터넷 교환 지점: 네트워크가 만나는 곳
전 세계의 특정 건물에서, 수백 개의 네트워크가 서로 물리적으로 연결됩니다. 이 **인터넷 교환 지점(IXP, Internet Exchange Point)**들이 피어링의 마법이 일어나는 곳입니다.
프랑크푸르트의 DE-CIX. 암스테르담의 AMS-IX. 수십 개의 도시에 있는 Equinix 시설들. 내부에서, 거대한 스위칭 패브릭이 연결된 어떤 네트워크든 다른 네트워크와 트래픽을 교환할 수 있게 합니다.
왜 이것이 중요할까요? IXP 없이는, ISP가 콘텐츠 공급자와 트래픽을 교환하려면 전용 연결이 필요하거나 중개자를 통해 라우팅해야 할 것입니다—트랜짓 비용을 지불하고 지연 시간을 추가하면서요. IXP를 통해 많은 트래픽을 교환하는 네트워크들이 직접 연결할 수 있어, 성능이 향상되고 비용이 줄어듭니다.
가장 큰 IXP는 초당 수 테라비트를 처리합니다. 동영상 스트리밍이 끊김 없이 즉시 시작된다면, IXP가 그 역할을 했을 가능성이 높습니다.
아무도 해결하지 못한 보안 문제
BGP는 네트워크 운영자들이 서로를 알고 신뢰하던 시대에 설계되었습니다. 내장된 인증이 없습니다. 자율 시스템이 "나는 Google의 주소에 도달할 수 있어"라고 알리면, 다른 라우터들은 그것을 그냥 믿습니다.
이것은 경로 하이재킹을 가능하게 합니다. 악의적이거나 잘못 구성된 네트워크가 자신이 소유하지 않은 주소에 대한 경로를 발표합니다. Google로 가야 할 트래픽이 대신 공격자의 네트워크를 통해 흐릅니다. 이런 일은 놀랍도록 자주—우연으로도 의도적으로도—실제로 발생했습니다.
경로 누수는 우연한 버전입니다. 네트워크가 BGP를 잘못 구성하여 갑자기 인터넷의 절반에 도달할 수 있다고 발표합니다. 트래픽이 밀려들어, 그 부하를 처리하도록 설계되지 않은 인프라를 압도합니다.
RPKI(Resource Public Key Infrastructure)는 암호화 검증을 추가합니다—네트워크가 특정 경로를 발표할 권한이 있음을 증명할 수 있게 합니다. 도입이 늘어나고 있지만 아직 완전하지는 않습니다. 인터넷의 많은 부분이 여전히 신뢰에 의존하여 운영됩니다.
라우팅이 보장하지 않는 것
라우터는 최선 노력 전달을 제공합니다. 할 수 있으면 패킷을 전달합니다. 할 수 없으면 아무런 사과 없이 버립니다.
혼잡은 라우터 버퍼를 채웁니다. 새 패킷을 위한 공간이 없을 때, 라우터는 그것들을 폐기합니다. 이것은 장애가 아닙니다—전송 시스템에게 속도를 늦추라고 알려주는 신호입니다.
전기 간섭이나 하드웨어 오류로 인한 손상은 패킷을 훼손합니다. 라우터는 이것을 감지하고, 손상된 패킷을 그냥 전달하는 대신 버립니다.
재전송은 라우터의 역할이 아닙니다. 그것은 TCP의 책임입니다. 라우팅은 대부분의 경우, 대부분의 구간에서 패킷을 전달합니다. 신뢰성은 상위 계층이 담당합니다.
보이지 않는 것을 보기
라우팅은 찾아보기 전까지는 눈에 보이지 않습니다:
Traceroute는 의도적으로 짧은 수명을 가진 패킷을 보내 경로를 드러냅니다. 경로 위의 각 라우터는 패킷이 "만료"될 때 응답하며 자신의 존재를 알립니다.
BGP 루킹 글라스는 네트워크의 라우팅 테이블을 엿볼 수 있게 합니다. 많은 공급자들이 이것을 공개적으로 제공합니다—특정 목적지에 대해 그들이 학습한 정확한 경로를 직접 확인할 수 있습니다.
경로 모니터링 서비스는 전 세계 BGP 변화를 추적하여 하이재킹, 누수, 이상 징후를 감지합니다. 주요 라우팅 사고가 발생하면, 이 서비스들이 영향을 받은 당사자 네트워크들보다 먼저 감지하는 경우가 많습니다.
우아한 역설
한 발 물러서서 인터넷 라우팅이 달성하는 것을 생각해보세요:
각자의 이익을 추구하고, 자체 하드웨어를 운영하며, 자체 정책을 구현하는 수천 개의 독립적인 네트워크—그러나 집합적으로 지구상의 모든 기기가 다른 어떤 기기에도 도달할 수 있게 합니다.
중앙 계획도 없습니다. 글로벌 라우팅 기관도 없습니다. 인터넷 토폴로지의 마스터 테이블도 없습니다.
그저 프로토콜들. 합의들. 그리고 라우터들이 같은 단순한 일을 반복하는 것: 목적지를 보고, 테이블을 참조하고, 한 홉 더 가깝게 전달합니다.
패킷은 자신의 경로를 모릅니다. 라우터들은 전체 여정을 모릅니다. 그러나 어떻게든, 화상 통화가 연결되고, 이메일이 도착하고, 웹페이지가 로드됩니다. 아무도 완전히 제어하지 않는 시스템을 통해, 초당 수십억 번.
그것이 인터넷 라우팅입니다. 그래도 작동하는 통제된 혼돈.
인터넷 라우팅에 관한 자주 묻는 질문
왜 traceroute는 시간에 따라 다른 경로를 보여주나요?
라우터는 현재 상황에 따라 독립적으로 결정을 내립니다. 링크 혼잡, 장애, 정책 변경, 심지어 시간대별 라우팅 조정으로 인해 트래픽이 다른 경로로 전환될 수 있습니다. 단일한 "올바른" 경로는 없습니다—여러 경로가 작동하며, 라우터는 그 순간 가장 좋아 보이는 것을 사용합니다.
ISP는 내 트래픽이 그들을 통해 라우팅되기 때문에 모든 것을 볼 수 있나요?
네, ISP는 당신이 보내고 받는 패킷을 봅니다—그들이 전달하고 있으니까요. 이것이 HTTPS가 중요한 이유입니다: 암호화 덕분에 ISP는 패킷을 볼 수 있어도 그 내용을 읽을 수 없습니다. ISP는 당신이 어떤 서버에 연결하고 있다는 것은 알지만, 무슨 내용을 주고받는지는 모릅니다.
주요 인터넷 백본이 장애를 일으키면 어떻게 되나요?
트래픽이 그 주위로 재라우팅됩니다. 인터넷은 부분 장애에서 살아남도록 설계되었습니다—원래는 핵 공격에도 견딜 수 있도록요. 주요 백본 장애는 라우팅 프로토콜이 대안 경로로 수렴하는 동안 일시적인 패킷 손실과 지연 시간 증가를 유발하지만, 연결이 완전히 끊기는 경우는 드뭅니다.
100마일 떨어진 서버와의 연결이 왜 다른 나라를 통해 라우팅되나요?
라우팅은 지리가 아닌 네트워크 토폴로지를 따릅니다. ISP와 해당 서버의 네트워크가 직접 연결되지 않은 경우, 트래픽은 중개자를 통해 갑니다—그 중개자가 어디에 있든 상관없이. 비즈니스 관계와 피어링 협정이 물리적 거리보다 더 중요합니다.
Netflix 같은 콘텐츠 공급자는 어떻게 그렇게 좋은 성능을 제공하나요?
그들은 서버를 곳곳에 배치합니다. Netflix는 많은 ISP의 네트워크 내부에 캐시 서버를 두고 있어, 트래픽이 ISP의 인프라를 벗어나지 않습니다. 이것이 Netflix에 대한 연결이 동네의 작은 웹사이트보다 더 좋을 수 있는 이유입니다—네트워크 관점에서 Netflix는 실제로 훨씬 더 가까이 있습니다.
이 페이지가 도움이 되었나요?