반응형

 

 

 

 

📌 OSPF란

OSPF는 링크 상태 프로토콜이며, 링크는 라우터 인터페이스라고 볼 수 있습니다. 인터페이스에 대한 설명에는 인터페이스의 IP 주소, 마스크, 연결된 네트워크 유형, 해당 네트워크에 연결된 라우터 등이 포함됩니다.

OSPF는 Open Shortest Path First 알고리즘을 사용하여 모든 대상에 도달하기 위한 최단 경로를 구축하고 계산합니다. 최단 경로는 Dijkstra 알고리즘을 사용하여 계산됩니다.

  1. OSPF 초기 구성 시 또는 라우팅 정보의 변경으로 인해 라우터는 링크 상태 알림을 생성합니다. 이 알림은 해당 라우터에 있는 모든 링크 상태에 나타냅니다.
  2. 모든 라우터는 플러딩을 통해 링크 상태를 교환합니다. 링크 상태 업데이트를 수신하는 각 라우터는 링크 상태 데이터베이스에 복사본을 저장한 다음 다른 라우터에 업데이트를 전파합니다.
  3. 각 라우터의 데이터베이스가 완료되면 라우터는 모든 대상에 대한 최단 경로 트리를 계산합니다. 라우터는 최단 경로 트리, 대상, 관련 비용을 계산하기 위해 Dijkstra 알고리즘을 사용하고 해당 대상에 도달하기 위한 다음 홉을 사용하여 IP 라우팅 테이블을 형성합니다.
  4. OSPF 네트워크에서 링크 비용 또는 네트워크 추가 또는 삭제와 같은 변경 사항이 발생하지 않는 경우 OSPF는 자동으로 실행됩니다. 변경 사항은 링크 상태 패킷을 통해 전달되며, 최단 경로를 찾기 위해 Dijkstra 알고리즘이 다시 계산됩니다.

📌 OSPF 장점

  • OSPF를 사용하는 경우 홉 수에 제한이 없습니다.
  • VLSM를 적용하여 IP 주소 할당이 매우 유용합니다.
  • OSPF는 멀티캐스트를 사용하여 링크 상태 업데이트를 전송합니다. 이렇게 하면 OSPF 패킷을 수신하지 않는 라우터에서 프로세스 리소스 사용이 줄어듭니다. 주기적으로 업데이트가 전송되는 것이 아니라 라우팅 변경이 발생하는 경우에만 업데이트가 전송됩니다. 따라서 효율적인 대역폭이 보장됩니다.
  • OSPF는 라우팅 변경 사항이 주기적으로 전파되는 것이 아니라 즉시 전파됩니다.
  • OSPF는 트래픽을 로드 밸런싱합니다.
  • OSPF는 라우터를 영역으로 나눌 수 있습니다. 이를 통해 전체 네트워크에서 링크 상태 업데이트가 급증하는 것을 제한할 수 있습니다. 또한 경로를 수집하고 서브넷 정보의 불필요한 전파를 줄이는 메커니즘을 제공합니다.
  • OSPF는 다양한 비밀번호 인증 방법을 통해 라우팅 인증을 허용합니다.
  • OSPF는 태킹을 이용하여, BGP같은 외부 경로 프로토콜에서 들어온 경로를 추적할수 있습니다.

📌 OSPF 구성

R1(config)# router ospf <process-id>
R1(config)# network <network or IP address> <mask> <area-id>

예시)
RTA(config)# router ospf 100 
RTA(config)# network 192.168.0.4 0.0.255.255 area 0.0.0.0 
RTA(config)# network 192.168.0.3 0.0.0.0 area 23
  • OSPF process-id는 라우터에 로컬인 숫자 값입니다. 다른 라우터의 process-id와 일치하지 않아도 됩니다.
  • 동일한 라우터에서 여러 OSPF 프로세스를 실행할 수는 있지만 라우터에 추가 오버헤드를 추가하는 여러 데이터베이스 인스턴스를 생성하므로 권장되지 않습니다

📌 OSPF 인증

  • 라우터가 사전 정의된 비밀번호를 기반으로 라우팅 도메인에 참여할 수 있도록 OSPF 패킷을 인증할 수 있습니다.
  • 기본적으로 라우터는 Null 인증을 사용하며, 이로 인해 네트워크를 통한 라우팅 교환이 인증되지 않습니다. 두 가지 인증 방법이 있습니다. 단순 비밀번호 인증 및 Message Digest 인증(MD-5)입니다.
