Loading

Network系列:路由基础(二)

路由基础

1. VLAN间通信

image-20220903093601427


image-20220903093626833


1.1 使用路由器物理接口

  • 路由器三层接口作为网关,转发本网段前往其它网段的流量。
  • 路由器三层接口无法处理携带VLAN Tag的数据帧,因此交换机上联路由器的接口需配置为Access。
  • 路由器的一个物理接口作为一个VLAN的网关,因此存在一个VLAN就需要占用一个路由器物理接口。
  • 路由器作为三层转发设备其接口数量较少,方案的可扩展性太差。

image-20220903093806501

  • 在二层交换机上配置VLAN,每个VLAN单独使用一个交换机接口与路由器互联。
  • 路由器使用两个物理接口,分别作为VLAN 10及VLAN 20内PC的默认网关,使用路由器的物理接口实现VLAN之间的通信。

1.2 使用路由器子接口

  • 子接口(Sub-Interface)是基于路由器以太网接口所创建的逻辑接口,以物理接口ID+子接口ID进行标识,子接口同物理接口一样可进行三层转发。
  • 子接口不同于物理接口,可以终结携带VLAN Tag的数据帧。
  • 基于一个物理接口创建多个子接口,将该物理接口对接到交换机的Trunk接口,即可实现使用一个物理接口为多个VLAN提供三层转发服务。

image-20220903093952616

  • R1使用一个物理接口(GE0/0/1)与交换机SW1对接,并基于该物理接口创建两个子接口:GE0/0/1.10及GE0/0/1.20,分别使用这两个子接口作为VLAN 10及VLAN 20的默认网关。
  • 由于三层子接口不支持VLAN报文,当它收到VLAN报文时,会将VLAN报文当成是非法报文而丢弃。因此,需要在子接口上将VLAN Tag剥掉,也就是需要VLAN终结(VLAN Termination)

1.3 子接口处理流程

image-20220903094431591

子接口终结VLAN的实质包含两个方面:

  • 对接口接收到报文,剥除VLAN标签后进行三层转发或其他处理。
  • 对接口发出的报文,又将相应的VLAN标签添加到报文中后再发送。

g0/0/1.10有报文进入时剥离tag(10),内部三层转发后再g0/0/1.20发出报文时加上tag(20)


1.4 使用VLANIF技术实现VLAN间通信

  • 二层交换机(Layer 2 Switch)指的是只具备二层交换功能的交换机。
  • 三层交换机(Layer 3 Switch)除了具备二层交换机的功能,还支持通过三层接口(如VLANIF接口)实现路由转发功能。
  • VLANIF接口是一种三层的逻辑接口,支持VLAN Tag的剥离和添加,因此可以通过VLANIF接口实现VLAN之间的通信。
  • VLANIF接口编号与所对应的VLAN ID相同,如VLAN 10对应VLANIF 10。

image-20220903094758973


VLANIF转发流程

假设PC、三层交换机上都已存在相应的ARP或MAC表项。PC1与PC2之间通信过程如下:

PC1通过本地IP地址、本地掩码、对端IP地址进行计算,发现目的设备PC2与自身不在同一个网段,判断该通信为三层通信,将去往PC2的流量发给网关。PC1发送的数据帧:源MAC = MAC1,目的MAC = MAC2。

image-20220903094904448


交换机收到PC1发送的去往PC2的报文,经解封装发现目的MAC为VLANIF10接口的MAC地址,所以将报文交给路由模块继续处理。

路由模块解析发现目的IP为192.168.20.2,非本地接口存在的IP地址,因此需要对该报文三层转发。查找路由表后,匹配中VLANIF20产生的直连路由。

image-20220903095127391


因为匹配的为直连路由,说明已经到达最后一跳,所以交换机在ARP表中查找192.168.20.2,获取192.168.20.2的MAC地址,交由交换模块重新封装为数据帧。

交换模块查找MAC地址表以明确报文出接口、是否需要携带VLAN Tag。最终交换模块发送的数据帧:源MAC = MAC2,目的MAC = MAC3,VLAN Tag = None。

image-20220903095230086


1.5 三层通信过程解析

