路由协议
路由器维护路由表,并根据路由表来决定如何正确的转发流量
- 路由表有多条路由规则,路由规则由目的网络,出口设备,下一跳网关组成
- ip route/route命令
- 静态路由和动态路由
静态路由算法
- 配置复杂的策略路由,控制转发策略
动态路由算法
- 距离矢量路由:
- 原理:每个路由器都保存一个路由表,包含多行,每行对应网络中的一个路由器,每一行包含两部分信息,一个是要到目标路由器,从那条线出去,另一个是到目标路由器的距离。
- 更新:每隔一段时间,每个路由器都广播自己的信息
- 问题:只适用于小型网络
- 好消息传的快,坏消息传得慢。当有路由挂掉的话,邻居会先遍历其他的路径,比较难以发现
- 每次发送的时候,要发送整个全局路由表
- 链路状态路由算法
- 基于Dijkstra算法
- 当一个路由器启动的时候,首先是发现邻居,向邻居 say hello,邻居都回复。然后计算和邻居的距离,发送一个 echo,要求马上返回,除以二就是距离。然后将自己和邻居之间的链路状态包广播出去,发送到整个网络的每个路由器。这样每个路由器都能够收到它和邻居之间的关系的信息。因而,每个路由器都能在自己本地构建一个完整的图,然后针对这个图使用 Dijkstra 算法,找到两点之间的最短路径。
- 链路状态路由协议只广播更新的或改变的网络拓扑,这使得更新信息更小,节省了带宽和 CPU 利用率。而且一旦一个路由器挂了,它的邻居都会广播这个消息,可以使得坏消息迅速收敛。
动态路由协议
-
基于链路状态路由算法的OSPF(Open Shortest Path First, 开放最短路径优先)
-
基于距离矢量路由算法的BGP(Border Gateway Protocol)
- AS(Autonomous System)自治系统
- Stub AS:对外只有一个连接。不会传输其他AS的包,如个人或小公司的网络
- Multihomed AS:可能有多个连接到其他的AS,但是大部分拒绝其他的AS传输包,如一些大公司的网络
- Transit AS:有多个连接到其他AS,并且可以帮助其他的AS传输包,如主干网
- eBGP和iBGP:自治系统之间,边界路由器之间使用eBGP广播路由;通过iBGP使得内部的路由器能够找到到达外网目的地的最好的边界路由器。
- 使用协议是路径矢量路由协议,在 BGP 里面,除了下一跳 hop 之外,还包括了自治系统 AS 的路径,从而可以避免坏消息传得慢的问题
思考题
-
路由协议要在路由器之间交换信息,这些信息的交换还需要走路由吗?不是死锁了吗?
-
路由器之间信息的交换使用什么协议呢?报文格式是什么样呢?
-
若交换路由信息使用的是RIP, EIGRP, OSPF, BGP路由协议,需要使用IP路由表
-
若交换路由信息使用的是IS-IS路由协议,通过IS-IS路由表
-
路由协议不能没有路由表,路由表可以没有路由协议
- AS(Autonomous System)自治系统