其他分享
首页 > 其他分享> > 动态路由协议OSPF学习①

动态路由协议OSPF学习①

作者:互联网

动态路由协议RIP和OSPF比较:

动态路由(IGP)的三个评判标准:是否选路佳,收敛速度快,占用链路资源少

动态路由协议选路收敛占用资源
 RIP选路以跳数为开销值收敛速度以计时器为标准单个数据包占用少
 OSPF选路以带宽为标准收敛快单个数据包占用大

路由比较:

RIP[距离矢量协议]:

OSPF[链路状态协议]:

版本比较:

RIPV2和OSPFV2区别:

相同点:

不同点:

        OSPF协议和RIP协议不同在于适用范围,RIP协议仅适用于中小型网络环境中(15跳限制),而OSPF协议则可以适用于中大型的网络环境中(OSPF为了适应中大型网络环境,需要进行结构化部署,即:区域划分)

OSPF:开放式最短路径优先协议

OSPF区域划分:

        当网络规模不大时,我们也可以将OSPF网络划分在一个区域内,而主要的OSPF网络:单区域网络。而如果一个OSPF网络中包含有多个OSPF区域:多区域OSPF网络

        区域划分的主要目的:OSPF区域内部传递拓扑信息,而区域之间传递路由信息

        OSPF又称链路状态路由协议,而链路状态路由协议的距离矢量特征:区域间传递路由

区域边界路由器ABR:

        要求:同时处于多个OSPF区域边界,且ABR的一个接口对应一个区域,并至少有一个接口属于骨干区域(中心区域)区域与区域之间可以存着多个ABR一个ABR可以对应多个区域

区域划分的要求:

        为了方便对各个区域进行区分和管理,我们给每个区域设计一个编号:区域ID。区域ID由32位二进制表示,也可以用点分十进制表示,或者直接用十进制来表示,但是骨干区域的区域号必须为0

OSPF的数据包(文字简述):

hello包:

  1. 周期发现,建立和保活邻居关系(周期为10s/30s)
  2. 携带死亡时间:dead time(4倍hello时间--40s/120s)
  3. hello包会中携带RID

        OSPF传递的是拓扑信息,需要将所有的路由器的位置关系表示清楚,所以需要有一个参数对所有的路由器进行区分表定:引入RID来完成

RID要求:

  • 唯一性(OSPF网络区域内部唯一)
  • 格式统一(由32位二进制构成,采用IP地址的格式,X.X.X.X格式)

RID的获取方式:

  1. 手工配置(需满足上面的两个要求)
  2. 自动获取(如果是自动获取,设备将在自己的环回接口IP段中选择,并将最大的IP作为自己的RID)

DBD包:

数据库描述报文,携带的是数据库目录信息(而LSDB则是真正存放LSA信息的数据库)

LSR包(request):

链路状态请求报文,基于收到的DBD包的目录信息,请求未知的LSA信息(本地所没有的LSA信息)

LSU包(update):

链路状态更新包,真正携带LSA信息的包(真正的有链路信息的包)

LACK包:

链路状态确认报文(确认包)

        OSPF因为有hello包和LACK包的存在,所以有保活和确认机制,不需要进行频繁的周期更新。但是OSPF存在每30Min一次的周期更新(再次确保更新可靠)

OSPF的状态机:

①Down State(关闭状态):启动OSPF后,发送hello包,包中含有RID,发送完hello包后,进入下一个状态

②Init State(初始化状态):在收到对端hello包,且包中含有RID,此时进入下一个状态

③Two-Way State(双向通讯状态):标志邻居关系建立,此时会进行条件匹配

        #条件匹配:匹配成功则进入下一个状态,否则只能停留在邻居关系。而邻居关系只能通过hello包进行周期包活

④Exstart State(预启动状态):使用未携带数据的DBD包进行主从关系选举

        #主从关系选举:通过比较未携带数据的DBD包中的RID大小进行主从关系选举,RID大的为主,优先进入下一个状态。而使用未携带数据的DBD包原因:和邻居状态进行区分

        #RID比较只是单纯的比较数值大小,与子网掩码无关(2.0.0.0比1.255.255.255大)

        #注意此时只是通过互相比较RID信息,而没有通过ACK包来进行确认 --- 隐形确认

