用通俗的语言讲解路由协议

举报
龙哥手记 发表于 2022/02/22 11:35:44 2022/02/22
【摘要】 前奏简单介绍一下我的老婆:集美貌与财富于一体的女子–赏金,一句“请看好我的左眩,我的宝贝儿,这样做的感觉真好”让我瞬间“沦陷”。[剑豪]:你想象你手上有台路由器正收到一个数据包,它根据数据包的目的IP地址查询路由表,发现如果有匹配的路由条目,就由查询结果把数据包转发出去,如果没有呢它就放弃,过程叫做 IP路由。记住啊老婆。你像三层交换机啊,防火墙,负载均衡设备甚至主机都是可以路由操作,原因...

前奏

简单介绍一下我的老婆:集美貌与财富于一体的女子–赏金,一句“请看好我的左眩,我的宝贝儿,这样做的感觉真好”让我瞬间“沦陷”。

1
2
5
[剑豪]:你想象你手上有台路由器正收到一个数据包,它根据数据包的目的IP地址查询路由表,发现如果有匹配的路由条目,就由查询结果把数据包转发出去,如果没有呢它就放弃,过程叫做 IP路由。记住啊老婆。你像三层交换机啊,防火墙,负载均衡设备甚至主机都是可以路由操作,原因已经给你讲了。
3
4
[剑豪]:好的老婆,你看路由器有多个端口,说明可连接不同的网络区域。它通过识别目的IP地址的网络号,再由路由表进行数据转发。 路由器最终会维护一张路由表。它的作用是让路由器转发正确的转发 IP 报文。
路由器
111
112
具体的⼯作流程根据上图,举例⼦。

[赏金]:假设地址为10.10.1.101 的计算机要向地址为192.168.1.100 的服务器发送⼀个包,这个包先到达图中的路由器。判断转发⽬标的第⼀步,就是根据包的接收⽅ IP地址查询路由表中的⽬标地址栏,以找到匹配的记录。

[赏金]:路由匹配和前⾯讲的⼀样,每个条⽬的⼦⽹掩码和192.168.1.100 IP做 & 与运算后,得到的结果和对应条⽬的⽬标地址进⾏匹配,如果匹配就会作为候选转发⽬标,如果不匹配就继续与下个条⽬进⾏路由来配。如第⼆条⽬的⼦⽹掩码255.255.255.0与192.168.1.100IP做 & 与运算后,得到结果是192.168.1.0,这与第⼆条⽬的⽬标地址192.168.1.0匹配,该第⼆条⽬记录就会被作为转发⽬标。实在找不到匹配路由时,就会选择默认路由,路由表中⼦⽹掩码为0.0.0.0的记录表示「默认路由」。路由器的发送操作接下来就会进⼊包的发送操作。

[赏金]:⾸先咱们梳理下,我们需要根据路由表的⽹关列判断对⽅的地址。如果⽹关是⼀个IP地址,则这个IP地址就是我们要转发到的⽬标地址,还未抵达终点,还需继续需要路由器转发。如果⽹关为空,则IP头部中的接收⽅IP地址就是要转发到的⽬标地址,也是就终于找到IP包头⾥的⽬标地址了,说明已抵达终点。知道对⽅的IP地址之后,接下来需要通过ARP协议根据IP地址查询MAC地址,并将查询的结果作为接收⽅MAC地址。路由器也有ARP缓存,因此⾸先会在ARP缓存中查询,如果找不到则发送ARP查询请求。

接下来是发送⽅MAC地址字段,这⾥填写输出端⼝的MAC地址。还有⼀个以太类型字段,填写0080(⼗六进制)表示IP协议。⽹络包完成后,接下来会将其转换成电信号并通过端⼝发送出去。这⼀步的⼯作过程和计算机也是相同的。发送出去的⽹络包会通过交换机到达下⼀个路由器。由于接收⽅MAC地址就是下⼀个路由器的地址,所以交换机根据这⼀地址将包传输到下⼀个路由器。接下来,下⼀个路由器会将包转发给再下⼀个路由器,经过层层转发之后,⽹络包就到达了最终的⽬的地。不知你发现了没有,在⽹络包传输的过程中,源IP和⽬标IP始终是不会变的,⼀直变化的是MAC地址,因为需要MAC地址在以太⽹内进⾏两个设备之间的包传输。
q
[剑豪]:因为一台路由器一般是包含多条路由条目,这些路由从不同的来源得到,从来源分为三类:直连路由静态路由动态路由

  • 直连路由:直连的路由条目,只要你的接口配置了IP地址,接口状态正常。就可自动生成对应的直连路由了。
    直连路由
  • 静态路由:手动添加的路由条目就是。
    2
  • 动态路由:通过路由协议从相邻路由器动态学习到的路由条目就是。
    动态路由
    [剑豪]:不同的路由是有不同的优先级,优先级值越小,那它的优先级就越高了。如果存在多条目的网段相同,但来源不同的路由时,最高优先级的路由成为最好路由,被加入到路由表中,其它路由还没激活,是不会显示在路由表里面。
