ospfv2协议整理_incomplete

一、内部网关协议与外部网关协议–分而治之

1.自治系统

自治系统即autonomous system,可以狭义的理解为一组运行相同路由选择协议的路由器,也可以理解为一个组织共同管理下的网络,例如一个公司,一个学校等。

2.igp与egp

在AS之间的路由选择协议被称为外部网关协议(EGP),边界网关协议(bgp)是目前最流行的egp。在网络之间发现路径的是内部网关协议(igp),比较常见的igp协议有rip,isis,ospf等。

将网络划分为AS,并且使用igp和egp,无疑能够缩写网络规模,减少资源消耗,igp负责as内的路由信息交换,egp负责AS间的路由信息交换,分而治之。
在这里插入图片描述

二、动态路由协议和静态路由协议

静态路由能够进行精确的路由控制,但管理困难,不能自动适应网络拓扑变化;而动态路由协议可以自动选择最优路由,并且当网络拓扑变化时,可以在收敛后重新计算出最优路径。

三、距离矢量协议和链路状态协议–协议命名由来

igp中的动态路由协议大多数可以分为两类:距离矢量协议和链路状态协议。距离矢量协议按照传闻进行路由计算,即每个路由器将自身的路由定期向邻居通告,路由器以此为基础计算路由。这种协议的路由是用矢量来描述的–即方向和距离,方向即为下一跳路由器,距离即为度量值,像rip就以跳数为度量,那么一条rip路由可能描述为,目的地1.1.1.1/32位于下一跳路由器router A方向,代价/开销为5跳处,这也是距离矢量协议的命名由来。

而链路状态协议与距离矢量协议则不同,链路状态协议并不会将自身的路由表向邻居通告,而是只通告链路状态(自身连接的网络,开销值等),这也是链路状态协议命名由来,以此为基础,每个ospf路由器在稳态时都将拥有相同的lsdb,并以此计算路由。因此当网络拓扑发生变化,距离矢量协议在每次广播路由给邻居时都要先计算自身路由表,而链路状态协议只要传递链路状态信息就够了,因此比距离矢量协议收敛时间短,再加上链路状态协议的区域划分/分层思想,链路状态协议比距离矢量协议更适合在大规模的网络上部署。

四、ospf基本原理

ospf是一种动态路由协议,属于igp,也是链路状态协议,ospf协议开发的初衷是为了改善rip协议的一些问题,比如能更快速的收敛,能支持更大型的网络,并且不容易受到有害的路由选择信息的影响(rip为此需要配置水平分隔,毒性逆转等)。

从一个比较概括的角度来看,ospf协议的基本原理如下:

1.建立邻居

2.建立邻接关系

3.交换链路状态信息

4.链路状态数据分发

5.链路状态数据洪泛

6.使用链路状态数据计算最短路径树

五、邻居选举–代理人

1.网络类型

2.邻居选举

ospf路由器间需要发布和洪泛链路状态信息,如果每台路由器间都相互交换信息,会有不必要的重复的报文。因此可以选举一个代理人,其他路由器都只和他同步链路状态信息,由代理人即DR负责在广播网内所有路由器lsdb的同步。考虑到lsdb内的信息是路由计算的基础,信息的同步是极为重要的,如果选出的DR出现故障,那么在选出新DR这段时间内,将不能有效的计算路由。因此会有一个BDR针对DR进行备份,当DR失效,BDR将会接替DR,然后网络中再选出新的BDR。DR,BDR的选举都保证稳定原则,DR,BDR存在时不选举,DR失效,不会直接选举DR,而是BDR直接成为DR。由此,DR和BDR与其他所有路由器建立邻接关系,如果没有DR,BDR,如下图的网络中将会有10个邻接关系,如果有DR,BDR只要建立7个。n(n-1)/2 -> (n-2)x2+1

在这里插入图片描述