⑤Exchange State(准交换状态):使用携带数据的DBD包进行数据库目录信息进行共享

        #而选举主从关系的原因:错峰发送链路信息,降低带宽阻塞

⑥Loading State(加载状态):加载对端的DBD包中的目录信息,然后和本地的LSDB数据库目录信息进行对比(然后决定发送LSA/LSR/LSU包)

        #通过查阅本地的数据库条目查看到本地未知的链路信息LSA,然后通过LSR包要求获取未知链路的LSA信息,此时对端回复携带未知链路信息LSA的LSU包,最后本地发送一个LACK包对获取的未知链路LSA信息进行确认

⑦FULL State:标志着邻接关系确认

        #领接关系主要是为了和之前的邻居关系进行区分

OSPF工作过程:

        ①在配置启动OSPF完成后,本地OSPF会向本地所有正在运行OSPF协议的路由器接口以224.0.0.5的组播地址发送hello包。这个hello包中会携带本地的路由OSPF的RID以及本地已知邻居的RID。在之后再将收集到的邻居关系记录到本地OSPF的邻居表上{邻居表}

        ②邻居表建立之后,则会进行条件匹配匹配失败则停留在邻居关系(仅能使用hello包进行周期保活)/成功则开始建立邻接关系{条件匹配决定邻居关系还是领接关系}

        ③邻接关系建立后,OSPF建立领接关系的双方会使用未携带数据的DBD包进行主从关系选举。在选举完成并决定了主从关系后,主导方会先使用携带LSA链路目录数据的DBD包进行数据库目录的共享。并通过发送LSR/LSU/LACK包请求/获取/确认未知本地未知的链路LSA信息,最后完成本地数据库建立LSDB(链路状态数据库) {数据库表}

        ④本地OSPF路由协议通过基于本地的链路状态数据库,来生成路由拓扑的有向图。再通过SPF算法将有向图转化为生成树,并计算本地到达未知网段的路由的最佳选路,最后将最佳选路信息生成并添加到OSPF路由表中{OSPF路由表}

        ⑤完成OSPF收敛后,各路由之间仍通过周期(10s/30s)互相发送hello包来进行保活和并每30分钟进行一次周期更新

OSFP排错思路:

        通过OSPF状态机和路由关系进行判断,此时会通过遍历查询OSPF邻居表,数据库表,路由表来查看OSPF的连接状态并针对排错。

#查看ospf邻居表
    display ospf peer

#查看ospf邻居简表
    display ospf peer brief

#查看ospf数据库表 --- 只显示路由条目信息
    display ospf lsdb

#展开一条LSA信息 --- 在LSBD中通过OSPF对RID的表示进行查询
    display ospf lsdb router X.X.X.X

#查看ospf路由表
    display ip routing-table  protocol  ospf 

OSPF产生网络结构突变:

  • 网络中突然新增一个网段:OSPF会触发更新,并直接通过发送LSU包将变更信息发送,此时需要等待对端的发送LACK包来进行确认
  • 网络中突然断开一个网段:OSPF会触发更新,并直接通过发送LSU包将变更信息发送,此时需要等待对端的发送LACK包来进行确认
  • 无法沟通:通过hello包+死亡倒计时(10s+40s/30s+120s)后,如果仍然无法恢复,会主动删除该网段信息

OSPF的基本配置

1.启动OSPF进程

[R1]ospf 1 router-id X.X.X.X   #X.X.X.X 进程号,仅有本地意义(手工配置RID)

2.版本选择(V1淘汰,默认为V2)

[R1]ospf    #IPV4中默认为v2 

3.创建区域(在版本选择后)

[R1] area X   #选择OSPF区域,如果为0代表骨干区域

4.宣告

目的:

①激活接口:只有激活的接口才能收发OSPF数据

②发布路由:只有激活接口对应网段信息才能发送

[R11-ospf-1-area-X.X.X.X] network X.X.X.X  x.x.x.x   
#宣告该路由的OSPF配置信息,而其对应的配置符为反掩码


#通配符和反掩码区别:
#反掩码使用连续的0和连续1组成:0不可变,1可变
#通配符使用不连续的0和1组成:0可变,1不可变

