반응형

1. OSPF(Open Shortest Path First) 란?

 - Link-state 라우팅 프로토콜

 - 최적의 경로를 계산할 때 SPF(Shortest path First) 또는 다익스트라(dijkstra) 알고리즘을 이용하여 각 목적지 까지의 최적 경로를 계산

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

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

   -> 224.0.0.5 (DR이 DROTHER에게 전송할 때 사용)

   -> 224.0.0.6 (DROTHER가 DR에게 전송할 때 사용)

 - AD값은 110을 사용함

 

2. OSPF의 장점

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

    -> 특정 area에서 발생하는 상세한 라우팅 정보가 다른 area로 전송되지 않아 큰 규모에서 안정되게 운영할 수 있음 (재분배 설정을 통해 다른 area로 전송 가능)

 2) Stub 이라는 강력한 축약 기능 

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

 3) 표준 라우팅 프로토콜

 4) Convergence time이 전반적으로 빠른편

 

3. OSPF의 네트워크 분류

 - 동작 방식 및 설정이 다름

 - 밑에 설명에는 없지만 Point-to-access 라는게 하나 더 있음

 1) Broadcast Multi Access

 - 하나의 Broadcast 패킷을 전송할 경우 동일 네트워크 상의 모든 장비에게 전달되는 네트워크를 Broadcast 네트워크, 하나의 인터페이스를 통해 다수의 장비와 연결된 네트워크를 Multi Access 네트워크라고 한다. (ex. Ethernet)

 - Broadcast나 Multicast 방식을 사용해 하나의 packet만 전송해도 연결된 모든 장비에게 전송 됨

 2) Non Broadcast Multi Access (NBMA)

 - Broadcast가 지원되지 않는 Multi Access 네트워크를 의미 함 (ex. ATM, X.25, Frame Relay)

 - 대부분 내부에 Virtual Circuit (가상회로) 방식을 사용

 - NBMA 에서는 Broadcast를 사용하여 전송할 경우 가상회로 하나당 하나씩 Broadcast packet을 전송해야 함

 3) Point-to-Point

 - 하나의 인터페이스와 연결된 장비가 하나뿐인 네트워크 (ex. HDLC, PPP, F/R의 sub interface 중 point-to-point)

4. OSPF의 패킷

 1) OSPF를 설정한 Router끼리 hello packet을 교환해서 Neighbor 혹은 adjancent Neighbor 를 맺음

    -> adjancent Neighbor : 라우팅 정보(LSA)를 교환하는 네이버

    -> LSA(Link State Advertisement) : OSPF 에서의 라우팅 정보

 2) adjancent neighbor인 라우터간 라우팅 정보(LSA)를 서로 교환하고 전송받은 LSA를 Link-state Database에 저장

 3) LSA를 모두 교환하고 SPF(Shortest Path First) 또는 dijkstra 알고리즘을 이용하여 각 목적지까지의 최적 경로 계산 후 Routing table에 올림

 4) 그 후에도 주기적으로 hello packet을 교환하면서 정상 동작중인지 확인 

 5) 네트워크의 상태가 변하면 다시 위의 과정을 반복하여 Routing table 생성

 

 - 종류로는 Hello, DBD, LSR, LSU, LSAck 패킷이 있다.

 ㄱ) Hello packet

    -> OSPF가 설정된 인접한 라우터간 네이버 관계를 형성하고 네이버 관계를 유지하는데 사용

    -> OSPF가 설정된 인터페이스로 서로 hello packet을 교환하여 네이버 관계를 맺음

    -> 네이버를 맺은 후에도 일정 주기(hello 주기)로 hello 패킷을 전송하고 정해진 주기 안에(dead 주기) 상대방에게 hello 패킷을 수신받지 못하면 해당 네이버에 문제가 생긴걸로 간주하고 네이버 관계를 끊음

    -> Router-id, area id, 인증 암호, 서브넷 마스크, hello 주기, dead 주기, stub area flag, 라우터 Priority, DR, BDR, 네이버 리스트의 정보를 가지고 있음

 

