路由分类
按来源:
- 直连路由:链路层协议发现的,在接口存在IP地址时,路由进程自动生成。
- 静态路由:手动配置的路由。
- 动态路由:通过路由协议自动发现和计算出来的
动态路由协议的分类
内部网关和外部网关协议的区别在于是否处于同一自治系统(选路策略一致,属于某部门统一管理的一组路由器),相同为内部网关协议,不同为外部网关协议。
内部网关协议IGP包含如下:
- RIP:属于距离矢量协议
- OSPF:链路状态协议
- ISIS:链路状态协议
外部网关协议EGP包含:
BGP:属于路径矢量协议
路由协议工作原理
主要包含4个阶段
- 邻居发现:主动把自己的网段介绍给其他路由器
- 交换路由信息:相互发送,保证每台路由器都能收到网络的中所有的路由信息
- 计算路由:通过某种算法,计算出路由应该怎么走下一跳和度量值为多少
- 维护路由:周期性的发送协议报文,确保邻居是否失效
各个路由协议工作原理大体相同,细节上会有不同。
路由协议的比较
特性 | RIP-1 | RIP-2 | OSPF | IS-IS | BGP |
距离矢量算法 | √ | √ |
|
| √ |
链路状态算法 |
|
| √ | √ |
|
支持VLSM |
| √ | √ | √ | √ |
支持手工聚合 |
| √ | √ | √ | √ |
支持自动聚合 | √ |
|
|
| √ |
支持无类别 |
| √ | √ | √ | √ |
收敛速度 | 慢 | 慢 | 快 | 快 | 慢 |
度量值 | 跳数 | 跳数 | 开销 | 开销 | 路径属性 |
路由负载分担和备份
路由器对数据报文进行转发时,如果存在多条最优路径,会将数据按照一定的策略在多条路径上一次发送,通过ECMP(等价路由)实现IP流量的负载分担。
常用的有2种方式:
- 基于流:按IP 五元组将数据分成不同的流,相同五元组信息的IP报文为同一个流,路由器从多个路径依次发送出去。
- 基于包:把数据包从多个路径依次发送出去,更加精确一些。但是有可能造成接受乱序。
路由备份:
优先级高的作为主路由,将其余优先级较低的路由作为备份路由,最为常见的就是使用静态路由来备份动态路由,静态路由没有链路带宽开销,适用于低带宽链路备份场景。
路由聚合
在大规模网络,为了降低链路震荡对路由器产生的影响,会采用链路聚合,即将同一网段内不同子网的路由聚合为1条路由向外发送,可以实现减小路由表的规模,减少网络流量。
OSPF基本原理
- 当路由器开启OSPF后,路由器之间就会相互发送HELLO报文,HELLO报文中包含一些路由器和链路的相关信息,发送HELLO报文的目的是为了形成邻居表;
- 然后,路由器之间就会发送LSA(LINK STATE ADVERTISEMENT,链路状态通告),LSA告诉自己的邻居路由器和自己相连的链路的状态;
- 最后,形成网络的拓扑表,其实这个过程是很复杂的,他们经过发LSA,记录LSA,转发LSA,最后形成LSDB(链路状态数据库,即拓扑表),形成拓扑表之后,在经过SPF算法,通过计算LSDB,最后形成路由表。
- 形成路由表后,路由器就可以根据路由表来转发数据包,但是,这只是理想情况,如果之后,网络拓扑发生了变化,或是网络链路出现了问题,OSPF协议还是会经过这三张表来重新计算新的路由,只不过不会这么复杂了,路由器在默认情况下,10S就会发送一次HELLO报文,以检测链路状态,保证链路始终是正常的。