동적 경로 OSPF

oogu ㅣ 2022. 4. 26. 22:20

@ OSPF(Open Shortest Path First) -> 라우팅 업데이트 프로토콜 중 가장 많이 사용함

 - Link-State 알고리즘 -> 유용하다.
 - Classless Routing Protocol
 - VLSM, CIDR
 - IGP
 - SPF 알고리즘을 사용하는 개방된 라우팅 프로토콜
 - neighbor가 있다.

1. 라우터 아이디(Router-ID)

 - OSPF 라우터를 구분하기 위한 식별자
 - 형식 : IPv4 주소 형식

 1) 물리적인 인터페이스만 있을 경우, 그 중에 IP 주소가 가장 높은 IP 주소로 선출

F0/0 : 13.13.10.1
S1/0 : 13.13.12.1 <- 라우터 아이디 선출


 2) Loopback 인터페이스가 있을 경우, Loopback 중에 IP 주소가 가장 높은 IP 주소로 선출

F0/0 : 13.13.10.1
S1/0 : 13.13.12.1
Lo1 : 11.11.11.11 <- 라우터 아이디 선출

 - 단, Down 상태인 인터페이스 IP 주소로는 선출하지 않는다.


 3) 'router-id' 명령어를 이용한 수동 선출 -> 이걸로 실무에서 사용함

R1(config)# router ospf 1
R1(config-router)# router-id 1.1.1.1

Ex) R1에서 OSPF를 설정할 경우, 라우터 아이디는 어떻게 되는가?

R1#show ip int brief
Interface            IP-Address      OK? Method Status                      Protocol
FastEthernet0/0       unassigned    YES unset    administratively down       down    
FastEthernet0/1       13.13.23.3     YES DHCP    up                        up   
Serial1/0             211.241.22.1   YES maunal  down                      down 
Serial1/1             unassigned    YES unset    administratively down       down    
Serial1/2             unassigned    YES unset    administratively down       down    
Serial1/3             unassigned    YES unset   administratively down       down  
Loopback0           13.13.3.3      YES manual  administratively down      down       


2. OSPF 설정

Router(config)# router ospf [1~65535 Process-ID] -> 하나의 라우터의 여러개의 ospf를 실행시키기 위한 번호-> 번호가 다르면 다른 ospf 환경이다.
Router(config-router)# router-id x.x.x.x
Router(config-router)# network [로컬 네트워크] [와일드카드 마스크] area [area 주소]
Router(config-router)# passive-interface [Interface Name]

와일드카드 마스크 -> 서브넷 마스크를 리버스

 

                                  환경


@ R1

router ospf 1
 router-id 1.1.1.1
 network 13.13.10.0 0.0.0.255 area 0
 network 13.13.12.0 0.0.0.255 area 0
 passive-interface fa0/0

@ R2

router ospf 1
 router-id 2.2.2.2
 network 13.13.20.0 0.0.0.255 area 0
 network 13.13.12.0 0.0.0.255 area 0
 network 13.13.23.0 0.0.0.255 area 0
 passive-interface fa0/0

@ R3

router ospf 1
 router-id 3.3.3.3
 network 13.13.30.0 0.0.0.255 area 0
 network 13.13.23.0 0.0.0.255 area 0
 passive-interface fa0/0

R1,R2,R3#show run

R1,R2,R3#show ip protocol


R1,R2,R3#show ip ospf neighbor


R1,R2,R3#show ip route


R1#ping 13.13.20.1
R1#ping 13.13.30.1

R2#ping 13.13.10.1
R2#ping 13.13.30.1

R3#ping 13.13.20.1
R3#ping 13.13.10.1



3. OSPF 메트릭 -> 구간 별 cost 값을 다 더해서 계산함

 - Cost = 10^8 / Bandwidth

Ex) R1에서 '13.13.30.0/24'까지 OSPF 메트릭(Cost)은 얼마인가?

               1544k                             1544k                        100M
R1---------------------------R2--------------------------R3-----------------| 13.13.30.0/24
              cost = 64                         cost = 64               cost = 1

 64 + 64 + 1 = 129

