路由器学习总结

路由器在网络中的作用至关重要,就好像我们坐公交车到某个地方,公交车肯定不是一站直达的,中间要经过许多个公交站点,网络中数据的传输也是一样,源地址与目标地址之间并不是直接到达的,中间也要经过一系列的路由器转发,所以路由器的作用,就是用来转发数据包,使其到达正确的位置。
路由器学习总结_第1张图片
比如我跟踪一个数据包的传输路径,tracert+IP/域名的命令可以跟踪数据包转发的路径,发现一个数据包的转发要经过很多个站点,图片中第四列显示的就是经过的一系列站点的IP,这些站点实际上就是一个个路由器。

工作原理

在说工作原理 之前,先简单说一下路由表。
路由器转发数据包是根据路由器内部的路由表进行转发,当数据包到达路由器时,查询路由表,获取下一站的地址,然后进行转发,与之对应的每个公交站点都有一个站牌,告诉你下一站是哪里。
以华为路由器为例,说一下路由表的结构,其他型号的路由器大致也差不多。
华为路由表主要包含以下几个字段

  • destination/mask:用于描述目标网段,当前往目标网段有多个路径时,选择掩码最长的一条路径转发。
  • Protocol:表示路由运行的协议,路由表根据路由协议生成,包含三类路由
    直连路由:有链路层协议发现,开销小,表示与该路由器直连的路由,只能发现本接口所属网段的路由
    静态路由:由人工手动配置,IP router 129.1.0.0 16 10.0.0.2, 129.1.0.0表示目标网段,16表示掩码长度,10.0.0.2表示去往目标网段的下一个路由IP地址
    动态路由:根据各种路由协议算法发现,无需人工维护,但是开销较大,这也是生成路由表的主要方式
  • Preference:表示优先级,数值越小,优先级越高
  • Metric(Cost):开销,到达目标网络的代价,值越小,越优先
  • Interface:本端接口,表示数据包从本端那个接口转发出去
  • Nexthop:下一跳地址,互联网对端路由器的端口

当数据包到达路由器时,会进行下面几个操作

  • 读取目标地址的网络部分
  • 找到路由表中对应的地址的路由条目,将包转发到相应的路由器接口
  • 如果没有找到对应的路由条目,则将包转发到路由器对应的默认路由的接口,如果没有配置默认路由,将包丢弃,返回目标不可达信息
  • 到达下一个路由器时,在重复上述过程,直到到达目标地址对应的网段。

整个包传输过程,目标地址,源地址和端口号不会改变,但是MAC地址会发生变化,每经过一个路由器转发,MAC地址会被重新封装一次,封装为下一跳的MAC地址。

一般来说,静态路由的优先级最高,如果配置了静态路由,会优先使用静态路由转发。

由于路由转发的数据量非常大,所以不可避免的会出现路由环回(数据包在一个闭环的环路中不停的转发,始终到不了目标地址)的情况,避免这种情况的方法就是在数据包中封装一个TTL字段,该字段的意义就是最大转发跳数,一旦超过这个限制,便会将该数据包丢弃。

路由协议

之前说到有三类路由,直连路由,静态路由和动态路由,动态路由通过路由协议算法自动生成路由表,无需人工维护,那么路由协议又是什么呢?
路由协议就是满足路由器获取路由表需要而定义的一系列算法,目前有两类路由协议,内部网关协议(IGP)和外部网关协议(EGP)

内部网关协议包含多种不同的协议,常用的有:RIP-2,EIGRP,IS-IS,OSPF,前两种采用距离矢量算法,生成路由表,后两种采用链路状态算法生成路由表

外部网关协议只有一种,即BGP协议,采用距离矢量算法

再讲工作原理之前,先简单说一下自治域(AS)的概念
全球的互联网被分为多个自治域,运营商和公司都可以申请自治域号码,但是在中国自治域很少,只有几大运营商拥有自己的自治域,美国的很多公司都申请了自治域,这也在一定程度上说明我们国家的互联网发展使比较弱势的。
内部网关协议针对的是一个自治域内部的数据转发,外部网关协议则是针对不同自治域直接的数据转发。下面选取三个有代表性的路由协议,简单说明一下路由协议的工作原理

RIP-2

RIP-2协议采用距离矢量算法,采取最小跳数采取最佳转发路径,针对业务量较小的额网络是没有问题的,但是针对业务量较大的运营商网络,这种算法就显得有些捉襟见肘了。
每隔30秒将距离向量信息传送到相邻的路由器,路由表中只存储到目的地址最佳路径的下一跳地址,该路由协议允许的最大跳数为15跳,也就是说15次转发后还没有到达目的地址,那就将数据包丢弃。
该算法的优点是简单,但缺点也很明显,就是每个路由器只关心自己邻居的状态,无法获取的网络中其他路由器的状态,当关键位置的路由信息改变之后,就无法实时更新自身的路由表,现在使用的已经不多了。

IS-IS

