라우터(Router) - OSPF

Network/Router 2015. 12. 13. 18:00

<OSPF 라우팅 프로토콜>

① Area라는 개념을 사용해서 전체 OSPF 네트워크를 작은 영역으로 나누어 관리한다.

 

② VLSM을 지원한다. OSPF는 Route summarization을 지원하기 때문에 여러 개의 라우팅 경로를 하나로 묶어주는 기능을 한다.

 

③ 네트워크 크기에 대한 제한이 없다.

 

④ 대역폭의 활용도가 높다. 네트워크에 변화가 있을 때만 정보가 날아가고 그것도

멀티캐스트로 날아가기 때문에 실용적이다.

 

⑤ 빠르고 효율적이고 정확한 경로 설정을 한다.


 


<OSPF 토폴로지>

OSPF는 토폴로지가 바뀌는 것에 따라 동작이 바뀐다.

 

① Broadcast Multiaccess : 네트워크에 두 개 이상의 라우터가 연결되는 경우로 하나의 메시지를 내보내면 네트워크 상에 있는 모든 녀석들이 정보를 받아볼 수 있는 구조이다.

 

② Point-to-Point : 네트워크에 한 쌍의 라우터만 존재하는 경우

 

③ NBMA(Non Broadcast Multi-access) : 네트워크에 두 개 이상의 라우터가 연결되지만, 브로드 캐스트 능력은 가지고 있지 않다. 프레임 릴레이나 X.25 네트워크가 이 경우에 해당한다.




 <OSPF의 정보 교환 방법>



1. 라우터 R1이 켜지면 이웃이 누구인지 모르기 때문에 모든 OSPF 라우터들에게 헬로 패킷을 보내는데, 멀티캐스트 주소 224.0.0.5를 이용해 헬로를 내보낸다.

 

2. 헬로를 받은 라우터들은 자신들의 이웃목록에 넣게 되는데, 이것을 Init과정이라 한다.

 

3. R1에게서 헬로 메시지를 받은 라우터들은 R1에게 답변으로 유니캐스트로 자신들의 정보를 보내게 된다.

 

OSPF 라우터들은 이웃을 찾고 정보를 교환해야 통신이 가능하기 때문에 이웃찾기가 중요하다. 이런 헬로 패킷은 10에 한 번씩 발생하고, 패킷의 정보는 Router ID, Hello/Dead interval, Area-ID 등을 보낸다. 특히, Router ID는 서로를 식별하기 때문에 중요한 의미를 갖는다. (통상 Router ID는 라우터의 주소중 가장 높은 IP를 사용한다.)

Router ID를 사용할 때는 안전성을 고려해 Loopback인터페이스를 사용할 수도 있다.

 

 


<OSPF 패킷 종류>

1. 헬로 패킷

OSPF 네이버를 형성하고 유지하는데 사용된다. 하지만 네이버 라우터에게서 일정 시간동안 헬로 패킷을 수신하지 못하면 네이버가 다운된 것으로 간주하고 네이버 관계를 없앤다.

헬로 패킷에는 라우터 ID, Area ID, 암호, 서브넷 마스크, 헬로 주기, Stub area flag, 라우터 우선순위, dead interval, DR, BDR, 네이버 리스트가 있다.

① 라우터 ID : OSPF라우터를 구분할 때 사용하는데, 주로 루프백 인터페이스의 IP 혹은 각 인터페이스 IP중에 가장 높은 IP가 설정된다.

② Area ID : 인터페이스가 소속된 OSPF Area ID를 표시

③ 암호 : 라우팅 정보를 송수신 할때, 인증을 하는 경우에 사용되는 암호

④ 서브넷 마스크 : 인터페이스의 서브넷 마스크를 표시

⑤ 헬로 주기 : 브로드 캐스트와 point to point 네트워크에서는 10초이고, 논 브로드 캐스트 네트워크는 30초이다.

⑥ Stub area flag : 스텁 에어리어임을 표시

