[Network] OSPF 라우팅 프로토콜 구축

 OSPF 라우팅 프로토콜


  • Open Shortest Path First 표준화된 라우팅 프로토콜로 모든 라우터 벤더 사에서 지원을 한다.
  • RIP 이나 EIGRP 설정이 다소 복잡하지만 게층화된 라우팅동작을 수행 (중대규모 네트워크에 사실상 가장 많이 활용한다.)
  • 라우팅 정보를 224.0.0.5/224.0.0.6의 멀티캐스트 주소를 사용하며 포트번호 89번을 사용한다.
  • OSPF는 경로 상태에 변화가 생기면 변화된 부분만 업데이트를 실시하며 업데이트할 내용이 없더라도 30분 간격으로 링크 상태 재생 기능을 통해 주기적으로 라우팅 업데이트 정보를 교환.

OSPF의 특징 

  • 목적지까지 비용(cost)이 가장 적게 소요되는 경로를 최적의 경로로 설정하는 링크 상태 라우팅 프로토콜 / 최단 경로 우선 알고리즘을 사용 
    • 비용:미리 정해진 기준 대역폭을 실제 대역폭으로 나눈 값
  • 패킷 유형 
    • Hello : OSPF가 설정된 이웃 라우터들과의 인접관계
    • DBD : 링크 상태 정보에 대한 db/데이터베이스 동기화
    • LSR :LINK-STATE-REQUEST => DBD를 받은 후 자신에게 없는 경로가 있을 경우 이경로에 대한 링크상태 정보를 요청
    • LSU :LINK-STATE-UPDATE=>LSR에 대한 응답 / 이웃 라우터와 경로 비용과 같은 상태 정보(LSA)를 전송
    • LSAck :LINK-STATE Ack=>수신확인 긍정응답.

OSPF의 LSA 유형




유형 1 : 라우터 LSA /코드값 o
유형 2 : 네트워크 LSA /코드값 o
유형 3 : 요약 LSA /코드값 o IA
유형 4 : 요약 LSA /코드값 o IA
유형 5 : 자율 시스템 외부 LSA /코드값 O E1 /OE 2
유형 6 : 멀티캐스트 OSPF LSA /코드값 없음
유형 7 : NOT-SO-STUBBY 영역에 대하여 정의 /코드값 ON1/ON2
유형 8 : BGP를 위한 외부 속성 LSA/코드값 없음




OSPF의 계층


  • OSPF는 계층적 구조로 되어 있다는 특징이 있는데 이계층적 구조의 핵심은 Area0 이라는 백본 영역을 반드시 경유하여패킷을 전달 하는 것이다.
    • 내부라우터 : R4 , R5 , R6
    • 경계라우터(ABR) : R1, R2, R3
    • 백본라우터 : R0
      • Area 0은 외부 인터넷과 연결 
      • Area 0은 연결되어 있는 ABR과 연결 
      • R4,R5,R6은 패킷을 전달하기 위해 ABR라우터를 통해 전달
  • 소규모 네트워크에서는 링크상태가 복잡하지 않지만 중대규모 네트워크 환경에서는 최적의 경로를 선출하기 위해 SPF게산이 증가 하게되고 , DB를 동기화 하기위핸 LSA패킷 플러딩 범위가 증가하여 전체적인 성능 저하되는 문제점이 발생된다.
    • 2계층 구조의 설계를 통해 LSA플러딩 범위를 줄여 DB를 축소하는 좀더 빠른 SPF알고리즘을 수행.


OSPF의 네이버 

  • 헬로우 패킷을 자신과 인접한 라우터에게 보낸 후 네이버 관계를 맞는다.
  • 인접성 (adjacency)을 맺기 위해서는 조건이 필요
    • 동열한 영역에 속해야한다.
    • 인접성을 맺는 라우터 간에는 동일한 hello 및 dead interval 값을 가져야 한다. (토폴로지 유형에 때라 자동으로 변경)
    • OSPF인증을 실시한다면 반드시 동일한 설정 내용으로 인증이 이루어져야한다.
  • OSPF는 자신과 네이버를 맺었다고 하여 무조건 라우팅테이블을 교환하지 않는다.
    • 네이버 관게를 형성하면서 라우팅 테이블을 교환하지 않는 네이버와 라우팅 테이블을 교환하는 네이버가 존재한다.(어드제이슨트 네이버)


OSPF 네이버 헬로우 패킷 헤더
  • 헬로우 주기 :헬로우 패킷 전송 주기
  • 옵션 : 인접 관계를 형성하기 위한 동작 옵션
  • 라우터우선순위 : DR/BDR 선출에 사용되는 라우터 우선순위
  • 데드 주기 : 헬로우 패킷을 보내는 라우터의 데드 시간을 정의
  • DR : DR라우터 ID
  • BDR :백업 DR라우터 
  • 네이버 목록 : 인접 관계를 형성한 라우터의 id 목록 


OSPF 토폴로지 셋팅 




OSPF 설정

  • Router ospf process-id
    • Router-id OSPF router-id
    • Network ip주소 와일드 카드 마스크 area area-id
  • Process –id : 1~65535 숫자 사이값  /as넘버이기 때문에 라우팅 정보를 주고 받을 때 반드시 일치 시킬 필요는 없다.
  • Network 명령어 뒤어 area –id 동일한 값을 사용하여 영역을 구성한다.
    • 동일한 area –id 를 사용하여 구성한 것을 단일 영역 
    • 2개이상 area-id를 사용하여 구성한것을 다중영역
  • 와일드 카드 마스크는 서브넷과 반대되는 개념 
    • 서브넷은 앞에서부터 1로 채우지만 와일드 카드 마스크는 중간에 1 0이 섞여 적용된다.(세밀하게 구현 가능)
  • process-id를 7로 area-id를 0으로 사용하는 단일 영역 ospf를 구성해보았다.





