본문 바로가기

About../Network

OSPF

 http://blog.naver.com/wowsg/10026535634

OSPF ( open shortest path first ) 링크 상태 라우팅 프로토콜

 - 현재 버전은 2버전, RFC2328에 규정, RFC ospf 로 검색해보면 더 최신의 내용도 나와있다.

    http://www.ietf.org/rfc/rfc2328.txt   => 여긴 공식 문서

    http://www.ietf.org/iesg/1rfc_index.txt => 여기서 ospf 검색해보자..

 - IP 패킷에서 프로토콜번호 89번 사용, 안정되고 다양한 기능으로 인해여 가장 많이 사용되는 IGP 이다.

 - 장점 : 안정된 네트워크 운영. 에어리어(area)단위로 구성되어 특정 에어리어에서 발생하는 상세한 라우팅 정보가 다른

에어리어로는 전송되지 않아 큰 규모의 네트워크에서도 안정된 운영을  할 수 있다. 또 스텁(stub) 에어리어라는

강력한 축약 기능이 있어 연속되지 않은 IP 주소를 사용하는 네트워크라도 라우팅 테이블의 크기를 획기적으로

감소 시킬수 있다.      

단점 : 설정이 비교적 까다롭다. 라우팅 정보계산 및 유지를 위해 자원이 많이 소요된다.

 - 간략소개 : OSPF 설정된 라우터간에 Hello 패킷을 주고 받아 네이버(neighbor) 및 어드제이션트 네이버(adjacent neighbor)

관계를 구성한다. OSPF 는 모든 네이버간에 라우팅 정보를 교환하는 것이 아니다. 라우팅 정보를 교환하는

네이버를 어드제이션트 네이버(adjacent neighbor)라고 한다.

 어드제이션트 네이버끼리 라우팅 정보를 교환한다. OSPF는 라우팅 정보를 LSA(link state advertisement) 라고

 한다. 각 라우터들은 전송받은 LSA 를 링크 상태 데이터베이스에 저장한다.

 LSA 교환이 끝나면 이를 근거로 SPF (shortest path first) 또는 디지크스트/다익스트라 (Dijkstra) 라는

 알고리즘을 이용하여

 각 목적지까지의 최적 경로를 계산하고 이를 라우팅 테이블에 저장한다.

이후 주기적으로 헬로 패킷을 전송하여 각 라우터가 정상적으로 동작하고 있음을 인접 라우터에게 알린다.

만약 네트워크 상태가 변하면 위의 과정을 반복하여 다시 라우팅 테이블을 만든다.

<< 위에 디지크스트 를 검색해보니 다익스트라 라고 한다. 관련 내용 바로 아래 그림으로 첨부한다 >>

===============================

   

OSPF 패킷

   

패킷타입      패킷 이름                      역활

 1               Hello                            네이버 구성 및 유지

 2               Database Descriprion     데이터베이스 내용 요약

 3               Link State Request         데이터베이스 상세내용 요청

 4               Link State Update           데이터베이스 업데이트

 5               Link State Ack                ACK 전송

   

   

@ Hello 패킷

   - 1. 라우터 ID : OSPF 도메인내에서 유일한 값을 가지며, OSPF 라우터 구분하는데 사용

   - 2. 에어리어 ID : OSPF 가 설정된 인터페이스가 소속된 OSPF 에어리어 ID 를 표시한다

   - 3. 암호

   - 4. 서브넷 마스크

   - 5. 헬로 주기 : Broadcast Point-to-point = 10초 // Non broadcast = 30초

   - 6. 스텁 에어리어 플래그(flag) : 스텁 에어리어임을 표시하는 필드

   - 7. 라우터 우선순위 : 멀티 엑서스 네트워크에서 DR, BDR 선출시 사용되는 우선순위(priority)를 표시하는 필드

   - 8. 데드 주기(Dead interval) : 이 기간동안 헬로 패킷을 수신하지 못하면 해당 네이버가 다운된 것으로 간주하는 시간이다.

         기본값은 헬로 주기의 4배로 브로드캐스트,포인트 네트워크에서는 40초, 논브로드캐스트에서는 120초이다.

   - 9. DR

   - 10. BDR

   - 11. 네이버 리스트 : 헬로 패킷을 송신한 라우터가 네이버라고 여기는 라우터의 라우터ID들이 표시된다.

          (Active Neighbor : ... 이렇게 나온다)

   

                               << 바로 아래는 프레임릴레이 point to point 구간이다 >>

  << 여기 아래는 프레임릴레이 Multi 구간이다 >>

     

   

