RIP、BGP和OSPF的区别:
(应用场景,性质,路由选择,收敛速度,稳定性)
协议类型:BGP外部网关协议,RIP、OSPF是内部网关协议;
选路原则:RIP基于距离矢量选择路由;OSPF基于链路状态选择路由;BGP是高级距离矢量路由协议,通过选路原则选择路由;
应用场景:BGP跑在内部网关协议上,所以BGP适合用于非常大型的网络;如运营商之间或者是大型企业之间;OSPF适用于大型网络;RIP适用于较小型网络;
端口号/协议:BGP基于TCP179号端口,OSPF基于IP协议89号端口,RIP基于UDP520端口;
交换内容:RIP交换本路由器的路由表,OSPF交换整个网络拓扑的路由链路状态,BGP第一次交换整个路由表,非首次交换变化部分;
收敛速度:RIP收敛速度较慢,“好消息传得快,坏消息传得慢”hello包周期更新时间是30秒;OSPF收敛速度较快,hello包周期更新时间是10秒;BGP收敛速度比较慢;
稳定性:RIP不够稳定;
提高OSPF协议的快速收敛:
1.配置OSPF GR,保障在设备发生主备切换时转发不中断;
2.配置bfd for ospf ,将链路状态快速通知给OSPF模块;
3.在点对点的广播网络中,将接口的网络类型设置为P2P,减少OSPF Peer建立的时间;
4.调整OSPF各种定时器,加速协议收敛速度,主要的几个定时器是LSA-Original-Interval
LSA-Arrival-Interval、spf-schedule-interval,在需要OSPF的网络中,推荐几个定时器的值参考:
spf-schedule-interval intelligent-timer 200 50 50
LSA-Original-Interval intelligent-timer 100 50 50
LSA-Arrival-Interval intelligent-timer 100 50 50
提高BGP协议的收敛速度:
1.配置BGP GR 保障设备发生主备切换是转发不中断;
2.配置bfd 佛陀BGP 将链路的状态快速通知给BGP模块
3.是能BGP Auto FRR 使BGP 的两个邻居切换或者两个下一跳切换达到亚秒级别的收敛速度;
OSPF的稳定状态:
稳定状态有DOWN 2-way Full
非稳定状态有init exstart exchange loading attempt(NBMA特有的状态,尝试与指定邻居建立邻居关系阶段)
邻居和邻接有什么区别,什么情况才出现邻居,什么情况出现邻接?
OSFP一共有8个状态机;down 2-way full 是稳定状态机,其他都是非稳定状态机;所谓邻居关系是指只要与对端邻居关系建立到2-way状态就可以了,并且用到的报文只有HELLO;如果是邻接关系,就要用到DBD,LSR,LSU,LSACK;邻居只需要使能,收到对端的HELLO报文,并且自己在对端的邻居列表就可以了;邻接,是在建立邻居关系之上,从而交互路由信息。
ospf中option的作用有哪些?分别是哪些情况下置位?
option是ospf的可选功能,描述路由器所支持所选的功能。一共有五位;
E位:该位描述是否洪泛AS-external-LSA
MC位:该位描述是否多播扩展OSPF转发IP多播包;
N/P位:该位描述处理类型7 LSA
EA位:该位描述是否按OSPF外部属性inprogress的说明忽略还是接受并转发External-Attributes-LSA
DC位:该位描述按扩展OSPF和支持需求电路的说明处理按需链路;
ospf中的LSA报文头,分别在五种报文类型中包含LSA报文头的哪些信息?
DD包括LSA头部信息,LS类型,LS ID,Advertising(此LSA生存者);
LSR只有LS类型。
OSPF在进程中重启,为什么邻居能快速建立,而不是像创建进程一样,需要等待那么长时间?
OSPF的邻居存活时间是40秒,在路由器之前成功建立邻居正常情况下,一边重启进程,而另一边邻居还正常的存活在邻居表中;但是但这边重启好了,发送hello的时候,对端即转到init状态,并且所有的状态只需交互一个报文;
OSPF陷入了init状态?
一方访问控制列表阻止了hello;
一方多播能力失效;
OSPF陷入了2-WAY状态?
类似于所有路由器的优先级都为0,不会发生选举,所有路由器停留在双向状态;
OSPF陷入了EXSTART/EXCHANGE
在EXSTART或者EXCHANGE状态的OSPF正处于尝试交换DBD分组的过程;
原因可能是不匹配的MTU;邻居上重复的路由器ID;无法用超过特定MTU长度进行PING;断掉的单播连通性,它可能是因为错误的DLCI,访问控制列表或转换单播NAT;
OSPF陷入LOADING
邻居没有应答或者邻居应答从未到达本地路由器,路由器也会陷入loading状态;原因:不匹配的MTU
为什么OSPF和BGP在重分布的时候,OSPF路由的下一跳不确定,导致选路错误?
这是有BGP环路引起的,在双出口的BGP中,如果BGP里面宣告或学习到的路由都一样,建议修改preferred-value值;把环路取消,再做重分布;
OSPF和STP结合组网,一般会遇到什么问题?
一个协议所有功能都包含在报文中,报文中的某个字段置位,也就是这个协议的功能无法开启,不管OSPF与哪个协议组网,只要不影响OSPF的报文收和发就可以了;
注意的是:STP在收敛的时候,会导致端口堵塞,正常流量没有办法通过,那么就会造成OSPF的报文没办法正常交互;会莫名其妙的卡在一些状态机上,只有当STP收敛好,OSPF正常交互报文才能意义排除;
OSPF和BGP组网会遇到哪些问题:
BGP和OSPF都是第四层协议;只有OSPF正常建立了邻接关系,BGP才能正常交互OPEN相关的一些报文;如果OSPF和BGP组网,首先检查OSPF相关的设置和错误,然后在检查BGP;
OSPF和IPsec组网,会遇到什么问题?
两个协议相互独立,IPsec不兼容组播;所以在一些正常情况下,IPsec无法载荷ospf的hello包;
IPsec对单播支持还算完美,OSPF并不是所有报文目的都是组播,其中NBMA虚连接等都是使用组播为目的地址的,只要是单播情况下,IPsec就能正常载荷组播(加密);
那OSPF能载荷IPsec数据吗:IPsec利用ospf自动发现的路由作为remote地址,所以IPsec结合OSPF,首先要注意OSPF的网络类型,以组播的,是不可以被加密的;
ospf区域怎样划分才合理?
跟着路由器的性能和拓扑环境走;OSPF只会将最优路由安装在路由表中,但是,在OSPF数据库中,所有的LSA都存在;如果网络路径大佬,对OSPF是个大挑战;RFC作者在90年推荐,一个区域最好不超过50台路由器。
两台路由器通过直连链路,建立OSPF邻居,那么一边使用P2P,一边使用P2MP,能正常建立邻居吗
不能,因为两个网络类型的hello interval不一样,OSPF进程检查一个hello报文是否合法,其中hello interval就在检查范围内;当一台路由器接受到另一台路由器的包时,就会丢弃此hello包,邻居就不能正常建立起来;
什么情况下,OSPF error 的OSPF routerID confusion 数值会增加;(router-id冲突)
RFC规定:ospf的router-id在整个AS中唯一,而router-id又起着防环的作用,关于router-id冲突,一共有三种情况:
第一种:区域内router-id冲突,骨干区域与骨干区域、非骨干区域与非骨干区域冲突,后果就是,OSPF不能正常建立邻居,所以就不能正常交互LSA信息;
第二种:区域间的router-id,多区域情况下发生,后果是路由时有时无,两个冲突的路由器学到的路由,在路由表里,一下有,然后又消失了,然后又出现了
第三种:虚连接router-id冲突,虚连接无法建立;
什么情况下,OSPF 八点version数值会增加;
ospf的版本出错,或者说ospf版本字段损坏,解决办法:检查OSPF版本是否配置正确,然后重启OSPF进程就可以了;
什么情况下,OSPF bad area ID 数值会增加?
区域ID配置错误,如果是骨干区域和非骨干区域,那么骨干区域的路由器上,OSPF bad area ID数值会增加,而在非骨干区域上显示的是虚连接增加;OSPF bad virtual link , 如果都是非骨干区域,那么两边的OSPF bad area ID都会增加;
什么情况下,OSPF bad virtual link数值会增加?
OSPF虚连接错误,只要是非骨干区域和骨干区域不连续,都会出现此错误:
一、如果非骨干区域没有骨干区域,但是在同一个网段,那么会出现OSPF bad area ID 升值,因为OSOF区域针对的是网段和接口,并不是针对路由器;
二、OSPF虚连接是建立在正常deOSPF邻居之上的,所以在虚连接DOWN的情况下,先检查ospf邻居是否正常;
三:ospf并不能跨区域建立虚连接;如果是跨区域,那么ospf的目的地址确定不了,报文就不能正常发送;
什么情况下,OSPF bad authentication key数值会增加?
实现OSPF验证时,区域内启用OSPF验证,接口和区域内必须使用同一种验证模式,否则接口不能发送hello包;验证方式有区域内验证和接口下验证,若该字段升值,肯定是两边接口的KEY出错了;
什么情况下,OSPF Neighbor state low 会升值
此数值会跟着链路震荡,会依次升序,(如邻居UP、DOWN、或者链路状态不稳定;)
什么情况下,HEllO:Netmask mismatch数值会升值;
ospf在除了点到点和虚连接情况下,都必须严格匹配network mask字段,是验证一个hello是否合法,该字段升值,肯定是两边接口掩码不一致;
什么情况下,HELLO:Dead timer mismatch字段会升值?
验证hello是否合法:
一、如果端口类型是广播类型,或NBMA型,那么接受的端口中,NETWORD MASK字段必须和接收端口的网络掩码一致,如果端口类型为点到点,或者虚连接,那么会忽略此字段;
二、所接受的hello报文中的hello interval字段必须和接收端口一致
三、所接受的hello报文中,router dead interval字段必须和接收端口的配置一致;
四、所接受hello报文中的OPTION字段的E-bit,必须和相关区域的配置一样;
什么情况下,HELLO:Neighbor unknown 升值?
hello包的邻居字段配置错误
什么情况下,DD:Unknown LSA type升值?
路由器在数据库同步是,收到未知的LSA类型;
什么情况下,LS ACK:bad ack升值?
OSPF大概哪几种情况下发送LSACK信息:
一、刚确定建立邻接关系时,邻居状态到loading时,收到对方LSU报文后,回复LSACK,邻居状态机并转换到FULL状态;
二、LSA的LS时限等于MaxAge,而且路由器的链接状态数据库中没有该LSA实例,而且路由器的邻居都不处于Exchange或Loading状态,那么此使路由器发送一个LSack包到发送的邻居确认收到该LSA或丢弃该LSA,并从LSU包中取得下一个(若存在)
LSA UPD: LSA checksum bad升值,LSA UPD:Unknown LSA type?
在RFC中,对每个包含在LSU包中的LSA,进行下面步骤:
一、确认LSA的LS校验和;若无效,丢弃该LSA
二、检查LSA类型,若类型未知,丢弃;
若上述步骤出错,字段升值;
OSPF bad packet字段升值
OSPF非法报文,此报文通过了报文头验证,但是某些字段过长,导致ospf进程或路由器无法识别;
OSPF bad checksum升值:
从OSPF包头开始,除了64位的验证域外,整个包的标准IP校验和。该校验和作为16位1补足校验和而计算包中除验证域外的所有16位字;如果包的长度不满足16位字,就在校验和前加上一个字节的0补足;
校验和出错,字段升值
OSPF drop on unnumbered interface 字段升值
某个地址借用接口上丢弃的ospf报文数
OSPF bad authentication type升值:
区域内验证类型不一致,导致该字段升值,区域内验证有两种,一种是MD5一种是simple
OSPF packet too small
ospf报文没正常封装,或者封装的包太小;
OSPF transmit error
传输出错的OSPF报文数
OSPF unknown neighbor
未知的OSPF邻居,在广播网络环境下,当一个接口修改Dead值时。由于Dead值必须要和Hello interval 必须相同,否则就会出错;但是修改此值之后,首先在OSPF ERROR中,HELLO:Dead imer mismatch 此项升值,当网段内其他路由器正常建立邻居而泛洪LSACK时,此路有接收到其他路由器的一些报文,此字段就会升值;
HELLO:hello timer mismatch
hello包的time值不匹配
HELLO:Extern option mismatch升值
E-bit字段不匹配
DD:MTU option mismatch升值
DD包中标识IP包大小的接口MTU域,大于该路由器接口所能接受的不分片大小,拒绝该DD包;