R1#show ip ospf int s1/0

출력 : Process ID 1, Router ID 1.1.1.1, Network Type POINT-TO-POINT, Cost: 64

R2#show ip ospf int s1/0

출력 : Process ID 1, Router ID 2.2.2.2, Network Type POINT-TO-POINT, Cost: 64
R3#show ip ospf int fa0/0

출력 : Process ID 1, Router ID 3.3.3.3, Network Type BROADCAST, Cost: 1

R1#show ip route 13.13.30.0
Routing entry for 13.13.30.0/24
Known via "ospf 1", distance 110, metric 129, type intra area
  Last update from 13.13.12.2 on Serial1/0, 00:32:02 ago
  Routing Descriptor Blocks:
  * 13.13.12.2, from 3.3.3.3, 00:32:02 ago, via Serial1/0
      Route metric is 129, traffic share count is 1


4. OSPF 신뢰도


[참고] 경로 신뢰도

Connected 0
Static 1
EIGRP 90
OSPF 110
RIP 120
EIGRP External 170


5. OSPF 동작 과정

 - '06_OSPF 동작 과정.ppt' 참조
 - Down -> Init -> Two-Way -> Exstart -> Exchange -> Loading - Full
모르는사람보냄 서로 암     

Down
: 옆에 누가 있는지 모르고 보냄

Init
: 옆에 누가 있는지 알고 보냄

Two-Way
: 서로 알음

Exstart
: rid 값이 더 높은 애가 Master , 작은애가 Slave, 라우터 아이디를 보고 마스터 슬레이브를 선정

Exchange
: 라우팅 업데이트, 마스터가 데이터 베이스 테이블에 있는 요약된 link-state 정보(DBD)를 보낸다.

Loading - Full
: 마스터가 준 테이블 정보를 슬레이브가 받고 뭐가 없는지 비교 후 없는 정보(LSR)를 마스터에게 요청한다.
마스터가 주면(LSU) 데이터 베이스 동기화가 된다. -> Full



아래는 패킷 트레이서에서 안됨

