当前位置:   article > 正文

ospf原理及基本概念_ospf工作原理

ospf工作原理

1.OSPF的基本原理

       当路由器开启OSPF后,路由器之间就会相互发送HELLO报文,HELLO报文中包含一些路由器和链路的相关信息,发送HELLO报文的目的是为了形成邻居表,然后,路由器之间就会发送LSA(LINK STATE ADVERTISEMENT,链路状态通告),LSA告诉自己的邻居路由器和自己相连的链路的状态,最后,形成网络的拓扑表,其实这个过程是很复杂的,他们经过发LSA,记录LSA,装发LSA,最后形成LSDB(链路状态数据库,即拓扑表),形成拓扑表之后,在经过SPF算法,通过计算LSDB,最后形成路由表。
形成路由表后,路由器就可以根据路由表来转发数据包,但是,这只是理想情况,如果之后,网络拓扑发生了变化,或是网络链路出现了问题,OSPF协议还是会经过这三张表来重新计算新的路由,只不过不会这么复杂了,路由器在默认情况下,10S就会发送一次HELLO报文,以检测链路状态,保证链路始终是正常的。


       RIP的缺点:存在最大跳数是15跳,无法应用在大型网络中;周期性的发送自己的全部的路由信息,浪费流量,收敛速度缓慢;本身的算法存在环路的可能性很大。

       OSPF的特点:采用组播更新的方式进行更新(224.0.0.5、224.0.0.6),增量更新(只发送别人没有的),以cost作为度量值,有效的避免了环路(在单区域中可以完全避免环路,但是在多区域中并不能完全避免环路)。

   
       OSPF路由协议是一种典型的链路状态(Link-state)的路由协议,一般用于同一个路由域内。在这里,路由域是指一个自治系统 (Autonomous System),即AS,它是指一组通过统一的路由政策或路由协议互相交换路由信息的网络。在这个AS中,所有的OSPF路由器都维护一个相同的描述这个 AS结构的数据库,该数据库中存放的是路由域中相应链路的状态信息,OSPF路由器正是通过这个数据库计算出其OSPF路由表的。


       链路是路由器接口的另一种说法,因此OSPF也称为接口状态路由协议。OSPF通过路由器之间通告网络接口的状态来建立链路状态数据库,生成最短路径树,每个OSPF路由器使用这些最短路径构造路由表。

2.OSPF的表:

邻居表:记录了建立邻居关系的路由器

LSDB(链路状态数据库):包含了本路由器上的区域的所有的链路状态信息,并实时同步

路由表:经过SPF算法计算出的路由存放在OSPF路由表中

3.生成OSPF路由:

相同区域内的每一台路由器的LSDB是相同的,有LSDB得到带权的有向图,每台路由器以自己为根节点极端最小生成树

4.骨干区域和非骨干区域的划分:

为了减少路由器上LSDB的规模,骨干区域负责转发非骨干区域的之间的路由,骨干区域的区域号为0

OPSF划分区域的要求:

1).骨干区域必须是保持连通

2).非骨干区域必须与骨干区域连通(可以通过虚链接的方式实现非骨干区域与骨干区域不是物理上的连通)

5.OPSF路由器的类型:

区域内路由器(Internal Router)

区域边界路由器(ABR)

骨干路由器(BR)

自治系统边界路由器(ASBR)

一台路由器可以同时是ABR,BR和ASBR

6.OSPF的网络类型:

Router ID:是一个32bit的无符号整数,可以在一个自治系统中唯一标识一台路由器,可以自动生成,也可以手动配置。其格式和IP地址的格式是一样的,Router ID选举规则如下:手动配置OSPF路由器的Router ID(通常建议手动配置); 如果没有手动配置Router ID,则路由器使用Loopback接口中最大的IP地址作为Router ID; 如果没有配置Loopback接口,则路由器使用物理接口中最大的IP地址作为Router ID。 OSPF的路由器Router ID重新配置后,可以通过重置OSPF进程来更新Router ID。

自动生成Router ID:如果本设备上配置了loopback接口地址,则选择loopback接口地址最大的作为Router ID,如果没有配置loopback接口地址,则选择所有接口中ip地址最大的作为Router ID

网络类型有:Broadcast(广播网络:Ethernet)、NBMA(非广播多点可达:fr)、P2P(点对点网络:PPP)、P2MP(点对多点网络:没有链路默认是点对多点,可以通过修改)

7.OSPF报文和封装:

OSPF报文直接封装为IP协议报文,因为OSPF是专为TCP/IP网络而设计的路由协议。

Hello报文:建立并维持邻居关系

DD报文:对LSDB内容的汇总(仅仅包含LSA摘要)

LSR报文:请求自己没有的或是比自己更新的链路状态信息(LSA)

LSU报文:链路状态更新信息

LSAck:对LSU报文的确认

