이전 정리글 까지는 라우팅 알고리즘인 link-state와 distance vector 등에 대해서 정리해 보았다.
근데, Distance Vector 정리글 마지막 부분에, link-sate와 distance vector의 trade-off에 대해서 설명하며, 이 둘을 적절히 활용하거나 OSPF라는 새로운 라우팅 알고리즘을 활용하면 된다고 했다. 이번 글에서는 이 OSPF라는 라우팅 알고리즘에 대해서 정리해보려고 한다.
1. AS(Autonomous System)
앞서 정리했던 link-satate와 distance vector는 그라프를 활용한 알고리즘이었다. 하지만 현실 세계의 네트워크는 전 세계적으로 퍼져 있으며, 수많은 라우터와 링크로 구성되어 있다. 이런 상황에서 모든 라우터를 하나의 그래프로 통합하고,
그 위에서 라우팅 알고리즘을 수행하는 것은 현실적으로 매우 비효율적이며 확장성이 떨어진다.
이에, adiministrative autonomy라는 해결책이 나오기도 했는데, 이는 Internet의 netowrk of networks라는 특징을 이용해, 각 네트워크마다 admin 즉, 관리자가 존재해 그 관리자가 라우팅을 통제하는 방식이다. 이렇게 관리 단위로 나뉘어진 network를 AS(Auonomous System)이라고 한다.
이 AS도 intra-AS, inter-AS 두 가지로 나뉘는데, 각각은 다음과 같은 특징이 있다.
-intra-AS(aka "intra domain")
- 같은 AS 내에서의 라우팅
- AS내 모든 라우터는 동일한 intra-domain 프로토콜로 실행된다.
- 다른 AS의 라우터들은 다른 intra-domain protocol로 실행될 수 있다.
- gateway router : AS의 "edge"(=경계)로, 다른 AS의 라우터와 연결된 link의 라우터를 가지고 있다.
-inter-AS(aka "inter-domain")
- 서로 다른 AS들 간의 라우팅
- gateway router가 inter-domain 라우팅 프로토콜을 실행한다.(intra-AS도 실행할 뿐 아니라)
그럼 다음 그림을 통해 intra-AS와 inter-AS가 어느 절차로 이루어지는 지 한 번 확인해보자.


먼저 AS1~AS3까지 intra-AS가 존재하고, 그림에는 잘 보이지 않지만, 3a-1c, 1b-2a가 서로 연결되어 있으며 이들이 바로 gateway router이다. 라우팅은 다음과 같이 진행된다.
- 각 AS들이 자체적으로, 즉 intra-AS 라우팅을 진행해 목적지를 향한 AS내의 출구를 결정하고 ,
- 이후 inter-AS 라우팅을 진행해 외부 목적지로 나가기 위한 다음 AS를 정한다.
- 즉, gateway 라우터에서는 다음 그림과 같 위 2개의 라우팅 방식이 동시에 적용되어 forwarding table을 만든다.

이제 다음 예시를 살펴보며, inter-AS의 라우팅이 정확히 어떤 역할을 제공해야 하는지 살펴보자.