**단순 비밀번호 인증**
R1(config)# ip ospf authentication-key key  (특정 인터페이스 아래에 있음)
R1(config)# area area-id authentication. (이 값은 아래에 router ospf <process-id>있음)

예시1)
RTA(config)# interface Ethernet0
RTA(config)# ip ospf authentication-key mypassword
예시2)
RTA(config)# router ospf 10 network 10.0.0.0 0.0.255.255 area 0 
RTA(config)# area 0 authentication
**Message Digest 인증**
R1(config)# ip ospf message-digest-key key-id md5 key  (인터페이스 아래에 사용) 
R1(config)# area area-id authentication message-digest (아래에서 router ospf <process-id>사용)

예시1)
RTA(config)# interface Ethernet0
RTA(config)# ip ospf message-digest-key 10 md5 mypassword 
예시2)
RTA(config)# router ospf 10 network 10.0.0.0 0.0.255.255 area 0 
RTA(config)# area 0 authentication message-digest 

📌 OSPF 백본 및 Area 0

  • 두개 이상의 영역이 설정된 경우 꼭 Area 0이 존재해야합니다. 이를 백본이라고 합니다.
  • 백본은 모든 Area의 중앙에 있어야 합니다.
  • 백본은 모든 Area의 라우팅 정보를 주입하고 다른 Area로 전파합니다.
  • Area내에서 생성된 경로는 라우팅 테이블에서 O로 표시가되고, 다른 Area에서 시작되는 경로는 inter-area또는 라우팅 테이블에서 O IA로 표시 됩니다.
  • 다른 라우팅 프로토콜에서 시작되고 재배포를 통해 OSPF에 주입되는 경로를 external routes라고 말하고, 라우팅 테이블에서 O E1, O E1로 표시됩니다.

📌 가상 링크

  • 백본에 물리적으로 연결되지 않은 영역을 가상으로 연결
  • Area 0의 불연속성이 발생하는 경우 백본 패치

Area 0에 물리적으로 연결되지 않은 경우 가상 링크를 사용하여 다른 Area 라우팅 경로를 제공합니다.

가상 링크는 하나의 ABR이 백본에 연결된 공통 영역이 있는 두 ABR간 설정되어야 합니다.

가상 링크를 구성하려면 RTA, RTB 모두에게 설정
R1(config)# area <area-id> virtual-link <RID>

예시)
RTA(config)# router ospf 10 area 2 virtual-link 10.0.0.22 
RTB(config)# router ospf 10 area 2 virtual-link 10.0.0.11
  • OSPF를 사용하다보면 두 개의 다른 OSPF 백본 Area 0 이 있는 네트워크를 연결하려는 경우가 있습니다. 이런 경우 서로 존재하지않은 Area를 만들어서 서로 가상링크로 연결하여 사용한다. 다른 경우 몇가지 라우터 장애로 인해 백본이 둘로 분할되는 경우에 대비하여 이중화를 위해 가상 링크를 이용합니다.

📌 Neighbor

  • 세그먼트를 공유하는 라우터는 서로간에 neighbor라고 합니다. Neighbor는 Hello 프로토콜을 통해 맺어집니다. Hello 패킷은 멀티캐스트를 통해 각 인터페이스에서 주기적으로 전송됩니다.
  • 라우터는 인접한 Hello 패킷에 나열되는 즉시 인접한 라우터가 됩니다.
  • Area-id : 공통 세그먼트가 있는 두 라우터이며, 해당 인터페이스는 해당 세그먼트의 동일한 영역에 속해야 합니다. 인터페이스는 같은 네트워크 서브넷을 가져야합니다.
  • Authentication : OSPF를 사용하면 특정 Area에 대한 비밀번호의 설정이 가능합니다. 네이버가 되려는 라우터는 특정 세그먼트에서 동일한 비밀번호를 교환해야 합니다.
  • Hello and Dead Intervals : OSPF는 각 세그먼트에서 Hello 패킷을 교환합니다. 이는 세그먼트에서 라우터의 존재를 확인하고 멀티 액세스 세그먼트에서 지정 라우터(DR)를 선택하기 위해 라우터에서 사용하는 keepalive 형식입니다.
  • Hello 패킷은 라우터가 OSPF 인터페이스에서 전송하는 Hello 패킷 간의 시간(초)을 지정합니다.
  • Dead 간격은 인접 디바이스에서 OSPF 라우터의 Hello 다운을 선언하기 전에 라우터 패킷이 표시되지 않은 시간(초)입니다.
  • OSPF에서는 이러한 간격이 두 네이버 간에 정확히 동일해야 합니다. 이러한 간격이 서로 다른 경우 이러한 라우터는 특정 세그먼트에서 인접한 라우터가 되지 않습니다. 이러한 타이머를 설정하는 데 사용되는 라우터 인터페이스 명령입니다.
