본문 바로가기

프로그래밍/네트워크

[화웨이] 네트워크 과제 3 - OSPF 학습

개요

다음 과제인 ospf를 구성해 보기 전에 ospf 프로토콜에 대한 기본적인 내용을 적어보기로 했다.

 

ospf 과제에서는 각 라우터간 p2p 링크를 통해 ospf 관계(Adjacency)를 형성하고 라우팅 테이블이 제대로 만들어졌는지를 확인하게 될 것이다.

 

 

OSPF 란

Open Shortest Path First의 약자로 최단 경로 우선 프로토콜이라고 해석하면 된다. IGP 중 하나이며, 링크 상태 라우팅 프로토콜(Link-State Rouing Protocol)로 동작한다.

 

줄여서 '링크 상태 방식으로 동작한다'는 의미는 라우터가 자신과 직접 연결된 링크 상태 정보를 LSA(Link State Advertisement) 형태로 인접 라우터에게 전파하고, 이러한 LSA들이 flooding 되어 같은 Area 내의 모든 라우터가 동일한 LSDB를 가지게 된다. 이후 라우터는 LSDB를 기반으로 Dijkstra 알고리즘을 실행하여 라우팅 테이블을 구성한다는 뜻이다.

 

IGP란 내부망에서 사용하는 라우팅 프로토콜의 통칭으로 하나의 AS 안에서 경로를 설정하기 위해 사용하는 프로토콜을 말한다.(BGP 이론 때 후술)

다익스트라 알고리즘(Dijkstra’s Algorithm, Dijkstra Shortest Path Tree)은 가중치가 있는 그래프에서 최단 경로를 구하는 알고리즘이다. 특정 시작점에서 모든 노드까지의 최소 비용 경로를 계산할 수 있기 때문에, OSPF와 같은 링크 상태 라우팅 프로토콜에 적합하다. (다익스트라 알고리즘은 나중에 알고리즘 정리할 때 다시 정리할 예정)

 

cost (비용)이란 경로 선택 시 우선순위를 결정하는 수치로 ospf는 각 링크에 부여된 cost의 값을 합산하여 cost 의 값이 낮은 경로를 선택한다. 계산식은 Cost = Reference Bandwidth / Interface Bandwidth. 기준 대역폭이 100 Mbps 일 때 인터페이스의 실제 속도가 10 Mbps 라면 cost는 10. default 값이 100 Mbps로 1 Gbps 이상의 Interface는 최솟값인 1로 고정되어 버리는 문제가 있기 때문에 reference 값을 변경하거나, 인터페이스에 cost 값을 직접 지정해줘야 한다.


LSA : 링크 상태 광고 메시지. 자신이 알고 있는 네트워크 정보를 ospf neighbor에게 전파하는 데 사용. id, 이웃 id, 연결된 네트워크, cost 등의 정보가 들어가 있으며, 이걸 flooding 하여 같은 area의 전체 장비가 동일한 LSDB를 공유하도록 구성한다


LSDB : 링크 상태 데이터베이스. 내가 받고 전파한 LSA 내용의 데이터베이스. 이 정보를 기반으로 다익스트라 알고리즘을 실행한 뒤 라우팅 테이블을 만든다.

 

 

ABR과 ASBR

ABR : 두 개 이상의 ospf area를 연결하는 경계 역할을 수행하는 장치
ASBR : ospf와 외부 라우팅(ex. bgp)과 연결하는 경계 역할을 수행하는 장치
하나의 장비가 둘을 동시에 수행할 수도 있음. 자동으로 지정되기 때문에 해당 역할을 수행하는 장치를 부르는 명칭에 가깝다.
  
