OSPF详解及其和其他路由协议的对比
路由协议属于网络层,实现总部和分部网络间互联,分为外部路由协议EGP和内部路由协议IGP。而内部路由协议又分为静态路由协议和动态路由协议2种,他们的区分在于静态路由协议是网管手工指定的灵活性差,且通常为利用在组网范围较小,而动态路由协议则利用一定的算法学习得到,适用于较大范围的网络,灵活度和扩大度高。动态协议又分为2种,距离矢量路由协议和链路状态路由协议,典型代表有:RIP路由信息协议和OSPF开放最短路径优先。
关键词:EGP和IGP静态和动态RIP和OSPF
一旦产生故障,则RTB可以检测到故障,认为路由不可达,但是RTA还不知道,它仍然发送metric为2的路由到RTB,这个时候RTB就会学习此路由认为RTA可以到目的地,更新路由表RTA的metril+1,延续此循环直到跳数为16;
1、水平分割:不能返回源端口;
2、毒性逆转:将16top返回给源发送器;
3、最大16TOP:当跳数到达16跳时路由无效;
4、路由中毒:故障路由设置为16跳,且向外传播;
5、抑制计时器:故障路由保持本地缓存180s;
RIP是一种基于距离矢量算法,也就是路由器收到IP包后查看经过量少跳,然后记录到路由表中,存在收敛慢、易产生路由环路的缺点,现在逐步被OSPF取代。
1、层次:RIP利用层基于UDP520端口,OSPF传输层基于IP协议号89;
2、性质:距离矢量以条数来衡量路径好坏,链路状态以带宽、延迟来衡量路径好坏;
3、场景:使用BellmanFord算法,易产生环路,适用于小网络;使用SPF算法,不会产生环路,适用于中大型网络;
4、周期:更新路由条目,是完全新、周期性的路由更新;更新拓扑,非完全性、非周期性的路由更新;
5、其他:是否是支持分层、是否是支持可变长子网掩码;
优点:无环路、收敛快、扩大性好、支持认证
原理:LSA、SPF算法、路由表、防环机制
OSPF报文:hello、DD、LSR、LSU、LSACK
状态机:DOWN、Init、2way、ExSTART、EXCHANGE、LOADING、FULL
RID、邻居、邻接、数据库同步、DR和BDR选举、缘由
OSPF区域:七类LSA、区域类型、特殊区域(重分发、TUNNEL)
OSPF认证
性能优化方案:多区域、汇总、过滤、被动接口
关键词:触发更新收敛快无环路分区域扩大性好中大型网络
OSPG:是一种基于链路状态的路由协议,区域网中每台运行的OSPF的路由器都了解网络的链路状态信息,支持触发更新,能够快速检测并通告AS系统内的路由器拓扑已产生了变化,收敛快。且OSPF全称openshortagepathpriority,也就是开放性最短路径优先,它的SPF算法,非骨干区域的路由不能通过骨干区域,还有它支持区域划分,这些使他在设计上就保证了无路由的环路。当网络上路由器愈来愈多的时候,路由信息急剧增大,OSPF将AS划分为多个区域来分担这些流量,它这类支持分区域的特点,需要扩容只需要增加区域便可,扩大性好,特别合适大中型网络,和和其他路由协议比如组网多标签交换协议共同使用。
关键词DOWN关闭INIT单边2WAY邻居EXSTART主从EXCHANGE交换LOADING更新FULL邻接HELLODDLSRLSULSACK
OSPF区域中的路由器每隔10s(HelloInterval)会互发Hello报文,用于发现和保护邻居状态,若40s没有发送,则邻居关系删除。
假定起初A和B两边均处于“沉默”,down的状态。然后A开始发送Hello报文,进入init状态,B收到报文后,但自己不在邻居列表中(neighbor),就会将A加入路由表中。而后,B也发送hello报文,A产生B不在自己的邻居列表中,也进行加表,至此,两边建立了双向通讯,变成2way状态。标志着邻居关系的建立,但还不是邻接关系,构成邻居关系的双方不一定能构成邻接关系,这要根据网络类型而定的,只有双方交换了链接状态信息和路由信息才能称为邻接。
OSPF没法建立邻居关系的缘由
1、HELLO/DEAD间隔不一致;
2、直连但是IP不在同一网段;
3、版本号不一致;
4、区域号不一致;
5、邻居密码不一致;
6、MTU不一致;
7、特殊区域号不一致(option位NSSA为np);
ping不通缘由
1、下一跳不可达;
2、同区域网是否是可达?(公网同网段)
3、同网段是否是可达?(网段同机房)
4、同机房是否是可达?(同机房其他机房)
5、其他机房是否是可达?(其他机房B)
路由器使用DD报文来进行主从选举,它包括描写的是LSDB的摘要信息。
1、LSA:描写链路状态的信息;
2、LSU:存储和传递路径信息;
3、LSR:要求LSU;
4、LSACK:对LSU分组进行可靠确认;
多路访问环境下选举了DD和BDR后,需要建立邻接关系,此时状态为exstart,开始进行主从选举,主从选举的根据是路由器的RID,RID大的就是老大,假定开始A的序列号Y,B的序列号为X,刚开始A和B都认为自己为老大,他们就会互发DD报文,如果A的RID大于B的RID,那末A则为主路由器,B的序列号同步A的序列号,也变成Y。选举好主从,他们就会开始链路信息的交互,主路由器A发送DD报文,DD报文描写的是LSDB的摘要信息,相当于一个目录,收到该报文的路由器就会去比对自己的LSDB看哪些信息需要更新,从路由器B不需要新的DD报文,只需要对A发送的DD报文进行确认,此时状态为exchange。哦,这里要明确一点,主从选举通过这类机制实现了DD数据库的可靠,而不是通过LSACK。为啥这样说呢?我看过DD报文,它里面有序列号、I、M、MS这些比特位,就是用来实现可靠传输的。恩,知道了哪些信息需要更新以后,就会转向loading状态,这个时候B就会发送LSR给A要求更新LSDB,LSR就是描写链路状态信息的报文,A收到LSR就会发送LSU相互加载对方LSA链路状态信息,也就是更新LSDB,当2者数据库到达了一致,就会变成loading;
OSPF发送故障,如何排错?
查看邻居状态,看卡在哪一个故障
1、init:HELLO被阻隔,多是防火墙还是ACL访问控制了还是包里面的字段其实不匹配;
2、2way:DRother之间将不会建立邻居关系,DRother只和DR和BDR建立。接口优先级均为0,不建立DR、BDR;
3、exstart/exchange:MTU不一致(DBD有MTU交互),RID有冲突,主从选举时,RID一致则不能选举;
4、loading:缺少足够内存;
DR/BDR和主从选举
1、DR/BDR:DR和BDR可以减小广播型网络的泛洪,减少邻接关系的数量,特别是部署了大量路由器时,节省了大量带宽。由于路由是之间和DR交互的,且由DR中转,DRother不交互路由,基于接口优先级和RID选举;
2、主从:在exstart时选举,实现DD目录信息的可靠传输(不是通过LSACK实现),而是OSPF报文中的不同序列号、I、M、MS比特位实现,注意2个参与选举的路由器均为DR;
OSPF一般用在大型网络中,上图这个拓扑分为area1、area0、area3、area4、area5共5个区域,还有一个局域网配置了RIP;其中在OSPF区域和EIGRP区域相连的路由器称为ASBR,OSPF各区域间连接的路由器称为ABR;
OSPF具有七类LSA
1、第一类LSA是区域间的每一个路由器在本区域内发送的,包括和他直连的路由器的链路信息。它的LSA报文age,就是年龄,如果这条路由不想要了,就设置为3600,表示对方它已死了,相当于RIP的毒性路由(老化定时器,3600s的定时器将被删除;当收到多个LSA实例的时候,LSA序列号在COST值一致的时候,序列号越大,这条路由最新鲜,如果序列号也相同,就比较校验和checksum,越大越新,校验和相同就比较老化时间,除此以外还有LSAID表明这是属于第几类LSA,如果网络类型不同,LSA还分为4种类型
关键词:age序列号校验和LSAId类型
2、第二类LSA区域间的DR在本区域内发送的和DR直连的链路信息,包括直连链路的路由和子网掩码、本广播域的网段
3、第三类LSA是ABR在区域间向OSPF所有区域发送的区域间的路由,它没有内部路由器的路由信息,传递的是路由条目,而是碎片化的信息,生成OIA路由;
4、第四类LSA包括了ASBR的RID,用来告知全部AS系统我知道ASBR在哪里,指向ASBR所在地方;
ASBR会生成一条OE2的路由,OE2里面的东西是我是1.1.1.1路由,我的下一跳是4.4.4.4,但是骨干区域并没有4.4.4.4这个路由信息,所以会下发一个四类LSA,指向ASBR在哪里。这样理解吧,ASBR产生的LSA1只能在本区域内泛洪,其他区域OSPF不能知道ASBR在哪,所以需要四类LSA;
5、第五类LSA是ASBR在OSPF的所有区域传递的外部路由,这样理解吧,其实四类LSA和五类LSA和三类LSA的本质从某种意义来讲是相同的,只不过五类LSA是由ASBR传递的外部路由,三类LSA是由ABR传递的区域间的路由条目,而四类LSA是由ABR传递的可以表示ASBR在哪的路由;
6、第七类LSA是ASBR在NSSA区域传递的信息,我们可以把OSPF骨干区域和外部EIGRP区域间的OSPF非骨干区域配置为NSSA区域,一旦区域被配置为NSSA区域,将不再有5类LSA,打破了stub区域不能有ASBR的限制,这样可以减小LSA的传递,优化网络拓扑,提高性能。除此以外,还有末节区域,一般设置在常规区域,不能设置在骨干区域,这个区域不能有ASBR,只能有ABR。
网络增大,性能下降,有甚么解决方案
1、多区域的设计,引入特殊区域,比如:末节区域;
2、路由汇总,将多条路径汇总,比如把同一个路由器的不同网段可以进行汇总处理;
3、路由过滤,将不需要的路由过滤,比如area1的ABR不需要area4的路由信息,只有area3才需要,那末可以设置ACL过滤;
OIA、OE1、OE2是甚么?
1、OIA:我把理解为区域间传递的路由;
2、OE1和OE2:都是外部重分发的路由,只不过OE1累加了沿途的COST,这样通往同一个目的地;
总结以下
小型网:单区域,同一个LSDB,只需要一个区域号,不一定是area0,但多区域不能没有area0;
大型网:多区域,需要骨干区域来防环和数据转发,常规区域的路由信息不能通过骨干区域,也就是说所有区域都一定要和骨干区域直连,这个时候可能会出现某些特殊区域
一般2种情形下的网络拓扑是不公道的(脱节区域)
1、被分割的area0
2、没有和area0相连;
场景:比如腾讯收购了肯德基,需要把肯德基接入淘宝网,可能会出现这类情况;
解决:
1、可以把area4的信息重分发到area1;
2、在area4和area0之间家里一条虚链路,
在这两台ABR上对TUNNEL配置IP地址为同一个IP网段,并将其宣布进OSPF区域0.
OSPF和BGP有以下区分
1、范围:中大型、大型还是巨型;
2、选路:SPF算法、选路原则;
3、性质:链路状态协议、路径矢量协议;
那末我们甚么时候用组网呢?
BGP边界网关路由协议,可以承载大量路由,支持组网的使用,还有客户方案,主要利用在电信网(运营商)、政府网络、数据中心等大型网络环境。但BGP可能产生路由黑洞,解决方法之一是在AS内所有路由器使用组网(进入端口组网,7200还是IOU)