@ DDP , DBD 패킷

   

 - OSPF 네트워크 정보를 LSA ( Link state advertisement ) 라고 부른다. OSPF 는 자신이 만든 LSA 및 네이버에게서 수신한

    LSA를 모두 링크 상태 데이터베이스(Link state database) 라고 하는 곳에 저장한다.

    DDP(database description packet) 는 OSPF 라우터의 링크 상태 데이터베이스에 있는 LSA들을 요약한 정보를 알려주는 

    패킷이다. 네이버끼리 LSA 를 교환하기 전에 자신의 링크 상태 데이터베이스에 있는 LSA 목록을 상대 라우터에게 알려주기

    위해서 사용한다. DDP를 DBD 패킷이라고도 한다.

     

@ LSR ( Link state request )

   

 - LSR 은 상대 라우터가 보낸 DDP를 보고, 자신에게 없는 네트워크 정보(LSA)가 있으면, 상세한 내용(LSA)를 요청할 때

    사용하는 패킷이다.

    그리고 아래에 link state advertisement type 가 무엇인지 지금은 모르겠다 --;

    ** 이제는 아주 잘 알겠다. 7가지 LSA 타입이 있으며 자세한 내용은 다음 글을 보시면 된다.

   

     

@ LSU (Link state update)

   

  - LSU 는 상대 라우터에게서 LSR을 받거나 네트워크 상태가 변했을 경우 해당 라우팅 정보를 전송할 때 사용하는 패킷이다.

     즉, LSU는 LSA 를 실어 나를때 사용하는 패킷이다.

   

   

   

   

   

@ LS ACK (Link state acknowledgment)

   

  - OSPF 패킷을 정상적으로 수신했음을 알려줄 때 사용한다. OSPF 는 DDP, LSR, LSU 패킷을 수신하면 반드시 LS ACK 패킷을

     사용하여 상대에게 정상적으로 수신했음을 알려야 한다.

   

   

   

       

첨부한 파일은 Dynamips/Dynagen 에서 캡쳐한 패킷 파일을 압축해놓은 것입니다.

   

   

/////////////////////////

   

   

