✔ OSPF(Open Shortest Path First)

- 표준 개방형 최단거리 우선 라우팅 프로토콜

- Link State 라우팅 프로토콜

→ 각 라우터가 전체 네트워크의 상태 판단

→ 제공받은 Link 상태를 가지고 직접 네트워크에서 Cost 계산

→ 링크 변화 즉시 정보를 update / Convergence Time(수렴시간)이 짧음

→ 변화된 정보만 다른 라우터에게 전달

- Distance Vector 라우팅 프로토콜이 아니므로 Split Horizon이나 auto summary가 적용되지 않음

- 최적의 경로를 계산할 때 SPF(Shortest Path First) or Dijkstra 를 이용하여 각 목적지까지의 최적 경로를 계산

- Metric은 cost 사용(10^8 / Bandwidth)

- Multicast를 사용하여 정보를 전달

 → 224.0.0.5 (DR,BDR이 DROTHER에게 전송할 때 사용)

 → 224.0.0.6 (DROTHER가 DR, BDR에게 전송할 때 사용)

- AD 값은 110

- 네트워크에 변화가 없으면 라우팅 업데이트를 하지 않는다

→ Hello Time 10초

→ 변화가 없더라도 30분 간격으로 LSR을 통해 주기적으로 정보 교환

- 데이터베이스 테이블을 생성하여 네트워크 정보를 관리

- 데이터베이스 테이블을 참조하여 최적의 경로를 산출

- LSA를 통해서 LSDB를 동기화

 

◾장점

- OSPF는 Area 단위로 구성되어 대규모 네트워크를 안정되게 운영할 수 있음

 → 특정 Area 에서 발생하는 상세한 라우팅 정보가 다른 Area로 전송되지 않아 큰 규모에서 안정되게 운영 가능

 → 재분배 설정을 통해 다른 Area로 전송 가능

- Stub 이라는 강력한 축약 기능

 → 기존 라우팅 프로토콜과 달리 IP 주소가 연속되지 않아도 Routing table의 크기를 획기적으로 줄일 수 있음

- 표준 라우팅 프로토콜

- Convergence time(수렴 시간)이 전반적으로 빠른 편

 

OSPF에서의 ID

- Process ID

 → 한 라우터 안에서만 존재

 → 한 라우터에서 OSPF를 여러개 구동시킬 때 각각을 구분하기 위해 사용

 → 1 ~ 65335

 

- Router ID

 → 다른 라우터끼리 서로를 구분하기 위해 사용

 → 라우팅 정보를 주고 받을 때 라우터를 식별하기 위해 사용하는 ID

 → 라우터끼리 주고 받은 정보를 바탕으로 동일 에어리어의 구성도를 그리고 다른 에어리어나 외부 네트워크가

     어느 라우터와 연결되어있는지를 파악함. 이때 라우터를 구분하기 위해 사용하는 것

 → 라우터 IP가 없으면 동작 안함

 → 만들어지는 우선순위

    1. router-id 명령으로 직접 지정해 주는 방식 : IP 주소 형식

    2. loopback 주소 중 가장 높은 값

    3. 라우터에 설정된 IP 주소 중 가장 높은 값

 

- Area ID

 → 영역 구별용

 → 광고할 영역, 번호가 일치해야 라우팅 테이블을 교환

 

OSPF Area

- OSPF 중대형 망에서 관리하기 편한 작은 영역(AREA)들로 나눠서 관리

- SPF 계산 빈도 감소

 → OSPF에서는 네트워크의 변화에 직접 영향을 받는 에이리어 내부에서만 경로 계산

 → ABR 라우터가 다른 에이리어로 광고

- OSPF는 복수 개의 Area로 나눠서 설정

- 규모가 작은 경우 하나의 Area만 사용해도 상관없음

- Area가 하나 일 경우 아무 번호나 사용해도 상관없지만, 두 개 이상일 경우 하나는 반드시 0으로 설정

- Area 0은 Backbone Area라고 부름(다른 Area는 Area 0과 물리적으로 연결되어야 한다)

  Backbon Router : Backbone Area에 소속된 라우터

  Internal Router : 하나의 Area에만 소속된 라우터

  ABR (Area Border Router) : 두 개 이상의 Area에 소속된 Area 경계 라우터

  ASBR (As Boundary Router) : OSPF 네트워크와 다른 라우팅 프로토콜이 설정된 네트워크를 연결하는 AS 경계 라우터 

 

구성 방법

(config)# router ospf [Process ID]
(config-router)# router-id [x.x.x.x]
(config-router)# network [네트워크 주소] [와일드카드 마스크] area [Area 번호]

