开放最短路径优先协议OSPF (Openshortest PathFirst,OSPF)是IETF组织建议使用的内部网关协议(IGP)OSPF是一种链路状态协议。OSPF使用Dijkstra的最短优先算法(SPF)。是公用的协议。
OSPF协议的特点:
使用区域的概念,这样可以有效的减少路由选择协议对路由器的CPU和内存的占用,划分区域还可以降低路由选择的通信量。
完全无类别处理地址问题,排除了像不连续子网这样的又累路由选择协议的问题;
支持无类别的路由选择表查询、VLSM和用来进行有效地址管理的超网技术;
支持多条路由等价负载均衡(注:不支持不等价负载的)
保留组播地址来减少不宣告OSPF报文的设备的影响;
支持路由选择认证
使用可跟踪外部路由的路由标记
OSPF是使用端口号89,OSPF支持明文和密文MD5认证。OSPF不会使用周期更新,它使用的是触发更新,只有路由发生变动的情况下面才会发送更新信息。实际上面,OSPF是间接设置了周期更新的路由规则,因为所有路由都是有刷新时间的,当达到刷新时间阀值的时候,该路由会就产生一次更新。默认的时间为1800秒(30分钟),所有OSPF路由的定期更新周期默认为30分钟。
OSPF的路由管理距离是110,OSPF只支持等价负载均衡(EIGRP是支持不等价负载的)
OSPF的工作流程:
宣告OSPF的路由从所有启动OSPF协议的接口上面发出Hello报文(224.0.0.6)如果有两台路由共享一条公共数据链路,并且能够相互陈公公协商它们各自Hello报文中的某些参数,那么它们就会成为邻居关系(Neighbor);
邻接关系(Adjacency),可以想象成为一条点到点的虚链路,它是在一些邻居路由器之间构成的。OSPF协议定义了一些网络类型和一些路由器类型的邻接关系。邻接关系的简历是由Hello保卫信息的路由器类型和交换Hello保卫信息的网络类型决定的。
每台路由都会在所有形成邻接关系的邻居之间发送链路状态通告(Link State Advertisement,LSA).LSA通告描述了路由器所有的额链路信息(或接口)和链路状态信息。这些链路可以是一个末稍网络(Stub network,是指没有和其他路由器相连的网络)的链路、到其他OSPF 路由器的链路、到其他区域网络的连理、或者是外部网络的链路,由于这些链路状态信息的多样性,OSPF定义了许多的LSA类型。
每一个收到从邻近路由器发出的LSA通告的路由器都会把这些LSA通告记录在它的链路状态数据库当中,并且发送一份LSA的拷贝给该路由器的其他所有邻居。
通过LSA泛洪到整个区域,所有路由器都会形成同样的连理状态数据库。
当这些路由器的数据库都完全相同的时候,每台路由器都讲以它自身为根,使用SPF算法去计算一个环路的拓扑图,来描述它所知道的到达没一个目的的最短路径。这个拓扑图就是SPF算法树。
最后,每一台路由器都讲从SPF算法树中构建出自己的路由选择表。
邻居之间交换的Hello保卫称为Keepalive保卫,并且每隔30分钟重传一次LSA。
Hello报文的作用:
发现邻居
Hello报文在邻居之间担当Keepilve角色
确保邻居路由之间的双向通信
在非广播多路访问(NBMA)网络上面选取指定路由器(DR)和备份指定路由器(BDR)
在Cisco路由上面缺省的Hello时间是10S,在NBMA的网络上面缺省是30S。
无效时间是缺省值的4倍 40S,可以使用ip ospf dead-interval来修改。
Hello报文包含的信息:
始发路由的路由ID(ROUTERID);
始发路由接口的区域ID(AREAID);
始发路由接口的地址掩码;
始发路由接口的认证类型和认证信息;
始发路由接口的Hello时间间隔;
始发路由接口的路由无效时间间隔
路由的优先级
指定路由器(DR)和备份指定路由器(BDR)
标识可选的性能的5个标记位
始发路由的所有有效邻居的路由器ID
OSPF Hello Packet
OSPF的网络类型:
非广播(NBMA)
NBMA网络,X.25,帧中继,ATM等。可以连接两台以上的路由器,但是它们没有广播数据包的能力。一个在NBMA网络上的路由器发送的报文讲不能被其他与之相连的路由器收到。在NBMA网络上面OSPF路由器需要选择DR和BDR,并且所有的额OSPF报文都是单薄的。
广播(Broadcast)
广播型网络是多址的网络,连接在这种网络上面可以接受到个别传送的报文。广播网络会选举DR和BDR
点到点(Point-to-Point)
点到点网络,是连接单独的一对路由的。在点到点网络上有效的邻居总可以形成邻接关系。在这些网络上的OSPF报文的目的地址也总是保留的D类地址244.0.0.5(ALLSPFRouters)
点到多点(Point-to-Multipoint)
点到多点网络是NBMA网络的一个特殊配置,可以看做是一群点到点的集合。在这些网络上面的额OSPF路由器不需要选举DR和BDR,因为这邪网络可以被看作点到点链路,而且OSPF报文是组播的。
虚链路(Virtual Links)
可以被路由器认为是没有编号的点到点网络的一种特殊配置。在虚链路上OSPF报文是以单薄的方式发送的。
|
DR和BDR的选举过程:
在路由器和它的邻居路由之间首先建立成功双向通信(2-way communication)接着检查每台邻居路由器发送的Hello报文的优先级、DR和BDR等字段。列出所有具有DR和BDR选取资格的路由器的列表(也就是说,路由的优先级要大于0,并且它的邻居状态至少要2-way的);接着,所有的路由器也将宣称自己是DR路由器(Hello报文的DR字段是他们自身接口的地址);所有的路由器将宣称自己是DR路由器(Hello报文的DR字段是它们自身接口的地址)除非没有选取资格。路由器计算的时候也将在这个具有选取资格路由器的列表中包括它本身。
从具有选取资格的理由七的列表中,创建一个还没有宣告为DR路由器的所有路由器的子集(宣告子集为DR路由器的路由器不能被选取为BDR路由器)
如果在这个自己中的一个或者多个邻居路由器,它们在Hello报文的BDR字段包含了它们自己的接口地址,那么具有最高优先级的邻居路由器将被宣告为BDR路由器。在优先级相同的条件下,具有最高的路由器ID的邻居路由器将被选作BDR路由器。
如果一个或者多个具有选取资格的路由器在Hello报文的DR字段包含它们自己的接口地址,那么具有最高优先级的邻居路由器将被宣告为DR路由器。在优先级相同的条件下面,具有最高的路由器ID的邻居路由器将被选作DR路由器。
如果没有路由器宣称自己是DR路由器,那么新选取的BDR路由器将成为DR路由器。
如果正在执行计算机的路由器是新选取的DR或者BDR路由器,或者它不再是DR或者BDR路由器了,那么就重复以上的2-6步骤。
类型1 路由LSA
起源:每个区域里面的路由器的每个接口都会产生
泛洪范围:只能在本区域泛洪
内容:描述了当前接口直连链路的状态信息(IP前缀,接口类型)
类型2 网络LSA
起源:在MBA网络里面DR产生
洪泛范围:只能在本区域
内容:包含了DR所直连的状态信息(IP前缀)
类型3 LSA
起源:ABR产生
洪泛范围:在整个OSPF网络中洪泛
内容:包含了当前ABR所连接的多个区域的IP前缀信息
4类LSA
起源:ASBR所在的区域的ABR产生的
洪泛范围:在整个OSPF网络中洪泛
内容:ABBR RID
五类LSA
起源:ASBR产生
洪泛范围:在整个OSPF网络中洪泛
内容:外部路由条目
7类LSA NSSA区域允许ASBR存在,在外部路由重分发进来后,将产生7类LSA,7类只会在NSSA区域传递,当要传递到其他区域的时候,ABR讲把7类LSA转换成5类LSA。
Like State ID
|
Link ID
|
Link Data
是接口上的IP地址,如果链路类型(Link Type)为Stub Network Link,则Link Data是子网掩码。
OSPF 路由表项与LSA类型
1.O 由类型1、2LSA组成
2.OIA 由类型3、4LSA 组成
3.OE1、E2 有类型5LSA组成
OE1跟OE2的区别在于Cost
如果是OE2 到外部路由只计算ASBR到达目标网络的开销
如果是OE1到外部路由外部成本+内部成本
OSPF特殊区域:
1.Stub(末节区域)拒绝类型4和类型5的LSA;下放一条3类默认路由;
2.Totally stub area (完全末节区域)拒接类型3、类型4和类型5的LSA。而对于其他局域的非OSPF自治系统的网络使用默认路由代替。(下放一跳三类的默认路由)
3.NSSA(同末节区域)可以存在ASBR;
4.Totally NSSA(同完全末节区域)可以存在ASBR
OSPF虚链路(Virtual Link)
1.OSPF虚链路必须是在两个拥有共同区域的ABR之间建立,其中必须至少一个ARB是连接骨干(AREA0)的。
2.ISOF虚链路被认为是骨干区域的一个接口,一条链路,也需要建立OSPF邻居,但在邻居建立之后,链路上是没有Hello包传递的。
3.虚链路地址一定要是对方的Router-id
OSPF认证(认证分为区域认证和链路认证)
1.区域认证:任何接入这个区域的路由器都要进行认证;
2.链路认证:与该链路想了的路由器接口都需要配置认证;