ospf协议
- 介绍
- RIP
- 简述RIP环路的形成
- RIP防环机制
- RIP和OSPF对比
- OSPF
- 关键字
- 简介
- 邻居建立过程
- 七类LSA
- OSPF防环
- OSPF和BGP和MPLS对比
介绍
路由协议属于网络层,实现总部和分部网络间互联,分为外部路由协议 EGP和内部路由协议IGP。而内部路由协议又分为静态路由协议和动态路由协议2种,他们的区别在于静态路由协议是网管手工指定的灵活性差,且一般是应用在组网规模较小,而动态路由协议则利用一定的算法学习得到,适用于较大规模的网络,灵活度和扩展度高。动态协议又分为2种,距离矢量路由协议和链路状态路由协议,典型代表有:RIP路由信息协议和OSPF开放最短路径优先。
关键词:EGP和IGP - 静态和动态 - RIP和OSPF
RIP
简述RIP环路的形成
一旦发生故障,则RTB可以检测到故障,认为路由不可达,但是RTA还不知道,它依然发送metric为2的路由到RTB,这个时候RTB就会学习此路由认为RTA可以到目的地,更新路由表RTA的metril+1,持续此循环直到跳数为16;
RIP防环机制
1、水平分割:不能返回源端口;
2、毒性逆转:将16top返回给源发送器;
3、最大16TOP:当跳数达到16跳时路由无效;
4、路由中毒:故障路由设置为16跳,且向外传播;
5、抑制计时器:故障路由保持本地缓存180s;
RIP和OSPF对比
RIP是一种基于距离矢量算法,也就是路由器收到IP包后查看经过多少跳,然后记录到路由表中,存在收敛慢、易产生路由环路的缺点,现在逐渐被OSPF取代。
1、层次:RIP应用层基于UDP520端口,OSPF传输层基于IP协议号89;
2、性质:距离矢量以条数来衡量路径好坏,链路状态以带宽、延迟来衡量路径好坏;
3、场景:使用Bellman-Ford算法,易产生环路,适用于小网络;使用SPF算法,不会产生环路,适用于中大型网络;
4、周期:更新路由条目,是完整新、周期性的路由更新;更新拓扑,非完整性、非周期性的路由更新;
5、其他:是否支持分层、是否支持可变长子网掩码;
OSPF
关键字
优点:无环路、收敛快、扩展性好、支持认证
原理: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全称open shortage path priority,也就是开放性最短路径优先,它的SPF算法,非骨干区域的路由不能通过骨干区域,还有它支持区域划分,这些使他在设计上就保证了无路由的环路。当网络上路由器越来越多的时候,路由信息急剧增大,OSPF将AS划分为多个区域来分担这些流量,它这种支持分区域的特点,需要扩容只需要增加区域即可,扩展性好,特别适合大中型网络,以及和其他路由协议比如MPLS多标签交换协议共同使用。
邻居建立过程
关键词 DOWN关闭 - INIT 单边 - 2WAY 邻居 - EXSTART 主从 - EXCHANGE 交换 - LOADING 更新 - FULL 邻接 HELLO - DD - LSR - LSU -LSACK
OSPF区域中的路由器每隔10s(Hello Interval)会互发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;
七类LSA
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,越大越新,校验和相同就比较老化时间,除此之外还有 LSA ID表明这是属于第几类LSA,如果网络类型不同,LSA还分为4种类型
关键词:age - 序列号 - 校验和 - LSA Id- 类型
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,这样通往同一个目的地;
总结如下
OSPF防环
小型网: 单区域,同一个LSDB,只需要一个区域号,不一定是area0,但多区域不能没有area0;
大型网:多区域,需要骨干区域来防环和数据转发,常规区域的路由信息不能通过骨干区域,也就是说所有区域都必须和骨干区域直连,这个时候可能会出现某些特殊区域
一般2种情形下的网络拓扑是不合理的(脱节区域)
1、被分割的area0
2、没有和area0相连;
场景:比如腾讯收购了肯德基,需要把肯德基接入淘宝网,可能会出现这种情况;
解决:
1、可以把area4的信息重分发到area1;
2、在area4和area0之间家里一条虚链路,
在这两台ABR上对TUNNEL配置IP地址为同一个IP网段,并将其宣告进OSPF区域0.
OSPF和BGP和MPLS对比
OSPF和BGP有以下区别
1、规模:中大型、大型或者巨型;
2、选路:SPF算法、选路原则;
3、性质:链路状态协议、路径矢量协议;
那么我们什么时候用MPLS呢?
BGP边界网关路由协议,可以承载大量路由,支持MPLS的使用,还有客户VPN,主要应用在电信网(运营商)、政府网络、数据中心等大型网络环境。但BGP可能产生路由黑洞,解决方法之一是 在AS内所有路由器使用MPLS(进入端口MPLS,7200或者IOU)