路由协议的默认优先级如图:

路由优先级

路由环路

路由环路是数据转发形成死循环,木能到达目的地的结果。
路由环路
配置错误的路由网络规划错误导致。譬如:在两台路由器上配置到相同目的地址的路由表项,若下一跳互相指向对方,这就是原因。另外还可能某些动态路由协议配置不当造成,也可能产生环路。

黑洞路由

一条路由条目,不管你是静态动态,都需要关联一个出接口,设备要到达目的网络的出站接口,它是个物理接口,比如咱们用的网口,它也可以是逻辑接口,如 VLAN 接口,或者是隧道接口等。其中有一种接口就非常特殊,那就是 Null 接口,它只有一个编号,就是 0 。Null0 是个系统保留的逻辑接口,网络设备在转发数据包时,如果使用出接口 Null0 的路由,那数据包将被丢弃,就像被扔进黑洞一样,故此得名。
8
但是它也不是一点用也没有,如下场景适合:

  • 在使用网络的时候,按需把数据指向黑洞路由,实现流量过滤。
  • 在已经部署路由汇总的网络中,用在防止数据转发出现环路。
  • 再部署了 NAT 的网络里面,用在防止数据转发出现环路,还有在 BGP 网络,用于发布特定网段的路由。
    24
    如图:
    9
    w
    [剑豪]:假如你使用动态路由,要提前设置好路由协议,路由器之间会定期交换路由信息,路由器会知道网络中其他网段的信息,动态生成路由表。如果网络变化,需要增删改时,只需要在对应的路由器上配置动态路由就可以完成。不需要像静态路由那样全部改一遍,如果路由器比较多,主要使用动态路由协议。
    10
    [剑豪]:比方说节点出现故障,只要有一个可绕行的其它路径,路由器的路由表会重新设置,数据包也自动选择这个路径。用了路由协议以后,网络拓扑结果变化的响应速度会大大提升的。无论是网络正常的增删改,还是有网络故障,临近的路由器都会检测到变化,会把这种拓扑变化通知网络中其它的路由器,使它们的路由表产生对应的变化,这个过程跟手动对路由表的修改要快很多,也很准确。

所以总结来讲,少于10个路由器的小型网络,静态路由或许够满足需求,但是在中大型网络里,使用动态路由协议,或者动态路由与静态路由相结合的方式来建设网络。
e

  • 邻居发现阶段:运行了路由协议后,路由器会主动把自己的网段信息发给相邻的路由器,广播或者单播发也行。
  • 交换路由信息阶段:发现邻居后,每台路由器都将自己的路由信息发送给相邻的路由器,相邻的路由器又发送给下一个相邻的路由器。经过一段时间后,每台路由器都会收到网络中所有的路由信息。
  • 计算路由阶段:每台路由器都会运行某种算法,计算出最终的路由表来。
  • 维护路由阶段:为了感知突然发送的网络故障,比如:设备的故障或者线路中断等,路由协议规定在一段时间内,应该周期性发送协议报文,如果路由器在一段时间内,没收到邻居发来的协议报文,就认为邻居路由器失效了。
    11
    r
    [剑豪]:这个容易理解,顾名思义,自治系统可以制定自己的路由策略,并管理自治系统内进行具体路由控制的路由器集合。每个自治系统都有一个唯一的自治系统编号,这个它的基本思路是希望通过不同的编号在区分不同的自治系统。通过路由协议和自治系统编号,路由器可确定路由路径和路由信息的交换方式。某个自治系统如果缺乏足够的安全机制,就可以利用编号改变路径回避它。

自治系统的编号范围是 1 - 65535,其中 1 - 64511是注册的因特网编号,64512 - 65535 是专门网络编号。
12
[剑豪]:自治系统内部动态路由使用的协议是域内路由协议,即 IGP。反之,自治系统之间的路由控制使用的是域间路由协议,即 EGP。那你可能要问了这有关系,它们两者的关系类似是IP地址网络号和主机号的关系,既可以根据 EGP 在区域网络之间进行路由选择,也可以根据 IGP 在区域网路内部进行主机识别。再说白点,没有 EGP 就不可能有世界上各个不同机构网络之间的通信,没有 IGP 协议也就不可能内部通信。

