지금까지는 일반적인 라우팅 알고리즘들을 정리하였다.
이제 실제 인터넷에서 사용되고 있는 구체적인 라우팅 프로토콜에 대해 정리한다.
대표적으로 자주 사용되는 프로토콜이 intra-ISP 라우팅 프로토콜인 OSPF와 inter-ISP, 즉, ISP끼리의 라우팅 프로토콜 표준인 BGP가 있다. 만약 내가 어떤 특정한 라우팅 도메인을 관리하고 있는 네트워크 관리자라면 intra ISP 라우팅 프로토콜은 임의로 선택하면 된다. (OSPF도 좋고, 직접 만들어서 써도 된다.)
이 방식이 기존의 전통적인 라우팅에 기반한 방식이고, 비교적 최근 등장한 SDN에 기반한 방식을 사용할 수도 있다.
분산된 라우팅 알고리즘을 각각 라우터들끼리 나눠서 정보를 주고받으면서 나온 결과로 라우팅하는 것이 SDN 기반이다.
이 방식을 사용할 때는 어떤 centralized 한 서버 역할을 하는 컨트롤러가 라우팅에 관련된 일을 결정해서 각 라우터에 필요한 자료구조를 전달한다.
Autonomous Systems (AS)
지금까지 정리한 LS, DV 라우팅 알고리즘은 모두 이상적인 상황을 가정했다.
하지만 실제 인터넷 상황에서는 문제가 몇 가지있다.
바로 확장성이다.
인터넷에는 갈 수 있는 목적지가 너무 많기 때문에 모든 목적지를 라우팅 테이블에 저장할 수 없다.
따라서 라우팅 테이블의 크기를 라우터가 다룰 수 있는 수준으로 줄여야하고, 그렇게 하라면 그 라우터가 커버하는 영역 자체를 줄일 수 밖에 없다.
따라서 적절한 규모의 네트워크를 만들고, 그 내부에서의 라우팅을 정의하고, 그 외부로 가는 트래픽은 특정한 게이트웨이를 통해서 내보내도록 정의하는 식으로 테이블의 크기를 현실적으로 수용가능한 수준까지 줄이는 정책을 쓴다.
이때 등장하는 것이 바로 AS (Autonomous systems) 이다.
라우터가 관리가능한 주체적인 영역을 가리킨다.
인터넷을 가리켜 network of networks 라고 한다.
여기서의 각 네트워크가 서로 독립적이고 주체를 가진, 어떤 라우팅 도메인(영역)이라고 판단하는 것이다.
예를 들면 홍대 네트워크도 하나의 라우팅 도메인이 될 수 있다.
(물론 홍대 내부 네트워크는 사실 복잡한게 없기 때문에 아주 간단한 트래픽 흐름을 만들지만..)
조금 더 확대해보면 신촌/마포 지역의 KT 네트워크가 하나의 AS가 될 수 있다.
ISP가 운영하는 이 네트워크를 통해서 ISP의 고객들이 서로 통신을 하고, 굉장히 멀리 떨어져있는 누군가에게 데이터를 보낼 수 있는 것이다.
그리고 하나의 AS 내에서는 네트워크 관리자가 어떤 라우팅 프로토콜을 사용할지 스스로 결정할 수 있다.
지난 글에서 정리한 LS, DV 와 같은 라우팅 알고리즘이 바로 하나의 AS 내에서 동작하는 알고리즘이다.
(아예 새로운 알고리즘을 고안해서 돌려도 된다. 다른 AS의 간섭 없이 AS내부에서만 사용하기 때문에 문제가 없다.)
그리고 하나의 AS 내에서 사용하는 라우팅 프로토콜로 자주 사용되는 것이 바로 LS 기반의 OSPF 이다.
AS에 대해서는 크게 2가지로 나눠 이야기를 한다.
intra-AS (intra-domain) 과 inter-AS (inter-domain) 이다.
intra-AS 는 AS 안에서의 라우팅을 말한다.
하나의 AS 내의 모든 라우터는 같은 인트라 AS 라우팅 프로토콜을 사용한다.
만약 DV 방식의 RIP를 사용하겠다고 해도 좋고, OSPF 방식을 사용하겠다고 해도 상관없다.
하나의 AS 내에서는 어떤 프로토콜을 사용해도 괜찮다.
다만 AS와 AS 사이에서는 표준을 지켜야 한다.
AS와 AS 사이의 라우팅을 inter-AS 라고 한다.
inter-AS 라우팅 프로토콜은 intra-AS 프로토콜과 무관하게, '별도의' inter-AS 라우팅 프로토콜을 사용해야 하며, 이것은 AS와 AS가 서로 지켜야하는 '표준'의 영역이다.
이때 inter-AS를 위해서 게이트 웨이 라우터라는 것을 설정하고, 게이트웨이 라우터끼리 서로 통신함으로써 서로 다른 AS에 있는 두 라우터가 통신할 수 있게 된다.
이 그림에서 파란색 영역이 AS의 영역을 나타낸다.
각 AS 영역내에서는 그 영역에서만 사용하는 intra-AS 라우팅 프로토콜이 사용된다.
링크 코스트 역시 각자 알아서 부여한다.
그리고 게이트웨이 라우터간 통신에 inter-AS 라우팅 프로토콜이 사용된다.
어떤 패킷이 다른 AS를 거쳐야 하는 경우, inter-AS 라우팅 프로토콜에 따라 AS를 이동한다.
이때 하나의 라우터에서 사용하는 포워딩 테이블은 intra-AS, inter-AS 프로토콜 모두에 의해 결정된다.
목적지가 AS 내부인 경우에는 intra-AS 라우팅 프로토콜이 테이블 entry를 생성하고,
목적지가 AS 외부인 경우에는 inter-AS 라우팅 프로토콜이 테이블 entry를 생성한다.
그림과 같이 AS1에 패킷이 하나 들어왔다고 해보자.
이 패킷의 목적지가 AS1 바깥의 네트워크라서 게이트웨이 라우터로 보내야된다고 할 때,
어떤 게이트웨이 라우터로 보내야할까?
이를 결정하기 위해, AS1 inter-domain routing 을 통해 해당 목적지로 가려면 AS2를 통해서 가면 어떤 목적지로 갈 수 있는지, AS3를 통해서 가면 어떤 목적지로 갈 수 있는지를 파악한다. 그리고 파악한 정보는 AS1 내에 있는 모든 라우터가 공유하고 있어야 한다. 이때는 AS1 intra-domain routing을 사용할 것이다.
intra-routing protocol 중에 널리 알려진 프로토콜로는 다음과 같은 프로토콜이 있다.
1. RIP (Routing Information Protocol)
가장 최초에 등장한 프로토콜이다.
DV 알고리즘을 거의 그대로 따르는데, 차이가 있다면 자신의 DV가 바뀌지 않았어도 정기적으로 이웃에게 자신이 살아있다는 의미의 DV를 전송하는 부분이 있다.
근데 과거에 RIP 를 사용하는 라우터의 설정을 잘못해서 큰 문제가 발생한 적이 있었다.
라우터가 자신을 통해 가면 매우 빠르게 갈 수 있다고 잘못 광고해서 모든 트래픽이 그 라우터로 몰리는 바람에 네트워크가 마비됐던 것이다.
그래서 이 이후로는 거의 사용되지 않는다.
2. EIGRP (Enhanced Interior Gateway Routing Protocol)
개선된 내부의(인트라) 게이트웨이 라우팅 프로토콜
CISCO 에서 만든 라우팅 프로토콜인데, 나중에 표준이 되었다.
DV방식을 사용하는 경우 많이 사용한다.
3. OSPF (Open Shortest Path First)
오픈된, 즉 어떤 특정 기업에 소속되지 않고 만들어진 알고리즘이다.
가장 많이 사용되는 알고리즘이고, 이름에 나와있듯 다익스트라를 사용하는 LS 방식의 프로토콜이다.
이 외에도 IS-IS 라는 프로토콜도 있는데, 이 프로토콜은 IETF가 아니라 ISO 에서 정한 표준이다.
OSPF만큼 자주 사용되지는 않는다.
OSPF
오픈되어 있기 때문에, 라우터를 만드는 어떤 회사든 이 프로토콜을 사용하여 구현해도 괜찮다는 의미를 가진다.
(저작권, 특허비용 x)
link state 알고리즘을 거의 그대로 따르고 있다.
각 라우터가 자신의 link 상태를 flooding 하여 해당 AS내의 모든 라우터가 알 수 있도록한다.
(브로드캐스팅, IP를 직접 사용한다. 라우터는 3계층 장치니까 4계층까지 가지 않고 바로 3계층선에서 통신한다.)
이때 link cost 의 가중치를 여러가지 동시에 유지할 수 있다.
대역폭에 기반한 가중치, 딜레이에 기반한 가중치 등등
따라서 네트워크 관리자가 어떤 요소에 기반한 가중치를 사용할 지 선별할 수 있다.
이 과정을 거치면 AS 내부의 모든 라우터는 전체 topology를 갖고 있게 된다.
(그래프 맵을 갖고 있다.)
그리고 이를 기반으로 자신을 source로 하는 다익스트라 알고리즘을 돌려서 포워딩 테이블을 만든다.
그리고 이 과정에서 데이터를 주고받을 때, 모든 OSPF 메세지는 보안을 위해 authenticated 되어 있다.
따라서 누군가 조작된 link state 정보를 뿌려서 라우팅을 혼동스럽게 만드는 것을 방지한다.
내가 받은 메세지가 AS 내부에 있는 라우터에게서 온 메세지인지 확인하는 것이다.
OSPF는 라우팅 도메인을 area 라는 여러 영역으로 또 구분하는 것이 특징이다.
위 그림은 하나의 AS를 4개의 area로 나누어 구성한 모습을 나타낸다. (백본도 하나의 area다.)
그리고 그래프 맵을 그릴 때는, 이 안에서 또 area끼리 전체 토폴로지 맵을 갖는다.
그래서 area 내부에서 자기들끼리 flooding하고, 다익스트라를 돌려서 포워딩테이블을 만든다.
만약 하나의 area에서 다른 area로 가는 경우, 백본 area를 통해서 전달한다.
그래서 다른 area로 갈 때는 백본과 연결된 라우터 (그림에서 점선과 파란색 영역 모두에 속한 라우터) 를 통해 전달된다.
아예 AS 외부로 나가는 트래픽을 보낼 때도 백본과 연결된 라우터로 패킷을 보낸다.
즉, 백본이 아닌 라우터들은 '목적지가 area 내부가 아니면 그냥 백본과 연결된 라우터로 보낸다' 라고 결정되어있다.
이렇게 구성한 이유는 처음에도 말했듯 확장성 때문이다.
이 AS 전체에 대해 다익스트라를 돌리기에는 그것도 너무 크기 때문이다.
AS 내부에 존재하는 모든 라우터에게 브로드캐스트 메세지를 보내야 하는 것도 부담이기 때문에 이렇게 더 작은 영역을 나누어서 설계를 하는 것이다.
그래서 라우터의 종류를 구분하면 위와 같이 구분할 수 있다.
area와 백본을 연결하는 라우터는 area경계에 있는 라우터라고 해서 area border router 라고 한다.
이 라우터들은 자신의 area를 통해 갈 수 있는 목적지를 정리해서 백본에 브로드캐스트한다.
그러면 백본은 자신과 연결된 각 area에 어떤 목적지들이 있는지를 파악할 수 있다.
area를 구성하는 라우터는 local router 라고 하며, 이들은 area 내부에서 왔다갔다하는 게 아니라면 무조건 area border router로 보내면 된다고 알고있다.
boundary router는 이 AS에 대한 경계 라우터를 말한다.
AS와 AS를 연결하는 역할의 라우터로서, 일종의 게이트웨이가 된다.
백본을 구성하는 백본 라우터도, 백본이 하나의 area이기 때문에 그 내부에서도 OSPF를 돌려서 포워딩 테이블을 만든다.
'CS > 컴퓨터 네트워크' 카테고리의 다른 글
[컴퓨터 네트워크] 37. Network Layer (13) : SDN control plane (1) | 2024.06.14 |
---|---|
[컴퓨터 네트워크] 36. Network Layer (12) : inter-AS routing protocol (BGP) (0) | 2024.06.14 |
[컴퓨터 네트워크] 34. Network Layer (10) : Distance Vector (0) | 2024.06.08 |
[컴퓨터 네트워크] 33. Network Layer (9) : Link State (0) | 2024.06.08 |
[컴퓨터 네트워크] 32. Network Layer (8) : control plane, 라우팅 프로토콜 개요 (0) | 2024.06.08 |