R1#debug ip ospf adj
OSPF adjacency events debugging is on
R1#
R1#clear ip ospf process
Reset ALL OSPF processes? [no]: yes
R1#
*Mar  1 00:49:57.903: OSPF: Interface Loopback172 going Down
*Mar  1 00:49:57.903: OSPF: 1.1.1.1 address 172.16.1.1 on Loopback172 is dead, state DOWN
*Mar  1 00:49:57.907: OSPF: Interface FastEthernet0/0 going Down
*Mar  1 00:49:57.911: OSPF: 1.1.1.1 address 13.13.10.1 on FastEthernet0/0 is dead, state DOWN
*Mar  1 00:49:57.911: OSPF: Neighbor change Event on interface FastEthernet0/0
*Mar  1 00:49:57.915: OSPF: DR/BDR election on FastEthernet0/0 
*Mar  1 00:49:57.915: OSPF: Elect BDR 0.0.0.0
*Mar  1 00:49:57.915: OSPF: Elect DR 0.0.0.0
*Mar  1 00:49:57.919: OSPF: Elect BDR 0.0.0.0
*Mar  1 00:49:57.919: OSPF: Elect DR 0.0.0.0
*Mar  1 00:49:57.923:        DR: none    BDR: none 
*Mar  1 00:49:57.923: OSPF: Flush network LSA immediately
*Mar  1 00:49:57.927: OSPF: Remember old DR 1.1.1.1 (id)
*Mar  1 00:49:57.927: OSPF: Interface Serial1/0 going Down
*Mar  1 00:49:57.931: OSPF: 1.1.1.1 address 13.13.12.1 on Serial1/0 is dead, state DOWN
*Mar  1 00:49:57.931: OSPF: 2.2.2
R1#.2 address 13.13.12.2 on Serial1/0 is dead, state DOWN
*Mar  1 00:49:57.935: %OSPF-5-ADJCHG: Process 1, Nbr 2.2.2.2 on Serial1/0 from FULL to DOWN, Neighbor Down: Interface down or detached
*Mar  1 00:49:58.571: OSPF: Interface Loopback172 going Up
*Mar  1 00:49:58.575: OSPF: Interface FastEthernet0/0 going Up
*Mar  1 00:49:58.575: OSPF: Interface Serial1/0 going Up
*Mar  1 00:49:58.591: OSPF: Build router LSA for area 0, router ID 1.1.1.1, seq 0x80000001, process 1
*Mar  1 00:49:58.595: OSPF: We are not DR to build Net Lsa for interface FastEthernet0/0
*Mar  1 00:49:58.603: OSPF: 2 Way Communication to 2.2.2.2 on Serial1/0, state 2WAY
*Mar  1 00:49:58.603: OSPF: Send DBD to 2.2.2.2 on Serial1/0 seq 0x2A2 opt 0x52 flag 0x7 len 32
*Mar  1 00:49:58.627: OSPF: Rcv DBD from 2.2.2.2 on Serial1/0 seq 0x26DD opt 0x52 flag 0x7 len 32  mtu 1500 state EXSTART
*Mar  1 00:49:58.631: OSPF: NBR Negotiation Done. We are the SLAVE
*Mar  1 00:49:58.635: OSPF: Send DBD to 2.2.2.2 on Serial1/
R1#0 seq 0x26DD opt 0x52 flag 0x2 len 52
*Mar  1 00:49:58.675: OSPF: Rcv DBD from 2.2.2.2 on Serial1/0 seq 0x26DE opt 0x52 flag 0x3 len 72  mtu 1500 state EXCHANGE
*Mar  1 00:49:58.679: OSPF: Send DBD to 2.2.2.2 on Serial1/0 seq 0x26DE opt 0x52 flag 0x0 len 32
*Mar  1 00:49:58.739: OSPF: Rcv DBD from 2.2.2.2 on Serial1/0 seq 0x26DF opt 0x52 flag 0x1 len 32  mtu 1500 state EXCHANGE
*Mar  1 00:49:58.743: OSPF: Exchange Done with 2.2.2.2 on Serial1/0
*Mar  1 00:49:58.747: OSPF: Send LS REQ to 2.2.2.2 length 24 LSA count 2
*Mar  1 00:49:58.747: OSPF: Send DBD to 2.2.2.2 on Serial1/0 seq 0x26DF opt 0x52 flag 0x0 len 32
*Mar  1 00:49:58.815: OSPF: Rcv LS UPD from 2.2.2.2 on Serial1/0 length 184 LSA count 2
*Mar  1 00:49:58.819: OSPF: Synchronized with 2.2.2.2 on Serial1/0, state FULL
*Mar  1 00:49:58.823: %OSPF-5-ADJCHG: Process 1, Nbr 2.2.2.2 on Serial1/0 from LOADING to FULL, Loading Done
R1#
*Mar  1 00:50:03.971: OSPF: Rcv LS UPD from 2.2.2.2 on Serial1/0 length 100 LSA count 1
*Mar  1 00:50:04.327: OSPF: Build router LSA for area 0, router ID 1.1.1.1, seq 0x80000005, process 1
R1#
R1#undebug all
All possible debugging has been turned off
R1#



6. OSPF 라우팅 업데이트 및 변경 사항

 - 네트워크 추가 및 삭제될 경우, LSU 패켓을 통해서만 업데이트 실시
LSU로 알려줄 때 추가된 것 말고도 기존거 포함해서 보내준다. -> 같은 area 일 경우

같은 Area
: LSU로 알려줄 때 추가,삭제된 것 말고도 기존거 포함해서 보내준다.

다른 Area
: 추가,삭제된 내용만 보내준다.

7. Area 설계

 -다중 Area 설계
 - OSPF 광고 패켓 크기(LSU 패켓 크기)을 최소화하기 위해서 Area 설계를 실시한다.
 - 같은 Area 안에서는 전체 광고되지만, 다른 Area로는 추가/삭제된 정보만 광고한다.
 - Area 설계 방법 : 모든 Area는 Area 0을 경유하도록 설계해야 한다.

 Area 설계 약속
 - Area 0 = Backbone Area (모든 Area가 경유하는 Area)
 - ABR = Area 0과 Area X 사이에 있는 라우터
 - ASBR = 외부 네트워크 정보를 OSPF 환경으로 라우팅 업데이트하는 라우터