DR和BDR只有在广播网和NBMA网络中才会进行选举,至此ospf路由器又被分为DR,BDR和DROther,ospf传输报文的组播地址也是和路由器类型相关的,比如AllSPFRouters的地址为224.0.0.5,邻居需在广播网内的所有ospf路由器间都要建立,因此hello报文的目的Ip就是224.0.0.5。还有一个组播地址224.0.0.6是AllDRRouters,只有DR和BDR会去侦听这个地址,所以DROther将会使用这个地址发送LSU到DR和BDR。

3.邻居选举作用

DR,BDR选举除了前面说的可以减少邻接关系的建立,虚拟的路由器节点在spf计算时也有简化计算的作用。

下面列出了邻居状态机和接口状态机的各个阶段与时序关系:

在这里插入图片描述

广播网上,邻居状态机达到2way是选举dr,bdr的前提条件,而选举出dr,bdr后,才会进行lsdb的同步工作。

4.接口状态机

4.1选举流程

新起的路由器在waiting time时间内将会去探知旧有DR,BDR,如果发现已有,就直接接受,然后去建立邻接。否则超时过后就会进行选举。选举时路由器优先级高者胜出。如果优先级相等,则Router ID大者胜出。

5.邻居状态机

5.建立邻接关系

6.洪泛扩散

六、区域划分–再次划分

在这里插入图片描述

1.ospf区域

ospf可以划分区域,其优点与AS的划分类似,也是分而治之,能够节省资源,减小LSDB规模,减小计算复杂度,减少收敛速度等等。ospf的区域在地位上并不是等同的,区域0为骨干区域,其他所有的区域间的路由信息交换都是通过区域0进行的,如上图所示,区域0位于区域1,区域2,区域3,区域4的中间并将这四个区域连接起来,除非使用虚连接,否则骨干区必须连续,并且所有非骨干区必须与骨干区相连。另外两个比较特殊的区域是stub区域与nssa区域。stub区域即末梢区域,该区域内将仅会将区域间路由通告,外部路由通过缺省路由实现流量传输。nssa是Not-So-Stubby Area的缩写,就像他的名字说的,nssa区域不会完全过滤外部路由,而是仅仅会将NSSA区域引入的外部路由通告,而过滤其他区域的外部路由。

2.路由器类型

根据区域的划分,ospf路由器被分为以下四种类型:

1) 区域内路由器(Internal Router)

该类路由器的所有接口都属于同一个OSPF区域。

2)区域边界路由器ABR

该类路由器可以同时属于两个以上的区域,但其中一个必须是骨干区域。ABR用来连接骨干区域和非骨干区域,它与骨干区域之间既可以是物理连接,也可以是逻辑上的连接。

3) 骨干路由器(Backbone Router)

该类路由器至少有一个接口属于骨干区域。因此,所有的ABR和位于Area0的内部路由器都是骨干路由器。

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

与其他AS交换路由信息的路由器称为ASBR。ASBR并不一定位于AS的边界,它有可能是区域内路由器,也有可能是ABR。只要一台OSPF路由器引入了外部路由的信息,它就成为ASBR。

七、链路状态数据库–链路状态信息描述

OSPF中对链路状态信息的描述都是封装在LSA中发布出去,常用的LSA有以下几种类型:

•Router LSA(Type-1):由每个路由器产生,用于描述一台路由器的链路或接口及其代价,在其始发的区域内传播

•Network LSA(Type-2):由DR产生,描述这个虚拟节点上的路由器,在其始发的区域内传播

•Network Summary LSA(Type-3):由ABR(Area Border Router,区域边界路由器)产生,描述区域内某个网段的路由,并通告给其他区域

•ASBR Summary LSA(Type-4):由ABR产生,描述到ASBR(Autonomous System Boundary Router,自治系统边界路由器)的路由,通告给相关区域。ABR收到ASBR产生的5类LSA后产生。

