路由算法
- 静态路由算法:人工配置路由信息。
- 动态路由算法:路由器自适应算法。(RIP、OSPF、BGP)
RIP协议
RIP协议,是一种分布式的基于距离向量的路由选择协议;是内部网关协议 IGP中最先得到广泛使用的协议。
简单了解
问题一:RIP交互的实体?
相邻路由器之间交换信息。
问题二:交互的内容?
路由器交换自身的路由表。
问题三:何时交互?
1)每过30秒同邻居路由器交换一次路由信息,然后根据距离向量算法更新自身的路由表。
2)若超过180秒没有邻居路由器的信息,则认为邻居路由“没了”,自更新路由表。
具体了解
概念——距离
1)从一路由器到直接连接的网络的距离定义为 1。
2)从一个路由器到非直接连接的网络的距离定义为所经过的路由器数加 1。
3)“距离”也称为“跳数”(hop count),因为每经过一个路由器,跳数就加 1。
4)“距离”实际上指的是“最短距离”。
5)RIP 允许一条路径最多只能包含 15 个路由器,“距离”的最大值为16 时,即相当于不可达。
这个限制决定了RIP协议不能支持大型自治网络。
6)RIP 选择一个具有最少路由器的网络路径,而不是低时延(但路由多)的网络路径。
RIP协议的报文格式
RIP协议使用UDP。
核心——距离向量算法
收到相邻路由器(其地址为 X)的一个 RIP 报文:
(1) 先修改此 RIP 报文中的所有项目:把“下一跳”字段中的地址都改为 X,并把所有的“距离”字段的值加 1。
(2) 对修改后的 RIP 报文中的每一个项目,重复以下步骤:
if(项目中的目的网络不在路由表中){
把该项目加到路由表中
}else{
if(下一跳字段给出的路由器地址是同样的){
收到的项目替换原路由表中的项目
}else{
if(收到项目中的距离小于路由表中的距离){
收到的项目替换原路由表中的项目
}
}
}
(3) 若 3 分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达路由器,即将距离置为16(距离为16表示不可达)。
(4) 返回。
特点——坏消息传播的慢
假如,网1出现了故障,R1先将距离置为16表示不可达。过了几秒,R2向R1交换一次路由表信息。根据距离向量算法,R1将网1的距离置为3。如图,恶行循环了下去。
OSPF协议
全称”Open Shortest Path First“,开放式最短路径优先。“最短路径优先”是因为使用了 Dijkstra 提出的最短路径算法SPF。用特点来表述,它是分布式的链路状态协议。
简单了解
问题一:OSPF交互的实体?
向自治系统内所有路由器发送信息(类似于”广播“,这里称为”洪泛法“)。即,路由器先向相邻路由器发送信息,相邻路由器又再次将此信息发往其所有的相邻路由器。
问题二:交互的内容?
仅向相邻路由器发送与本路由器相邻的所有路由器的链路状态信息(本路由器和哪些路由器相邻,以及之间链路的度量(metric)/代价——距离、时延、带宽等)。
这里强调的是,发送的仅仅是路由器知道的部分信息。
问题三:何时交互?
只有当链路状态发生改变时,路由器才向所有路由器洪泛发送此信息。
OSPF 还规定每隔一段时间,如 30 分钟,要刷新一次数据库中的链路状态。
具体了解
概念——链路状态数据库
通过各个路由器频繁交换链路状态信息,每个路由器最终都会建立的一个记录链路状态信息的数据库。这个数据库实际上就是全网的拓扑结构图,它在全网范围内是一致的(这称为链路状态数据库的同步)。
概念——OSPF的区域(area)
OSPF支持将一个自治系统再划分为若干个更小的范围,我们称之为:区域。每一个区域都有一个32位的区域标识符(用点分十进制表示)。区域不能过大,在一个区域内的路由器最好不超过200个。
图,一个让OSPF舒服的网络划分
划分区域的好处就是将利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个的自治系统。有以下目的:
1)减少整个网络上的通信量。
2)减小路由器的对链路状态信息储存的负担。
OSPF协议的报文格式
1)OSPF 不用 UDP 而是直接用 IP 数据报传送。
2)OSPF 构成的数据报很短。这样做可减少路由信息的通信量。
3)数据报很短的另一好处是可以不必将长的数据报分片传送。分片传送的数据报只要丢失一个,就无法组装成原来的数据报,而整个数据报就必须重传。
OSPF的分组类型
- 类型1,问候(Hello)分组
- 类型2,数据库描述(Database Description)分组
- 类型3,链路状态请求(Link State Request)分组
- 类型4,链路状态更新(Link State Update)分组
- 类型5,链路状态确认(Link State Acknowledgment)分组
OSPF协议交互
相邻路由的交互
注意:数据库描述分组与链路状态更新分组这两个同步数据的方式.
区域内的洪泛交互
OSPF的其他特点
1)适合大型网络:由于一个路由器的链路状态只涉及到与相邻路由器的连通状态,因而与整个互联网的规模并无直接关系。因此当互联网规模很大时,OSPF 协议要比距离向量协议 RIP 好得多。
2)收敛快:OSPF 没有“坏消息传播得慢”的问题,据统计,其响应网络变化的时间小于 100 ms。
BGP协议
BGP协议被称为是路径矢量型路由协议, 它与距离矢量型路由协议有些相似的地方, 但也有很多不同的地方, 它的侧重点不在于计算路由, 而是在于如何在自治系统之间传递路由和控制路由。它与RIP、OSPF不同,是外部网关协议。
简单了解
问题一:BGP交互的实体?
各个AS的BGP发言人。
问题二:交互的内容?
路径矢量信息,即要到达某个网络所要经过的AS序列。
问题三:何时交互?
当路径信息发生变换时
具体了解
基本概念
(1) 自治系统:在互联网中,一个自治系统(AS)是一个有权自主地决定在本系统中应采用何种路由协议的小型单位。(比如校园网)
(2)BGP发言人:运行BGP协议的设备都可以叫作BGP发言者。
(3)BGP对等体:相互交换BGP消息的发言者又称之为BGP对等体。
(4)IBGP:处在同一个AS内部的BGP发言者之间建立的对等体关系叫作IBGP。
(5)EBGP:不在同一个AS内部的BGP发言者之间建立的对等体关系叫作IBGP。
(6)Router-ID:运行BGP协议的路由器都有一个Router-ID, Router-ID是一个32位的无符号整数, 它是AS中每台BGP路由器的身份标识。Router-ID可以手工指定, 也可以自动选举产生。
(7)BGP同步:同步指的是IBGP和IGP(内部网关协议)之间的同步, 也就是说只有当IGP和IBGP都知道这条路由时, IBGP对等体才会把这条路由通告给其EBGP对等体, 否则数据在转发过程中会产生路由黑洞。
(8)IBGP水平分割:IBGP对等体之间在传递路由时, 不会再通告给其他IBGP对等体, 目的是为了防止路由环路。
BGP消息类型
根据RFC1771与RFC2918共有五种消息类型,其中后者定义ROUTE-REFRESH并不常用,只说前者的四种:
消息类型 | 作用简述 |
---|---|
OPEN(打开)报文 | 用于建立BGP对等体之间的连接关系并进行参数协商 |
UPDATE(更新)报文 | UPDATE消息用来在BGP邻居之间交换路由信息, 它既可以发布路由, 也可以撤销路由, 两者兼顾。 |
KEEPALIVE(保活)报文 | B G P会周期性地向邻居发送KEEPALIVE消息, 主要目的是让邻居知道自己的存在, 保持邻居关系的稳定性, 同时还有一个作用是对收到的OPEN消息进行确认 |
NOTIFICATION(通知)报文 | 当BGP邻居检测到对端发来的消息有错误或者对端主动断开BGP邻居关系, 会主动发出NOTIFICATION消息通知BGP邻居, 并关闭连接 |
BGP协议的报文格式
BGP协议位于应用层,支持CIRD。
三种路由协议比较
协议 | RIP | OSPF | BGP |
---|---|---|---|
类型 | 内部 | 内部 | 内部 |
路由算法 | 距离—向量 | 链路状态 | 路径—向量 |
传递协议 | UDP | IP | TCP |
路径选择 | 跳数最少 | 代价最低 | 较好,非最佳 |
交换结点 | 和本结点相邻的路由器 | 网络中的所有路由器 | 相邻BGP结点 |
交换内容 | 当前本路由器知道的全部信息,即自己的路由表 | 与本路由器相邻的所有路由器(部分信息)的链路信息 | 首次:整个路由表。非首次:变换部分。 |