封装格式:

链路层帧头

IP Header

OSPF Packet

链路层帧尾

version 字段 版本字段,占1个字节,指出所采用的OSPF协议版本号,目前最高版本为OSPF v4,即值为4(对应二进制就是0100)。

packet type 说的应该是数据包的类型,ospf 有五种。hello,dd,lsr,lsu,lsack

packet length 是包的长度,占两个字节,指ospf报头以及报文内容

routerID 占4个字节,指报文的生成者的RouterID

AreaID就是 报文的生成这的RouterID

Checksum 用于对报头和报文体的摘要信息用于校验,它能够校验该报文的完整性和正确性,同时也会对lsa的新旧程度产生影响

auType认证类型,0:不认证,1:简单认证,2:MD5

authentication:表示认证密码或者摘要信息,当autype=0时,该字段为空。

hello报文的作用

邻居发现:自动发现邻居路由器。

邻居建立:完成Hello报文中的参数协商,建立邻居关系。

邻居保持:通过Keepalive机制,检测邻居运行状态。

hello报文的发送时间,根据链路的不同为10s和30s,用于周期性更新

hello报文还有一个deadtime为老化时间,这个时间必须是hello时间的4倍,如果不是则不能建立邻居关系。

8.邻居的建立和状态的迁移

邻居的建立和维持都是通过交互Hello报文来实现的

Broadcast网络中,NBMA网络中都需要进行DR和BDR的选举

DR/BDR的选举原则:首先比较hello报文中所携带的优先级,优先级大的成为DR,当优先级为0的时候则不会进行选举。

优先级一致的情况下,则比较Router ID,Router ID大的成为DR

保持稳定的原则:一旦网络中DR/BDR选举完成之后,就算出现优先级更高的路由器,也不会再重新选举。

邻居关系的建立过程

 

(1)RTA发送Hello报文

DR=0.0.0.0

Neighbors seen=0

RTB收到Hello报文之后,发现RTA这个邻居将自己的邻居表进行修改:

邻居ID

邻居地址

邻居状态

1.1.1.1

10.1.0.1

lint

接下来发送的Hello报文

DR=2.2.2.2

Neighbors seen=RTA

RTA收到RTB发送的Hello报文之后,将自己的邻居表进行修改:

邻居ID

邻居地址

邻居状态

2.2.2.2

10.1.0.2

2-way

接下来发送的Hello报文:

DR=2.2.2.2

Neighbors seen=RTB

RTB收到之后,将自己的邻居表里面的邻居状态修改为2-way

第一阶段完成

邻居建立第二阶段:

RTA发送DD报文,RTB接收到之后,对比自己的LSDB数据库,如果RTA发送的DD报文中的LSA摘要,自己这边都有,则状态立马进入Full,如果有没有的或是更新的,则RTB发送LSR请求自己没有的和比自己更新的LSA,RTA通过发送LSU报文对RTB进行更新,RTB收到LSU报文之后,更新完成状态进入Full,并且回复LSAck报文,RTA状态进入Full。

LSDB的更新,接收到一条LSA,如果这条LSA自己的LSDB中不存在,则直接进行更新,如果自己的LSDB数据库中存在,那么会与那一条LSA进行比较,留下LSA序列号更大的。

9.配置和优化OSPF

OSPF中的network命令是指定接口开启OSPF

OSPF优化命令,因为在P2P网络中不需要进行DR/BDR的选举,所以收敛速度大大加快,会将Broadcast的网络改为P2P

命令:ospf network-type p2p

也可以修改Hello报文的发送时间间隔(默认为2s)

命令:ospf time hello 2

当两端的OSPF的网络类型不同时,邻居关系能达到邻居关系能达到Full但是不能进行路由学习。

10.配置OSPF的接口的参考带宽:

bandwidth-refernce (缺省为100M cost为1)

cost=参考带宽/接口带宽

参考带宽最好根据实际情况修改为最大的(本设备上)接口带宽。

 

假设接口的cost值修改为上图所示,RTA上有一个100.1.1.1,当RTA把这个宣告进OSPF的时候,RTC收到这条路由之后,这条路由的cost=20+40=60(就是相当于,这条路由传递方向的进方向的接口带宽),例如:当RTC上有一条20.0.0.0/24的路由要传递给RTA的时候,此时这条路由到达RTA之后的cost=40(10+30)

OSPF cost计算标准:沿着路由传递方向累加进站口的cost

11.OSPF报文的定时器的默认值

网络类型

Hello定时器

邻居失效时间

Broadcast

10

40

P2P

10

40

NBMA

30

120

P2MP

30

120

12.配置OSPF引入外部缺省路由:

在公网与内网相接的设备上,做OSPF引入缺省路由,可以告诉内网的所有开启OSPF的设备,要想到达外网,可以通过本设备。

default-route-advertise