8. OSPF 테이블 유형

 1) 네이버 테이블

R1#show ip ospf neighbor 

Neighbor ID     Pri   State           Dead Time   Address         Interface
2.2.2.2              0   FULL/  -        00:00:30    13.13.12.2      Serial1/0

 

state가 full 이면 데이터베이스 동기화가 된 상태이다.

 2) 데이터베이스 테이블(Link-State Database = LSDB)

R1#show ip ospf database
            OSPF Router with ID (1.1.1.1) (Process ID 1)

                Router Link States (Area 0)

Link ID         ADV Router      Age         Seq#       Checksum Link count
1.1.1.1         1.1.1.1         1571        0x80000005 0x00b877  3
2.2.2.2         2.2.2.2         1509        0x80000007 0x003ed1  5
3.3.3.3         3.3.3.3         1495        0x80000005 0x00d71c  3

ADV Router가 광고를 했다 Link ID 라우터가  Link count개를

@ R3 Area 0 링크 - 3개

13.13.23.0/24
13.13.30.0/24
R2와 연결된 S1/1 주소 13.13.23.3 -> link state이기 때문에

@ R2 Area 0 링크 - 5개

13.13.12.0/24
13.13.20.0/24
13.13.23.0/24
R3와 연결된 S1/0 주소 13.13.23.2 -> link state이기 때문에
R1과 연결된 S1/1 주소 13.13.12.2 -> link state이기 때문에

@ R1 Area 0 링크 - 3개

13.13.10.0/24
13.13.12.0/24
R2와 연결된 S1/0 주소 13.13.12.1 -> link state이기 때문에


R1#show ip ospf database router -> 테이블 자세히 확인

            OSPF Router with ID (1.1.1.1) (Process ID 1)

                Router Link States (Area 0)

  LS age: 271
  Options: (No TOS-capability, DC)
  LS Type: Router Links
  Link State ID: 1.1.1.1
  Advertising Router: 1.1.1.1
  LS Seq Number: 80000006
  Checksum: 0xE351
  Length: 72
  Number of Links: 3

    Link connected to: another Router (point-to-point)
     (Link ID) Neighboring Router ID: 2.2.2.2
     (Link Data) Router Interface address: 13.13.12.1
      Number of TOS metrics: 0
       TOS 0 Metrics: 64

    Link connected to: a Stub Network
     (Link ID) Network/subnet number: 13.13.12.0
     (Link Data) Network Mask: 255.255.255.0
      Number of TOS metrics: 0
       TOS 0 Metrics: 64

    Link connected to: a Stub Network
     (Link ID) Network/subnet number: 13.13.10.0
     (Link Data) Network Mask: 255.255.255.0
      Number of TOS metrics: 0
       TOS 0 Metrics: 10


  LS age: 273
  Options: (No TOS-capability, DC)
  LS Type: Router Links
  Link State ID: 2.2.2.2
  Advertising Router: 2.2.2.2
  LS Seq Number: 80000007
  Checksum: 0x8064
  Length: 84
  Number of Links: 5

    Link connected to: another Router (point-to-point)
     (Link ID) Neighboring Router ID: 1.1.1.1
     (Link Data) Router Interface address: 13.13.12.2
      Number of TOS metrics: 0
       TOS 0 Metrics: 64

    Link connected to: a Stub Network
     (Link ID) Network/subnet number: 13.13.12.0
     (Link Data) Network Mask: 255.255.255.0
      Number of TOS metrics: 0
       TOS 0 Metrics: 64

    Link connected to: a Stub Network
     (Link ID) Network/subnet number: 13.13.20.0
     (Link Data) Network Mask: 255.255.255.0
      Number of TOS metrics: 0
       TOS 0 Metrics: 10

    Link connected to: another Router (point-to-point)
     (Link ID) Neighboring Router ID: 3.3.3.3
     (Link Data) Router Interface address: 13.13.23.2
      Number of TOS metrics: 0
       TOS 0 Metrics: 64

    Link connected to: a Stub Network
     (Link ID) Network/subnet number: 13.13.23.0
     (Link Data) Network Mask: 255.255.255.0
      Number of TOS metrics: 0
       TOS 0 Metrics: 64


  LS age: 1063
  Options: (No TOS-capability, DC)
  LS Type: Router Links
  Link State ID: 3.3.3.3
  Advertising Router: 3.3.3.3
  LS Seq Number: 80000004
  Checksum: 0x7682
  Length: 72
  Number of Links: 3

    Link connected to: a Stub Network
     (Link ID) Network/subnet number: 13.13.30.0
     (Link Data) Network Mask: 255.255.255.0
      Number of TOS metrics: 0
       TOS 0 Metrics: 10

    Link connected to: another Router (point-to-point)
     (Link ID) Neighboring Router ID: 2.2.2.2
     (Link Data) Router Interface address: 13.13.23.3
      Number of TOS metrics: 0
       TOS 0 Metrics: 64

    Link connected to: a Stub Network
     (Link ID) Network/subnet number: 13.13.23.0
     (Link Data) Network Mask: 255.255.255.0
      Number of TOS metrics: 0
       TOS 0 Metrics: 64


 3) 라우팅 테이블