R1(config)# ip ospf hello-interval seconds
R1(config)# ip ospf dead-interval seconds
  • Stub area flag : 두 라우터가 인접 디바이스가 되려면 패킷의 stub area Hello 플래그에 동의해야 합니다. stub area은 이후 섹션에서 설명합니다. stub area의 정의는 인접한 라우터 선택 프로세스에 영향을 미칩니다.

 

 

 

 

 

 

참고자료

https://www.cisco.com/c/en/us/support/docs/ip/open-shortest-path-first-ospf/7039-1.html

반응형
반응형

 

 

 

 

 

 

 

 

 

 

RIP(Routing Information Protocol) 이란 ?

 

  • RIP(Routing Information Protocol)은 이동 할 수 있는 경로 수(hop count)를 metric하여 사용한다.
  • 목적지까지 가능 경로가 2개 이상 있을 경우, 목적지까지 도달하는데 필요한 라우터 개수가 가장 적은 쪽의 경로를 최적의 경로로 선출하여 라우팅 테이블에 등록하여 사용한다.
  • hop count란 경로를 통과할 수 있는 장치의 수입니다.
    같은 네트워크는 0의 metric을 가지고 다른 네트워크는 1로 계산하여 최대 15의 metric을 가진다.
  • 제한적인 경로 때문에 소규모 네트워크 환경이나 네트워크 변화가 적은 환경에서 사용하기 적합하다.

 

*metric이란?

목적지로 가는 경로가 여러개일 경우 알고리즘을 통하여 경로값을 계산해 메트릭이 낮게 나오는 경로를 최적 경로로 선출하는데 사용합니다. 

 

 

 

 

 

 

RIPv1 특징

  • 서브넷 정보가 없는 라우팅을 전송하는 Classful routing protocol
  • 인접라우터 간에 브로드캐스트 패킷(UDP / port : 520)을 사용하며 라우팅 정보를 교환한다.
  • 목적지에 대한 최적 경로가 2개 이상이면 라우터는 균등하게 패킷을 분산 처리한다.

 

 

RIPv2 특징

  • 서브넷 정보가 있는 라우팅을 전송하는 Classless routing protocol
  • 인접라우터 간에 멀티캐스트 패킷을 사용하여 라우팅 정보를 교환한다.
  • 다른 Dynamic Routing들과 같이 라우팅 정보를 인증할 수 있어 보안성이 강화된다.
  • 라우팅 정보를 교환할 때 tag를 설정할 수 있어 경로 관리가 편리하다.
  • 패킷에 Next-hop을 표시하여 불필요한 경로를 방지한다.

 

 

 

 

 

RIP Timer

주기적인 RIP 라우팅 업데이트를 할 때 시간 간격을 제어하거나,

네트워크 토폴로지가 변경될 때 RIP 경로를 갱신할 때 사용된다. 

 

  • Update Timer (0 ~ 30초)
    주기적으로 라우팅 업데이트할 때 사용되는 시간 (수신하면 0초로 리셋)
  • Invaild Timer (30 ~ 180초)
    라우터가 다른 라우터로부터 180초 이상 업데이트를 받지 못하는 경우 
    업데이트 하지 않는 라우터의 경로를 사용 할 수 없는 경로로 표시한다.
  • Hold Down Timer (180 ~ 360초)
    라우팅 업데이트를 수신하지 않는다.
  • Flushed Timer (0 ~ 240초)
    라우터가 다른 라우터로부터 240초 이상 업데이트를 받지 못하는 경우
    업데이트 하지 않는 라우터의 모든 라우팅 테이블 항목을 제거한다.