ㄴ) DBD packet

    -> OSPF의 네트워크 정보를 LSA(Link state advertisement)라고 부르는데, OSPF는 자신이 만든 LSA와 네이버에게서 받은 LSA를 Link state 데이터 베이스에 저장 함

    -> DBD는 OSPF 라우터의 link state 데이터 베이스에 있는 LSA들의 요약된 정보를 알려주는 패킷 임. 즉, 네이버간 LSA를 교환하기 전에 자신의 link state 데이터베이스에 있는 요약된 LSA 목록을 상대방에게 알려주기 위해서 사용함

 

ㄷ) LSR packet

    -> 네이버에게 전송받은 DBD에 자신의 link state 데이터베이스에 정보가 없는 네트워크가 있다면 그 네트워크에 대한 상제정보(LSA)를 요청할 때 사용되는 패킷 임

 

ㄹ) LSU packet

    -> 네이버에게 LSA를 요청받는 LSR을 받거나 자신이 알고 있는 네트워크의 상태가 변했을 경우 해당 라우팅 정보를 전송할때 사용하는 패킷 (즉, LSA를 실어나를 때 사용)

 

ㅁ) LSAck packet

    -> OSPF 패킷을 정상적으로 수신했음을 알려줄 때 사용 (DBD, LSR, LSU 패킷을 수신하면 LS ACK 패킷을 사용하여 수신받았음을 상대방에게 전달함)

 

6. OSPF의 네이버 테이블과 데이터베이스 테이블

 1) OSPF Neighbor Table

  - OSPF가 설정된 Router 간에 인접관계를 성립한 Neighbor 정보 저장, 주기적으로 Hello packet을 교환하여 Neighbor 관계 유지 여부 확인 (EIGRP의 Neighbor Table과 비슷)

  - show ip ospf neighbor

 2) OSPF Neighbor Table State

  - show ip ospf database

  - Down 상태에서 시작해서 Neighbor와 Routing 정보 교환을 끝내고 Full 상태로 완료

    (1) Down 상태 : OSPF가 설정되고 hello packet을 전송 했지만 아직 상대방의 hello packet을 받지 못한 상태

    (2) Init 상태 : 근접 라우터에게 hello packet을 받았지만 상대 라우터가 아직 내가 보낸 hello packet을 받지 못한 상태 (상대방이 전송한 hello packet 안의 네이버 리스트에 내 router-id가 없는 경우)

    (3) Two-way 상태 : Neighbor와 쌍방향 통신이 이루어진 상태, Multi Access 네트워크일 경우 이 단계에거 DR/BDR 선출 (서로 전송한 hello packet 안의 네이버 리스트에 서로의 router-id가 없는 경우)

    (4) Exstart 상태 : adjacent neighbor가 되는 첫번째 단계. master와 slave 라우터를 선출 (router-id가 높은 라우터가 master)

    (5) Exchange 상태 : 각 라우터가 자신의 Link-state database에 저장된 LSA의 Header만을 DBD packet에 담아 상대방에게 전송 (DBD packet을 수신한 라우터는 자신의 데이터베이스 내용과 비교한 후 자신에게 없거나 자신의 것보다 더 최신 정보일 경우 상대방에게 상세 정보(LSA)를 요청하기 위해 Link state request list에 기록하고, DBD packet 의 정보에 자신이 모르는 정보가 없다면 바로 Full 상태가 됨)

    (6) Loading 상태 : DBD packet 교환이 끝난 후 자신에게 없는 정보를 LSR packet 으로 요청 함. LSR을 요청받은 라우터는 정보를 LSU packet에 담아서 전송해준다.

    (7) Full 상태 : adjacent neighbor간 라우팅 정보 교환이 모두 끝난 상태

 

3) OSPF Database Table

 - 라우팅 업데이트 정보를 관리하는 테이블