参数:always :当本机没有默认路由的时候,会产生一条缺省路由,发给其他邻居,但是本机上不会存在。

Cost:默认路由的度量值

13.OSPF高级特性:

OSPF虚链接:解决了骨干区域被分割的问题和非骨干区域和骨干区域无法连通的问题。

命令:在这两个区域的ABR上的中间区域中配置vlink-peer 对方的Router ID

LSA类型和路由选择:

LSA报文头的三个关键字:LS TYPE(LSA的类型)、Link state ID(链路状态ID,不同的LSA的链路状态ID不同)、Advertising Router(产生这条LSA的Router ID),这三个关键字唯一的标识了一条LSA。

常用的六类LSA:

LSA的类型

可以发送的角色

第一类LSA(Router LSA)

ALL Routers

第二类LSA(Network LSA)

DR

第三类LSA(Network Summary LSA)

ABR

第四类LSA(ASBR Summary LSA)

ABR

第五类LSA(AS External LSA)

ASBR

第七类LSA(NSSA External LSA)

ASBR

第一类LSA:所有的开启OSPD功能的路由器都会产生,描述的是自己直连网段的链路信息(链路类型、开销),将自己所有的直连链路的信息汇总成一条发布给本区域内的其他路由器,不可以跨区域传输。

 

第二类LSA:描述的是一个NBMA网络,或是一个Broadcast网路的所有的路由器以及掩码的信息,在区域内传播。如果一个单一区域,那么这个区域内可以只存在第一类LSA和第二类LSA。

 

第三类LSA:将所连接区域的链路信息以子网的形式,发送给相邻的区域,三类LSA的link State ID是目的网段。当从一个非骨干区域通过骨干区域传输到另一个非骨干区域的时候,会将Advertising Router修改为本区域的发送这条路由的ABR的Router ID

 

第五类LSA:描述到AS外部的信息,跨区域传输的时候,不会改变始发者。这样就可能会造成下一跳不可达,所以就通过第四类LSA来进行弥补。

 

第四类LSA:描述的是目标网络是ASBR的Router ID的LSA,始发者会随着区域间额传输而改变。

如果没有五类LSA则不会存在四类LSA,但是当有五类LSA的时候,也不一定存在四类LSA。

比如:

RTB上引入了一条外部路由,此时在RTA和RTC上并不存在目标网络是RTB 的 Router ID的四类LSA,因为RTA与RTC知道怎么到达RTB,并不会产生下一跳不可达的情况。

第五类LSA的两种外部路由:

第一类外部路由:cost=外部开销+内部开销(外部路由可靠性高)

第二类外部路由:cost=外部开销(外部开销默认为1)(外部路由可靠性低)都会默认为第二类外部路由

14.OSPF选路原则:

区域内路由、区域间路由、第一类外部路由、第二类外部路由

在类型相同的情况下在比较cost值。

15.引入外部路由时导致的问题及解决的办法

引入外部路由的时候,产生对应的五类LSA,Link State ID为目的网络,但是不会携带掩码的信息,所以当引入了两条目的网络一样但是掩码不一样的路由的时候,会认为是同一条LSA,导致路由学习错误。

当遇到这种情况的时候,ASBR会将这两条路由中的掩码大的那一条的LSA的Link State ID修改为子网的广播地址,来进行区分。

16.OSPF特殊区域:

Stub区域、Totally stub区域、NSSA区域

Stub区域:一般都是将边缘区域划分成Stub区域,在这个区域中不存在第四类和第五类LSA,但是会由ABR发送一条默认路由,下一跳指向ABR

Totally stub区域(完全stub 区域):为了进一步缩小路由的数量,这个区域禁止了第三类LSA的存在,同时第四类和第五类LSA也不存在,但是会由ABR产生一条三类的默认路由下一跳指向ABR

NSSA区域(不是那么完全的stub区域):需要ASBR的存在但是 又不允许五类LSA的出现,所以这个区域不存在第四类和第五类LSA,但是,会由ASBR产生一条七类的LSA,七类LSA只能在NSSA区域中传播,经过ABR传递到其他的区域的时候,会转换成五类的LSA。

17.OSPF协议的路由聚合:

ABR对三类LSA的聚合:

abr-summary advertise/not-advertise

advertise 聚合后并且发布出去

not-advertise 聚合后不发送出去

在做聚合时应该在路由产生的区域做

ASBR对五类或是七类LSA的聚合

asbr-summary

18.OSPF过滤计算出的路由(在LSA经过SPF算法得到最佳路由导入的路由表的时候,进行过滤):只会影响到本设备上的路由表中的路由,并不会影响到其他的设备。

在区域中配置:filter-policy acl import

19.OSPF过滤三类LSA:

Filter acl import/export 对不同的区域import 或是 export不同。

 

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/755236
推荐阅读
相关标签
  

闽ICP备14008679号