•AS External LSA(Type-5):由ASBR产生,描述到AS(Autonomous System,自治系统)外部的路由,通告到所有的区域(除了Stub区域和NSSA区域)

•6类lsa已被淘汰。

•NSSA External LSA(Type-7):由NSSA(Not-So-Stubby Area)区域内的ASBR产生,描述到AS外部的路由,仅在NSSA区域内传播(遇到ABR会转为5类LSA)。

•Opaque LSA:用于OSPF的扩展通用机制,目前有Type-9、Type-10和Type-11三种。其中,Type-9 LSA仅在本地链路范围进行泛洪,用于支持GR(Graceful Restart,平滑重启)的Grace LSA就是Type-9的一种类型;Type-10 LSA仅在区域范围进行泛洪,用于支持MPLS TE的LSA就是Type-10的一种类型;Type-11 LSA可以在一个自治系统范围进行泛洪。

八、路由表

1.路径类型

进一步的,OSPF将路由分为四类,按照优先级从高到低的顺序依次为:

•区域内路由(Intra Area)

•区域间路由(Inter Area)

如果一个路由器是区域边界路由器,假设为区域0与区域1,那么对于这台路由器,区域0和区域1的路由对它来说都是区域内的路由,所以作为abr,发布3类lsa时,假如区域0和区域1都发布了相同的前缀,那么abr将会把metric更小的那条前缀发布出去。比如区域0和区域1同时通告了前缀1.2.3.4/32,在abr上,区域0 通告的1.2.3.4/32metric是100,区域1通告的1.2.3.4/32metric是10,那么abr将只会向区域0发布一条1.2.3.4/32的3类lsa,而不会向区域1再发布1.2.3.4/32的3类lsa。

•第一类外部路由(Type1 External):这类路由的可信程度较高,并且和OSPF自身路由的开销具有可比性,所以到第一类外部路由的开销等于本路由器到相应的ASBR的开销与ASBR到该路由目的地址的开销之和。

•第二类外部路由(Type2 External):这类路由的可信度比较低,所以OSPF协议认为从ASBR到自治系统之外的开销远远大于在自治系统之内到达ASBR的开销。所以计算路由开销时将主要考虑前者,即到第二类外部路由的开销等于ASBR到该路由目的地址的开销。如果计算出开销值相等的两条路由,再考虑本路由器到相应的ASBR的开销。

区域内和区域间路由描述的是AS内部的网络结构,外部路由则描述了应该如何选择到AS以外目的地址的路由。

2.spf算法-广度优先算法

最短路径树算法,是一种广度优先算法,其以自身路由器为根,建立一颗spf树,因此天然具有无环的条件。

spf算法计算过程中用到了三个数据库I、II、III和两个集合A,B。三个数据库是树数据库,候选对象数据库,和链路状态数据库;两个集合为树节点集合与其他节点集合。树数据库即为在树上的分枝的集合,候选对象数据库是树数据库的隔壁分枝,将会被添加到树数据库。三是链路状态数据库这里最开始保存所有的分枝,后续保存的是除前两个数据库中的分枝外的其他剩余分枝。树节点集合即树数据库中分枝连接的节点,也是明确在树上的节点,其他节点集合是所有其他路由器,当spf算法结束后,其他节点集合应当为空。

1.计算spf树时,运行spf算法的路由器必定在树上,且为树的根,将自身路由器节点从集合B移到集合A,那么,所有与root相连的分枝也从III移到II。

2.从候选数据库中计算从根到每条链路的代价,将最短的一条加入树数据库(如果最短的有两个或多个,选择其中一条),相应的,刚刚加入的分枝的另外一个节点也被从集合B移到集合A,同时这个节点连接的在III中的分枝被加入到II中,若构建中的分枝长于II中的相应分枝,那么分枝被丢弃,否则取代II中相应分枝并丢弃后者。.

重复第2个步骤,直到数据库II和集合B为空,数据库I中就是构建好的spf树。

