目录
比较动态路由协议好坏的依据
1、选路
2、收敛速度
3、资源占用
RIP动态路由协议
1、选路依据跳数,考虑太过片面(原因早期路由型号单一,带宽没有现在高)
2、所依托的贝尔曼福特算法不够优秀,算出来的路,可能出现环路
ospf动态路由协议(开放式最短路径优先协议)
开放最短路径优先协议
(Open Shortest Path First,OSPF)是内部网关协议,之所以叫“开放”是因为OSPF是公开发表,并不是某一家厂商独有;“最短路径优先”是因为OSPF使用的算法为Dijkstra提出的最短路径算法SPF(其实RIP也是最短路径优先,只不过OSPF使用的算法叫“最短路径算法”)
由于ospf资源占用较高所以收敛就会慢,所以ospf就不适合与中大型复杂网络工作,想要在中大型复杂网络中工作,需要结构化部署(区域之间传输路由占用资源少)结构化部署就是良好的IP地址规划和区域划分
链路状态路由协议
ospf是链路状态路由协议,靠传递拓扑信息来计算路由,每个路由器将其已知的链路状态信息告诉邻居,收敛以后,网络上每个路由器对全网的链路状态有相同的认识。然后每台路由器根据了解到的全网链路状态,独立计算路由。
例子
假设现在有个R1路由器和R2路由器都是g0/0/0接口连接12.0.0.0网段
将g0/0/0接口型号,连接带宽,接口连接信息发送过去,接口连接网段共享出去。收集lsa(拓扑信息形成一张有向图)在转换为一种树形结构(最短路径树)最后自己的最短路径优先算法计算得出路由。
选路依据
选路靠的是带宽,选路依据相对来说科学,且选路不会出现环路
收敛速度
收敛速度快,ospf计时器的周期时间更短
资源占用
资源占用较高
例子(与rip对比一下)
假设现在有个R1路由器和R2路由器、R2后面有一个网段缺失,当ospf要传输信息,传输过去的信息包含周围接口等信息,单个数据包资源占用量比rip大。rip有周期更新机制所以数据包多,整体的资源占用相比于ospf多,ospf因为单个数据包的数据量大所以资源占用也不少。在中大型网络,中rip资源占用很严重,网就会很卡。
但是ospf的作者想办法解决资源占用,rip无法去解决资源占用
所以ospf对比rip更加优秀
ospf的三个版本
简单介绍三个版本
V3 属于IPV6 、V1和V2属于IPV4
V1并没有投入市场,V1是实验版本,有些问题
V2版本才是在市场中使用的
ospf V2和RIP V2比较
相同点
1、ospf v2和rip v2 都是无类别的动态路由协议,都支持汇总和子网划分
2、都是通过组播划分(Ospf用到的组播地址用了两个224.0.0.5 和224.0.0.6,rip组播地址224.0.0.9)
3、ospf和rip都支持等开销负载均衡
不同点
ripv2只适用中小型网络环境,ospf适用于中大型网络环境
ospf的结构化部署
区域划分
ospf为了解决咨源占用高的问题,使用了结构化部署的思路,结构化部署就是区域划分
(具体如何划分看具体情况,区域划分的太大区域内部压力太大,区域和区域也要连接如果划分的太多区域和区域之间压力就大了)
信息传递方式
Ospf内部传递拓扑信息
Ospf之间通讯传递路由信息
区域边界路由
一个区域和另一个区域中间有一个路由,沟通两区域,这个路由就被称为区域边界路由(ABR)
这个路由知道了左右两边的拓扑信息就可以算出路由,然后将路由直接传输就行了
(Ospf进行子网汇总和划分就是靠区域之间传递的路由)
特点
同时属于两个区域
区域划分原则
1、必须存在ABR
2、必须按照星型拓扑结构部署
(Ospf必须有一个中间区域(骨干区域),剩下的区域都链接在中间区域,其他区域将信息都共享给中间,中间区域将信息传输给周边区域)
ospf可以区域划分,也可以不划分
没有区划分也有一个骨干区域
如果ospf有多个区域(多区域ospf网络)
Ospf网络没有区域划分只有一个区域(单区域ospf网络)
典型例子
如果有一个区域不连接在骨干区域那么这个区域上的abr就不会去工作
但是abr会学习到所有的路由,abr不去共享,这个abr叫非法区域边界路由
就比如下面这张图标红的部分
ABR可以不止有一台,一般现实配置的都是这种,如果只有一台abr万一坏了就g,多几台(可以不止两台)有利于网络稳定,算是一个备份
一个abr可以同时属于多个区域,如下图
区域id
Ospf为了区别标识不同的ospf区域设计了一个区域id(area id 以32位二进制构成)
表示方法
以数字直接表示,写数字方便人类去配置,以点分十进制表示
骨干区域编号固定编号0 (area 0)
ospf工作过程
ospf数据包
跨层封装于三层报头,协议号89
hello包
邻居发现,关系建立,周期保活
用来周期性的发现建立和保活邻居关系
hello时间默认10秒 这个数据包很小,数据包携带一个路由id(rid32位2进制构成,用区别标识不同的ospf路由器)
保活:这个数据很小包是为了证明自己活着,一点点消息就够了,就是为了保活。
Dead time:死亡时间 默认是4倍的hello时间,现实网络环境不止以太网,在一些特殊的环境hello时间可能是30秒。
dbd包(链路状态数据库描述包)
链路状态数据库又被称为lsdb-拓扑信息被称为lsa
描述是为了减少ospf资源占用,相当于一个摘要简介目录。链路状态数据库中的信息可能有部分不用,然后根据这个描述在结合自身情况来判断要不要这个拓扑信息。
Lsr包(链路状态请求包)
用来请求未知的lsa信息,刚刚对比过了dbd包,被传递的路由里面没有的信息要发过来。
Lsu包(链路状态更新报文)
把对端向你请求需要的lsa信息发送过去,隐式确认lsr包
Lsack包(确认包,可类比tcp的ack包)
用来确认收到了lsa信息(lsack会确认dbd lsu)
ospf状态机(在工作过程所处的不同工作状态)
邻居间不同时间的不同关系
邻居关系建立
down状态
初始状态,没有接收到任何消息
lint状态
某台设备进入lint状态,表示这台设备,已经接收到了hello报文,但是另一台设备尚未与本设备建立双向通信关系(接受到的hello包中存在自身的rid进入下一状态)
two-way状态
双向通讯状态(标志着邻居关系的建立)
邻居关系建立过程
1、A开启ospf动态协议后,A会向B发送一个hello包。这时A的hello包中携带A的rid,B在接收到A的hello包后将状态置为lnit
2、B向A发送邻居列表中含有A的Hello报文,A在收到的Hello包邻居列表中发现自己的rid,状态置为2-way,没有lnit包。
3、A向B发送邻居列表中含有B的Hello报文,B在收到的Hello包邻居列表中发现自己的rid,状态置为2-way。
(ospf通过组播形式发送hello报文 目的组播地址224.0.0.5)
在two-way状态会有一个条件匹配的过程因为你发的消息别人不一定要,条件匹配成功才能继续向下进行,如果失败,停留在邻居关系之后仅使用hello包进行保活。
lsdb同步
exstart阶段(主从关系的竞争)条件匹配成功后进入
发送未携带数据的dbd包,空的dbd包也可以用作保活,Hello包也可以完成这个功能,发dbd原因是为了区别状态,代表已经不再是邻居关系的建立过程,已经条件匹配成功了。
在这个阶段路由器会决定出主从关系,决定主从关系的依据,比较rid谁大谁先,谁先发送消息
enchange阶段
主关系先发送lsdb,从关系先去比对信息,从设备先去要信息
使用携带数据库汇总信息的dbd包进行交互,需要ack确认
作用是错开发送,可以类比一下rip的异步传输
lsdb同步过程
1、A向B发送一个dbd包,宣告自己要成为主
2、B向A发送一个dbd包,且B的rid更大,B成为主,这时A会由exstart变为enchange
3、然后A回包,包里包含lsdb,B由exstart变为enchange
4、B发送一个包含lsdb的dbd包。
(避免同时更新,导致网络拥塞)
lsdb同步拓扑信息传输
loading阶段
加载基于其他设备发送过来的dbd包,对比本地缺失的las信息;使用lsr进行查询,对端使用lsa信息共享;需要ack确认。是为了完成邻接间的数据库一致
full阶段(邻接关系建立的标志)
主收到了从发来的确认后会进入此状态
进入full状态,标志着邻接关系的建立,并且只有达到邻接状态才能共享lsa信息
完成收敛
基于自己本地的链路状态数据库,依靠ospf算法形成有向图--最终计算出路由加载到自己的本地路由表中。
ospf工作过程
稳定状态(可以停留的状态)
Down State
two-way state
Full state
条件匹配
概念及原因
指定一台路由器(dr)和其他ospf网络设备建立邻接关系,其他设备仅保持邻居关系。这样做的原因网段消失每两台设备都要触发更新共享一次1.0消失的消息这个时候就会有垃圾信息,这个时候如果R1和其他路由是邻接关系其他路由两两是邻居关系只有r1可以和其他路由发送更新,其他路由不会重复更新。
dr选择(指定路由)
首先看接口优先级,优先级大成为指定路由 (dr为指定路由)(priority)当优先级数值相同会选择选接口IP大的作为指定路由器,优先级置为0将不会参与选举。在一个广播域中是指定路由在另一个广播域就可能不是指定路由,看接口IP大小,这个优先级,只看接口IP可能选出来的指定路由不是自己想要的,有优先级就是要人为的去干预这个指定路由的选择。
bdr选择(备份指定路由)
也需要和其他路由建立邻接关系。bdr作用当一个dr失效时立即顶替dr工作。
Drother (其他路由器)
有的时候dr小于bdr的原因
如果新来一台IP很大的设备,难道要强性改变自己的身份?并不是这样,dr和bdr是一个非抢占的,选出来是谁就是谁,需要设计一个时间用来选择dr和bdr时间一般是死亡时间40秒。
邻居表