路由器数据转发原理,路由表、FIB、快速转发表的关系
路由的控制平面与转发平面
控制平面:负责路由计算,维护;路由协议运行在控制平面
转发平面:进行数据包的封装,报文转发,路由表,FIB表,快速转发表等
控制平面与转发平面相互独立又协同工作
路由器检查数据包的目的 IP 地址,用数据包的目的 IP 地址查询路由表,在路由表中对所有路由条目遍历,最终按照能匹配的掩码最长的路由进行转发
基于最长匹配机制,路由表规模太大后,将会大幅降低查表速度,从而影响转发效率。同时为了做到控制平面与转发平面完全隔离,构建了FIB表,所以设计了 FIB 表,FIB 表来自于路由表中 Active 状态的路由和 ARP表,FIB 表规模大幅小于路由表,所以数据转发查询 FIB 表,速度会更快
FIB 表和路由表一样都属于最长匹配的表项,所以能够提升的查询速度也较有限。所以引入了快速转发表
快速转发表是针对数据五元组信息的精确匹配表项。当一组五元组相同的数据流的首包进入路由器,路由器会通过查 FIB 表来完成转发,并根据转发结果来产生该五元组的快速转发表项。后续五元组相同的数据包再进入路由器,就查询到快速转发表,按照快速转发表来完成转发;由于快速转发表项是精确匹配,无需遍历整个表项,所以查表速度可以大幅提升;(源IP地址,源端口号,目的IP地址,目的端口号,协议号)
路由备份与路由负载
路由备份指的当一台路由器上有多条路径到达目的网段,配置不同来源的路由走不同路径,按照路由写表规则,会选择优先级数字最小的路由成为 Active 路由,其他路由成为 Inactive 路由。当 Active 路由故障后,路由器会在 Inactive 路由中选择优先级数字最小的成为新的 Active 路由
路由负载则是在路由器上配置同一来源的路由,如果 Cost.相等,就会在多条路径上产生等价路由,从而实现到达目的网段流量的负载分担
实际使用中,如果不同路径的带宽相差太大,建议使用路由备份,如果不同路径的带宽接近,则建议使用等价路由来负载
什么是浮动静态路由
场景:当网络中存在两个出口,一个出口是高速链路,一个是低速。一般会在高速出口上运行路由协议来传递路由,而低速链路为了节省带宽,都会配置静态路由如果高速链路上运行的是 RIP 协议的话,根据路由写表规则,路由器会选择静态路由作为最优路由,而不会选择 RIP。这样就会导致低速链路成为了主链路而高速链路成为了备份链路,不符合真实需求
浮动静态路由就是指把静态路由的优先级数字改大,使路由协议的路由能够成为 Active 路由、而静态路由成为 |nactive 的备份路由。这样高速链路就会成为主链路、当主链路故障、静态路由就会被立即切换为 Active 路由,形成路由备份的效果
路由聚合的意义以及路由聚合的注意事项
路由聚合是指把多条明细路由合并为一条,来缩小路由表规模,加快路由查表速度,以及提高路由表稳定性的技术,通常也将路由聚合称为路由汇总
要把多条路由聚合为一条,需要满足如下条件:
被聚合的路由必须是连续的子网
对 IGP路由进行聚合时,聚合路由中所包含的所有子网必须是同一下一跳或出接口,对手BGP路由进行聚合时,只要在 BGP表中存在的明细路由都可以进行聚合
路由聚合在某些情况下会产生环路
当两台路由器互相对路由进行聚合,聚合的范围过大,聚合路由中包含了网络中不存在的子网时,一旦有数据包访问不存在的子网,就会导致该数据包在两台路由器之间形成路由环路。解决方法是配置精准的聚合,尽量不要使聚合的路由中包含不存在的子网
-
如图,当 RTA 对本机上的子网路由在 RIP 中进行聚合后传递给 RTB,同时RTA 配置了缺省路由指向RTB。网络正常时没有环路。但当 RTA 的某个子网故障后,该子网的明细路由在路由表中消失。如果有数据包访问该故障就会导致RTA 按照缺省路由把数据包发往 RTB,RTB 收到后会按照合路由发送给RTA,形成环路。解决方法是在 RTA上配置黑洞路由(即出接口指向 null0 的路由),目的网段与聚合路由一致。当子网故障后,再有访问故障子网的数据包,基于最长掩码匹配规则,RIA 会按照黑洞路由丢弃数据包,而不是匹配缺省路由发往RTB
路由表的来源,以及路由表路由优选规则
路由表的来源可分为直连路由、静态路由、路由协议
直连路由:根据路由器的直连接口所在网段自动产生的路由。只要接口 UP并配置了 IP地址,就会产生直连路由
静态路由:手动配置的到达每个目的网段的路由,大规模网络中配置维护复杂,但没有协议开销
路由协议:配置维护简单,路由器会自动传递并学习路由,但是会消耗系统资源
路由优选规则:
不同来源的路由优先级数字小的优先。如果手动把不同协议的优先级改成一致,按照默认优先级进行优选
同一来源的路由,对比度量值,小的优先
同一来源,度量值相同,会自动形成等价路由
常见协议的优先级/管理距离
路由协议的优先级
路由器分别定义了外部优先级和内部优先级。外部优先级是指用户可以手工为各路由协议配置的优先级,路由协议的内部优先级则不能被用户手工修改。
同一个设备对于自身不同路由协议都设置相同的路由优先级时,则根据不同协议的内部优先级比较,所以内部优先级不能被修改;
~设备通过OSPF5类和7类学到路由,优先选谁?内部优先级一样,不具备可比性;①类型1>类型2;②比开销③负载
默认的外部优先级和默认的内部优先级
什么是最长掩码匹配规则
当数据包在路由器中同时匹配多条掩码长度不同的路由时,会按照掩码最长的路由进行转发。因为掩码越长,意味着网络越精确。所以当同时存在明细路由聚合路由,缺省路由时,优选顺序是明细路由>聚合路由>缺省路由
什么是路由选代规则
当路由表查询到下一跳地址是非直连地址后,路由器会将下一跳的地址再次询路由表,直到查询到下一跳地址是直连地址为止
路由迭代也称为路由的递归查询,可能需要查找多次
路由协议有哪些?分别工作在第几层?各有什么特点
RIP>UDP(基于 UDP 端口 520)>应用层>距离矢量路由协议(跳数、水平分割、路由毒化、毒性反转、触发更新、定时器)
OSPF>IP(基于IP 排议号 89)>网络层>链路状态路由协议(分区域、SPF 算法、多种 LSA)
ISIS>Ethernet Pame>802.3>链路状态路由协议(分区域、SPF 算法)
BGP>TCP(基于 TCR 端口 179)>多应用层>承载大量的路由(丰富的路由策略工具)
路由协议的分类
根据作用的范围,路由协议可分为:
内部网关协议(简称IGP):在一个自治系统内部运行,常见的IGP 协议包括 RIP、OSPF 和IS-IS。
外部网关协议(简称EGP)运行于不同自治系统之间,BGP 是目前最常用的 EGP 协议。
根据使用的算法,路由协议可分为
距离矢量协议:包括 RIP和 BGP。其中,BGP 也被称为路径矢量协议。
链路状态协议:包括 OSPF 和 IS-IS。
根据目的地址的类型,路由协议可分成:
单播路由协议:包括 RIP、OSPF、BGP 和 IS-IS 等。
组播路由协议:包括PIM-SM、PIM-DM、PIM-SSM 等。
距离矢量协议的特征
周期性、广播发送路由更新
路由更新中携带全部路由表,接收方据此更新自己的路由
超过一定时间接收不到路由更新报文,则认为此路由失效
以到目的网段的距离(跳数)作为度量值
拓扑变化以逐跳的方式扩散
路由收敛速度慢
采用距离矢量算法,可能导致路由环路
链路状态协议的特征
通过 Hello 报文来发现邻居
建立邻接关系后,只发送链路状态公告(LSA)
根据自己的链路状态数据库(LSDB)来计算路由
链路状态变化时,马上发送LSA 到区域内所有路由器
路由收敛速度快
采用 SPF算法无路由自环
路径矢量协议的特征
仅在邻居刚建立时发送全部路由表、邻居建立后只发送增量路由更新
如果邻居失效,则认为路由失效
丰富的路由属性作为度量值
拓扑变化以逐跳方式扩散
采用机制防止路由环路
(BGP)
实现 VLAN 间路由的方式以及各自的优缺点
路由器使用不同接口连接不同 VLAN,VLAN 内的 PC 把网关指向为路由器在本VLAN 的接口地址,VLAN 之间通过路由器进行三层通讯。该方式对路由器接口数量要求很高,路由器一般没有这么多接口
单臂路由技术:路由器单线连接到交换机的Trunk口,路由器在接口上划分子接口,不同子接口绑定不同 VLAN,并作为不同 VLAN 的网关地址。该方式不再受路由器接口数量限制,但是单线连接所有 VLAN,会导致性能负担太重,也容易造成单点故障,同时可能存在次优路径
使用三层交换技术:在三层交换机上配置 IP地址,对不同VLAN 的 PC 进行三层转发。该方式不受接口数量限制,也不用通过其他设备来完成三层转发。并且在三层交换机中,三层转发和二层转发时一次完成转发效率高
如何使用纯二层交换机实现不同 VLAN 的通信??
使用 hybrid 接口来实现
怎么实现两个 vlan 之间无法通信??
可以使用 ACL 进行流量过滤
配置黑洞路由的作用
黑洞路由是指出接口指向 Null0 接口的路由,NULL0 接口从不转发任何报文对于所有发到该接口的报文都直接丢弃,由于它的这个特征,NULL0 接口主要被用在以下两方面:
防止路由环路,在聚合一组路由时,总是创建一条到 NULL0 接口的路由
用于过滤流量,可以通过将不想要的报文发送到 NULL0 接口,避免使用访问控制列表。
黑洞路由是如何产生的
路由协议进行路由聚合时会针对聚合路由自动产生一条指向null0接口的黑洞路由
可以手工添加
黑洞路由vs路由黑洞(是一种现象,查表没有然后丢失)