7. OSPF의 동작 과정

 1) DR/BDR 선출

  (1) OSPF priority가 가장 높은 라우터가 DR로 선출 (다음으로 높은 라우터가 BDR로 선출)

  (2) OSPF priority가 동일할 경우 router-id가 높은 것이 DR, BDR로 선출

  (3) DR, BDR이 선출된 후에 더 높은 순위의 라우터가 추가되어도 DR, BDR이 변경되지 않는다. (단, 재부팅하거나 clear ip ospf process 명령어 사용 시 변경됨)

  (4) DR이 다운될 경우 BDR이 DR이 되고 다시 BDR을 선출함 (DR과 BDR이 아닌 라우터를 DROTHER라고 함)

    -> Ethernet, NBMA 등의 Multi Access 네트워크에 접속된 라우터가 1:1로 LSA를 교환할 경우 중복된 LSA와 ACK가 다수 발생

    -> 중계 역할을 하는 DR(Designated Router)를 선출하고, DR에 문제가 발생할 경우를 대비하여 Backup용으로 BDR(Backup DR)을 선출

    -> DR, BDR은 Broadcast 및 Non Broadcast 네트워크에서만 사용 (Point-to-Point 네트워크에서는 사용하지 않음)

 2) adjacent neighbor

 - OSPF에서 라우팅 정보(LSA)를 서로 교환하는 neighbor를 adjacent neighbor 라고 함

  (1) DR과 다른 라우터

  (2) BDR과 다른 라우터

  (3) Point-to-Point 네트워크로 연결된 두 라우터

  (4) Point-to-Multipoint로 연결된 두 라우터

  (5) Virtual-link로 연결된 두 라우터

 

 3) OSPF 메트릭

 - OSPF 메트릭은 cost라고 부름

 - 10^8/banddwidth(bps) = cost

 - 코스트 계산 시 소수점 이하는 전부 버리고, 1미만은 1로 계산

 - 인터페이스에서 명령어로 코스트를 변경할 수 있음 (ip ospf cost ?)

 

4) OSPF area

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

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

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

 - Area 0은 Backbone Area (다른 Area는 Area 0과 물리적으로 연결 되어야 함)

    -> Backbone Router : Backbone Area (Area 0)에 소속된 라우터

    -> Internal(내부) Router : 하나의 Area에만 소속된 라우터

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

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

8. OSPF 설정 방법

 1) 기본 설정

> router ospf [process-id]

   - 하나의 라우터에 여러개의 OSPF를 설정할 때 구분하기 위한 값이기 때문에 다른 라우터들끼리 달라도 상관이 없음

> router-id x.x.x.x

   - 최적의 경로를 누가 알려줬는지 파악하기 위해 필요, 일반적으로 가장 작은 IP를 설정하기 때문에 loop back 같은곳에 IP를 넣고 설정

> network [네트워크대역] [와일드마스크] area [area number]

 

 2) 축약 설정

 - ABR 또는 ASBR에서만 축약 가능

> router ospf [process-id]

> area [축약하고싶은 area number] range [N/W IP] [wildcard mask]

 

 3) 재분배

 - ASBR 에서 재분배 설정을 해야 함

 - 모두 통신이 되기 위해선 다른 프로토콜을 사용하는 인터페이스와 OSPF를 사용하는 인터페이스 모두 재분배를 해주어야 쌍방향 통신 가능

 ㄱ) OSPF가 EIGRP를 알 수 있도록 OSPF에 재분배 설정 방법

    -> router ospf [process-id]

    -> redistribute [반대편 프로토콜] [AS number] subnets

 ㄴ) EIGRP가 OSPF를 알 수 있또록 EIGRP에 재분배 설정 방법

    -> router eigrp [AS number]

    -> redistribute [반대편 프로토콜] [process number] metric [Bandwidth값] [delay값] [reliability값] [load값] [MTU값]

 ㄷ) 직접 연결된 대역대를 OSPF에게 재분배

    -> router ospf [process-id]

    -> redistribute connected subnets

 

반응형

+ Recent posts