LSA type (1, 2, 3, 4, 5, 7)
 area 내부
  type 1: Router LSA 모든 라우터가 자신이 연결된 링크 정보를 전파함
  type 2: Network LSA DR 라우터가 하나의 브로드캐스트 네트워크 내의 연결 정보를 전파함
 area 간 (ABR이 수행)
  type 3: Summary LSA 다른 area의 네트워크 정보 요약
  type 4: ASBR Summary ASBR의 위치 알림
 외부 경로 광고
  type 5: External LSA - ASBR이 외부 경로(static, BGP 등)를 OSPF 내부에 광고할 때 사용하며, NSSA 또는 stub area를 제외한 일반 area에서는 ABR을 통해 area 0을 거쳐 다른 area로 전파함.
  type 7: NSSA area 내부에서 외부 경로 광고, ABR이 type 5로 변경해서 전파함


 * stub area와 nssa(Not-So-Stubby Area) 
   stub area는 라우팅의 최 하단에서 모든 경로를 상단 장비로 올리는 장비에 사용한다. 그런데 그 장비들에 일부 외부 라우팅을 넣어줘야 하는 경우가 있을 때 지정하는 것이 nssa 

 External type (E1 / E2)
  LSA 가 외부 경로 광고(LSA type 5)할 때에 사용하는 필드
  E1은 내부경로(해당 라우터->ASBR) + 외부경로(ASBR->목적지)
  E2는 외부경로만 고려함. 기본값

 DR/BDR : DR/BDR은 Ethernet처럼 broadcast 유형의 네트워크에서 LSA 전송을 줄이기 위해 사용된다. 반면, Point-to-Point 또는 NBMA(non-broadcast) 인터페이스에서는 DR/BDR을 선출하지 않으며, 이 과제에서는 모든 링크가 P2P로 구성되기 때문에 적용되지 않는다.

 

P2P 
 하나의 링크에 2개의 장치만 존재하는 상태(직결 등). ospf에서는 해당 인터페이스의 네트워크 타입을 기본값(브로드캐스트)이 아니라 p2p로 설정하라는 의미. 그렇게 되면 이웃이 하나만 있을 것으로 가정하기 때문에 DR/BDR을 선출하지 않고 LSA 구조가 단순해짐

 

 

Area와 Process

 area 
  ospf 네트워크 안에서 모든 라우터가 전체 토폴로지를 공유하지 않도록 나눠놓은 구역
  area 0 : ospf의 중심 백본 에어리어라고도 부름. 모든 area는 직/간접적으로 area 0에 연결되어있어야 함. abr은 반드시 area 0를 가지고 있음.
  그 외의 area : 서브 area, area의 각 내부 구조를 독립적으로 운영함
 
 process
  동일한 라우터 내에서 OSPF 프로세스를 여러 개 실행할 경우, 각 프로세스는 논리적으로 완전히 독립된 OSPF 인스턴스로 동작한다. 따라서 process 간에는 라우팅 정보를 직접 공유하지 않으며, import-route 명령어를 통해 명시적으로 경로를 가져와야 한다.

 

 

Neighbor와 Adjacency 

이웃 라우터와 LSDB를 동기화하는 단계. neighbor는 hello 패킷을 주고받아서 서로의 존재를 인식한 상태이며, Adjacency는 LSDB의 동기화까지 마친 full 상태... 지만 P2P 환경에서는 대부분의 이웃이 full adjacency 상태에 도달하기 때문에, 실무에서는 두 용어가 구분 없이 혼용되는 경우도 많다.

더보기

 1. Down         → 아무것도 모름
 2. Init             → Hello 수신
 3. 2-Way        → 나도 널 안다 (Neighbor)
 4. ExStart      → Master/Slave 협상
 5. Exchange  → DBD 교환 시작
 6. Loading     → LSR/LSU 주고받기
 7. Full            → Adjacency 완성

 

약어 정리

OSPF : Open Shortest Path First
IGP  : Interior Gateway Protocol
LSDB  : Link State Database
LSA  : Link State Advertisement
ABR  : Area Border Router
ASBR  : Autonomous System Boundary Router
P2P  : point to point