# show ip protocols
# show ip ospf neighbor
# show ip ospf database

ospf는 루프백 주소를 호스트로 인식함
네트워크로 변경하는 명령어
(config)# int lo 0
(config-if)# ip ospf network point-to-point

 

OSPF 패킷

▫️ Hello

 - 인접 라우터 간에 이웃 관계를 형성하고 유지하는데 사용

 - Hello 패킷을 교환하여 안의 정보를 확인하고, 네이버 관계를 맺으며

   일정 시간 동안 Hello 패킷을 수신하지 못하면 네이버 관계 해제

 - Area ID, Stub 정보, Authentication, Hello / Dead Interval, Subnetmask, MTU, DR/BDR, Priority, 라우터 ID를 담고 있음

   1~ 5번까지 정보가 일치해야 네이버 형성 가능

 

▫️ DBD

 - Database Description Packet

 - 링크 상태 데이터베이스에 있는 LSA들을 요약하는 정보

 - LSA들을 교환하기 전에 자신의 링크 상태 데이터베이스에 있는 LSA 목록을 상대 라우터에게 알려주기 위해 사용

 - OSPF는 네트워크 정보를 LSA (Link State Advertisement)라 부르는데

 - 자신이 만든 LSA와 이웃으로부터 받은 LSA를 DBD에 저장

 

▫️ LSR

 - Link State Request

 - neighbor에게 전송받은 DBD에 자신의 DBD 정보가 없는 네트워크가 있다면

 - 해당 정보를 요청할 때 사용

 

▫️ LSU

 - Link State Update

 - 상대 라우터에게 LSR을 받거나, 네트워크 상태가 변했을 경우 해당 정보를 전송할 때 사용

 

▫️ LS Ack

 - Acknowlegement

 - DBD, LSR, LSU 패킷을 수신하면 ACK를 사용하여 수신했음을 알림

 - LSU 패킷을 전송했는데 LSA 패킷을 수신하지 못하면 16번 재전송, 그래도 못 받으면 네이버 관계 해제

 

OSPF가 라우팅 테이블을 만들고 유지하는 과정

1. 라우터 간 Hello 패킷을 주고받아 네이버 및 Adjancent 네이버 관계 구성

- OSPF는 모든 네이버간 라우팅 정보를 교환하지 않음

- 라우팅 정보를 교환하는 네이버를 어드제이션트 네이버라고 함(인접 관계에 있다)

2. 어드제이션트 네이버끼리 라우팅 정보를 교환, 각 라우터들은 전송받는 LSA를 링크상태 데이터베이스에 저장

3. LSA 교환이 끝나면 최적경로를 계산하고 라우팅 테이블에 저장

 

OSPF 상태 변화

▫️ Down

- OSPF 라우터가 네이버 라우터와 어떤 정보도 교환하지 않은 상태

- OSPF가 설정되고 헬로 패킷을 전송하지만 다른 라우터한테 받지 못한 상태

- Dead Interval 동안 헬로 패킷을 못 받은 상태

 

▫️ Init

- 자신은 Hello 패킷을 수신했지만 송신은 하지 않은 상태

- Hello 패킷을 수신했지만 수신받은 내역에서 자신의 Router-ID 가 없는 상태

 

▫️ Two-Way

- Hello 패킷 송/수신이 완료된 상태

- 네이버와 쌍방향 통신이 이루어진 상태

- DR/BDR 선출

 

▫️ Exstart

- 두 라우터 간에 마스터/슬레이브 관계가 수립

- Router-ID가 큰 라우터가 마스터 (마스터 라우터가 DBD를 먼저 전송함)

 

▫️ Exchange

- DBD 패킷을 교환

- DBD 패킷을 교환 후, 업데이트 내용이 없으면 Full State 진입

- 업데이트를 받아야 한다면 자신에게 없는 정보를 LSR에 보관 후 Loading으로 전환

 

▫️ Loading

- LSR 패킷을 사용하여 자신에게 없는 링크 정보에 대한 세부 정보 요청

 

▫️ Full(Full Adjacency State)

- 라우팅 정보 교환이 끝난 상태

- 어드제이션트 라우터들의 링크 상태 데이터베이스 내용이 모두 일치

- OSPF 장애가 생기거나 비정상적인 라우팅 상태가 되면 Down으로 돌아감

 

OSPF Metric

- 출발지에서 목적지까지의 모든 메트릭 값을 더함 ( Cost )

- Bandwidth 값을 기초로 함

- 대역폭은 넓을수록 값이 증가하고 빨라짐 → 메트릭 값은 낮아짐

- cost가 가장 낮은 경로가 최적경로로 선출