⑦ 라우터 우선순위 : BR, BDR 선출할 때 사용되는 우선순위를 표시

⑧ Dead interval : Dead interval시간동안 헬로 패킷을 수신하지 못하면 네이더가 다운되는 것으로 간주.

⑨ DR : DR의 라우터 ID가 표시

⑩ BDR : BDR의 라우터 ID가 표시

⑪ 네이버 리스트 : 헬로 패킷을 송신한 라우터가 네이버라고 여기는 라우터의 라우터 ID들이 표시

 

2. DDP(Database Description Packet)

OSPF의 네트워크 정보를 LSA라고 부르는데, OSPF는 이런 LSA패킷들을 링크 상태 데이터베이스라는 곳에 저장해준다. DDP는 링크 상태 데이터베이스라는 곳의 정보를 요약해서 보내주는 패킷이다.

 

3. LSR(Link State Request)

상대 라우터에게서 DDP를 수신하였을 경우, 그 DDP에 자신에게 없는 내용이 있을 때, 상대 라우터에게 상세한 내용을 달라는 요청을 할 때 사용되는 패킷이다.

 

4. LSU(Link State Update)

상대 라우터에게서 LSR을 받거나 네트워크 상태가 변경되었을 때, 라우팅 정보를 전송할 때 사용하는 패킷이다.

 

5. LS ACK(Link State Acknowledgment)

OSPF패킷을 정상적으로 받았다는 메시지를 알려줄 때 사용.

 

한마디로 요약하자면, 평소에 헬로패킷을 OSPF가 설정된 라우터들끼리 보낸다. 어느날 한 라우터에게 DDP를 받게되었을 때, 자신의 정보와 다른 점을 발견한다면 그 해당 라우터에게 LSR을 보내 더 자세한 내용을 요청한다. 왜냐? 나도 다른 정보를 배워야하니까(OSPF의 네이버를 유지하기 위해!) LSR패킷을 받은 라우터는 자신의 자세한 링크 스테이트 데이터베이스 정보를 LSU패킷에 담아 전송한다. 전송받은 라우터는 다시 LS ACK를 보내 잘 받았다고 확인한다.

 

 

<OSPF DR, BDR>

OSPF의 모든 라우터들이 N:N으로 LSA를 교환하면 동일 네트워크에서 LSA 및 ACK가 많이 발생하게 된다. LSA를 하나의 대표 라우터에게만 보내고, 이 라우터가 나머지 라우터에게 중계하면 훨씬 효과적일 것이다. 그래서 DR과 BDR를 선출해 OSPF에서는 효율적인 트래픽이 교환된다.

DR이 되기 위해서는 Priority가 높아야 한다. (맨 처음 디폴트 Priority는 1) 높으면 높을수록 더 좋은 값이다.

1. 라우터들은 헬로 패킷을 멀티캐스트로 하여 정보를 주고받아 DR과 BDR을 선출한다

(Priority 값이 같다면 IP주소가 높은 것이 선출된다)

2. 만약 DR과 BDR이 선출되었는데, 새로운 라우터가 접속한다면? 그 라우터가 더 높은 Priority 값을 갖고 있다면? → 그렇게 해도 DR과 BDR을 다시 선출하지 않는다.

3. DR이 다운되면 BDR→DR로 변경되고, BDR의 빈자리는 남아있는 라우터들의 Priority값을 비교하여 선출하게 된다.

 

<OSPF 구성 명령어>

router <ospf process-id>

network <address> <wildcard-mask> <area> <area-id>

ex)

router ospf 100

network 150.100.1.0 0.0.0.255 area 0

 

※ OSPF에서는 보다 확장성 있는 라우팅 업데이트를 위해서 전체 영역을 작은 area로 나누어 그 안에 있는 라우터들끼리만 우선 링크 정보를 업데이트 하고 다른 area와는 ABR(문지기 라우터)가 정보를 전달하는 방식으로 운영된다. area0은 백본 area라 불리고, 모든 통신은 area 0을 지나야만 가능하다.



posted by 경원구