1. Introduction
OSPF는 Open Shortest Path First의 약자로 IGP (Interior Gateway Protocol)이고 Link-state routing protocol이다.
OSPF는 RIP (Routing Information Protocol)와 비교되는데 RIP의 단점을 몇 가지 정리해보면 다음과 같다.
1. RIP는 15개 hop이 최대이다. 따라서, 15개 홉 이상이면 unreachable로 간주된다.
2. RIP는 OSPF와 다르게 VLSM (Variable Length Subnet Masks)을 처리할 수 없다.
3. 주기적으로 full-routing table을 브로드캐스팅 하는 자체는 network의 사이즈에 비례한 오버헤드가 된다.
4. 수렴속도가 늦다. network의 사이즈가 커질수록 동일한 routing 정보를 갖기 위해 필요한 시간이 오래걸리며 라우팅 정보의 불일치까지 나타날 수 있다.
5. Link에 대한 cost 또는 network의 지연정보와 같이 복합적인 정보로 routing을 결정하는 것이 아닌 hop count가 유일한 decision factor이다. 즉, 목적지까지 가는 link가 높은 bandwidth와 less delays의 경로가 있다 하더라도 hop count가 길면 해당 링크로 routing되지 않게된다.
6. RIP는 Area와 boundary같은 개념이 없는 flat network이다.
물론, 앞서 언급된 내용 중 일부는 RIP2에서 해결된 점도 존재한다. VLSM, authentication, 그리고 multicast routing update 등의 처리로 일부 보완이 되었지만 역시 hop count 기반으로 동작한다는 routing protocol의 태생으로 인해 규모가 있는 network에서 사용하기엔 제한사항이 많다.
2. Shortest Path Algorithm
OSPF에서 최단거리를 계산할 때는 Dijkstra algorithm이 사용된다. 우선 cost가 무엇인지 살펴보자.
cost는 일명 metric이라고 불리는 값으로 패킷을 보낼 때 해당 인터페이스의 overhead를 지칭하는 것이다. 쉽게 말해서, 높은 대역폭을 갖고 있는 interface는 적은 cost를 갖게 된다는 말이다.
그렇다면 shortest path tree는 무엇일까?
어떤 router를 기준으로 특정 목적지 네트워크로 도달하기 위한 cost 정보를 트리 형태로 구성해 갖고 있는 정보를 말한다. 직접 연결된 (directly connected network)의 metric은 0으로 계산되어 지고 그 이외의 network은 각각의 cost를 합한 형태의 값을 계산하여 갖고있다.
3. Areas and Border Routers
OSPF는 link-state routing protocol로 routing 정보에 변동이 있을 경우 즉시 모든 routers에게 전송한다. OSPF에서는 Area라는 개념을 통해서 link-state updates의 boundary를 설정한다. 이로 인해 routing 정보의 업데이트는 같은 area로 국한되고 area는 interface specific하다. ABR (Area Border Router)이라고 불리는 router는 여러 area들을 함께 연결하고다른 routing protocol이 함께 운영될 경우 ASBR (Autonomous System Boundary Router)로 역할이 분리된다.
4. Link-state Packets
OSPF는 Link-state routing protocol이다. 즉, OSPF는 link-state advertisements (LSA)라는 메시지를 라우터끼리 교환하는 형태로 운영된다. 이를 통해서 link-state database를 각각의 라우터는 구성하게 되는 것이다. 일반적으로 크게 Link-state packets은 다음 4가지를 볼 수 있으며 장비상에서는 sh ip ospf database라는 명령어로 확인할 수 있다.
1. Router Links - router links는 각 area에 속한 router의 interface state를 의미한다.
2. Network Links - network links는 DR (Designated Router)에 의해 생성되는 정보이다. 여러 multi-access segment에 연결된 라우터 정보를 의미한다.
3. Summary Links - ABR에 의해서 생성되는 정보로 서로 다른 area 간에 network rechability 정보를 공유하는데 사용된다. 일반적으로 모든 정보는 backbone router로 전송되어 거기서 다른 area 간의 network rechability를 공유한다.
4. External Links - 명칭에서도 짐작할 수 있듯이 ASBR에서 생성되는 정보이다. AS 외부에 있는 경로를 알려주기 위한 정보로 사용된다. (AS 외부로 가기위한 default route도 해당)
5. Enabling OSPF on the Router
OSPF를 사용하기 위해서 두 가지 과정이 필요하다.
1. Enabling an OSPF process: router ospf <process-id>
2. Assigning areas to the interfaces using the network: <network or IP address> <mask> <area-id>
ex)
router ospf 100
network 192.213.0.0 0.0.255.255 area 0.0.0.0
network 128.213.1.1 0.0.0.0 area 23
OSPF의 process-id는 숫자로 된 값이며 routers 간에 일치할 필요는 없다. network 명령어를 통해서 interface를 특정 area에 할당시킬 수 있다. mask는 wild cacrd bits를 포함하며 0은 match, 1은 do not care를 의미한다. 즉, 0.0.255.255는 첫 두 bytes에 대해 match되는 값만 고려한다를 표현한다. area는 단순 정수값으로 설정할 수도 있고 IP address처럼 dotted decimal format을 사용할 수 있다. 조금더 구체적으로 0 ~ 4294967295 또는 0.0.0.0 ~ 255.255.255.255의 범위가 되는 것이다. area라는 것은 IP address가 아니기에 0.0.0.0과 255.255.255.255 모두 사용이 가능하다.
6. OSPF Authentication
기본값으로 router는 OSPF를 이용해서 routing 정보를 교환할 때 별도의 authentication을 사용하지 않지만 조금더 secure한 routing 정보교환을 위해 아래 두 가지의 방법을 제공하고 있다.
1. Simple password: 동일한 area에 속한 router간 routing 정보를 교환하기 위해서 동일한 key를 설정하는 방법
ex)
interface Ethernet 0
ip address 10.10.10.10. 255.255.255.0
ip ospf authentication-key mypassword -> specific interface에 설정해야 되는 명령어
router ospf 10
network 10.10.0.0. 0.0.255.255 area 0
area 0 authentication
위의 명령어를 통해서 simple password authentication을 enable 시켰다. 하지만 이 방법은 패킷 캡춰프로그램을 이용하여 password를 얻을 수 있는 보안의 약점이 존재한다.
2. Message Digest: key-id와 key 두 가지를 라우터에 설정하는 방식으로 책에서는 cryptographic authentication이라 정의하고 있다. key-id와 key를 통해서 생성된 message disget는 OSPF의 패킷을 전송할 때 덧 붙여 전달되며 앞선 simple password 방식과는 다르게 password가 노출되지 않는 장점이 있다. 또한, OSPF에서 사용되는 password를 바꾼다 하더라도 uninterrupted transition을 가능케하는데 이는 새로운 key가 재설정되고 neighbor끼리 새로운 key를 채택했음이 확인될 때까지 동일 패킷을 계속 재전송한다.
ex)
interface Ethernet 0
ip address 10.10.10.10. 255.255.255.0
ip ospf message-digest-key 10 md5 mypassword (ip ospf message-disgest-key keyid md5 key)
router ospf 10
network 10.10.0.0. 0.0.255.255 area 0
area 0 authentication message-digest
7. The Backbone and Area 0
OSPF는 여러 areas가 구성된 환경에서 필수적으로 area 0를 가져야 하는데 이 것을 backbone이라고 부른다. 각 area에서 갖고 라우팅정보는 backbone으로 수렴해서 분배되는 형태로 디자인되어있기 때문에 area 0을 첫 구성 후 다른 area을 덧붙이는게 좋은 구성방법이다.
OSPF 동일 area (intra-area routes)는 O로 IP routing table에 출력된다. 또, 라우팅 정보가 다른 area에서 originate 한 경우 (inter-area or Summary routes)는 O IA라고 출력된다. 마지막으로 라우팅 정보가 다른 routing protocols 또는 다른 OSPF processes로 originate된 경우의 정보 (External routes)는 O E2 or O E1으로 출력된다.
8. Virtual Links
앞서 Area 0에 대해서 설명할 때 모든 areas는 물리적으로 backbone과 연결되어야 한다. 하지만
- Backbone과 물리적으로 구성을 할 수 없다면?
- 회사의 합병 등으로 인해 Area 0 두개를 합쳐야 하는 경우라면?
[Case 1 - Areas not physically connected to Area 0]
위의 이미지에서 보듯이 virtual links 기능을 통해서 Area 1은 Area 0와 logical path를 구성할 수 있다.
RTA#
router ospf 10
area 2 virtual-link 2.2.2.2
RTB#
router ospf 10
area 2 virtual-link 1.1.1.1
주의할 점은 RTA와 RTB 모두 Area 2에 대해 virtual link를 구성했다는 점이다. Area 2는 transit area로 사용된다. 따라서, 위와 같은 설정은 Area 1과 Area 0의 logical path를 설정할 수 있다.
[Case 2 - Partitioning Backbone]
위의 이미저처럼 서로 다른 Area 0가 연결되어야 하는 경우 역시 virtual link가 사용된다.
9. Neighbors
Neighbor는 Hello packet을 통해서 구성된다. Hello packets은 각 interface마다 주기적으로 IP multicast를 통해 보내진다. Neighbor로 구성되기 위한 정보가 일치함이 확인되면 즉시 neighbor로 인식된다.
1. Area-id: 두 라우터는 동일한 area에 있어야 한다. 물론, 각 interface역시 동일한 subnet에 속해야 한다.
2. Authentication: 동일한 password를 갖고 있어야 한다.
3. Hello and Dead Intervals: Hello packets을 주기적으로 보내면서 각 routers들이 keepalive한지 확인하고 DR을 선택 선출하는데도 사용된다. 만약 Hello packet과 Dead interval이 일치하지 않으면 neighbor를 맺을 수 없다. (Dead interval이란 Hello packets을 받지 못해 OSPF neighbor가 down이라고 간주되는 시간 간격을 의미)
4. Stub area flag: 두 라우터는 stub area flag가 일치해야 neighbor를 맺을 수 있다.
Reference site: www.cisco.com/c/en/us/support/docs/ip/open-shortest-path-first-ospf/7039-1.html
Referece site: www.ciscopress.com/articles/article.asp?p=2294214&seqNum=2#:~:text=The%20OSPF%20database%20contains%20all,presence%20of%20different%20LSA%20types. (OSPF LSA Type image)
'<개인공부> - IT > [Network&Security]' 카테고리의 다른 글
OSPF Virtual Link란? (0) | 2021.03.31 |
---|---|
OSPF 정리 #2 (0) | 2021.03.16 |
C9300 Stackwise system 요약 (0) | 2021.02.11 |
UDLD란 (0) | 2020.09.16 |
Etherchannel - Intro (PAgP, LACP) (0) | 2020.07.24 |