- ospf는 cost값을 고려하여 최적의 경로를 선택하기에 속도가 빠를수록 그 경로를 선택할 확률이 높다

- cost = 기준 대역폭 / 실제 대역폭 ( 비용 계산 시 소수점 이하는 전부 버린다. 만약 1 미만일 경우 1로 계산)

 

※ 각각의 링크당 거리 비용

→ 10 Mbps = Cost 10

→ 100 Mbps = Cost 1

→ T1(1,544 Mbps) = Cost 64

→ 만약, 거리 비용이 1보다 낮게 나오면 1로 계산

ex) 1 Giga, 10 Giga = 1

 

(config-if)#  ip ospf cost [cost 값] : 로드 밸런싱을 위해 cost 값 변경

 

OSPF DR/BDR/DROTHER

- BMA 네트워크에서 정보교환을 효율적으로 하기 위해 대표, 부대표 라우터 선출

※ BMA(Broadcast Multi Access) 네트워크 : 라우터들이 이더넷으로 연결된 네트워크,

    멀티 캐스트 통신도 브로드캐스트 통신처럼 동작한다

 

▫️ DR(Designated Router)

 - BMA 네트워크에서 하나의 라우터가 DR로 선정

 - DR은 모든 라우터와 인접 관계를 맺음

 - 모든 지역 라우터의 정보를 가진 LSU 패킷을 보냄

 

▫️ BDR(Backup Designated Router)

 - DR이 장애가 생겼을 때를 대비해 선정되는 라우터

 - DR과 같은 특성을 가지고 있지만 LSU 패킷을 보내지 않음

 - DR이 일정 시간 동작을 하지 않으면 BDR이 DR이 되고, BDR은 새로 선출됨

 

▫️ DROTHER

 - DR과 BDR이 아닌 라우터

 

 

◾ DR/BDR 선출 절차

 1. 우선순위(priority)가 높은 라우터가 DR, 그다음이 BDR

 2. Router-ID가 가장 큰 라우터가 DR, 그 다음이 BDR

 3. DR/BDR이 선출되면 더 높은 우선순위의 라우터가 추가되더라도 변동 없음(재선출 안 함)

 4. DR이 다운되면 BDR이 DR이 되고, BDR은 새로 선출

 

 ※ Priority 변경 - Hello 패킷이 나가는 인터페이스에 적용 Router(config-if)# ip ospf priority [number]

 

 ※ OSPF 프로세스 재시작

 Router# clear ip ospf process

 

※ DR BDR 확인

# show ip ospf neighbor

# show ip ospf database

LSA ( Link State Advertisement) 타입

- OSPF LSU 패킷을 통해 전달되는 링크 상태 정보 (show ip ospf database)

▫️ Type 1 : 라우터 링크 엔트리 (Router Link States) 

 - 라우터 LSA라고 부름, 모든 OSPF 라우터가 만듦

 - OSPF가 설정되면 자신의 모든 인터페이스와 메트릭 값 등 정보를 다른 라우터들에게

   전송할 때 사용, 동일 영역 내의 모든 라우터들에게 전송

 

▫️ Type 2 : 네트워크 링크 엔트리 (Net Link States)

 - 네트워크 LSA라고 부름, DR이 만듦

 - 영역 내에서만 플러딩 되고 이를 통해 학습된 경로는 "O"로 표기됨

 

▫️ Type 3 : 요약 네트워크 링크 엔트리 (Summary Net Link States)

 - 네트워크 요약 LSA라고 부름, ABR이 만듦

 - 다른 영역의 정보를 영역 내부로 알려줄 때 사용

 - 백본 영역에 걸쳐서 다른 ABR로 플러딩

 - 타입 3 LSA를 통해 학습된 경로 정보는 "O IA"로 표기됨

 

▫️ Type 4 : 요약 ASBR 링크 엔트리 (Summary ASBR Link States)

 - ASBR 요약 LSA라고 부름, ASBR이 만듦

 - ASBR의 라우터 ID와 메트릭 값을 영역 내부로 알려줄 때 사용하는 LSA - ABR 라우터가 ASBR 라우터의 위치를 알려     줄 때 - 타입 4 LSA를 통해 학습된 경로 정보는 "O IA"로 표기됨

 

▫️ Type 5 : 자율 시스템 외부 링크 엔트리 (Type-5 AS External Link States)

 - AS 외부 LSA라고 부르고 ASBR이 만듦

 - OSPF 외부의 네트워크에 대한 경로 정보를 알려주는 데 사용

 - 스텁 영역을 제외한 모든 영역으로 전송

 - 타입 5 LSA를 통해 학습된 경로 정보는 E1 or E2로 표기

 

