RIB:Routing Information Base,路由信息库 ,路由器的控制平面
FIB:Forwarding Information Base,转发信息库,路由器的数据平面
路由信息库主要是记录直连路由以及协议宣告的路由信息,转发信息库主要是记录路由转发信息,记录可以通过那条路由进行转发的路由信息。
路由表中有很多参数,例如nexthop为下一跳,protocol为路由协议;其中Preference用于不同路由协议间路由优先级的比较,Cost用于同一种路由协议内部不同路由的优先级的比较。
FIB表信息查看命令:display fib [ slot-id ]
slot-id:显示指定槽位号的FIB表信息。整数形式,取值范围请根据设备实际配置选取。Flag:当前标志,G、H、U、S、D、B的组合。
G(Gateway):网关路由,表示下一跳是网关。
H(Host):主机路由,表示该路由为主机路由。
U(Up):可用路由,表示该路由状态是Up。
S(Static):静态路由。
D(Dynamic):动态路由。
B(Black Hole):黑洞路由,表示下一跳是空接口。TunnelID:表示转发表项索引。该值不为0时,表示匹配该项的报文通过隧道转发(如:MPLS隧道转发)。该值为0时,表示报文不通过隧道转发。
⦁ 直连路由:直连接口所在网段的路由,由设备自动生成。
⦁ 静态路由:由网络管理员手工配置的路由条目。
⦁ 动态路由:路由器通过动态路由协议(如OSPF、IS-IS、BGP等)学习到的路由。
⦁ BGP(Border Gateway Protocol,边界网关协议)是一种实现AS(Autonomous System,自 治系统)之间的路由可达,并选择最佳路由的距离矢量路由协议。
AS是指在一个实体管辖下的拥有相同选路策略的IP网络。
指的是路由信息从一种路由协议发布到另一种路由协议的操作
作用:
通过路由引入,可以实现路由信息在不同协议之间进行传递
执行路由引入时,还可以部署路由控制,从而实现对业务流量的灵活把控
配置往往是在引入的路由器上进行配置,而不是引出的路由器(路由引入是具有方向性的)
路由优先级:路由器在进行路由选择时,根据不同的路由协议和配置参数,为每个路由设置一个优先级。优先级越高的路由,其路径将被优先选择作为数据包的传输路径。
路由回灌:路由回灌是一种优化技术,用于在网络中将动态学习或静态配置的路由信息重新注入到路由协议中。当网络拓扑发生变化时,路由器可以通过回灌操作更新路由表,从而适应新的网络情况。
路由度量值:路由度量值是用来衡量路由的选择优劣的指标。它可以基于各种因素进行计算,如跳数、带宽、延迟、可靠性等。路由器根据路由度量值来评估可选路由的优劣,并选择度量值最低的路由作为最佳路径。
DR与BDR类似于选举老大,等老大不在的时候备用管事儿,其中DR为老大BDR为备用。DR和BDR的选举是为了选择一个具有较高优先级的路由器。
选举过程:
- 首先,每个OSPF路由器都会发送Hello消息来宣告自己的存在,并与相邻的路由器建立邻居关系。
- 每个路由器在Hello消息中包含自己的路由器优先级(Router Priority)值。默认情况下,路由器优先级为1。
- 当路由器收到Hello消息后,会比较对方发送的路由器优先级和自己当前的DR和BDR的优先级。
- 如果对方发送的路由器优先级大于自己当前的DR和BDR的优先级,那么当前路由器会更新自己的DR和BDR,并将对方设置为BDR。
- 如果对方发送的路由器优先级等于自己当前的DR和BDR的优先级,并且对方的路由器ID(Router ID)比自己大,则当前路由器会更新自己的DR和BDR,并将对方设置为BDR。
- 如果对方发送的路由器优先级等于自己当前的DR和BDR的优先级,并且对方的路由器ID比自己小,则当前路由器不会更新DR和BDR的角色。
⦁ BGP使用一种基于距离矢量算法修改后的算法,该算法被称为路径矢量(Path Vector)算法。因此在某些场合下,BGP也被称为路径矢量路由协议。
⦁ IGP(内部网关协议)在同一个自治系统内交换路由信息,IGP的主要目的是发现和计算自治域内的路由信息。
⦁ EGP(外部网关协议)主要用于AS(自治系统)之间的互联。
基本原理:
每个路由器都会获取网络拓扑信息,并计算出到达其他路由器的最佳路径。它通过交换链路状态信息来维护网络的拓扑状态,各个路由器根据收到的信息构建一个全局的网络拓扑图,然后使用某种算法计算最短路径。
在链路状态路由协议中,每个路由器都会周期性地广播它的链路状态信息,或者通过多播方式发送给周围的邻居路由器。当一条链路发生故障或者网络拓扑发生变化时,路由器会更新自己的链路状态信息,并重新计算最佳路径。
链路状态路由协议有四个步骤:
⦁ 第一步是建立相邻路由器之间的邻居关系。
⦁ 第二步是邻居之间交互链路状态信息和同步LSDB。
⦁ 第三步是进行优选路径计算。
⦁ 第四步是根据最短路径树生成路由表项加载到路由表。
Router ID一旦选定,之后如果要更改的话就需要重启OSPF进程。
OSPF Hello(Hello报文):
- 用途:邻居发现和建立邻居关系。
- 报文格式:报文头部信息(Version、Router ID、Area ID等)和邻居列表。
OSPF Database Description(DD报文):
- 用途:用于同步链路状态数据库(LSDB)。
- 报文格式:报文头部信息(Version、Router ID、Area ID等)、参数字段(MTU、Options等)和LSA描述符(包括LSA类型、LSA序列号、LSA长度等)。
OSPF Link State Request(LSR报文):
- 用途:请求指定的LSA(Link State Advertisement)。
- 报文格式:报文头部信息(Version、Router ID、Area ID等)和请求的LSA列表。
OSPF Link State Update(LSU报文):
- 用途:传输LSA。
- 报文格式:报文头部信息(Version、Router ID、Area ID等)和LSA列表。
OSPF Link State Acknowledgement(LSAck报文):
- 用途:确认收到的LSU报文。
- 报文格式:报文头部信息(Version、Router ID、Area ID等)和确认的LSA列表。
重要字段解释
⦁ Version :对于当前所使用的OSPFv2,该字段的值为2。
⦁ Router ID:表示生成此报文的路由器的Router ID。
⦁ Area ID:表示此报文需要被通告到的区域。
⦁ Type:类型字段。
⦁ Packet length:表示整个OSPF报文的长度,单位是字节。
⦁ Checksum:校验字段,其校验的范围是整个OSPF报文,包括OSPF报文头部。
⦁ Auth Type:为0时表示不认证;为1时表示简单的明文密码认证;为2时表示加密(MD5)认证。
Authentication:认证所需的信息。该字段的内容随AuType的值不同而不同。
邻居发现和建立邻居关系:
链路状态数据库(LSDB)同步:
最短路径计算:
路由更新和转发:
监听和更新:
常见的OSPF LSA类型:
Type 1 LSA(Router LSA):由每个OSPF路由器生成,用于描述路由器的直连连接和邻居信息。它被分发到本地区域的所有其他路由器,帮助构建链路状态数据库(LSDB)。
Type 2 LSA(Network LSA):由DR(Designated Router)创建,用于描述多点链路的网络段。它提供了该网络上的所有路由器的信息,并分发给本地区域中的其他路由器。
Type 3 LSA(Summary LSA):由ABR(Area Border Router)在不同区域之间传播,用于汇总本地区域内的网络信息,向其他区域的路由器提供达到本地区域内部目标网络的路径信息。
Type 4 LSA(ASBR Summary LSA):由ASBR(AS Boundary Router)创建,用于向本地区域中的其他路由器提供到达外部AS(Autonomous System)的路径信息。
Type 5 LSA(External LSA):由ASBR生成,用于表示外部AS中的目标网络。它被分发到所有的区域中,并包含了到达外部目标网络的路径信息。
Type 7 LSA(NSSA External LSA):在NSSA(Not-So-Stubby Area)中使用,类似于Type 5 LSA,但用于表示从NSSA区域到外部网络的路径信息。