본문 바로가기

IT Tech/Network

[네트워크] OSPF 정리 노트 #2 - OSPF의 연결

반응형



Protocol Field => 89
TCP 6, UDP 17



1. OSPF Hello Packet

라우터간에 Neighbor 관계를 맺기 위해 주고받는 패킷으로 자신은 누구인지, 어느 Area에 속해 있는지, 그리고 Hello 패킷은 얼마 간격으로 주기적으로 주고받아야 하는지 등과 같은 다양한 정보들이 포함되어 있다.




<OSPF General Header, 20B>




<OSPF Hello Format>





[Hello Packet의 내용]
Router ID
Loopback Address의 IP가 사용되고, Loopback Address가 설정되지 않았을 경우 인터페이스에 설정된 IP 가운데 가장 큰 값.

Hello/Dead Interval
Hello Interval은 10초, 죽었다고 판단하기까지 기다리는 시간인 Dead Interval 40초
Hello Packet은 이웃이 맺어진 후에 Keepalive 역할.
OSPF 네트워크 타입이 달라도 네이버끼리 Hello/Dead 주기는 반드시 같아야 한다.

Neighbor
Neighbor의 Router ID

Area ID
자신이 속한 Area의 ID

Router Priority
이 값으로 DR/BDR 선출하며 수동으로 조절이 가능하다.

DR IP Address
Designated Router IP Address

BDR IP Address
Backup DR로 DR에 문제가 발생했을 때 기능을 인계

Authentication Password
인증과 관련된 정보로 설정되었을 경우 상호 유효한 패스워드를 입력.

Stub Area flag
Stub Area에 속하는 라우터는 모두 이 Flag가 설정되어야 한다.







2. OSPF 초기 연결 과정

Down State
- OSPF가 실행되기 전 상태

Init State
- OSPF를 실행하고 있는 인접한 라우터를 파악하는 단계.
- Multicast 주소 224.0.0.5로 Hello Packet을 전송
- Hello Packet을 받은 라우터는 보낸 라우터의 Router ID를 Neighbor Table에 등록한다.

2-Way State
- 최초로 Hello 패킷을 보낸 라우터가 자신의 Router ID가 포함된 Hello 패킷을 다시 받게 되면 이 패킷을 보낸 라우터의 Router ID를 자신의 Neighbor Table에 저장합니다. 이웃 성립!!

Exstart State
- Neighbor 관계를 맺은 이후 실제 라우팅 정보를 교환하기 이전의 작업.
- 누가 먼저 정보를 전송할 것인지에 Router ID를 보고 Master/Slave 관계를 정하고 Master로 선정된 라우터가 정보전송을 시작한다. (Router ID가 산술적으로 큰게 Master가 됨)
- DBD(DataBase Description, DB요약본)을 교환하기 전 단계로 Ethernet 환경에서 각 라우터는 DR로 선출된 라우터와 Adjacency를 맺어야 한다.

Exchange State
- DBD(DDP)를 서로 교환함.
(처음부터 정보 자체를 교환하기보다는 이러한 요약정보를 먼저 교환함으로써 네트워크에 미치는 영향도 최소화할 수 있다.)
- Ethernet 환경이라면 DBD는 DR과 Adjacency를 맺은 라우터간에 교환됨.

Loading State
- 각자 가지고 있는 데이타베이스를 교환하는 단계
- DBD를 받은 라우터가 자신의 DB와 비교하여 추가해야할 내용이 잇다면 LSR(Link-State Request) 패킷을 보낸다.
- LSR을 받은 라우터는 해당 정보를 LSU(Link-State Update) 패킷에 실어 응답한다.
- LSU 응답 패킷을 받은 라우터는 LSAck(Link-State Acknowledge)을 전송한다.

Full State
- Neighbor 관계를 맺은 라우터 사이에 각자의 Topology Database가 완전이 일치하는 단계.
- 각 라우터는 이 정보를 바탕으로 SPF 알고리즘을 통해서 라우팅 테이블을 만든다.