RIP Timer 설정하는 법

R0(config-router)#timers basic update invalid holddown flush

R0(config-router)#timers basic 50 100 150 300

 

 

 

 

 

 

 

Cisco Packet Tracer 프로그램을 사용하여 구성했습니다.

 

 

이제 RIPv1 설정 명령어를 알아봅시다.

 

모든 네트워크는 24비트로 넣어줬습니다.

 

 

R0 라우터

R0(config)#router rip

R0(config-router)#network 10.10.10.0

R0(config-router)#network 20.20.20.0

 

R1 라우터

R1(config)#router rip

R1(config-router)#network 20.20.20.0

R1(config-router)#network 50.50.50.0

R1(config-router)#network 60.60.60.0

 

R2 라우터

R2(config)#router rip

R2(config-router)#network 60.60.60.0

R2(config-router)#network 100.100.100.0

R2(config-router)#network 150.150.150.0

 

R3 라우터

R3(config)#router rip

R3(config-router)#network 150.150.150.0

R3(config-router)#network 200.200.200.0

 

 - 라우팅 설정 완료 후 - 

 

R0#sh ip route rip

20.0.0.0/8 is variably subnetted, 2 subnets, 2 masks

R 50.0.0.0/8 [120/1] via 20.20.20.2, 00:00:02, GigabitEthernet0/0

R 60.0.0.0/8 [120/1] via 20.20.20.2, 00:00:02, GigabitEthernet0/0

R 100.0.0.0/8 [120/2] via 20.20.20.2, 00:00:02, GigabitEthernet0/0

R 150.150.0.0/16 [120/2] via 20.20.20.2, 00:00:02, GigabitEthernet0/0

R 200.200.200.0/24 [120/3] via 20.20.20.2, 00:00:02, GigabitEthernet0/0

 

* R - RIP 라우팅 사용 

* 200.200.200.0/24 - 목적지 네트워크

* [120/3] via 20.20.20.2 - hop count 와 패킷이 나가는 인접한 인터페이스 IP

* 00:00:02 - 인접한 라우터와 라우팅 업데이트 후 시간

* GigabitEthernet0/0 - 패킷이 나가는 인접한 인터페이스

 

 

 

*RIPv1의 문제점

Classful routing protocol을 사용하여 서브넷 경계가 자동요약이 일어나기 때문에 서브넷 구간에 라우팅 문제가 발생할 수 있습니다.

 

*해결방법

Offset-list를 이용하여 경로로 들어오는 metric과 나가는 metric 을 증가시킨다.

R0(config-router)#offset-list [access-list-number | access-list-name] {in | out} offset [interface-type interface-number]

R0(config-router)#offset-list 98 in 1 fastEthernet 0/2

 

 

 

 

 

 

 

 

 

이제 RIPv2 설정 명령어를 알아봅시다.

 

 

모든 네트워크는 24비트로 넣어줬습니다.

 

기본 구성은 RIPv1 이랑 같습니다.

 

R0 라우터

R0(config)#router rip

R0(config-router)#version 2

R0(config-router)#no auto-summary

R0(config-router)#network 10.10.10.0

R0(config-router)#network 20.20.20.0

R0(config-router)#passive-interface gigabitEthernet 0/0  (Gi0/0으로 업데이트 하지 않는다.)

 

R1 라우터

R1(config)#router rip

R1(config-router)#version 2

R1(config-router)#no auto-summary

R1(config-router)#network 20.20.20.0

R1(config-router)#network 50.50.50.0

R1(config-router)#network 60.60.60.0

 

R2 라우터

R2(config)#router rip

R2(config-router)#version 2

R2(config-router)#no auto-summary

R2(config-router)#network 60.60.60.0

R2(config-router)#network 100.100.100.0

R2(config-router)#network 150.150.150.0

 

R3 라우터

R3(config)#router rip

R3(config-router)#version 2

R3(config-router)#no auto-summary

R3(config-router)#network 150.150.150.0

R3(config-router)#network 200.200.200.0

 

 