위 그림은 외부로부터 온 datagram에 대해 AS1이 어느 경로로 내보내는지 결정해야 하는 상황이다. datagram을 적절한 다른 AS로 전달하기 위해 AS1의 inter-domain routing은 다음과 같은 기능을 수행해야 한다.
- AS2 또는 AS3를 통해 reachable한 목적지들을 알고 있어야한다.
- 이 rechability에 대한 정보는 AS1의 모든 라우터가 알고 있어야한다.
즉, AS1은 본인과 연결된 AS2나 AS3 2개가 존재한다고 알고 있고, AS1의 모든 라우터들은 AS2와 AS3를 통해 어느 목적지로 갈 수 있는지 알고 있어야 한다.
2. OSPF
위에서 설명한 Inter-AS 라우팅을 수행하기 위한 다양한 라우팅 프로토콜이 존재한다. 이번 글에서는 여러 프로토콜 중에 OSPF에 대해서 정리할 예정인데, 그 전에 어떤 프로토콜이 있는지 간단히 정리만 하고 넘어가려고 한다.
- RIP: Routing Information Protocol
- classic DV : DV값을 30초마다 교환한다.
- count-to-infinity 문제 현재는 더 이상 쓰지 않는다.
- 과거에 이 프로토콜을 사용하다가 심각한 문제가 발생했던 사례가 있다고 한다.
- EIGRP: Enhanced Interiro Gateway Routing Protocol
- DV 기반 확장형 프로토콜
- 이전에는 Cisco(라우터 최초로 만든 회사)가 독점적으로 사용하던 protocol이었는데 2013년에 open protocl이 되었다.
- 현재 알고 있는 DV의 대표격이라고 생각하면 된다.
- loop-free(count-to-infinity 문제 해결)를 위한 DUAL 알고리즘을 사용한다.
- OSPF: Open Shortest Path First
- link-state 라우팅
- 가장 널리 사용되는 intra-AS 라우팅 프로토콜 중 하나이다.
- IS-IS 프로토콜(RFC 표준이 아닌 ISO 표준이다. ISO는 아이폰 ISO가 아닌 국제 표준화 기구의 약자이다.)
이제, 본격적으로 OSPF에 대해서 알아보자.
먼저, OSPF의 특징들에 대해서 알아보자. 이 프로토콜은 이름에서 알 수 있듯이, 공개(Open)된 표준 라우팅 프로토콜이며, link-state 기반의 라우팅 알고리즘을 구현하고 있다.
- 표준화 단체, ISO가 제안 프로토콜로 특정 회사에 종속되지 않고 누구나 자유롭게 사용할 수 있다.
- 전통적인 link-state 알고리즘을 이용한다.
- 각 라우터는 OSPF기반 link상태를 같은 AS 내의 모든 라우터들에게 floods(모든 라우터에 broadcast)한다.
- TCP/IP보단 IP위에 직접 동작한다.(4계층을 사용하지 않는다는 것은 자체적인 신뢰성과 전달 매커니즘이 있다는 것이다.)
- link cost는 bandwidth, delay 기반으로 계산된다.
- full topology 기반의 다익스트라 알고리즘 사용: 각 라우터는 flooding된 link-state 정보를 통해 전체 네트워크 구조(full topology)를 확인하고 이를 기반으로 다익스트라 알고리즘을 실행해 자신의 forwarding table을 작성한다.
- secruity : 모든 OSPF 메세지는 authenticated(인증) 기능을 제공해 라우팅 위조나 침입을 방지한다.
사실, 이 특징 중, IP 위에서 직접 동작한다는 것이 직접 와닿지 않았는데, 다음 그림을 통해 이해 할 수 있었다.

OSPF는 단순히 전체 AS 내부에서 flat하게 동작하는 것이 아니라, 계층적 구조로 구성되어 있다.
사실, 네트워크 안에서 라우터들은 flat하고 mesh-like하게 연결되어 있다. 그러나 OSPF는 이를 논리적인 계층 구조로 나누어, 효율적인 라우팅 정보 관리와 스케일 확장성 확보를 가능하게 한다. 다음 그림을 확인해보자.

위 그림에 대해서 설명하면 다음과 같다.
- 파란색 영역 : network(즉, 하나의 AS)
- 그 내부에 area 1,2,3 등의 local area들이 존재
- 이들을 연결하는 중심에 backbone area가 존재
OSPF는 그림에서 확인할 수 있듯이 다음과 같은 2계층 구조를 가진다.
- backbone
- local area
각 계층에서 이루어지는 일을 확인해 보자.
-local area
local area 계층에서는 2가지 router로 구분되는데, border router와 local router로 구분된다.
- backbone과 연결되어 있는 각 border router가 존재한다.
- 이 border router는 본인이 속해있는 area의 topology(네트워크 경로)를 backbone에 요약해서 전달한다.
- local router: 같은 area 내의 라우터들에게 link-state를 flood하고 다익스트라 알고리즘으로 경로 계산을 독립적으로 수행한다.
-backbone
backbone 계층에서는 backbone router와 boundary router로 구분된다.
- boundary router : 다른 AS와 연결되어 있는 router이다. 즉, gateway router이다.
- backbone router : OSPF를 backbone에서만 작동하도록 제한한다.
'학교공부 > [컴퓨터 네트워크]' 카테고리의 다른 글
| [컴퓨터 네트워크] - Netowrk Layer_BGP (4) | 2025.06.12 |
|---|---|
| [컴퓨터 네트워크] - Netowrk Layer_Distance vector (1) | 2025.06.07 |
| [컴퓨터 네트워크] - Network Layer_link-state (0) | 2025.06.07 |
| [컴퓨터 네트워크] - Network Layer_Control Plane (0) | 2025.06.06 |
| [컴퓨터 네트워크] - Network Layer_Middleboxes (0) | 2025.06.06 |