路由简介
*表示在文末有注释
路由属于网络层的内容,路由是根据设备的唯一地址(IP地址)进行的,如何在发送端到接收端之间的无数路由器所构成的众多路径找出快速可靠的路径是路由协议的关键。
路由表由路由表项组成,一个路由表项包括:
- 目标IP地址和mask
- 路由来源:链路层(Direct ),静态路由(static),动态路由(RIP、OSPF、IS-IS、BGP)
- 优先级(Pre):同一目标IP地址和mask有多个路由表项时,优先用**优先级值小(小代表优先级高)**的
- 开销:同一目标IP地址和mask有多个路由表项时,优先用开销低的
- Flags(标志):指示每个路由条目的特定属性或状态。(文末,会简单列举)
- 下一跳IP地址:通过ARP获得下一跳IP的MAC地址作为目标MAC地址将数据封装为数据帧
- 转发端口:将封装的数据帧从此端口发出
路由的来源
- 链路层发现的路由(Direct)。通过端口直接相连网段的的路由。
- 静态路由(Static):由管理员手动配置的路由
- 动态路由:指通过网络中运行的路由协议进行配置的,可以随网络拓朴变化二自动更新。
路由协议及分类
自治系统(AS,autonomous system):指在单一技术(路由协议)管理下的一组IP网络和路由器,使用共同的路由策略对外表现为一个单一的实体。
常见路由协议
- 路由信息协议 (Routing Information Protocol, RIP):中小网络。
- 开放式最短路径优先协议(Open Shortest Path First,OSPF):中大型企业网络和ISP(网络业务提供商,Internet Service Provider)。
- 中间系统到中间系统协议(Intermediate System to Intermediate System,IS-IS ):大型运营商和复杂企业网络。
- 边界网关协议(Border Gateway Protocol,BGP):用于AS(自治系统)之间交换路由信息。
分类
1. 按照作用范围
- 内部网关协议(IGP,Interior Gateway Protocol):在一个自治系统内部运行的路由协议。包括RIP、OSPF、IS-IS。
- 外部网关协议(EGP,Exterior Gateway Protocols):用于连接不同的自治系统。
在不同的自治系统之间交换路由信息,主要使用路由策略和路由过滤等控制路由信息在自治域间传播,如BGP。
2.按照路由的寻径算法和交换路由信息的方式
- 距离矢量协议(Distant-Vector,D-V):包括RIP和BGP。BGP也被称为路径矢量协议(Path-Vector)。
- 距离矢量路由协议基于贝尔曼-福特算法,使用D-V算法的路由器通常以一定的时间间隔向相邻的路由器发送他们完整的路由表*。他关注目的网段的距离(Metric)和矢量(方向,从哪个接口转发数据)。
- 缺点在于扩展性差,如RIP的最大跳数不能超过15.
- 链路状态协议(Link-State):包括OSPF、IS-IS。
- 链路状态路由协议基于Dijkstra算法(代码随想录 (programmercarl.com)),也叫最短路径优先算法。链路状态算法使用增量更新的机制,只有当链路状态发生了变化时才发送路由更新信息,这种方式节省了相邻路由器之间的链路带宽。且路由更新信息中只包含改变了的链路状态信息,而非整个路由表。
区别:D-V算法只了解直接相邻的路由器,只需要维护一个路由转发表即可,所以对路由器的性能要求低,但收敛速度慢;Dijkstra则需要了解该AS中的所有路由器信息,维护整个网络拓扑结构,并据此计算得到路由转发表,性能要求高,收敛速度快。
3.按照业务应用
- 单播 :数据包的目的地址时唯一的一台主机或设备,包括RIP、OSPF、BGP和IS-IS等
- 多播:数据包的目标地址为多播地址,即一组主机或设备可以同时接受到数据包,包括距离向量多点广播路由选择协议(Distance Vector Muticast Routing Protocol,DVMRP)、协议无关多播-稀疏模式(Protocol Independent Multicast - Sparse Mode , PIM-SM)、协议无关多播-密集模式(Protocol Independent Multicast - Dense Mode, PIM-DM)等。
判断一个路由协议好坏的度量维度:
- 正确性,路由协议能够正确找到最优的路由,并且是无路由自环。
- 快收敛,当网络的拓扑结构发生变化时,路由协议能够迅速更新路由,以适应新的网络拓扑。
- 低开销,要求协议自身的开销(内存、CPU、网络带宽)最小。
- 安全性,协议自身不易收到攻击,有安全机制。
- 普适性,能适应各种网络拓扑结构和各种规模的网络,扩展性好。
名词解释:
贝尔曼-福特算法:每个节点计算到所有可能目的地的最短路径,更新规则如下:
Dx(y)=min{c(x,v)+Dv(y)}
其中:
- Dx(y) 是从节点 xx 到目的地 yy 的当前最短距离。
- c(x,v) 是从节点 xx 到其邻居节点 vv 的距离。
- Dv(y) 是从邻居节点 vv 到目的地 yy 的距离。
常见的路由表标志(Flags)
- U (Up):
- 说明:该路由是可用的。
- 作用:表示该条目是活动的,可以用于数据包转发。
- G (Gateway):
- 说明:该条目指向一个网关。
- 作用:表示目的地不是直接连接的网络,数据包需要通过指定的网关转发。
- H (Host):
- 说明:该条目指向一个单一的主机。
- 作用:表示该路由是为一个特定的IP地址配置的,而不是整个网络。
- D (Dynamic):
- 说明:该条目是由路由守护进程或动态路由协议添加的。
- 作用:表示该路由是通过动态路由协议(如RIP、OSPF)学到的。
- S (Static):
- 说明:该条目是静态配置的。
- 作用:表示该路由是由管理员手动配置的,不会自动更改。
- R (Reinstate):
- 说明:该条目是为了恢复一条被删除的动态路由。
- 作用:用于临时存储被动态协议删除的路由,可能被重新激活。
- M (Modified):
- 说明:该条目已被修改。
- 作用:表示该路由条目已被修改,例如通过ICMP重定向消息。
- A (Active):
- 说明:该条目是活动的。
- 作用:表示该路由条目正在被使用。
- C (Connected):
- 说明:该条目指向一个直接连接的网络。
- 作用:表示该路由条目是通过直接连接的接口访问的。