R1#show ip route ospf
     13.0.0.0/24 is subnetted, 5 subnets
O       13.13.20.0 [110/65] via 13.13.12.2, 01:35:19, Serial1/0
O       13.13.23.0 [110/128] via 13.13.12.2, 01:35:29, Serial1/0
O       13.13.30.0 [110/129] via 13.13.12.2, 01:34:29, Serial1/0



9. OSPF 경로 유형

 - O : Intra-Area 경로, 같은 Area 네트워크
 - O IA : Inter-Area 경로, 다른 Area 네트워크
 - O E2 : External 경로, 외부 네트워크

R3(config)#int lo 1
R3(config-if)#ip address 100.100.1.1 255.255.255.0
R3(config-if)#int lo 2
R3(config-if)#ip address 100.100.2.1 255.255.255.0
R3(config-if)#int lo 3
R3(config-if)#ip address 100.100.3.1 255.255.255.0
R3(config-if)#
R3(config-if)#int lo 11
R3(config-if)#ip address 200.200.1.1 255.255.255.0
R3(config-if)#int lo 12
R3(config-if)#ip address 200.200.2.1 255.255.255.0
R3(config-if)#int lo 13
R3(config-if)#ip address 200.200.3.1 255.255.255.0
R3(config-if)#
R3(config-if)#router rip
R3(config-router)#version 2
R3(config-router)#no auto-summary
R3(config-router)#network 100.0.0.0
R3(config-router)#
R3(config-router)#router ospf 1
R3(config-router)#network 200.200.0.0 0.0.255.255 area 13
R3(config-router)#redistribute rip subnets
R3(config-router)#end
R3#show run

R1#show ip route ospf

 - O : Intra-Area 경로, 같은 Area 네트워크
 - O IA : Inter-Area 경로, 다른 Area 네트워크
 - O E2 : External 경로, 외부 네트워크

Intra-area : 3개

Inter-area : 3개

External-2 : 3개 

R1#show ip ospf database 
            OSPF Router with ID (1.1.1.1) (Process ID 1)

                Router Link States (Area 0) <- 같은 Area 정보, 같은 Area 안에 모든 라우터가 광고한 정보

Link ID         ADV Router      Age         Seq#       Checksum Link count
1.1.1.1         1.1.1.1         1253        0x80000006 0x00b678 3
2.2.2.2         2.2.2.2         1191        0x80000008 0x003cd2 5
3.3.3.3         3.3.3.3         785         0x80000008 0x00da13 3

                Summary Net Link States (Area 0) <- 다른 Area 정보 