#通配符0.255.0.255 --- 代表的网段信息为:可变.不可变.可变.不可变
#反掩码0.0.0.255 --- 代表的网段信息为:不可变.不可变.不可变.可变
//配置一个area0的ospf协议:
//R1
[R1]interface g0/0/0
[R1-GigabitEthernet0/0/0]ip address 1.0.0.1 30	
[R1-GigabitEthernet0/0/0]int l 0
[R1-LoopBack0]ip address 192.168.1.1 24
[R1-LoopBack0]q
[R1]ospf 1 router-id  1.1.1.1
[R1-ospf-1]area 0
[R1-ospf-1-area-0.0.0.0]network  192.168.1.0  0.0.0.255
[R1-ospf-1-area-0.0.0.0]network  1.0.0.1 0.0.0.0

//R2
[R2]interface g0/0/0
[R2-GigabitEthernet0/0/0]ip address  1.0.0.2  30
[R2-GigabitEthernet0/0/0]int  l 0
[R2-LoopBack0]ip address  192.168.2.1 24
[R2-LoopBack0]interface g0/0/1
[R2-GigabitEthernet0/0/1]ip address 2.0.0.1 30
[R2]ospf 1 router-id  2.2.2.2 	
[R2-ospf-1]area 0
[R2-ospf-1-area-0.0.0.0]network  192.168.2.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]network 1.0.0.2 0.0.0.0
[R2-ospf-1-area-0.0.0.0]network  2.0.0.1 0.0.0.0

//R3
[R3]interface g0/0/0	
[R3-GigabitEthernet0/0/0]ip address  2.0.0.2 30
[R3-GigabitEthernet0/0/0]int l 0
[R3-LoopBack0]ip address  192.168.3.1 24
[R3-LoopBack0]q
[R3]ospf 1 router-id  3.3.3.3	
[R3-ospf-1]area 0
[R3-ospf-1-area-0.0.0.0]network  192.168.3.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]network  2.0.0.2 0.0.0.0

//此时R1-R2-R3已经完成OSPF配置

//以R2为例子,查看R2的OSPF的相关表格:

#查看ospf邻居表:display ospf peer
<R2>display ospf peer

	 OSPF Process 1 with Router ID 2.2.2.2
		 Neighbors 

 Area 0.0.0.0 interface 1.0.0.2(GigabitEthernet0/0/0)'s neighbors
 Router ID: 1.1.1.1          Address: 1.0.0.1         
   State: Full  Mode:Nbr is  Slave  Priority: 1
   DR: 1.0.0.1  BDR: 1.0.0.2  MTU: 0    
   Dead timer due in 40  sec 
   Retrans timer interval: 5 
   Neighbor is up for 00:27:27     
   Authentication Sequence: [ 0 ] 

		 Neighbors 

 Area 0.0.0.0 interface 2.0.0.1(GigabitEthernet0/0/1)'s neighbors
 Router ID: 3.3.3.3          Address: 2.0.0.2         
   State: Full  Mode:Nbr is  Master  Priority: 1
   DR: 2.0.0.2  BDR: 2.0.0.1  MTU: 0    
   Dead timer due in 37  sec 
   Retrans timer interval: 5 
   Neighbor is up for 00:26:13     
   Authentication Sequence: [ 0 ] 

#查看ospf邻居简表:display ospf peer brief
<R2>display ospf peer brief

	 OSPF Process 1 with Router ID 2.2.2.2
		  Peer Statistic Information
 ----------------------------------------------------------------------------
 Area Id          Interface                        Neighbor id      State    
 0.0.0.0          GigabitEthernet0/0/0             1.1.1.1          Full        
 0.0.0.0          GigabitEthernet0/0/1             3.3.3.3          Full        
 ----------------------------------------------------------------------------

#查看ospf数据库表[目录]:display ospf lsdb
<R2>display ospf lsdb

	 OSPF Process 1 with Router ID 2.2.2.2
		 Link State Database 

		         Area: 0.0.0.0
 Type      LinkState ID    AdvRouter          Age  Len   Sequence   Metric
 Router    2.2.2.2         2.2.2.2           1610  60    80000007       1
 Router    1.1.1.1         1.1.1.1           1682  48    80000006       1
 Router    3.3.3.3         3.3.3.3           1611  48    80000005       1
 Network   2.0.0.2         3.3.3.3           1611  32    80000001       0
 Network   1.0.0.1         1.1.1.1           1684  32    80000002       0
 