*RIPv1 문제를 해결하기 위한 RIPv2

Classless routing protocol을 사용하여 no auto-summary 명령어를 이용하여 자동요약을 해지시킨다.

Passsive-interface 명령어를 사용하여 불필요한 인터페이스로 RIP 업데이트 전송하는 패킷을 차단시킨다.

 

 

R0#sh ip route rip

30.0.0.0/8 is variably subnetted, 2 subnets, 2 masks

R 30.0.0.0/8 [120/3] via 20.20.20.2, 00:00:09, GigabitEthernet0/0

R 30.30.30.0/30 [120/3] via 20.20.20.2, 00:00:09, GigabitEthernet0/0

50.0.0.0/24 is subnetted, 1 subnets

R 50.50.50.0 [120/1] via 20.20.20.2, 00:00:09, GigabitEthernet0/0

60.0.0.0/30 is subnetted, 1 subnets

R 60.60.60.0 [120/1] via 20.20.20.2, 00:00:09, GigabitEthernet0/0

100.0.0.0/8 is variably subnetted, 2 subnets, 2 masks

R 100.0.0.0/8 [120/2] via 20.20.20.2, 00:00:09, GigabitEthernet0/0

R 100.100.100.0/24 [120/2] via 20.20.20.2, 00:00:09, GigabitEthernet0/0

150.150.0.0/16 is variably subnetted, 2 subnets, 2 masks

R 150.150.0.0/16 [120/2] via 20.20.20.2, 00:00:09, GigabitEthernet0/0

R 150.150.150.0/30 [120/2] via 20.20.20.2, 00:00:09, GigabitEthernet0/0

R 200.200.200.0/24 [120/3] via 20.20.20.2, 00:00:09, GigabitEthernet0/0

 

 

 

 

* MD5 해시

MD5 해시 함수를 이용하여 라우팅 정보를 인증할 수 있는 기능이 있습니다.

수신한 라우팅 정보가 인증이 맞지 않는다면 라우터는 수신한 라우팅 정보를 무시하고 폐기시켜 버립니다.

 

R0(config)# key chain (name-of-chain)

R0(config-keychain)# key (number)

R0(config-keychain-key)# key-string (string)

R0(config)#interface (type number)

R0(config-if)# ip rip authentication key-chain (name-of-chain)

R0(config-if)# ip rip authentication mode {text | md5}

 

 

R0(config)# key chain rip-md5 - 인접한 라우터간 Chain name은 달라도 됨

R0(config-keychain)# key 123123 - 인접한 라우터간 number 동일해야 함

R0(config-keychain-key)# key-string abcdef - 인접한 라우터간 string 동일해야 함

R0(config)# interface gigabitEthernet 0/0

R0(config-if)# ip rip authentication key-chain rip-md5

R0(config-if)# ip rip authentication mode md5

 

 

 

 

 

 

 

 

 

Loop 방지를 위한 기능들 

 

*트리거드 업데이트 방식

WAN처럼 대역폭이 제한된 네트워크 주기적으로 라우팅 업데이트 하는 대신, 변화가 있을 때 라우팅 업데이트를 한다.

(WAN Point-to-Point, 시리얼 인터페이스에서만 지원)

R1(config)#int serial 0/0
R1(config-if)#ip rip triggered

 

 

*루트 포이즈닝

특정 네트워크가 장애나 삭제된 것을 인식한 라우터가 인접 라우터에게 metic 16 정보를 광고하여 더 이상 도달할 수 없는 네트워크 정보를 업데이트 해준다.

R1(config)#interface ethernet 1/2

R1(config-if)#ip rip poison-reverse

 

 

*스프릿 호라이즌

라우팅 정보를 수신한 라우터는 전달해준 인터페이스 포트를 기록해두고 해당 인터페이스로는 동일한 라우팅 정보를 중복 전달하지 않는다.

R0(config)#interface gigabitEthernet 0/0

R0(config-if)#ip split-horizon

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

감사합니다 !!

 

자세한 내용은 CISCO 홈페이지에서 확인 가능합니다.

https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/iproute_rip/configuration/15-mt/irr-15-mt-book/irr-cfg-info-prot.html#GUID-B773C338-DC20-4DC0-9B21-F6E9FE0921BC

반응형

+ Recent posts