OSPF의 개요
ㆍ링크 상태 라우팅 프로토콜, IP 패킷에서 프로토콜 넘버 89번 사용.
ㆍSPF 알고리즘 사용하여 최적 경로 계산
ㆍAREA 단위로 구성
- 특정 Area 에서 발생하는 라우팅 정보가 다른 Area 로 전송되지 않는다.
ㆍ스텁(Stub) Area 를 사용하여 라우팅 테이블의 크기를 줄일 수 있다.
ㆍ Area 가 두 개 이상일 떄 반드시 하나는 Backbone Area가 되야 한다.
Neighbor를 맺고 Routing Table을 만드는 과정
ㆍOSPF는 물리적으로 직접 연결된 라우터간에 Hello 패킷을 송,수신하고 Hello 패킷에 포함된 Neighbor List에 자신의 Router-id가 포함되어 있으면 그 라우터와 Neighbor 및 Adjacent Neighbor를 맺는다.
ㆍAdjacent Neighbor 간에 라우팅 정보(LSA)를 교환하고 이를 LSDB에 저장한다.
ㆍLSDB 정보를 SPF 알고리즘을 실행하여 목적지까지 최적 경로를 계산하고 이를 Routing Table에 저장한다.
네이버 연동 기본 설정(IOS)
router ospf 1
router-id 1.1.1.1
network 1.1.1.1 0.0.0.0 area 1
network 1.1.12.1 0.0.0.0 areaa 1
ㆍprocess id
- 동일한 라우터에서 여러 개의 ospf process를 동작 시킬 때 상호 구분하기 위해 사용하며, process id는 라우터별로
다른 값을 가져도 된다.
ㆍrouter id
- ospf가 동작 중인 각 라우터를 구분하는 용도. (다른 라우터와 중복되지 않은 유일한 값을 사용해야 한다.)
- 변동되지 않는 IP 주소를 사용하는 것이 좋다. (Loopback address)
- OSPF에 포함시키지 않아도 된다.
- 지정하지 않으면 OSPF가 설정될 당시 동작중인 인터페이스의 IP 주소 중에서 자동으로 선택된다.
ㆍnetwork
- OSPF에 포함시킬 인터페이스의 ip 주소, wild mask, area를 지정한다.
- network와 wild card의 역할은 OSPF 프로세스에 포함시킬 인터페이스를 지정하기 위함.
ㆍ라우팅 테이블에 루프백 인터페이스의 서브넷 마스크는 /32로 표시되고, 원래의 서브넷 마스크 값으로 광고 하려면
ip ospf network point-to-point 설정을 추가한다.
OSPF Packet
패킷 타입 | 패킷 종류 | 역할 |
1 | Hello | 네이버 구성 및 유지 |
2 | DDP | 테이터베이스의 요약 정보 |
3 | LSR | 데이터베이스의 상세 내용 요청 |
4 | LSU | 데이터베이스 업데이트 |
5 | LSAck | DDP, LSR, LSU 패킷 수신시 Ack 응답 |
→ Hello packet
ㆍOSPF 네이버를 형성하고 유지하는데 사용.
ㆍRouter ID, Area ID, 암호, Subnet Mask, Hello/Dead Interval, Stub area flag, Router Priority, DR/BDR, Neighbor List 정보가 들어있다.
구분 | 설명 |
Router ID | OSPF 도메인내에서 유일한 값을 가지며, OSPF 라우터를 구분하는데 사용된다. 관리자는 해당 라우터가 가진 IP나 그렇지 않은 IP중 아무거나 Router ID로 설정이 가능하며, 미설정시에는 논리적 또는 물리적 IP중 높은 IP가 자동으로 Router ID로 설정된다. |
Area ID | OSPF가 설정된 인터페이스가 소속된 OSPF 에어리어 번호를 표시한다. OSPF에 포함된 인터페이스는 한 개의 AREA에 포함될 수 있으며, Neighbor로 설정된 링크 간에는 동일한 AREA에 포함되어야 한다. |
Authentication | OSPF 라우팅 정보를 송ㆍ수신하면서 인증을 하는 경우에 사용. 네이버 간 반드시 같은 인증 방식과 암호로 인증해야 한다. Neighbor 인증과 Area 인증이 있다. |
Network Mask | IP와 Subnet mask 정보로 Subnet mask는 Neighbor 간 동일해야 한다. (다른 경우 ping 이 될 수 있지만 neighbor는 맺지 못한다) |
Hello interval | Hello Packet을 송신하는 주기이다. 네트워크 타입에 따라 10초(point-to-point/Broadcast) 또는 30초이다. |
Stub Area Flag | LSDB의 간소화를 위해 존재하는 Stub Flag는 해당 Area에 포함된 모든 OSPF 라우터 상에서 동일하게 설정되어야 한다. |
Router Priority | 멀티 엑세스 네트워크에서 DR/BDR 선출 시 사용되며, 0~255 사이의 값으로 시스코 장비의 기본값은 ‘1’이다. 이는 라우터 단위가 아닌 인터페이스(네트워크) 단위로 운영된다. |
Dead interval | 이 기간동안 헬로 패킷을 수신하지 못하면 해당 네이버가 다운된 것으로 간주하는 시간이다. Hello interval의 4배이며, Hello 패킷을 수신하면 40초 또는 120초 이다. Hello interval 변경 시 자동으로 4배로 변경되지만 Dead interval만 개별로 변경이 가능하며, 이때는 Hello interval에는 영향이 없지만 네이버 간 동일하게 설정해야만 한다. |
DR | 멀티 액세스(Broadcast, NBMA) 환경에서 OSPF 라우팅 정보의 불필요한 재 업데이트를 막기 위해 사용되며, DR 라우터의 라우터 ID가 표시된다. |
BDR | DR에 대한 백업으로 평상시에는 아무런 역할이 없다. DR 다운시 DR의 역할을 이어받는 BDR의 라우터 ID. |
Neighbor List | 헬로 패킷을 송신한 라우터가 네이버라고 여기는 라우터의 라우터 ID들의 리스트이다. |
MTU | Maximum Transmit Unit의 약자로 한 번에 전송 가능한 최대 패킷 사이즈이다. 네이버 간 동일해야 한다. 이더넷의 경우 별도의 tag가 붙지 않는다면 일반적으로 1500byte 의 크기이다. 'ip mtu [ ]' 명령어로 MTU 사이즈를 변경할 수 있다. |
→ DDP(database description packet)
ㆍOSPF는 자신이 만든 LSA 및 Neighbor에게서 수신한 LSA를 모두 LSDB에 저장한다.
ㆍOSPF 라우터의 LSDB에 있는 LSA들을 요약한 정보를 알려주는 패킷이다.
ㆍOSPF 네이버 라우터 간에 LSA(full routing table)를 교환하기 전에 자신의 LSDB에 있는 LSA 목록(summary 정보)은 상대 라우터에게 알려주기 위해서 사용한다.
→ LSR
ㆍ상대 라우터가 보낸 DDP를 보고 자신에게 없는 네트워크 정보(LSA)가 있으면 상세한 네트워크 정보를 요청할 때 사용한다.
→ LSU
ㆍ상대 라우터로 부터 LSR을 받거나 네트워크 상태가 변했을 때 해당 라우팅 정보를 전송하기 위해 사용하는 패킷이다. 즉 LSA를 실어 나를 사용.
→ LSAck
ㆍOSPF 패킷(DDP, LSR, LSU)을 정상적으로 수신했음을 알려줄 때 사용.
OSPF 동작 방식
1. OSPF Neighbor
ㆍHello Packet을 이용해 인접 라우터와 물리적으로 직접 연결된 인터페이스를 통해 Neighbor 구성 o Hello Packet 전송 시 목적지 주소
- Point-to-Point / Broadcast NW : 224.0.0.5
- Non-Broadcast NW : 상대방 IP주소
2. DR, BDR, DROther
ㆍDR(Designated Router) : LSA 중계 역할 라우터
- DR이 수신하는 업데이트 패킷 목적지 주소 : 224.0.0.6
- DR이 송신하는 업데이트 패킷 목적지 주소 : 224.0.0.5 (DROther 수신)
ㆍBDR(Backup DR) : DR 장애 시 DR역할을 하는 라우터
- BDR이 수신하는 업데이트 패킷 목적지 주소: 224.0.0.6
ㆍDROther : DR/BDR이 아닌 라우터
- DROther가 수신하는 업데이트 패킷 목적지 주소: 224.0.0.5
- DROther가 송신하는 업데이트 패킷 목적지 주소: 224.0.0.6 (DR/BDR 수신)
ㆍOSPF NW 상에서의 불필요한 트래픽 부하를 줄이기 위해 DR/BDR에게만 LSA를 전송하고 DR이 DROther에게 중계
ㆍBroadcast, Non-Broadcast NW에서만 사용 (Point-to-Point NW에서는 DR/BDR 없음)
3. OSPF Adjacency
ㆍAdjacent Neighbor : OSPF 라우팅 정보(LAS)를 주고받는 Neighbor ◦ DR ↔ BDR/DROther
ㆍBDR ↔ DR/DROther
ㆍPoint-to-Point NW로 연결된 두 라우터
ㆍPoint-to-Multi-Point NW로 연결된 라우터들 ◦ Virtual-Link로 연결된 두 라우터
※ Adjacency Neighbor는 LSA 정보를 직접 상호교환하며, 단순 Neighbor는 정보 공유와는 상관없이 OSPF Hello Packet으로 발견된 모든 OSPF 라우터들이다.
4. OSPF Neighbor State
1) OSPF Neighbor의 Adjacency 관계 형성 과정
ㆍNeighbor 단계
[표 – Hello Packet을 이용해 OSPF Neighbor를 맺는 과정] | |
구분 | 설명 |
Down | OSPF가 설정되고, Hello 패킷을 전송했지만 아직 다른 라우터로부터 Hello 패킷을 받지 못한 상태, full 상태에서 Dead 주기 동안 Hello packet을 못 받은 상태 |
Attempt | (Non-Broadcast Multi Access 네트워크에서만 적용) Neighbor 명령어 설정 후 네이버에게서 헬로 패킷을 수신하지 못한 상태를 의미. |
Init | 네이버에게서 Hello 패킷을 받았으나 상대 라우터는 아직 나의 Hello 패킷을 수신하지 못한 상태, 상대방이 보낸 Hello 패킷의 Neighbor list에 나의 Router-id가 없다. |
2-Way | 네이버와 양방향 통신이 이루어진 상태이다. 즉, 상대 라우터가 보낸 헬로 패킷의 Neighbor list 에 나의 Router-id가 포함된 경우이다. 멀티 액세스 네트워크에서는 이 단계에서 DR과 BDR을 선출한다. DROTHER 라우터끼리는 라우팅 정보를 교환하지 않으므로 어드제이션시를 맺지 못하고 네이버 상태는 2-Way 상태이다. 브로드캐스트, 논브로드캐스트 네트워크에서는 2-Way 상태에서 바로 DR/BDR을 선출하지 않고 모든 네이버에게 공정하게 DR/BDR로 선출되는 기회를 부여하기 위하여 Wait 시간 만큼 기다린다. Wait 시간은 Dead 주기와 동일하다. |
ㆍAdjacency Neighbor 단계
[표 – Neighbor와 LSA를 교환하고, DB를 동기화하는 과정] | |
구분 | 설명 |
ExStart | Neighbor 간 DB 동기화를 위해 DBD 패킷을 사용해 Master/Slave 라우터를 선출한다. 라우터 ID가 높은 라우터가 마스터가 되며, 다음 단계에서 DDP 패킷 교환시 사용하는 DDP 패킷의 순서 번호를 결정한다. |
ExChange | 각 라우터 자신의 LSDB저장된 LSA의 Header만을 DDP 패킷에 담아 상대방에게 전송한다. DDP 패킷을 수신한 라우터는 자신의 LSDB의 내용과 비교해 보고, 자신에게 없거나 자신의 정보가 더 오래된 것이면 상대방에게 상세한 정보를 요청하기 위해 LSR List에 기록해 둔다. 상대로부터의 DDP 수신이 끝난 후 LSR List에 기록해 둔 것이 없으면, 바로 Full 상태가 된다. |
Loading | 상대로부터 DDP 수신이 끝난 후 LSR List에 기록해 둔 것이 있으면, LSR을 보내어 특정 LSA의 상세 정보를 보내줄 것을 요청하고, 이 요청을 받은 라우터는 특정 LSA 전체 정보를 LSU에 담아 전송한다. |
Full | Adjacency 라우터들 간에 라우팅 정보교환이 끝난 상태로, Adjacency 라우터들의 LSDB 내용이 모두 일치하는 상태이다. 라우팅 정보가 요약된 DDP와 라우팅 정보(LSA)가 들어있는 LSU 패킷을 모두 수신하면 상대 라우터와 동일한 라우팅 정보를 가지게 되고, Full 상태가 된다. |
OSPF Cost
OSPF의 메트릭을 Cost라고 부르며, 출발지부터 목적지까지의 각 인터페이스에서 기준 대역폭(reference bandwidth)을 실제 대역폭으로 나눈 값의 합계이다.
'네트워크 > OSPF' 카테고리의 다른 글
[OSPF] Default Route (0) | 2025.03.26 |
---|---|
[OSPF] 네트워크 축약(Summary) (0) | 2025.03.26 |
[OSPF] 타이머(Timer) (0) | 2025.03.26 |
[OSPF] passive interface (0) | 2025.03.26 |
[OSPF] 개념 2 (0) | 2025.03.24 |