3. DR and BDR

OSPF를 더욱 가볍고 효율적으로 만들어 주는 역할을 한다.
DR(Deginated Router)는 Ethernet과 같은 Multiaccess 구간에서 특별한 역할을 수행하는 라우터이고, BDR(Backup DR)은 DR이 정상적으로 작동하지 않을 때 DR의 기능을 이어 받는다.

DR이 없다면 모든 라우터들은 각각 서로 정보를 주고 받아야하므로 매우 혼잡하고 비효쥴적이다.





[DR/BDR 선출과정]
-  라우터가 최초로 Hello 패킷을 보낼 때 각자 자신의 IP Address를 DR 필드에 심어서 보낸다.

-  Hello 패킷을 수신한 라우터는 DR필드의 주소를 자신의 IP Address와 비교해서 더 크다면 자신의 IP Address를 채워서 보낸다.

- 이러한 과정을 반복하게 되면 결과적으로 Multiaccess 구간의 Hello 패킷에는 값이 가장 큰 IP Address가 들어가 있게 되고 이 라우터가 DR이 된다.

- 일단 DR과 BDR이 선출되면 그 후에 더 큰 IP Address를 갖는 라우터가 해당 네트워크에 설치된다 하더라도 DR이나 BDR이 되지 못한다.

- DR이 장애가 발생하여 BDR이 DR의 Hello 패킷을 일정 시간동안 받지 못하면 BDR은 자신이 지금부터 DR이라고 선언한 후 DR의 역할을 수행한다.

- BDR이 DR이 되면 다음 차선의 IP Address가 BDR이 되고, 이때 장애 복구가 끝난 DR은 다시 DR이 되지 못한다.


[참고 1]
DR과 BDR의 선출은 자동화된 시스템에 따라 이루어진다. 수동으로 조절하여 선출과정에 영향을 미칠 수도 있지만, 그 이익은 그리 크지 않다. 단, 시스템 성능이 낮은 라우터가 DR이 되지 않도록 IP Address를 설정할 때 한번쯤 생각해보자.


[참고 2]
OSPF가 동작하기 위해서는 네이버간 네트워크 타입이 모두 DR을 선출해야하거나 모두 DR을 선출하지 않아야 한다.

Ethernet 네트워크와 Point-to-Point 네트워크는 라우팅 정보를 교환할 수 없다.
반면에 Point-to-Point 네트워크와 Point-to-MultiPoint 네트워크는 헬로와 데드 주기만 맞추어추면 동작한다.








4. DR과의 Adjacency

- DR이 선출되면 DR은 자기의 인근 라우터들과 Adjacency를 맺는다.
Neighbor 관계가 Hello 패킷을 통해서 인접한 라우터를 인지하는 것이라면 Adjacency는 DR과 인근 라우터간 토폴로지 데이터베이스 정보를 동기화시키는 것이라 할 수 있다.

- DR과 Adjacency를 맺은 라우터들은 서로의 데이터베이스를 일치시키기 위해 DBD 교환한다.
- DBD는 최신의 정보인지 판단할 수 있는 Sequence Number가 들어 있다.
- Sequence Number를 보고 최신이라면 해당 정보를 갖고 있는(DR일 가능성이 높음) 라우터에게 완전한 형태의 테이터베이스를 요청한다.
- 요청을 받은 라우터는 이를 수락하고 해당 정보를 전달한다.
- 데이타베이스를 전달받은 라우터는 전송한 라우터로 Ack를 보내고 동기화를 마무리한다.



5. Increment Update

토폴로지가 동기화되면 SPF를 실행해서 라우팅 테이블을 만드는데  Distance-Vector 라우팅 프로토콜과는 다르게 회선의 장애나 네트워크의 확장과 같은 변경이 발생할 때에만 토폴로지 데이터베이스를 수정하고 재 계산하여 라우팅 테이블을 만드는 방식.




[관련 글]


by MindEater





반응형