网络拓扑

image-20220903095345109


连接逻辑图

image-20220903095438547

NAPT(Network Address Port Translation,网络地址端口转换):将IP数据报文头中的IP地址、端口号转换为另一个IP地址、端口号的过程,主要用于实现内部网络(私有IP地址)访问外部网络(公有IP地址)的功能,NAPT支持多个内部地址映射到同一个公有地址上,可以实现使用一个公有地址支持内网多个内部地址同时访问外部网络。


通信过程(1)

image-20220903095602434

假设所有设备上都已存在相应的ARP或MAC表项。


通信过程(2)

image-20220903095637332


通信过程(3)

image-20220903095651553


通信过程(4)

image-20220903095726417


通信过程(5)

image-20220903095806597

报文经过三层转发时,报文内容有哪些变化?

答:源目IP在转发过程中保持不变(无NAT场景),但是源目MAC会改变,三层转发时每经过一个三层设备进行三层转发,源目MAC都会发生变化。


1.6 二、三层接口对比

image-20220903100745475


2. IP路由原理

2.1 路由

网关以及中间节点(路由器)根据收到的IP报文其目的地址选择一条合适的路径,并将报文转发到下一个路由器。在路径中的最后一跳路由器二层寻址将报文转发给目的主机。这个过程被称为路由转发。

中间节点选择路径所依赖的表项为称为路由表。

路由条目包含明确的出接口以及下一跳,这两项信息指导IP报文转发到相应的下一跳设备上。

image-20220904150412818


2.2 路由信息

image-20220904150634372

  • 通过路由中包含的信息,路由设备可以转发IP报文到相应的路径。
  • 目的地址、掩码用于识别IP报文目的地址,路由设备将IP报文匹配到相应的路由之后,根据路由的出接口、下一跳确认转发的路径。
  • 只有出接口并不能够确认转发IP报文的下一跳设备,还需要明确的下一跳设备地址。

2.3 路由表

image-20220904150855763

  • 路由器依据路由表转发报文。
  • 路由表由一条条详细的路由条目组成。
  • 路由表由路由条目组成,但不代表路由表中保存了所有路由,路由表中只会保存“最优的”路由。
  • 对路由表中的路由条目的管理实际上就是路由器维护、管理路由信息的具体实现。

2.4 路由信息获取方式

image-20220904151000678

  • 直连路由:直连接口所在网段的路由,由设备自动生成。
  • 静态路由:由网络管理员手工配置的路由条目。
  • 动态路由:路由器通过动态路由协议(如OSPF、IS-IS、BGP等)学习到的路由。

2.5 直连路由

image-20220904151241714

  • 当匹配中直连路由进行转发时,此时路由器会查看ARP表项,将报文直接转到目的地址,此时该路由器为路由转发的最后一跳路由器。
  • 直连路由的下一跳地址并不是其他设备上的接口地址,因为该路由的目的网段为接口所在网段,本接口就是最后一跳,不需要再转发给下一跳,所以在路由表中的下一跳地址就是接口自身地址。
  • 使用直连路由进行路由转发时,转发的动作不是交给下一跳,而是查询ARP表项,根据ARP表项封装报文,将报文发送到目的IP。

image-20220904151434148

并不是所有接口生成的直连路由都会出现在路由表中,直连路由出现在路由表中的前提是该接口的物理状态、协议状态都为UP。


2.6 IP路由表详情

image-20220904153643942

Destination/Mask:表示此路由的目的网络地址与网络掩码。将目的地址和子网掩码“逻辑与”后可得到目的主机或路由器所在网段的地址。例如:目的地址为1.1.1.1,掩码为255.255.255.0的主机或路由器所在网段的地址为1.1.1.0。

Proto(Protocol):该路由的协议类型,也即路由器是通过什么协议获知该路由的。

Pre(Preference):表示此路由的路由协议优先级。针对同一目的地,可能存在不同下一跳、出接口等多条路由,这些不同的路由可能是由不同的路由协议发现的,也可以是手工配置的静态路由。优先级最高(数值最小)者将成为当前的最优路由。