[剑豪]:IGP 是指在同一个自治系统内交换路由信息的路由协议。RIP,RIP2,OSPF属于 IGP。IGP 的主要目的是发现和计算自治系统内的路由信息。这里的EGP 与 IGP 不同,我们说了EGP用在连接不同的自治系统,并在不同自治系统间交换路由信息。EGP 的主要目的是使用路由策略和路由过滤等手段,控制路由信息在自治系统间的传播。BGP 属于 EGP
T
距离矢量这个概念包括两个关键的信息:距离方向,这个距离是指到达目的网络的度量值(所要经过路由器的个数),而方向说的是达到目的网络的下一跳设备。13
每一台运行距离矢量路由协议的路由器会周期性的将自己的路由表通告出去,相邻的路由器收到路由信息并更新自己的路由表,再继续向其它直连的路由器通告路由信息,最终网络中的每台路由器都能知道各个网段的路由,这个过程称为路由的泛洪过程。
14
路由器之间互换目的网络的方向和距离的信息,并用这些信息更新路由表,这种方法在处理上比较简单,不过因为只有距离和方向的信息,所以当网络构造变得复杂时,在获得稳定的路由信息之前需要消耗一定时间(路由收敛时间),也非常容易发生路由循环等问题。16
再看,运行链路状态路由协议的路由器会使用一些特殊的信息描述网络的拓扑结构和 IP 网段,这些信息被称为链路状态信息(LSA),所有路由器都会产生自己直连接口的链路转台信息。
17
路由器将网络里泛洪的链路状态收集起来,存在一个数据库中,这个数据库就是 LSDB(链路状态数据库),LSDB 是对整个网络的拓扑结构以及 IP 网段的描述,路由器拥有相同LSDB,对于任何一台路由器,网络拓扑都完全一样的。
18
接下来所有的路由器都给予 LSDB 使用最短路由优先算法进行计算,得到一颗以自己为根,无环路的最短路径树,并得到的路由加载到路由表中。
19
链路状态算法使用增量更新机制,只有当链路的状态发生变化时候,才发送路由更新信息。
20
20

主要路由协议

路由协议是需要 IP 进行报文封装的,但是它们的细节各不相同。RIP 协议是最早的,是给小型网路提供简单易用的动态路由。它采用的是 UDP 封装,端口号是520.但是 UDP 是不可靠的传输协议,所以 RIP 协议需要周期性的广播协议报文保证邻居收到路由信息。

OSPF 是目前应用最广泛的路由协议,可给大中型网络提供分层的,可靠路由服务。OSPF 直接采用 IP 进行封装,所有协议报文都由 IP 封装后进行传输,协议号是 89。IP 是尽力而为的网络层协议,本身它是不可靠的,所以为了保证传输的可靠性,OSPF采用了复杂的确认机制来保证传输可靠。

BGP 用的是 TCP 保证协议传输的可靠性,TCP 端口号是179。BGP 不需要自己设计可靠传输机制,降低协议报文的复杂度和开销。
路

常见的路由协议

路由协议对比表
相比距离矢量路由协议,链路状态路由协议具有更大的扩展性和更快的收敛速度,但是它的算法消耗更多的内存和CPU处理能力。
那如何衡量路由协议的性能指标呢?不同的路由协议,有不同的特点。各个路由协议的性能指标:

  • 协议计算的正确性:是指路由协议的算法会不会产生错误的路由导致网络环路。不同的路由协议使用的算法不同,因此路由正确性也不相同。链路状态路由协议(如OSPF)在算法上杜绝了产生路由环路的可能性,比距离矢量路由协议更优。
  • 路由收敛速度:路由收敛是指全网路由器的路由表达到一致状态。收敛速度快,意味着网络拓扑结构发生变化时,路由器能更快的感知,并及时更新对应的路由信息。OSPF, BGP等协议的收敛速度比 RIP 快。
  • 协议所占的系统开销:路由器在运行路由协议,要消耗的系统资源,如:CPU,内存。因为工作原理的不同,每个路由协议对系统资源的需求也不一样。OSPF路由技术 的资源开销要比 RIP协议多。
  • 协议自身的安全性:是说协议刚设计时,有没有考虑防止攻击的认证方法,而 RIPv1 是没有的。
  • 协议适用网络规模:不同路由协议所适用的网络规模,拓扑结构不同。RIP 协议有 16 跳的限制,所以只能应用在规模较小的网络里面;而 OSPF 可以应用在几百台路由器的大规模网络中;最后的 BGP 能管理全世界的路由器,其网络规模大小只受系统资源的限制。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。