#展开一条LSA信息:display ospf lsdb router X.X.X.X
<R2>display ospf lsdb router 1.1.1.1

	 OSPF Process 1 with Router ID 2.2.2.2
		         Area: 0.0.0.0
		 Link State Database 


  Type      : Router
  Ls id     : 1.1.1.1
  Adv rtr   : 1.1.1.1  
  Ls age    : 1712 
  Len       : 48 
  Options   :  E  
  seq#      : 80000006 
  chksum    : 0xb70f
  Link count: 2
   * Link ID: 1.0.0.1      
     Data   : 1.0.0.1      
     Link Type: TransNet     
     Metric : 1
   * Link ID: 192.168.1.1  
     Data   : 255.255.255.255 
     Link Type: StubNet      
     Metric : 0 
     Priority : Medium
 
#查看ospf路由表:display ip routing-table  protocol  ospf 
<R2>display ip routing-table  protocol  ospf 
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Public routing table : OSPF
         Destinations : 2        Routes : 2        

OSPF routing table status : <Active>
         Destinations : 2        Routes : 2

Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

    192.168.1.1/32  OSPF    10   1           D   1.0.0.1         GigabitEthernet
0/0/0
    192.168.3.1/32  OSPF    10   1           D   2.0.0.2         GigabitEthernet
0/0/1

OSPF routing table status : <Inactive>
         Destinations : 0        Routes : 0

OSPF的带宽(华为ENSP):

华为设备给OSPF定义的默认优先级为10,华为设备OSPF的默认参考带宽为100Mbps

OSPF是以带宽作为开销值:COST = 参考带宽/真实带宽

OSPF开销值为小数时:

        当该数为大于1的小数,则直接舍弃小数部分取整(向下取整)

        若是小于1的小数,则直接设置为1(向上取整)

修改华为设备的OSFP带宽:

[R2-ospf-1]bandwidth-reference  ?
  INTEGER<1-2147483648>  The reference bandwidth (Mbits/s)

如果要修改OSPF的参考带宽,则需要在所有设备上都要进行OSFP带宽的修改!!!

OSPF的DR/BDR:

在条件匹配中进行:

        在MA网络中,若所有设备均保持邻接关系,将出现大量的重复更新(互相之间不断发送重复的路由信息),为了防止这个行为,OSFP提出来使用DR/BDR来决定信息发送的主导(相当于所有的数据先发送到DR,然后再通过DR来转发信息到区域内其他的路由),此时我们需要进行DR/BDR的选举。

DR(指定路由器):DR和MA网络中和其他设备之间建立邻接关系

BDR(备份指定路由器):BDR也和MA网络中其他设备之间建立邻接关系

DR other(剩余的路由):除了和DR/BDR建立领接关系,相互之间只建立邻居关系

BDR作用:BDR能在DR出现故障时第一时间顶替DR的位置,起到备份的效果

        而在一个MA网络中,在DR和BDR都存在的情况下,则至少需要4台设备才能看到DR-Other之间的邻居关系(只有DR-Other之间会建立邻居关系)

        DR/BDR虽然名字叫做指定路由器/备份指定路由器,但它们其实只是一个接口的概念,因为DR/BDR都是在一个MA网络中选取确定的。 

DR/BDR的选举规则(非MA网络):

//通过查看R2的邻居表可以看到R2在和R1的邻居关系中,BD为R1,BDR为R2
//而和R3的邻居关系中,BD为R2,BDR为R3

<R2>display  ospf peer 

	 OSPF Process 1 with Router ID 2.2.2.2
		 Neighbors 

 Area 0.0.0.0 interface 1.0.0.2(GigabitEthernet0/0/0)'s neighbors
 Router ID: 1.1.1.1          Address: 1.0.0.1         
   State: Full  Mode:Nbr is  Slave  Priority: 1
   DR: 1.0.0.1  BDR: 1.0.0.2  MTU: 0    
   Dead timer due in 38  sec 
   Retrans timer interval: 5 
   Neighbor is up for 01:38:37     
   Authentication Sequence: [ 0 ] 

		 Neighbors 

 Area 0.0.0.0 interface 2.0.0.1(GigabitEthernet0/0/1)'s neighbors
 Router ID: 3.3.3.3          Address: 2.0.0.2         
   State: Full  Mode:Nbr is  Master  Priority: 1
   DR: 2.0.0.2  BDR: 2.0.0.1  MTU: 0    
   Dead timer due in 31  sec 
   Retrans timer interval: 5 
   Neighbor is up for 01:37:23     
   Authentication Sequence: [ 0 ] 