以下图的有向权值拓扑图为例,说明spf算法过程

实例1:

在这里插入图片描述

计算步骤如下:

IIIAB
RA,RB,RC
RA,RA,0RA,RB,1 RA,RC,2RARB,RC
RA,RA,0 RA,RB,1RA,RC,2 RB,RC,3,4RA,RBRC
RA,RA,0 RA,RB,1 RA,RC,2RA,RB,RC

分枝表示为RX,RY,z,Z 其中RX,RY为分枝的节点,而z为这条链路的代价,Z为根到链路的代价,节点与root直连时,z=Z,故省略Z。

实例2:

在这里插入图片描述

IIIAB
RA,RB,RC,RD
RA,RA,0RA,RB,1 RA,RC,5RARB,RC,RD
RA,RA,0 RA,RB,1RA,RC,5 RB,RD,2,3RA,RBRC,RD
RA,RA,0 RA,RB,1 RB,RD,2,3RA,RC,5 RD,RC,1,4RA,RB,RDRC
RA,RA,0 RA,RB,1 RB,RD,2,3 RD,RC,1,4RA,RB,RD,RC

spf算法简单来说,就是每次都取最短,因为假如节点X即将添加到集合A,候选数据库中有直连A的分枝以及其他分枝,但直连A的分枝并不是最短,那么最有可能到X最短的路就是代价最小的那条分枝,因为代价必定为正数。

实际编码时可以考虑使用堆排序或排序链表等外部排序算法进行spf树的计算。

所有的ospf路由器都将以自己为根计算出spf树,然后再根据spf树,将主机路由,前缀路由等等的路由下发到rib,后续再优选,决定是否下发到fib中去。

十、ospf报文格式–数据包与LSA格式

1.数据包种类

•Hello报文:周期性发送,用来发现和维持OSPF邻居关系,以及进行DR(Designated Router,指定路由器)/BDR(Backup Designated Router,备份指定路由器)的选举。

•DD(Database Description,数据库描述)报文:描述了本地LSDB(Link State DataBase,链路状态数据库)中每一条LSA(Link State Advertisement,链路状态通告)的摘要信息,用于两台路由器进行数据库同步。

•LSR(Link State Request,链路状态请求)报文:向对方请求所需的LSA。两台路由器互相交换DD报文之后,得知对端的路由器有哪些LSA是本地的LSDB所缺少的,这时需要发送LSR报文向对方请求所需的LSA。

•LSU(Link State Update,链路状态更新)报文:向对方发送其所需要的LSA。

•LSAck(Link State Acknowledgment,链路状态确认)报文:用来对收到的LSA进行确认。

wireshark中过滤五种报文的,可以使用对字段的值进行过滤,也可以使用关键字过滤,比如hello和dd报文:ospf.hello,ospf.dbd

这五种报文相互配合,完成了链路状态数据库的同步:hello报文用于建立邻居,为进一步的邻接打好基础;dd报文将会把自己拥有的lsa的头部放入载荷中用来描述自己拥有的lsa;而lsr报文则会携带唯一确定lsa的三元组,用于请求在dd中,自己没有的,最新的lsa;lsu将会把lsr请求的lsa发送给邻居;lsack则会将收到的lsu中的lsa的头部放入载荷,以确认自己收到了在lsu中收到的Lsa.

AllSPFRouters(224.0.0.5)和AllDRRouters(224.0.0.6是)为ospf保留的组播地址,分别代表所有的ospf路由器以及所有dr路由器,使用保留的组播地址能够减小对不宣告ospf的设备的影响。比如广播网络类型里,所有的hello报文都是发送到AllSPFRouters,而所有DROhters发送给DR和BDR的LSU与LSAck的目的地址都是AllDRRouters。这两个组播ip对应的组播mac分别为01-00-5E-00-00-05/06。

十一、可选项字段

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值