라우터 id

  • OSPF를 통해 경로 정보를 조고받는 라우터들 중에서 해당하는 라우터를 나타내는 고유의 값
  • 물리적인 인터페이스 보다는 논리적 인터페이스인 루프백 인터페이스를 라우터 id로 선언 하는데 그 이유 중 하나가 논리적 인터페이스는 라우터가 꺼지지 않는 한 다운될 염려가 없다 .
    • 물리적 인터페이스는 ip가 사용되기 때문에 주소가 변경되거나 다운이 걸릴 확률이 높아 주소 변경에 대한 오류가 있다.
  • 루프백 주소가 여러 개 있으면 높은 주소가 라우터 id로 사용되고 루프백 주소가 없으면 활성화 된 인터페이스 물리적 주소중 가장 높은 값을 가지는 주소를 자동으로 라우터 id로 사용 된다.



Debug ip ospf events

상세 동작을 살펴보기 위한 명령어
10초 간격으로 헬로우 패킷을 받고 있다.
네트워크 토폴로지 
포인트 투 포인트 /브로드캐스트 : 헬로 10/데드 40초
그외 : 헬로 30초 /데드 120초 



Show ip ospf neighbor

  • Ospf의 네이버 관계를 맺고있는 라우터를 확인
    • 네이버 id :이웃하는 네이버 라우터 id 
    • Pri : 우선순위 
    • State :상태 (full :정상)
    • Dead time : 헬로우 패킷 수신하기 위해 기다리는 시간 (40초)
    • Address : 직접 연결된 ip 주소 
    • Interface : 네이버 라우터로 가기 위한 출구 인터페이스


OSPF의 비용 (cost)

Ospf의 빠른길 찾는 경로는 비용이다.
작은 값을 우선으로 라우트를 형성한다.
최근 인터페이스 속도는 100M 이상으로 1값을 갖는다





ospf 스위치 및 라우터 설정


S1(config)#vlan 10
S1(config-vlan)#name sever_net
S1(config-vlan)#vlan 20
S1(config-vlan)#name mange_net
S1(config-vlan)#exit
S1(config)#int f0/1
S1(config-if)#switchport mode access
S1(config-if)#switchport access vlan 10
S1(config-if)#int f0/10
S1(config-if)#switchport mode access
S1(config-if)#switchport access vlan 20
S1(config-if)#int f0/24
S1(config-if)#wit
S1(config-if)#swi
S1(config-if)#switchport mode trunk
S1(config-if)#swi
S1(config-if)#switchport trunk allowed vlan 10,20
S1(config-if)#int vlan 20
S1(config-if)#
S1(config-if)#ip add 10.200.0.2 255.248.0.0
S1(config-if)#no sh
S1(config-if)#exit
S1(config)#ip de
S1(config)#ip default-gateway 10.200.0.1
S1(config)#do wr
S2#conf t
S2(config)#vlan 30
S2(config-vlan)#name student_net
S2(config-vlan)#vlan 40
S2(config-vlan)#name teacher_net
S2(config-vlan)#int f0/1
S2(config-if)#sw no a
S2(config-if)#switch
S2(config-if)#switchport mode access
S2(config-if)#switchport access vlan 30
S2(config-if)#int f0/11
S2(config-if)#switchport mode access
S2(config-if)#switchport access vlan 40
S2(config-if)#int f0/24
S2(config-if)#switch
S2(config-if)#switchport mode trunk
S2(config-if)#switchport trunk allowed vlan 30,40
S2(config-if)#int vlan 30
S2(config-if)#ip add 10.208.0.2 255.248.0.0
S2(config-if)#exit
S2(config)#ip de
S2(config)#ip default-gateway 10.208.0.1 255.248.0.0                                         
S2(config)#ip default-gateway 10.208.0.1 
S2(config)#do wr
S2(config)#
S2#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
S2(config)#vlan 30
S2(config-vlan)#name student_net
S2(config-vlan)#vlan 40
S2(config-vlan)#name teacher_net
S2(config-vlan)#int f0/1
S2(config-if)#sw no a
S2(config-if)#switch
S2(config-if)#switchport mode access
S2(config-if)#switchport access vlan 30
S2(config-if)#int f0/11
S2(config-if)#switchport mode access
S2(config-if)#switchport access vlan 40
S2(config-if)#int f0/24
S2(config-if)#switch
S2(config-if)#switchport mode trunk
S2(config-if)#switchport trunk allowed vlan 30,40
S2(config-if)#int vlan 30
S2(config-if)#ip add 10.208.0.1 255.248.0.0
S2(config-if)#exit
S2(config)#ip de
S2(config)#int vlan 30
S2(config-if)#no ip add
S2(config-if)#shut
S2(config-if)#
S2(config-if)#ip add 10.208.0.2 255.248.0.0
S2(config-if)#exit
S2(config)#ip de
S2(config)#ip default-gateway 10.208.0.1 255.248.0.0                                         
S2(config)#ip default-gateway 10.208.0.1 
S2(config)#do wr

댓글