⚠️ 들어가기 앞서
경북대학교 컴퓨터학부 COMP0414-001 컴퓨터망 과목을 공부하며 정리한 글입니다.
직전 글에서 라우팅 알고리즘의 두 가지 종류인 Link state 알고리즘과 Distance vector 알고리즘에 대해서 알아보았는데 이제 실제로 라우터 간의 통신에서 어떤 식으로 적용되는지 알아보고자 한다.
어떤 시스템이 'scalable 하다'
는 것은 scalability, 즉 '확장성'
이 좋다는 것을 의미한다. 즉 시스템의 규모를 확장하는 것이 용이한지에 대한 지표이다.
만약 우리가 사용하는 인터넷 네트워크 내의 라우터들이 모두 동등하고, 서로 얼기설기 얽혀 있다면 어떨까? 전세계적으로 몇십 억 개의 destination들이 존재할 것이고 각각의 라우터들이 가지고 있는 routing table에 이 destination들에 대한 forwarding 정보를 기록하고 있는 것은 불가능에 가깝다.
예를 들어, 대한민국의 모든 가정에 대한 정보를 대한민국 정부가 모두 관리할 수는 없다. 그래서 시나 도를 나누어 시청, 도청을 설립한다. 시청/도청은 또다시 구청, 군청 등을 설립하여 계층화하고, 각 계층마다 관리 규모를 작게 유지한다.
라우터도 autonomous systems (자율 시스템)
(이하 AS) 이라는 영역으로 통합할 수 있다.
전체 네트워크를 여러 개의 AS로 나누었으면 이들 간에, 또 각각의 AS 내부에서 통신이 이루어져야 한다. 같은 AS 내부에서 이루어지는 라우팅을 Intra-AS
, AS들 간의 라우팅을 Inter-AS
라 한다.
'edge'
에 있는, 즉 다른 AS와 연결된 라우터를 gateway 라우터
라고 한다.그리고 라우터의 라우팅 테이블을 만들 때는 intra-AS, inter-AS 라우팅 알고리즘을 모두 사용하여 만든다.
가장 흔히 알려진 intra-AS 라우팅 프로토콜은 다음과 같은 것들이 있다.
RIP (Routing Information Protocol)
: 30초마다 distance vector를 교환하는 방식. 더이상 잘 사용되지 않는다. 홉 카운트가 15로 제한되어 있다.EIGRP (Enhanced Interior Gateway Routing Protocol)
: Cisco 사가 개발한 프로토콜인 IGRP를 개선한 방식으로, Cisco 전용 라우팅 프로토콜이다. Distance vector 알고리즘을 기반으로 동작한다. OSPF (Open Shortest Path First)
: RIP, EIGRP와는 다르게 link-state 라우팅을 사용한다. 다익스트라 알고리즘을 통하여 구한 최단 경로를 바탕으로 패킷을 전달해 준다. 뒤에 더 자세히 알아볼 것이므로 일단 여기까지OSPF의 동작 방식에 대해 알아보자면 다음과 같다.
OSPF는 홉 카운트 개수만을 고려하는 RIP와는 다르게 링크 비용의 개념을 도입한다. 즉 다양한 변수를 기반으로 비용을 산정하여 최적의 경로를 구하기 때문에, 더 효율적이고 빠른 경로 산출이 가능하다.
OSPF 네트워크를 더 작은 영역으로 나누어 관리할 수도 있다. 이를 위해 local area
영역과 backbone
영역을 도입한다.
위 그림의 초록색 부분인 backbone 영역에 여러 라우터들이 속해 있다. 이 영역에 속하지 않는 각각의 영역을 local 영역이라고 하는데 이 경계에 걸쳐 있는 라우터를 area border 라우터
라고 한다. 이 라우터들은 자기가 속한 local area의 대표자의 느낌으로 backbone 영역에 속해 있고, 자기가 속한 local area의 정보를 나머지 backbone 라우터들에게 알린다.
OSPF 프로토콜을 백본 영역의 라우터들 간에만 수행하게 되면, 라우터의 개수가 줄어들 수 있어 관리에 용이해진다.
마치 subnet을 사용하는 것처럼 local area를 나누기 때문에 일종의 계층 구조라고 볼 수 있다.
local 영역에 속하고 있는 라우터들은 local 영역 내부적으로 link state 방식을 사용하며, area border 라우터를 통해 외부와 연결된다.
inter-AS 라우팅에는 BGP (Border Gateway Protocol)
이 사용된다.
BGP는 eBGP (external)
와 iBGP (internal)
가 있다.
reachability information
을 받아온다. AS의 위치, 갈 수 있는 destination의 종류와 경로 정보 등이 포함된다.reachability information
을 AS 내부의 모든 라우터들에게 전파한다. (propagate) 파란 영역은 각각의 AS이며 파란 점선으로 표시된 연결은 '논리적인' AS 내부의 연결이며 곧 iBGP 연결을 뜻한다. 빨간 점선은 AS 간의 연결, 즉 eBGP 연결을 의미한다.
'논리적으로 연결되었다'는 것은 물리적으로 두 라우터 간의 연결이 존재한다는 뜻은 아니다. 다른 라우터를 거쳐서라도 서로 통신이 가능하면 연결된 것으로 본다.
이 글에서는 iBGP와 eBGP 중 eBGP를 중점적으로 다룬다.
AS의 gateway 라우터들은 서로 BGP 메시지를 교환한다. 이 메시지는 특정 destination으로 갈 수 있는 경로 정보를 담고 있다. destination network prefix (목적지 정보)가 있고, 이 목적지에 도달하기 위해 거쳐야 하는 AS 정보인 AS-PATH
속성과 다음 hop을 어느 라우터로 향해야 하는지에 대한 정보인 NEXT-HOP
속성이 있다.
정보를 받은 gateway 라우터들은 내부 정책을 통해 이 경로를 받아들일지(accept) 혹은 거부할지(decline)를 선택한다. 정책을 따르기 때문에 BGP를 policy-based routing
을 한다고 한다.
위 그림과 같이 라우터 X로 갈 수 있다라는 정보를 AS3이 AS2에게 전달한다. destination에다 자신을 앞에 붙여 AS3, X
라고 전달된다.
정보를 받은 2c 라우터는 AS 2
내부에 존재하는 모든 라우터들에게 이 정보를 flood 한다.
그리고 마찬가지로 AS 1에게 X에 대한 경로 정보 AS2, AS3, X
를 전달한다.
AS 1은 AS 2뿐만 아니라 AS 3에게서도 X에 대한 path 정보를 받게 된다. 정책에 따라 이 중 한 가지 경로를 선택하여 X로 가기 위한 경로를 결정한다.
BGP 메시지는 TCP 연결을 기반으로 이루어진다. BGP 메시지는 다음과 같은 것들이 있다.
OPEN
: 다른 BGP 피어와 TCP 연결을 시도한다.UPDATE
: 새로운 경로 정보를 받아 이를 통해 정보를 갱신한다.KEEPALIVE
: 연결을 수립한 상대방이 아직 살아 있는지 (연결이 유효한지), 또는 OPEN 메시지에 대한 ACK
로써 사용된다.NOTIFICATION
: 에러가 발생하였음을 알리거나 연결을 끊고자 할 때 사용된다.뜨거운 감자를 손으로 만지려고 하면 너무 뜨겁다. 이 감자를 다른 사람에게 전달하려고 하면, 내가 잡고 있는 시간을 줄이고 최대한 빨리 건네주고 싶을 것이다.
BGP에서도 비슷한 기법이 사용된다. 위와 같은 그림을 보자. AS2는 현재 AS3으로 가는 두 가지 경로를 알고 있다. 2c -> 3a
경로가 있고, 2a -> 1c -> 3a
경로가 있다.
이 때, 2d 라우터는 어떤 경로를 선택할까? 정답은 intra-AS cost가 가장 작은 경로
를 사용한다. 2d에서 2a로 가는 비용은 201이고 2c로 가는 경로는 263이다. AS3으로 가기 위해 AS1을 거쳐야 하므로 inter-AS cost
까지 고려하면 2a -> 1c -> 3a
경로가 더 효율적이지 못한 경로일지언정 내부 비용이 적기 때문에 해당 경로를 선택한다.