IS-IS和OSPF是目前使用最多的内部网关协议,他们的工作原理也大致相同。
首先明确几个基本概念:

  • 最短路径算法(SPF):把每一台路由器作为一个根,计算到其他目的路由的距离,每一台路由根据统一的数据库计算AS拓扑结构图,即最短路径树,最短路径树的树干长度,即为路由器至每个路由的距离,即路由成本。
  • 链路状态协议:基于最短路径优先算法,该协议提供了整网的拓扑视图,根据拓扑图计算到达每个目标的最优路径;当网络变化是触发更新,发送周期性更新链路状态通告。
  • LSP:链路状态协议数据单元,包含有关邻居和通道成本的信息,接收路由器用LSA来维护其路由选择表
  • Hello报文:用于建立邻居关系,每10s发送一次,无效间隔时间40s,40s内没有接收到邻居的Hello报文,路由器就认为那个邻居不存在
  • LSR:链路状态请求信息,告知邻接路由器提供LSA信息
  • LSU:链路状态更新信息,一般用来响应LSR信息
  • LSAck:用来确认已收到LSU信息
  • LoopBack:类似于物理接口的逻辑接口,用于线路环回测试,或对路由器远程登录,一般将该地址作为路由器的RouteID
  • NET地址:包含三个部分
    Area ID:标识路由器所在区域,1–13个字节
    SYSTEM ID:AS里唯一标识一个路由器,固定6字节
    SEL:标识IS-IS应用的网络,固定1字节,设置为0是用于IP网络
    一个中间系统必须有一个NET,所有NET的SYSTEM ID必须相同,不同中间系统NET地址不能相同。

下面来看一下工作原理:

  • 建立邻接关系,相邻路由器互发Hello报文,验证相关参数,即可建立邻接关系
  • 链路状态信息泛洪:链路状态信息在整个网络中传播。
    发生链路状态变化的节点产生一条新的LSP信息,并通过组播地址发送给自己的邻居;
    邻居收到新的LSP,将LSP信息进行序列号相关的比较,将新的LSP安装到自己的LSP数据库中标记为flooding,并通过PSNP(部分时序协议数据单元)进行确认;
    邻居将新的LSP发送给自己所有邻居,完成扩散。由于单进程内路由器数量不多,通常完成一次泛洪时间很短;
  • 数据库中有缺少或需要更新的消息,会通过LSR,LSU,LSAck报文互相索取相应的资料
  • 完成泛洪后,每个路由器都能知道网络中其他路由器的链路状态信息,然后根据链路状态协议构建最短路径树,计算最短路径

BGP

BGP是唯一一个外部网关协议,首先先了解几个基本概念:

  • AS:自治域,AS之间协商部署BGP协议
  • BGP Spreaker和Peer:发送BGP消息的路由器称为BGP Spreaker,互相交换消息的BGP Spreaker称为对等体(Peer)
  • BGP连接类型:有两种方式,IBGP和EBGP,IBGP不一定要求物理连接,但要求逻辑连接,EBGP要求物理连接
  • BGP TTL:EBGP=1,IBGP=255
  • BGP AS_PATH:发送给BGP邻居时添加上自己的AS号码,防止出现路由环路,所以这个字段包含了所有经过的AS集合,如果有多条路径,会优先选择AS_PATH最短的路径。
  • RR路由反射器:一个AS内部有n台路由器,那么正常来说就要建立n(n-1)/2个连接,这对CPU资源消耗非常大,所以引进了RR路由反射器,他作为一个特殊的路由器,与每一个客户机之间建立IBGP连接,作用就是在其他路由器之间反射路由信息,这样其他路由器即使不建立连接,也可以通过RR路由反射器学习别的路由器的路由信息。
  • open报文:用于建立连接,类似于OSPF的HELLO报文
  • KeepAlive报文:用于保持连接,默认60s发送一次,hold time时间为180s,180s没有收到邻居的KeepAlive报文,则断开连接
  • Update报文:用于携带路由更新信息
  • Notification报文:在发现错误,或关闭与对等体连接时使用

工作原理:

  • 首先建立BGP连接,这一步需要人工配置对等体,建立在TCP协议之上
  • 注入路由,初始状态的路由表为空,只能人工手动导入,两种方式可以导入路由:
    通过命令将IGP路由导入BGP路由,Origin属性为IGP路由属性
    将路由重分布进BGP路由表,Origin属性为Incomplete
  • 路由通告,将获取到的BGP路由信息告知别的对等体,只把自己使用的路由通告给别的对等体,从EBGP获取的路由会向所有BGP对等体通告,从IBGP获取的路由依据IGP与BGP同步情况,决定是否向所有BGP对等体通告。
  • 路由更新,
    初始化时发送所有的路由给BGP对等体。
    本地保存发送的信息。
    当本地收到新的路由信息时,与保存的信息进行对比,未发送过或发送的信息与本地保存的信息不一致,则发送该路由信息,并更新本地保存的路由信息。
    发现一条路由失效信息,则向对等体发送一个路由撤销信息。
    只发送路由增量信息,保证最小通信量。
  • 避免路由环路,AS之间通过携带AS_PATH标记所走过的AS,避免产生环路;AS内部,BGP在AS内部学到的路由信息不再通告给AS内部的BGP邻居,避免产生环路。

以上就是路由器学习的一些总结,构建网络结构,离不开一台台路由器之间的相互配合,选择一个合适的路由协议算法,是保证网络安全性和高效率的必要条件,互联网中每时每刻都有成千上万个数据包在传输,这些数据包不产生冲突,不产生路由环回的情况下,选择一条最优的路径,需要各个学科之间的相互配合。
尤其是数学,网络结构实际上就是一个数学上的拓扑结构,所以用研究数学的方法,来研究网络,会产生事半功倍的效果,这也是华为任正非非常强调数学的作用的原因。

你可能感兴趣的:(TCP/IP)