OSPF(Open Shortest Path First) 설명
OSPF는 링크 상태(Link-State) 라우팅 프로토콜이며, Cisco CCNA, CCNP, CCIE R&S 시험을 준비한다면 반드시 이해해야 하는 라우팅 프로토콜 중 하나입니다. 이 강의에서는 OSPF의 기본 개념과 동작 원리를 설명합니다.
내비게이션 시스템을 생각해 보세요. 장점은 그냥 운전만 하면 되고 교통 표지판을 볼 필요가 없다는 것이고, 단점은 내비게이션이 고장 나면 완전히 길을 잃는다는 것입니다. 지도를 읽는 것도 서툴고, 대도시에서 특정 거리를 찾아야 한다면 큰일이겠죠.
링크 상태 라우팅 프로토콜은 내비게이션 시스템과 같습니다. 네트워크의 완전한 지도를 가지고 있기 때문입니다. 네트워크의 전체 지도가 있으면 모든 목적지까지의 최단 경로를 계산할 수 있습니다. 모든 경로를 알고 있기 때문에 루프가 발생할 수 없다는 장점이 있지만, 디스턴스 벡터(Distance Vector) 라우팅 프로토콜보다 CPU를 더 많이 사용한다는 단점이 있습니다.
내비게이션 시스템과 마찬가지로, 서울에서 부산까지의 경로를 계산하는 것은 같은 도시 내의 한 거리에서 다른 거리까지의 경로를 계산하는 것보다 시간이 더 걸립니다.
링크 상태(Link-State)가 정확히 무엇을 의미하는지 자세히 살펴보겠습니다:
- Link(링크): 라우터의 인터페이스를 의미합니다.
- State(상태): 인터페이스의 설명과 이웃 라우터와의 연결 방식을 의미합니다.
링크 상태 라우팅 프로토콜은 링크 상태 광고(LSA, Link-State Advertisement) 를 모든 다른 링크 상태 라우터에게 전송하는 방식으로 동작합니다.
모든 라우터는 이 링크 상태 광고를 수집하여 링크 상태 데이터베이스(LSDB, Link-State Database) 를 구축해야 합니다. 기본적으로 모든 링크 상태 광고는 LSDB를 구성하는 퍼즐 조각입니다.
OSPF 라우터가 많은 경우, 각 OSPF 라우터가 자신의 LSA를 다른 모든 OSPF 라우터에게 플러딩하는 것은 비효율적일 수 있습니다. 예를 들어보겠습니다:
위 그림에서 스위치에 연결된 8대의 OSPF 라우터가 있는 네트워크를 볼 수 있습니다. 각 라우터는 다른 모든 라우터와 OSPF 네이버가 되어 Hello 패킷을 보내고, LSA를 플러딩하고, LSDB를 구축합니다. 그러면 다음과 같은 상황이 발생합니다
OSPF 네이버의 풀 메시(Full Mesh)가 형성됩니다. 각 라우터가 다른 모든 라우터에게 LSA를 플러딩하므로 OSPF 트래픽이 매우 많아집니다. 이것을 좀 더 효율적으로 만들 수 있는 방법이 있을까요?
모든 OSPF 라우터가 하나의 OSPF 라우터에게만 정보를 보내고, 그 라우터가 다른 모든 OSPF 라우터에게 전달하면 어떨까요? 모든 OSPF 라우터는 모든 라우팅 정보를 알 수 있지만, OSPF 트래픽은 훨씬 줄어들 것입니다. OSPF는 이를 위해 DR(Designated Router, 지정 라우터) 라는 개념을 사용합니다. 모든 OSPF 라우터는 DR과만 “full” 네이버 인접 관계를 형성하고, 다른 모든 라우터와는 형성하지 않습니다.
네트워크에 문제가 발생할 수 있으므로 DR의 백업이 필요합니다. DR이 다운되면 BDR(Backup Designated Router, 백업 지정 라우터) 이 역할을 대신합니다. 모든 OSPF 라우터는 DR과 BDR과만 full 네이버 인접 관계를 형성하고, 다른 모든 라우터와는 형성하지 않습니다. 효율적이죠?
DR/BDR은 멀티 액세스 네트워크에서만 사용합니다. 멀티 액세스 네트워크의 예로는 스위치를 사용하는 경우가 있습니다. 포인트 투 포인트 링크에서는 이렇게 할 필요가 없습니다. 상대편에 라우터가 하나뿐이므로 DR/BDR을 선출할 이유가 없습니다.
LSDB는 네트워크의 전체 그림이며, 네트워크 용어로 이것을 토폴로지(Topology) 라고 부릅니다.
LSDB를 나라의 전체 지도를 가지고 있는 것에 비유할 수 있습니다.
모든 라우터가 완전한 지도를 가지게 되면, SPF(Shortest Path First) 알고리즘을 사용하여 모든 목적지까지의 최단 경로를 계산할 수 있습니다. 가장 좋은 정보가 라우팅 테이블에 들어갑니다. 최단 경로를 계산하는 것은 내비게이션 시스템을 사용하는 것과 같습니다. 지도를 보고 목적지에 도달하는 모든 다른 방법을 살펴본 후, 가장 좋은 경로만 보여줍니다.
우리가 다룰 유일한 링크 상태 라우팅 프로토콜은 OSPF(Open Shortest Path First)입니다. IS-IS라는 또 다른 링크 상태 라우팅 프로토콜도 있습니다.
링크 상태 라우팅 프로토콜 소개는 여기까지 하고, OSPF가 어떻게 동작하는지 살펴보겠습니다.
OSPF 영역(Area)
OSPF는 영역(Area) 개념으로 동작하며, 기본적으로 항상 하나의 영역이 있습니다. 일반적으로 이것은 Area 0 또는 백본 영역(Backbone Area) 이라고 합니다.
그러나 위 그림처럼 여러 영역을 가질 수 있습니다. Area 1, 2, 3이 있고, 이 모든 영역은 백본 영역에 연결되어야 합니다. Area 1에서 Area 2로 가려면 반드시 백본 영역을 통과해야 합니다. Area 1에서 Area 2로 직접 가는 것은 불가능하며, 항상 백본 영역을 거쳐야 합니다! Area 3에서 Area 2로 가는 것도 마찬가지로 백본 영역을 지나야 합니다.
OSPF 라우터 유형
왜 영역을 사용할까요? 앞서 내비게이션 시스템에 대해 설명한 것을 기억하세요. 서울에서 부산까지의 경로를 계산하는 것은 같은 도시 내의 한 거리에서 다른 거리까지 계산하는 것보다 훨씬 오래 걸립니다. 이 계산을 SPF(Shortest Path First) 알고리즘이라고 하며, OSPF에도 동일하게 적용됩니다. 라우터는 영역 내의 네트워크 토폴로지에 대해서만 완전한 그림을 가지고 있습니다. 지도가 작을수록 SPF 알고리즘이 더 빠르게 동작합니다!
SPF 알고리즘은 70년대에 만들어졌고, OSPF는 80년대 어딘가에서 발명되었습니다. 당시에는 고주파수 멀티코어 CPU가 없었다는 것을 기억하세요.
그림의 오른쪽 상단에 “other routing domain”이라고 표시된 것이 있습니다. 이것은 다른 라우팅 프로토콜(예: RIP)을 실행하는 다른 네트워크일 수 있으며, RIP에서 OSPF로 또는 그 반대로 경로를 가져오거나 내보낼 수 있습니다. 이것을 재분배(Redistribution) 라고 합니다.
- 백본 라우터(Backbone Router): 백본 영역(Area 0)에 있는 라우터.
- ABR(Area Border Router, 영역 경계 라우터): 2개의 영역 사이에 있는 라우터 (예: Area 0과 Area 1 사이).
- ASBR(Autonomous System Border Router, 자율 시스템 경계 라우터): OSPF를 실행하면서 다른 라우팅 프로토콜(예: RIP)을 실행하는 다른 네트워크에 연결된 라우터.
OSPF는 RIP이나 EIGRP와 다르게 동작합니다. 우선 디스턴스 벡터(RIP)와 달리 링크 상태 프로토콜이며, 단순히 링크 상태 광고를 주고받는 것이 아닙니다. 먼저 라우터끼리 네이버가 되어야 하고, 네이버가 된 후에 링크 상태 광고를 교환합니다.
OSPF Hello 패킷
OSPF를 설정하면 라우터는 Hello 패킷을 보내기 시작합니다. 상대 라우터로부터도 Hello 패킷을 수신하면 네이버가 됩니다.
그러나 주의할 점이 있습니다. Hello 패킷에는 여러 필드가 있으며, 많은 필드들의 값이 일치해야 네이버가 될 수 있습니다. Hello 패킷의 항목들을 살펴보겠습니다:
- Router ID: 각 OSPF 라우터는 고유한 ID가 필요하며, 이는 활성 인터페이스 중 가장 높은 IP 주소입니다. 이에 대해서는 나중에 더 자세히 설명합니다.
- Hello / Dead Interval: X초마다 Hello 패킷을 보냅니다. X초 동안 네이버로부터 Hello 패킷을 수신하지 못하면 “dead”로 선언하고 더 이상 네이버가 아닙니다. 네이버가 되려면 양쪽의 값이 일치해야 합니다.
- Neighbors: 현재 네이버인 모든 라우터가 Hello 패킷에 명시됩니다.
- Area ID: 현재 속한 영역입니다. 네이버가 되려면 양쪽의 값이 일치해야 합니다.
- Router Priority: DR 또는 BDR을 결정하는 데 사용되는 값입니다.
- DR and BDR IP address: 지정 라우터와 백업 지정 라우터의 IP 주소입니다.
- Authentication password: OSPF에서 평문(Clear Text) 및 MD5 인증을 사용할 수 있습니다. 모든 패킷이 인증됩니다. 당연히 양쪽 라우터에서 같은 패스워드를 사용해야 합니다.
- Stub area flag: 영역 번호 외에도 OSPF에는 다양한 영역 유형이 있습니다. 네이버가 되려면 양쪽 라우터가 영역 유형에 동의해야 합니다.
OSPF Router ID와 루프백 인터페이스
각 OSPF 라우터는 활성 인터페이스 중 가장 높은 IP 주소를 기반으로 하는 고유한 Router ID가 필요합니다. 그러나 주의할 점이 있습니다. Cisco 라우터에서는 가상 인터페이스인 루프백 인터페이스(Loopback Interface) 를 생성할 수 있습니다. IP 주소를 설정할 수 있으며, 핑을 보내면 항상 응답을 받습니다.
OSPF 라우터에 루프백 인터페이스가 있으면, 가장 높은 활성 IP 주소가 아니더라도 이 IP 주소가 Router ID로 사용됩니다. 왜 그럴까요? 루프백 인터페이스는 라우터가 다운되지 않는 한 절대 다운되지 않기 때문입니다.
루프백 인터페이스를 사용하면 두 가지를 할 수 있습니다:
- 루프백 인터페이스의 IP 주소를 OSPF에서 광고합니다.
- 루프백 인터페이스의 IP 주소를 OSPF에서 광고하지 않습니다.
차이점은? 루프백 인터페이스를 광고하면 다른 라우터가 이 루프백 인터페이스의 IP 주소에 도달하여 핑을 보내거나 텔넷으로 접속할 수 있습니다. 광고하지 않으면 할 수 없습니다. 간단하죠.
OSPF Cost (메트릭)
모든 것이 잘 되었습니다. OSPF를 설정했고, 여러 라우터와 네이버가 되었고, 링크 상태 광고를 교환했습니다. 라우터들은 LSDB를 구축했고 네트워크의 전체 토폴로지를 알고 있습니다. 다음 단계는 SPF 알고리즘을 실행하여 목적지까지의 최단 경로를 찾는 것입니다.
메트릭(Metric) 을 기억하시나요? 메트릭은 라우팅 프로토콜이 최적 경로를 결정하기 위해 사용하는 값입니다. OSPF는 인터페이스의 대역폭을 기반으로 하는 Cost라는 메트릭을 사용합니다. 다음과 같이 동작합니다:
Cost = Reference Bandwidth / Interface Bandwidth
Reference Bandwidth는 Cisco 라우터의 기본값으로 100Mbit 인터페이스입니다. Reference Bandwidth를 인터페이스의 대역폭으로 나누면 Cost를 구할 수 있습니다.
예시: 100 Mbit 인터페이스의 Cost는?
- 100 Mbit / 100 Mbit = COST 1
예시: 10 Mbit 인터페이스의 Cost는?
- 100 Mbit / 10 Mbit = COST 10
예시: 1 Mbit 인터페이스의 Cost는?
- 100 Mbit / 1 Mbit = COST 100
Cost가 낮을수록 더 좋은 경로입니다.
SPF 알고리즘 예시
아래 그림을 보면, R1에서 SPF 알고리즘을 실행하여 목적지까지의 최단 경로를 찾고 있습니다. 어떤 경로를 사용할까요?
R2를 통한 경로의 Cost는 10+8+5 = 23입니다. 가운데 R3을 통한 경로는 5+5+5 = 15입니다. 아래쪽 경로의 Cost는 20+20+5 = 45입니다. 가운데 R3을 통한 경로의 Cost가 가장 낮으므로 이 경로를 사용합니다!
다른 시나리오를 살펴보겠습니다:
OSPF 로드 밸런싱
보시다시피 R2와 R3을 통한 경로의 Cost가 동일합니다 (5+5+5 = 15). 이 경우 어떻게 할까요? 경로가 동일합니다.
정답은 로드 밸런싱(Load Balancing) 입니다. 두 경로를 모두 사용하며 OSPF는 50/50으로 부하를 분산합니다. OSPF 로드 밸런싱에 대해 알아야 할 사항:
- 경로의 Cost가 동일해야 합니다.
- OSPF는 동일한 Cost의 경로를 라우팅 테이블에 추가합니다.
- 기본값은 최대 4개의 등가 경로(Equal-Cost Path) 입니다.
- 최대값은 32개의 등가 경로입니다 (플랫폼 및/또는 IOS 버전에 따라 다를 수 있음).
- 경로를 등가로 만들려면 링크의 “cost”를 변경합니다.
경로가 등가가 아닌 경우, 인터페이스의 Cost 또는 대역폭을 수동으로 변경하여 등가로 만들 수 있습니다.
IOS 15는 OSPF에 대해 최대 32개의 경로를 지원합니다.
OSPF 인증
OSPF 인증에 대해 마지막으로 알아야 할 것:
- OSPF는 MD5 인증을 지원합니다.
- OSPF는 평문(Clear Text) 인증을 지원합니다.
- 전체 영역 또는 단일 인터페이스에 대해 인증을 활성화할 수 있습니다.