Cost:路由开销。当到达同一目的地的多条路由具有相同的路由优先级时,路由开销最小的将成为当前的最优路由。

NextHop:表示对于本路由器而言,到达该路由指向的目的网络的下一跳地址。该字段指明了数据转发的下一个设备。

Interface:表示此路由的出接口。指明数据将从本路由器的哪个接口转发出去。


2.7 路由优先级

image-20220904154416018

  • 当路由器从多种不同的途径获知到达同一个目的网段的路由(这些路由的目的网络地址及网络掩码均相同)时,路由器会比较这些路由的优先级,优选优先级值最小的路由。
  • 路由来源的优先级值(Preference)越小代表加入路由表的优先级越高。
  • 拥有最高优先级的路由将被添加进路由表。

比较过程

image-20220904154500976

RTA通过动态路由协议OSPF和手动配置的方式都发现了到达10.0.0.0/30的路由,此时会比较这两条路由的优先级,优选优先级值最小的路由。OSPF拥有更优的优先级,因此通过OSPF学习到的路由被添加到路由表中。

每一种路由协议都有相应的优先级


常见路由类型的默认优先级如下:

image-20220904154650144


2.8 度量值

image-20220904154751795

  • 当路由器通过某种路由协议发现了多条到达同一个目的网络的路由时(拥有相同的路由优先级),度量值将作为路由优选的依据之一。
  • 路由度量值表示到达这条路由所指目的地址的代价。
  • 一些常用的度量值有:跳数、带宽、时延、代价、负载、可靠性等。
  • 度量值数值越小越优先,度量值最小路由将会被添加到路由表中。
  • 度量值很多时候被称为开销(Cost)。

比较过程

image-20220904154835965

  • RTA通过动态路由协议OSPF学习到了两条目的地为10.0.0.0/30的路由,学习自同一路由协议、优先级相同,因此需要继续比较度量值。
  • 两条路由拥有不同的度量值,下一跳为30.1.1.2的OSPF的路由条目拥有更小的度量值,因此被加入到路由表中。

2.9 路由转发

最长匹配原则

image-20220904154940599

当路由器收到一个IP数据包时,会将数据包的目的IP地址与自己本地路由表中的所有路由表项进行逐位(Bit-By-Bit)比对,直到找到匹配度最长的条目,这就是最长前缀匹配机制。


匹配示例

image-20220904155523894

根据最长匹配原则进行匹配,能够匹配192.168.2.2的路由存在两条,但是路由的掩码长度中,一个为16 bit,另一个为24 bit,掩码长度为24 bit的路由满足最长匹配原则,因此被选择来指导发往192.168.2.2的报文转发。


2.10 路由转发流程

image-20220904160121262

来自10.0.1.0/24网段的IP报文想要去往40.0.1.0/24网段,首先到达网关,网关查找路由表项,确定转发的下一跳、出接口,之后报文转发给R2。报文到达R2之后,R2通过查找路由表项转发给R3,R3收到后查找路由表项,发现IP报文目的IP属于本地接口所在网段,直接本地转发。


2.11 静态路由

应用场景

image-20220904162028742

静态路由由网络管理员手动配置,配置方便,对系统要求低,适用于拓扑结构简单并且稳定的小型网络。缺点是不能自动适应网络拓扑的变化,需要人工干预。

RTA上转发目的地址属于20.1.1.0/24的报文,在只有直连路由的情况下没有路由匹配。此时可以通过手动配置静态路由,使RTA发送前往20.1.1.0/24网段的报文交给下一跳10.0.0.2转发。


2.12 缺省路由

image-20220904162219382

缺省路由是一种特殊的路由,当报文没有在路由表中找到匹配的具体路由表项时才使用的路由。如果报文的目的地址不能与路由表的任何目的地址相匹配,那么该报文将选取缺省路由进行转发。

缺省路由在路由表中的形式为0.0.0.0/0,缺省路由也被叫做默认路由。


2.13 动态路由

image-20220904162628549

静态路由的缺点是不能自动适应网络拓扑的变化,需要人工干预。

动态路由协议有自己的路由算法,能够自动适应网络拓扑的变化,适用于具有一定数量三层设备的网络。


动态路由分类