一,先比较优先级,优先级最大的为DR,次大的为BDR ,一般优先级都默认为1

//此时在R1上修改接口的OSPF的DR优先级
[R1]interface g0/0/0

//默认的DR的优先级取值从0-255,0代表放弃参加DR的优先级争取
[R1-GigabitEthernet0/0/0]ospf dr-priority ?
  INTEGER<0-255>  Router priority value
[R1-GigabitEthernet0/0/0]ospf dr-priority 0

//此时会重新进行OSPF选路
//再次去R2上查看OSPF邻居表
[R2]display ospf peer

	 OSPF Process 1 with Router ID 2.2.2.2
		 Neighbors 

 Area 0.0.0.0 interface 1.0.0.2(GigabitEthernet0/0/0)'s neighbors
 Router ID: 1.1.1.1          Address: 1.0.0.1         
   State: Full  Mode:Nbr is  Slave  Priority: 0
   DR: 1.0.0.2  BDR: None   MTU: 0    #此时很明显的看到DR变成了R2,而R1因为弃权,所以没有BDR
   Dead timer due in 38  sec 
   Retrans timer interval: 5 
   Neighbor is up for 00:00:12     
   Authentication Sequence: [ 0 ] 

		 Neighbors 

 Area 0.0.0.0 interface 2.0.0.1(GigabitEthernet0/0/1)'s neighbors
 Router ID: 3.3.3.3          Address: 2.0.0.2         
   State: Full  Mode:Nbr is  Master  Priority: 1
   DR: 2.0.0.2  BDR: 2.0.0.1  MTU: 0    #DR为R3,BDR为R2
   Dead timer due in 32  sec 
   Retrans timer interval: 5 
   Neighbor is up for 01:52:07     
   Authentication Sequence: [ 0 ] 


//此时再将R2的对应接口的DR优先级设置为255
[R2]interface g0/0/1
[R2-GigabitEthernet0/0/1]ospf dr-priority 255

//此时需要手动shutdown该接口,然后在undo再能更新DR和BDR
[R2-GigabitEthernet0/0/1]shutdown 
[R2-GigabitEthernet0/0/1]undo shutdown 

//此时在R2上查看邻居表
[R2]display ospf peer

	 OSPF Process 1 with Router ID 2.2.2.2
		 Neighbors 

 Area 0.0.0.0 interface 1.0.0.2(GigabitEthernet0/0/0)'s neighbors
 Router ID: 1.1.1.1          Address: 1.0.0.1         
   State: Full  Mode:Nbr is  Slave  Priority: 0
   DR: 1.0.0.2  BDR: None   MTU: 0    
   Dead timer due in 40  sec 
   Retrans timer interval: 5 
   Neighbor is up for 00:09:03     
   Authentication Sequence: [ 0 ] 

		 Neighbors 

 Area 0.0.0.0 interface 2.0.0.1(GigabitEthernet0/0/1)'s neighbors
 Router ID: 3.3.3.3          Address: 2.0.0.2         
   State: Full  Mode:Nbr is  Master  Priority: 1
   DR: 2.0.0.1  BDR: 2.0.0.2  MTU: 0    #此时可以明显看到R2为DR,R3变为BDR
   Dead timer due in 39  sec 
   Retrans timer interval: 5 
   Neighbor is up for 00:00:04     
   Authentication Sequence: [ 0 ] 

二,当优先级相同时,则比较RID。RID大的路由器对应接口为DR,次大的为BDR。

        DR/BDR的选举是非抢占模式的,一旦DR和BDR选定,则将无法被替换。选举时间为死亡时间(40s)只是时间相同,并不是由同一个计时器计时,这个时间仅是选举的一个上限时间(在这个时间内添加的设备都可以参加抢占),但是选举一般在短时间内完成,只要完成后则将不能抢占(无论你RID有多大,在DR/BDR选举完成后都无法去抢占修改DR与BDR)。

        而想要重新修改DR和BDR则需要在对应的接口shutdown然后重启(局部)。

标签:ospf,R2,0.0,BDR,动态,DR,路由,OSPF
来源: https://blog.csdn.net/qq_44685426/article/details/122420942