▫️ Type 7 : 자율 시스템 외부 링크 엔트리

 - NSSA에 연결된 ASBR에 의해 생성

 - ASBR은 타입 7 LSA를 만들어 NSSA 내부로 전달하고,

   이를 수신한 ABR에 의해 타입 5로 변환되어 다른 영역으로 전달

 - 타입 & LSA를 통해 학습된 경로 정보는 N1 or N2로 표기

show ip ospf database
show ip ospf neighbor

Virtual Link (가상 링크)

- OSPF의 모든 에어리어는 반드시 백본 에어리어와 직접 연결되어 있어야 한다

  → 백본 에어리어를 통해 다른 에어리어의 정보를 주고받기 때문

- 백본 에어리어와 연결된 링크에 장애가 생기거나 회사 합병 등과 같은 특수한 경우 백본 에어리어와 직접

  연결하지 못하는 경우가 생김

  → 다른 영역의 정보를 받지 못하고 자신의 영역 정보를 주지도 못함

  → 임시적으로 가상 링크를 통해 다른 에어리어의 라우터를 통해 연결, 단 장시간 사용은 지양해야 함

- 가상 링크는 반드시 중계 영역을 지정해야하며 네이버 라우터의 ID를 사용하여 연결(ABR에서 사용)

- 장애 처리 등과 같이 잠시 사용하는 용도

 

▪️ 구성 방법

중계 지역을 통해 ABR 라우터 간 네이버 형성

R(config-router)# area [중계 지역] virtual-link [네이버 형성 할 라우터 ID]
show ip ospf virtual-link
show ip ospf neighbor // 가상링크 연결된 라우터는 interface에 OSPF_VL0라고 뜬다

 

◾스텁 및 특수 영역

- 여러 라우 프로토콜 운용하는 경우 모든 외부 네트워크의 정보를 유입하게 되면 데이터베이스 규모가 커지게 되고

  그에 따른 자원 사용량 또한 높아짐

- 높은 자원 요구량은 성능이 좋지않은 라우터의 성능 저하가 발생하고 그 결과 네트워크의 성능 저하가 발생함

→ 특정 영역에 외부 네트워크의 정보를 차단하여 라우터의 자원을 아낄수 있음(스텁 에어리어)

 

▪️ 스텁 에어리어 종류

1. Stub Area

- 내부의 라우터들이 ospf 내 경로 정보는 알고 있지만, 외부에 대한 경로 정보를 알지 못함

- 즉, 스텁 영역의 ABR은 영역 내로 전달되는 외부 네트워크 정보를 차단하고 (Type 4,5), 디폴트 라우트 정보를 전달함

 

▫️ Stub Area 설정

- 백본 영역과 가상 링크가 있는 영역은 Stub이 될 수 없음

- ASBR이 있는 영역은 Stub이 될 수 없으며 NSSA로 만들어야 함

- Stub Area에 있는 모든 라우터에 설정

R(config-router)# area [area-id] stub

 

2. Totally Stubby Area (완전 스터비 영역)

- 시스코에서 고안한 영역

- 외부 네트워크뿐만 아니라 다른 영역의 정보도 차단하고 (Type 3,4,5) 자신의 영역을 제외한 모든 네트워크에 대해

  디폴트 경로가 생성됨

 

▫️ Tottaly Stubby Area 설정

- ABR라우터에서만 no-summary 추가, 나머지는 stub 설정

R1(config-router)# area [area-id] stub no-summary
R2(config-router)# area [area-id] stub

 

3. NSSA (Not So Stubby Area)

- Stub 영역은 외부망과 직접 연결될 수 없지만 특수하게 외부망과 연결되어야 할 경우에 사용함

- 즉, Stub Area에 ASBR이 존재하는 경우 사용

- 스텁 및 완전 스터비 영역과 동일한 특성을 가지며 NSSA에 속한 ASBR이 Type 7 LSA 생성

 

▫️ NSSA 설정

- Stub Area의 특성을 가진 NSSA

R(config-router)# area [area-id] nssa
※ 다른 곳에 외부 네트워크가 더 존재하는 경우(ABR)
R(config-router)# area [area-id] nssa default-information-orginate

 

- Tottaly Stubby Area의 특성을 가진 NSSA

R(config-router)# area [area-id] nssa no-summary

'Network > Router' 카테고리의 다른 글

Authentication | 인증  (0) 2024.07.15
Redistribution | 재분배  (0) 2024.07.15
EIGRP  (0) 2024.07.15
RIP  (0) 2024.07.02
Static Routing & Default Routing  (0) 2024.06.25

+ Recent posts