OSPF 네이버 상태의 변화

 - 네이버 상태는 네이버가 없는 다운(down) 상태에서 네이버와 정보 교환을 끝낸 풀(full) 상태로 변한다.

     

   1. 다운(down)상태 : OSPF가 설정되고, 헬로 패킷을 전송하지만 아직 다른 라우터에게서는 헬로 패킷을 받지 못한 상태이다.

           또, 뒤에 설명할 풀(full) 상태에서 데드주기(dead interval)동안 OSPF 패킷을 받지 못해도 다운 상태가 된다.

   

   2. 어템트(attempt)상태 : NBMA 모드에서만 적용되는 상태이다. OSPF 에서 Neighbor 명령어를 사용하여 지정한 네이버에게서

           헬로 패킷을 수신하지 못한 상태를 의미한다. 또 , 해당 네이버와의 연결이 끊긴 경우에도 attempt 상태가 된다.

     

   3. 이닛(init)상태 : 네이버에게 헬로패킷을 받았으나 상대 라우터는 아직 나의 헬로 패킷을 수신하지 못한 상태이다. 이 경우

            상대방이 보낸 헬로 패킷의 네이버리스트에 나의 라우터ID 가 없다

   

   4. 투웨이(two-way)상태 : 네이버와 쌍방향 통신이 이루어진 상태이다. 즉 상대 라우터가 보낸 헬로패킷 내 네이버리스트에

            나의 라우터ID가 포함된 경우를 말한다. 멀티엑세스네트워크(broad,non-broad)라면 이 단계에서 DR과BDR 선출한다.

   

            DROTHER 라우터끼리는 서로 라우팅정보를 교환하지 않으므로, 즉, 어드제이션시(adjacent)를 맺지 않으므로 네이버

            상태가 투웨이(two-way)상태로 남게된다. 그러나 DR 또는 BDR 라우터들은 다음 단계인 엑스스타트단계로 진행된다.

            포인트 투 포인트 네트워크에서도 다음 상태로 진행된다.

   

   

               << 바로 아래는 DROTHER 라우터끼리의 상태 확인 r1,r4 >>

   

   

            투웨이상태에서 바로 DR/BDR을 선출하지 않고 모든 네이버에게 공정하게 DR/BDR로 선출되는 기회를 부여하기 위해서

            웨이트(wait)시간만큼 기다린다. 웨이트시간은 데드주기와 동일하다.

            따라서 L3스위치 등으로 이루어진 OSPF 네트워크에서는 OSPF 네트워크타입을 포인트투포인트 나 포인트투멀티포인트

            로 설정하여 DR/BDR을 선출하지 않게 해야 이 시간동안 기다리지 않고 바로 라우팅 정보를 교환한다.

      

            * 웨이트시간을 확인해보자.

   

   

   

   

   5. 엑스스타트(exstart)상태 : 어드제이션트(adjacent)네이버가 되는 첫 단계이다. 마스터라우터와 슬레이브라우터를 선출한다.

            라우터ID가 높은 것이 마스터가 된다. 또, 다음 단계에서 DDP(Database description packet) 패킷 교환시 사용하는

            DDP 패킷의 순서 번호(sequence number)를 결정한다.

   

   6. 익스체인지(exchange)상태 : 각 라우터는 자신의 링크상태데이터베이스에 저장된 LSA의 헤더(header)만을 DDP또는 DBD

            라고 부르는 패킷에 담아 상대방에게 전송한다. DDP패킷을 수신한 라우터는 자신의 링크상태데이터베이스와 내용을

            비교해 보고, 자신에게 없거나 자신의 정보가 더 오래된 것이면 상대방에게 상세한 정보를 요청하기 위하여

            링크상태요청리스트(link start request list)에 기록해 둔다. 상대로부터 DDP 수신이 끝난 후, 링크상태요청리스트에

            기록해 둔 것이 없다면, 바로 풀(full) 상태로 들어간다.

   

   7. 로딩(Loading)상태 : 상대로부터 DDP 수신이 끝난 후, 링크상태요청리스트에 기록해 둔 것이 있으면, 링크상태요청패킷

            (LSR)을 보내어 특정 LSA의 상세 정보를 보내줄것을 요청한다. 이 요청을 받은 라우터는 특정 LSA 전체 정보를 

            LSU에 담아 전송한다.

   

   8. 풀(full)상태 : 어드제이션트 라우터들간에 라우팅 정보교환이 끝난 상태이다. 이제, 어드제이션트 라우터들의 링크상태

            데이터베이스 내용이 모두 일치된다.

   

   ** 확인 : debug ip ospf adj

   

   ** 이후==>> 네이버의 라우팅 정보(LSA)교환을 끝낸 다음 5초를 기다린 후 라우팅 알고리즘 계산을 하고 그 결과를

                     라우팅 테이블에 기록한다. 알고리즘(SPF-shortest path first / 디즈크스트라-Dijikstra)

   

   @@ 동일 네트워크의 ospf 에서 모든 인터페이스 ip ospf priority 0 설정하면 2way 상태에서 adj를 가지 않는다.

         즉 서로가 DROTHER로 만 된다.

   

   @@ DROTHER 라우터가 전송하는 업데이트 패킷의 목적지 주소는 224.0.0.6이다. 이를 수신한 DR 은 목적지 주소가

         224.0.0.5 로 된 업데이트 패킷을 이용하여 다른 라우터에게 해당 정보를 중계한다. DR/BDR은 자신의 라우팅 정보를

         전송할 때에도 224.0.0.5 를 목적지 주소로 설정한다.

         DROTHER 라우터는 목적지 주소가 224.0.0.5 인 패킷만 수신하고 

         DR/BDR 라우터는 목적지 주소가 224.0.0.5, 224.0.0.6 모두 수신한다.

   

   

 << 아래 그림파일은 debug ip ospf adj 로 직접 확인해본 내용이다 >>

   

Exstart 상태에서 Master , Slave 라우터를 선출하는것을 볼 수 있다.         

     

   

   

///////////////////////////////////////////

   

   

##네트워크 타입별 OSPF 설정##

   

네트워크타입             네이버  DR    헬로/데드주기   기본인터페이스

   

브로드캐스트             자동     선출    10/40             이더넷,토큰링,FDDI

   

포인트투포인트          자동     없음    10/40             포인트투포인트서브인터페이스, HDLC, PPP

   

포인트투멀티포인트    자동     없음    30/120            없음

   

논브로드캐스트          지정     선출    30/120            멀티포인트서브인터페이스, 프레임릴레이, ATM, X.25

   

   

@@ OSPF 네트워크타입은 달라도 네이버끼리 헬로와 데드주기는 반드시 같아야 한다.

      네이버간의 네트워크타입이 모두 DR을 선출해야하거나 모두 DR을 선출하지 않아야 한다.

   

@ OSPF 에서 각 인터페이스의 IP주소가 서브넷마스크가 32비트인 호스트 루트(host route)로 광고된다.

   

@ 부분 메시로 이루어진 포인트 투 멀티포인트 네트워크에서는 DR이나 네이버지정이 필요없다.

    즉 R1<-> R2 가 Full adj 이며 다시 R2 <-> R3 이 Full adj 이므로 라우터의 상호 프레임릴레이 mapping이 필요없다.

   

   

                  << 아래는 포인트 투 멀티포인트 네트워크에서 32bit로 광고되는것을 볼 수 있다>>

    

icrosoft Office OneNote 2007을 사용하여 작성했습니다모든 노트 및 정보를 한 곳에서 볼 수 있습니다.