전공공부/컴퓨터망 (Computer Network)

[컴퓨터망] Routing (2) - Autonomous Systems, BGP

jooona 2021. 2. 2. 18:41
반응형

과연 전 세계의 네트워크를 하나의 시스템으로 통일시킬 수 있을까요? 또는 전 세계의 수많은 라우터들을 라우팅 테이블에 모두 집어넣을 수 있을까요? 당연히 불가능합니다. 결국 네트워크는 작은 네트워크들을 서로 연결한 형태이고, 이 작은 네트워크들은 그 내부의 저마다 다른 프로토콜로 작동하게 됩니다.

 

이렇게 동일한 프로토콜을 사용하는 한 네트워크, 또는 네트워크 그룹을 자율 시스템 (Autonomous System, AS)라고 합니다. 그리고 이 AS는 종종 라우팅 도메인(Routing Domain)으로 불리기도 합니다. 이 AS는 전 세계적으로 고유한 번호인 ASN(Autonomous System Number)을 부여받아야 합니다.

 

1. 게이트웨이

AS 내부에서는 자신들의 프로토콜을 이용해 네트워크를 운용하기 때문에, 인접한 AS와도 사용하는 프로토콜이 다를 수밖에 없습니다. 그래서 AS끼리 연결을 해주기 위해, AS들의 가장자리에 게이트웨이(Gateway)라는 장비를 위치시켜 줍니다. 만일 패킷을 다른 AS로 보내주어야 한다면, 이 게이트웨이에게로 패킷을 전달시켜 주면 됩니다. 많은 경우에 게이트웨이를 톨게이트에 비유하기도 합니다.

 

사실 대부분의 경우 라우터가 게이트웨이의 역할을 하기 때문에, 다른 AS와 연결된 라우터를 게이트웨이라고 부릅니다. 

 

우리가 사용하는 컴퓨터도 인터넷에 진입하기 위해 여러 게이트웨이를 거쳐야 합니다. cmd 창에 ipconfig를 검색해보면 기본 게이트웨이의 ip 주소를 얻을 수 있습니다. 저는 공유기를 사용하기 때문에, 게이트웨이의 ip 주소는 제가 사용하고 있는 공유기의 ip 주소일 것입니다. 즉 인터넷과 저의 컴퓨터를 연결하기 위해 가장 먼저 거치는 게이트웨이가 바로 공유기라는 것을 알 수 있습니다.

 

AS 내에서의 라우팅을 Intra-AS 라우팅이라고 하고, AS와 AS 간의 라우팅을 Inter-AS 라우팅이라고 합니다. 게이트웨이는 AS 내에서도 역할이 있고, AS 간의 연결도 담당해야 하기 때문에 Intra-AS의 프로토콜과 Inter-AS 프로토콜에 모두 작동해야 합니다.

 

2. Intra-AS / Intra-AS 라우팅

한 AS 내에서는 모든 라우터들이 같은 프로토콜을 사용하고 있기 때문에 라우팅을 하는 것에 큰 제약사항이나 고려사항이 없지만, 해당 AS를 벗어나는 범위로 통신을 하고자 한다면, 이야기가 달라집니다. 

 

만일 AS 1에 속해있는 A에서 AS 2의 B에 패킷을 보내고 싶다면 어떤 게이트웨이로 패킷을 전달해야 할지 어떻게 알 수 있을까요? 이를 위해 AS 1과 연결된 AS 2와 AS 3을 통해 갈 수 있는 목적지를 학습하고 있어야 하고, 이는 AS 1의 모든 라우터에게 전파되어 있어야 합니다.

 

이러한 한 AS 내에서 어떤 게이트웨이를 찾아가야 하는지에 대한 프로토콜도 중요합니다. 이를 Interior Gateway Protocols (IGP)라고도 부르며, 대표적으로 RIP (Routing Information Protocol), OSPF (Open Shortest Path First), IGRP (Interior Gateway Routing Protocol)등이 있습니다. RIP는 거리 벡터 방식의 프로토콜이고, OSPF는 링크 상태 방식의 프로토콜입니다. 

 

3. BGP

Inter-AS 라우팅을 위해서는 경로 벡터 방식의 BGP (Border Gateway Protocol)이 주로 사용됩니다. BGP는 게이트웨이에 의해 수행되며 Inter-AS를 위해 이용되는 eBGP와 Intra-AS를 위해 이용되는 iBGP가 존재합니다. eBGP로 AS들 간의 위치 정보를 얻어내고, iBGP로 eBGP를 통해 얻은 정보를 AS 내부의 라우터들에게 전달합니다. 즉, iBGP는 AS 안에서 어떤 라우터로 가면 원하는 AS로 전달될 수 있는지를 알려주는 프로토콜입니다.

 

eBGP에서 서로 인접한 게이트웨이들은 경로에 대한 정보를 서로 교환합니다. 가령 어떤 AS를 통해서 가면 목적지가 나온다 정도의 정보를 뜻합니다. 

 

 

인접한 BGP들은 서로 메시지를 보내 정보를 교환합니다. 이때 보내는 메시지에는 4가지 종류가 있습니다.

 

1. OPEN: 인접 BGP와의 연결을 시작할 때 사용합니다. 

2. UPDATE: 새로운 경로에 대한 정보를 인접 BGP에게 알려줍니다.

3. KEEPALIVE: 인접 BGP와의 연결이 아직 유효한지 확인할 때 사용합니다.

4. NOTIFICATION: 이전에 보낸 경로 정보가 틀렸다는 것을 알려줄 때 사용합니다. 

 

위의 그림에서 만일 A와 D사이에 링크가 있고, OPEN을 통해 새로운 정보 교환을 시작하면, X로 가는 더 짧은 길을 만들어 낼 수 있습니다. 그럼 D는 X로 가는 두 가지 길을 알고 있고, 프로토콜에 따라 더 합리적인 길을 선택하게 됩니다.

 

 

 

추가적으로 Hot Potato Routing이라는 것이 있는데, 이 라우팅 방법은, 여러 경로가 있을 때. 어떤 게이트웨이로 빠져나가는 것이 가장 경제적이고 빠르게 목적지에 도착하는가에 대해서는 전혀 고려하지 않고 최대한 해당 AS를 빠르게 빠져나가는 것에 중점을 두는 방법입니다. 본인의 AS 내의 트래픽을 가장 중시하여, Inter-AS에서의 상황은 전혀 생각하지 않고 뜨거운 감자를 쥐고 있듯이 최대한 빠르게 다른 AS에 떠넘기는 것입니다.

반응형