OSPF
melody0812 2016-8-24
ospf hello包格式如下图所示:
Hello报文中记住以下信息:
1.始发路由器的RID;
2.始发路由器的AreaID;
3.认证类型和认证信息;
4.互联接口的掩码;
5.Hello间隔和死亡时间;
6.路由器的优先级;
7.Options字段(区域类型是在这个字段中被标记的)
邻居起不来的原因:
1.两台路由器的RID相同;
2.两台路由器的AreaID不同;
3.两台路由器的Area类型不同;
4.认证信息要一致;
5.Hello Interval,Dead Interval要一致;
6.点到点线路如果掩码不一致是可以起来邻居关系的,MA网络不一致邻居关系起不来。
邻接关系的建立
1.Down;
2.Init;
3.2-way;
4.ExStart;
5.Exchange;
6.Loading;
7.Full。
我们来看下一DBD报文格式:
ExStart会确定主从关系,谁的RID高谁就是Master,Master决定了DBD数据包的序列号。如果协商不好,则会卡在这个阶段。我们看一下DBD数据包包含哪些重要的信息:
I初始位;M更多位;MS主从位。注意此时接口的MTU值包含在DBD报文
DBD报文中是如何对LSA进行描述的呢,我们LSA Header的信息:
总共有三点标识一条LSA:
1.LSA类型;
2.链路状态ID;
3.通告路由器。
对于一台路由器可能会收到同一个LSA的多个拷贝,此时路由器就会比较Sequence Number字段,越大越优先。相同,则比较校验和,越大越优先。然后再比较年龄,越大越优先,当老化时间小于15min,此时则认为两份LSA相同。
1.最大的序列号;
2.最大的无符号校验和;
3.最大的老化时间。(由3600s减小到0)
LSA序列号:
序列号范围从:0x80000001-0x7FFFFFFF。
第一个:
0x80000001
0x80000002
。。。
0xFFFFFFFFF
0x00000001
。。。
0x7FFFFFFFF
当一条LAS的序列号到达最大序列号,始发路由器发送一个生存时间为最大值得LSA,让其他路由器从LSDB中清除这条LSA,当其它路由器确认后,再发送一个初始序列号的LSA。
LSA条目的老化时间为1小时,ospf每隔30minflood一次LSA来维持LSDB的同步。
当路由器收到邻居发送的DBD包后,此时路由器发现自己LSDB中没有这条LSA,就会向对方发送LSR数据包,已请求完整的LSA。
我们看一下LSR的数据包格式:
注意DBD包仅限于在建立邻接关系的时候会传输,当临街关系建立完毕,此后如果有网络拓扑发生改变,此时路由器就会主动发送LSU,并向邻居泛洪。
LSA数据包格式:
DR/BDR的选举:
路由器能参与DR、BDR的选举必须要满足一个条件:路由器的接口优先级不能为0(范围:0~255,优先级为0的时候不具有资格)
当一个接口在MA网络上有效时,它将它的DB和BDR地址设置为0.0.0.0.同时将等待计时器(wait timer)设置为路由器无效时间间隔(RouterDeadInterval)。
开始选举的时候,具有选举资格的路由器首先在建立三个集合,分别是:DR{}、BDR{}、DRothers{}
此时由于所有路由器都没有宣称自己是DR或者DBR,此时只有DRothers{}集合里有包含所有具有选举资格的路由器。
此时DRothers{}集合中路由器都宣告自己是DBR,选举具有最高优先级的邻居路由器被选举为BDR,优先级相同的条件下,具有最高RID的邻居路由器被选做BDR路由器。此时没有DR,则BDR会晋升为DR。
如果在一个MA网络中发现有多台具有选举资格的路由器宣称自己是DR、BDR,那么则具有最高路由优先级的路由器被选举为DR、BDR,优先级相同,具有最高优先级的路由器成为DR、BDR。
224.0.0.6(DR、BDR在这个组内)224.0.0.5(DRothers在这个组内)
LSA类型
Type1:Router LSA(路由器LSA)
路由器LSA是最基本的LSA通告累出了路由器所有的链路和接口,并指明了它们状态和沿每条链路方向出站的代价。
Type2:Network LSA(网络LSA)
每一个多路访问网络中的DR将会产生网络LSA通告,用来描述一个多路访问网络和与之相连的所有路由器。注意和路由器LSA不同,网络LSA中没有度量字段,因为从LSA中表示的伪节点到任何相连的路由器的代价永远为0。
Type3:Network Summary LSA(网络汇总LSA)
由本区域的ABR产生,告诉在与之相连的区域内的内部路由器它所能到达的目的路由。
Type4:ASBR Summary LSA(ASBR 汇总LSA)
本区域的ABR产生,所通告的LSA目的地是一台ASBR路由器,而不是一个网络。注意:通告的还有到达ASBR路由器的cost值。
Type5:Auto Sys Exter LSA(自主系统外部LSA)
始发于ASBR路由器,用来通告到达OSPF自主系统外部的目的。
OSPF特殊区域
1.Stub(完全末梢区域)
通过阻塞5类和4类LSA传播到一个区域的方法来节省内存
Stub区域的路由器发送的Hello包中E-bit置0;
Stub区域内不能有ASBR路由器;
2.Totally Stub(完全末梢区域)
不仅阻塞5类和4类LSA,也阻塞掉所有汇总LSA,除了通告缺省路由的那一条类型3的LSA。
3.NSSA(非纯末梢区域)
允许外部路由通告到OSPF自主系统内部,而同时保留自主系统其余部分的末梢区域特性。
NSSA外部LSA在它的头部有一个称为P-bit位的标志。NSSA ASBR路由器可以设置或清除这个P-bit位。如果一台NSSA ABR路由器收到P-bit设置为1的类型7的LSA的数据包,那么它将这条7类的LSA转换成5类的LSA。如果P位被设置0,那么将不会转换这条7类的LSA,那么这条7类的LSA携带的目的地址也不能通告到这个NSSA区域的外部。