根据路由信息传递的内容、计算路由的算法,可以将动态路由协议分为两大类:

距离矢量协议(Distance-Vector Protocol):RIP

链路状态协议(Link-State Protocol):OSPF、IS-IS

BGP使用一种基于距离矢量算法修改后的算法,该算法被称为路径适量(Path Vector)算法。因此在某些场合下,BGP也被称为路径矢量路由协议。


根据工作范围不同,又可以分为

内部网关协议IGP(Interior Gateway Protocol):在一个自治系统内部运行。RIP、OSPF、ISIS为常见的IGP协议。

外部网关协议EGP(Exterior Gateway Protocol):运行于不同自治系统之间。BGP是目前最常用的EGP协议。


2.14 路由高级特性

2.14.1 路由递归

image-20220904204501302

路由必须有直连的下一跳才能够指导转发,但是路由生成时下一跳可能不是直连的,因此需要计算出一个直连的下一跳和对应的出接口,这个过程就叫做路由递归。

路由递归也被称为路由迭代


image-20220904205315559


2.14.2 等价路由

image-20220904205503290

路由表中存在等价路由之后,前往该目的网段的IP报文路由器会通过所有有效的接口、下一跳转发,这种转发行为被称为负载分担。


2.14.3 浮动路由

image-20220904205625806

  • 静态路由支持配置时手动指定优先级,可以通过配置目的地址/掩码相同、优先级不同、下一跳不同的静态路由,实现转发路径的备份。
  • 浮动路由是主用路由的备份,保证链路故障时提供备份路由。主用路由下一跳可达时该备份路由不会出现在路由表。

示例

image-20220904205824260

  • RTA-RTB之间的链路正常时,20.0.0.0/30的两条路由条目都是有效的条目,此时比较优先级,下一跳为10.1.1.2的优先级60,下一跳为10.1.2.2的优先级70,因此下一跳为10.1.1.2的加入路由表。
  • RTA-RTB之间的链路故障时,10.1.1.2不可达,因此下一跳为10.1.1.2的路由失效,此时前往20.0.0.0/30的路由就只存在一条,该条路由将会被选入路由表。前往20.0.0.1的流量将会被转发到10.1.2.2。

2.14.4 路由汇总
  • 对于一个大规模的网络来说,路由器或其他具备路由功能的设备势必需要维护大量的路由表项,为了维护臃肿的路由表,这些设备就不得不耗费大量的资源。
  • 同时,由于路由表的规模变大,会导致路由器在查表转发时效率降低。因此在保证网络中的路由器到各网段都具备IP可达性的同时,需要减小设备的路由表规模。
  • 一个网络如果具备科学的IP编址,并且进行合理的规划,是可以利用多种手段减小设备路由表规模的。一个非常常见而又有效的办法就是使用路由汇总(Route Summarization)。
  • 路由汇总又被称为路由聚合(Route Aggregation),是将一组有规律的路由汇聚成一条路由,从而达到减小路由表规模以及优化设备资源利用率的目的,我们把汇聚之前的这组路由称为精细路由或明细路由,把汇聚之后的这条路由称为汇总路由或聚合路由。

image-20220904220052206


路由汇总需求示例

image-20220904220201898


路由汇总引发的问题

image-20220904224447686

image-20220904224528651

一般来说一条路由,无论是静态的或者是动态的,都需要关联到一个出接口,路由的出接口指的是设备要到达一个目的网络时的出站接口。

路由的出接口可以是该设备的物理接口,例如百兆、千兆以太网接口,也可以是逻辑接口,例如VLAN接口(VLAN Interface),或者隧道(Tunnel)接口等。

在众多类型的出接口中,有一种接口非常特殊,那就是Null(无效)接口,这种类型的接口只有一个编号,也就是0。Null0是一个系统保留的逻辑接口,当网络设备在转发某些数据包时,如果使用出接口为Null0的路由,那么这些报文将被直接丢弃,就像被扔进了一个黑洞里,因此出接口为Null0的路由又被称为黑洞路由。


posted @ 2023-09-17 11:00  YinJayChen  阅读(124)  评论(0编辑  收藏  举报