Link ID         ADV Router      Age         Seq#       Checksum ABR(3.3.3.3)이 광고한 정보
200.200.1.1     3.3.3.3         780         0x80000001 0x008836
200.200.2.1     3.3.3.3         780         0x80000002 0x007b41
200.200.3.1     3.3.3.3         780         0x80000003 0x006e4c

                Type-5 AS External Link States <- 외부 네트워크 정보
Link ID         ADV Router      Age         Seq#       Checksum Tag   ASBR(3.3.3.3)이 광고한 정보
100.100.1.0     3.3.3.3         785         0x80000001 0x009654 0
100.100.2.0     3.3.3.3         785         0x80000001 0x008b5e 0
100.100.3.0     3.3.3.3         785         0x80000001 0x008068 0

10. ABR, ASBR 라우터 확인

 - ABR : Area 0과 Area X 사이에 있는 라우터
 - ASBR : 외부 네트워크 정보를 OSPF 환경으로 라우팅 업데이트하는 라우터

R3#show ip ospf
 Routing Process "ospf 1" with ID 3.3.3.3
 Start time: 00:14:19.748, Time elapsed: 01:11:19.772
 Supports only single TOS(TOS0) routes
 Supports opaque LSA
 Supports Link-local Signaling (LLS)
 Supports area transit capability
 It is an area border and autonomous system boundary router
 Redistributing External Routes from,
    rip, includes subnets in redistribution
~ 중간 생략 ~



11. DR/BDR 

 - '06_OSPF DR&BDR 관련 예제.pkt' 참조

 - Multi Access 환경에서 DR/BDR을 선출한다. (단, Point-to-Point 환경은 선출 X)
 - Multi Access 환경 : Ethenet 환경

 - DR(반장 역할)을 통해서 OSPF 광고를 실시하여, OSPF 광고 개수를 최소화시킨다.
 - DR 선출 과정

① OSPF 우선 순위가 높은 라우터가 DR, 두번째가 BDR
② OSPF 라우터 아이디가 높은 라우터가 DR, 두번째가 BDR

 - DR/BDR 아닌 라우터들은 'DROTHER'라고 한다.
 - DR/BDR은 우선 순위를 조정하여 수동 선출하는 것을 권장한다.

Router(config-if)# ip ospf priority [0~255]

 - 우선 순위의 기본값은 '1'이며, 우선 순위가 '0'이면 무조건 DROTHER로 동작한다.

R3#show ip ospf neighbor

모든 라우터 우선순위가 같기 때문에 라우터 아이디로 DR, BDR을 선출한다. 따라서 5.5.5.5 -> DR   4.4.4.4 -> BDR

R3 입장에서 DR, BDR 과는 데이터베이스 동기화가 끝났다 -> State 가 FULL이라서

나머지 R1과 R2는 2WAY 상태이다. -> 서로 알지만 동기화를 할 수 없는 상태

따라서 R3에서 수정,삭제가 발생하면 DR,BDR로 보내지고 DR이 R3의 수정,삭제 내용을 다른 라우터들에게 보내게 된다.


@ R1(DR)

int fa0/1
 ip ospf priority 255

@ R2(BRD)

int fa0/1
 ip ospf priority 254

@ R3, R4, R5(DROTHER)

int fa0/1
 ip ospf priority 0

R3#show ip ospf neighbor


우선 순위가 0 이면 절대 DR,BDR이 안된다.

 


12. OSPF 기본 경로 라우팅 업데이트

ISP------------------------------------[F0/1]R1---------------R2--------------R3
 211.242.181.58/30   211.242.181.57/30

@ R1

R1#conf t
R1(config)#int lo211 // F0/1는 네트워크 연결이 없기 때문에 loopback 211 인터페이스를 활용함
R1(config-if)#ip address 211.242.181.57 255.255.255.0
R1(config-if)#no shutdown
R1(config-if)#
R1(config-if)#ip route 0.0.0.0 0.0.0.0 211.242.181.58
R1(config)#
R1(config)#router ospf 1
R1(config-router)#default-information originate
R1(config-router)#end
R1#
R1#show run
R1#show ip route

R2,R3#show ip route ospf