三层交换转发原理

目录

Chapter 1 前言... 2

1.1        路由器和交换机的三层转发... 4

1.2        不同网络间主机的互访行为... 4

1.3        三层交换机内部结构... 5

Chapter 2 单台三层交换机的转发过程... 5

2.1 转发流程... 6

2.1.1检测不在同一网段,ARP请求... 6

2.1.2 交换机发送ARP应答... 7

2.1.3 PC组装ICMP Request发送... 7

2.1.4 交换机做三层转发... 8

2.1.5 交换机查找路由表后进行ARP交互... 9

2.1.6 PC2响应交换机的ARP请求... 9

2.1.7 交换机重构ping包,并根据软件的ARP表项生成硬件的三层转发表... 10

2.1.8 PC2回应ICMP报文... 11

2.2总结... 11

Chapter 3 两台三层交换的转发过程... 12

3.1 转发流程... 12

3.1.1 PC1进行ARP交互并发送ICMP. 12

3.1.2 LSW1查找路由表并进行ARP交互... 14

3.1.3 LSW1构造ICMP请求报文并根据软件的ARP表生成硬件的三层转发表... 15

3.1.4 LSW2收到ICMP包后的行为... 16

3.1.5 PC2收到ICMP包响应... 16

3.2 总结... 17

Chapter 4 不同交换芯片的交换机的一些转发细节... 17

Chapter 1 前言

早期的网络中一般使用二层交换机来搭建局域网,而不同局域网之间的网络的互通,由路由器来完成。那时的网络流量,局域网内部的流量占了绝大部分,而网络间的通信访问量比较少,使用少量路由器已经足够应付了如图:

但是,随着数据通信网络范围的不断扩大,网络业务的不断丰富,网络间互访的需求越来越 大,而路由器由于自身成本高、转发性能低、端口数量少等特性无法很好的满足网络发展的需求。 我们知道,路由器主要是通过 IP 转发(三层转发)来实现不同网络间的互连,那么是否能够将交换机的高性能应用到三层转发中去呢?答案是肯定的,三层交换机就是这样一种实现了高速三层转发的设备。

大多数三层交换机采用 ASIC 硬件芯片来完成转发,ASIC 芯片内部集 成了 IP 三层转发的功能,包括检查 IP 报文头、修改存活时间(TTL)参数、重新计算 IP 头校 验和、IP 包的数据链路封装等 等。三层交换机的组网结构如图。


*ASICApplication-Specific Integrated Circuit,特定应用集成电路)芯片是一种专门为特定应用或任务设计和定制的集成电路。与通用处理器(如CPU)不同,ASIC芯片的设计目标是满足特定应用的性能需求,通过专门化的硬件来实现高效、定制化的功能。在三层交换机中,常常使用ASIC芯片作为交换芯片。

1.1​​​​​ 路由器和交换机的三层转发

路由器的三层转发主要依靠 CPU 进行,而三层交换机的三层转发依靠 ASIC 芯片(交换芯片)完成,这就决定了两者在转发性能上的巨大差别。当然,三层交换机并不能完全替代路由器,路由器所具备的丰富的接口类型、良好的流量服务等级控制、强大的路由能力等仍然是三层交换机的薄弱环节。目前的三层交换机一般是通过 VLAN 来划分二层网络并实现二层交换,同时能够实现不同 VLAN 间的三层 IP 互访

1.2 不同网络间主机的互访行为

        1.判断在同一网段,直接跟目的主机进行ARP的交互:源主机在发起通信之前,将自己的 IP 与目的主机的 IP 进行比较,如果两者位于同一网段(用网络掩码计算后具有相同的网络号),那么源主机直接向目的主机发送 ARP 请求, 在收到目的主机的 ARP 应答后获得对方的物理层(MAC)地址,然后用对方 MAC 作为报文的目 MAC 进行报文发送。位于同一 VLAN(网段)中的主机互访时属于这种情况,这时用于互连的交换机作二层交换转发;

        2. 判断不在同一网段,直接发给网关:当源主机判断目的主机与自己位于不同网段时,它会通过网关(Gateway)来递交报文,即发送 ARP 请求来获取网关 IP 地址对应的 MAC,在得到网关的 ARP 应答后,用网关 MAC 作为报文的目的 MAC 进行报文发送。注意,发送报文的源 IP 是源主机的 IP,目的 IP 仍然是目的主机的 IP。位于不同 VLAN(网段)中的主机互访时属于这种情况,这时用于互连的交换机作三层交换转发

 1.3 三层交换机内部结构

三层交换机内部的两大部分是 ASIC CPU,它们的作用分别如下:

1.ASIC:完成主要的二三层转发功能,内部包含用于二层转发的 MAC 地址表(硬件表项)以及用于 IP 转发的三层转发表(硬件表项);

2.CPU:用于转发的控制,主要维护一些软件表项(包括软件路由表、软件 ARP 表等等), 根据软件表项的转发信息来配置 ASIC 的硬件三层转发表(由软件的ARP表生成了硬件的三层转发表)。当然,CPU 本身也可以完成软件三层转发。

        从三层交换机的结构和各部分作用可以看出,真正决定高速交换转发的是 ASIC 中的二三 层硬件表项,而 ASIC 的硬件表项来源于 CPU 维护的软件表项

Chapter 2 单台三层交换机的转发过程

        组网 1 如图2所示,通信的源、目的主机连接在同一台三层交换机上,但它们位于不同 VLAN (网段)。对于三层交换机来说,这两台主机都位于它的直连网段内,它们的 IP 对应的路由都是直连路由

2

2.1 转发流程

2.1.1检测不在同一网段,ARP请求

        PC 1 首先检查出目的 IP 地址 192.168.2.1PC 2)与自己不在同一网段,因此它发出请求网关地址 192.168.1.254 对应 MAC ARP 请求;如图2.1

2.1

2.1.2 交换机发送ARP应答

        LSW1 收到 PC 1 ARP 请求后,检查请求报文,发现被请求 IP 是自己的三层接口 IP 因此发送 ARP 应答并将自己的三层接口 MAC4c-1f-cc-97-19-96)包含在其中。同时它还会把 PC 1 IP 地址与 MAC 地址对应(192.168.1.1<==> 54-89-98-41-79-F1)关系记录到自己的 ARP 表项中去(因为 ARP 请求报 文中包含了发送者的 IP MAC);ARP应答如图2.2LSW1ARP表项如图2.3

2.2

2.3

2.1.3 PC组装ICMP Request发送

        PC 1 得到网关(LSW1)的 ARP 应答后,组装 ICMP 请求报文并发送,报文的目的 MAC 4c-1f-cc-97-19-96、源 MAC00-00-00-00-00-01、源 IP192.168.1.1、目的 IP192.168.2.1;如图2.4

2.4

2.1.4 交换机做三层转发

        LSW1 收到报文后,根据报文的目的 MACVID 查找 MAC 地址表,发现匹配了自己三层接口 MAC 的表项。这里说明一下,三层交换机为 VLAN 配置三层接口 IP 后,会在交换芯片的 MAC地址表 中添加三层接口 MACVID 的表项,并且为表项的三层转发标志置位当报文的目的 MAC 匹配这样的 表项以后,说明需要作三层转发,于是继续查找交换芯片的三层表项然后根据报文的源 MAC+VID(即 VLAN ID)更新 MAC 地址表。华为中并没有显示该表项,以下是新格林耐特GPON OLT的命令行:如图2.5

2.5

        设备在配置了vlan的三层接口ip的时候,mac地址表项就会生成如下表项,port=CPU表示,D_MAC若命中了这条表项,则需要上交给上层进行处理,需要进行三层转发。首先查找的是三层转发表。

        ASIC芯片根据报文的目的 IP 去查找其三层表项,由于之前未建立任何表项,因此查找失败,于是将报文送到 CPU 去进行软件处理。

2.1.5 交换机查找路由表后进行ARP交互

        CPU 根据报文的目的 IP 去查找其软件路由表,发现匹配了一个直连网段(PC 2 对应的网段,192.168.2.0),于是继续查找其软件 ARP 表,为了构建数据帧头的目的MAC,仍然查找失败。然后 L3_SW 会在目的网段对应 VLAN 20的所有端口发送请求地址 192.168.2.1对应 MAC ARP 请求。 如图2.6,如图2.7

2.6

2.7

2.1.6 PC2响应交换机的ARP请求

        PC 2 收到 LSW1 发送的 ARP 请求后,检查发现被请求 IP 是自己的 IP,因此发送 ARP 应答并将自己的 MAC0000-0000-0002)包含在其中。同时,将 LSW1 IP MAC 的对应关系 192.168.2.254<==> 4c1f-cc97-1996)记录到自己的 ARP 表中去;如图2.8,如图2.9

2.8

2.9

2.1.7 交换机重构ping包,并根据软件的ARP表项生成硬件的三层转发表

        LSW1 收到 PC 2 ARP 应答后,将其 IP MAC 对应关系(192.168.2.1<==>0000-0000-0002)记录到 自己的 ARP 表中去,并将 PC 1 ICMP 请求报文发送给 PC 2,报文的目的 MAC 修改为 PC 2 MAC0000-0000-0002),源 MAC 修改为自己的 MAC4c1f-cc97-1996)。同时,在交换芯片的三层表项中根据刚得到的三层转发信息添加表项(内容包括 IPMAC、出口 VLAN、出端口等),这样后续的 PC 1 发往 PC 2 的报文就可以通过该硬件三层表项直接转发了;如图2.10;华为的交换机中并没有查看三层转发表的命令,以下是新格林耐特GPON OLT的三层转发表,如图2.11

2.10

2.11

2.1.8 PC2回应ICMP报文

        PC 2 收到 LSW1 转发过来的 ICMP 请求报文以后,回应 ICMP 应答给 PC 1ICMP 应答报文的转发过程与前面类似,只是由于 L3_SW 在之前已经得到 PC 1 IP MAC 对应关系了,也同时在交换芯片中添加了相关三层表项,因此这个报文直接由交换芯片硬件转发给 PC 1

2.2总结

        这样,后续的往返报文都经过查 MAC =>查三层转发表的过程由交换芯片直接进行硬件转发 了。

        从上述流程可以看出,三层交换机正是充分利用了“一次路由(首包 CPU 转发并建立三层硬件表项)、多次交换(后续包芯片硬件转发)的原理实现了转发性能与三层交换的完美统 一。

Chapter 3 两台三层交换的转发过程

下面介绍另一种组网情况的三层转发流程。

        标明了两台主机的 MACIP 地址、网关,以及两台三层交换机的 MAC、不同 VLAN 配置 的三层接口 IPLSW1 上配置了静态路由:ip route-static 192.168.2.0 255.255.255.0 30.1.1.2 LSW2 上配置了静态路由:ip route-static 192.168.1.0 255.255.255.0 30.1.1.1

        这种组网情况下的转发过程与组网 1 情况是类似的。当 PC A PC B 发起 ICMP 请求时,流程如下:(假设三层交换 机上还未建立任何硬件转发表项

3.1 转发流程

3.1.1 PC1进行ARP交互并发送ICMP

        PC 1 首先检查出目的 IP 地址 192.168.2.1PC 2)与自己不在同一网段,因此它通过 ARP 解析得到网关地址 192.168.1.254 对应的 MAC4c1f-ccec-13d4)。如图3.1

3.1

        然后,PC 1 组装 ICMP 请求报文并发送, 报文的目的 MACMAC LSW14c1f-ccec-13d4)、源 MAC0000-000-0001、源 IP192.168.1.1、目的 IP192.168.2.1如图3.2

3.2

3.1.2 LSW1查找路由表并进行ARP交互

        LSW1 收到报文后,根据报文的目的 MACVID 查找 MAC 地址表,发现匹配了自己三层接口 MAC 的表项,于是继续查找芯片的三层转发表由于之前未建立任何表项,因此三层转发表查找失败,于是将报文送到 CPU 去进行软件处理,CPU 根据报文的目的 IP 去查找其软件路由表,发现匹配路由 192.168.2.0/24,其下一跳 IP 地址为 30.1.1.2。如图3.3

3.3

        于是继续查找 3.1.1.2 是否有对应的 ARP,仍然查找失败。然后 LSW1 在下 一跳地址 3.1.1.2 对应的 VLAN 30 内发起 ARP 请求,并得到 LSW2 的回应,从而得到 IP MAC 对应关系(30.1.1.2<==>4c1f-cc19-7447)。如图3.4

3.4

 最后LSW1根据报文的源 MAC+VID 更新 MAC 地址表。

3.1.3 LSW1构造ICMP请求报文并根据软件的ARP表生成硬件的三层转发表

        LSW1 将 PC 1 发出的 ICMP 请求报文转发给 LSW2,报文的目的 MAC 修改为 LSW2 MAC4c1f-cc19-7447),源 MAC 修改为自己的 MAC4c1f-ccec-13d4)。同时,将刚刚用到的转发信息添 加到交换芯片的三层转发表中去,包括匹配的网段 192.168.2.0/24、下一跳地址的 MAC MAC LSW2 =4c1f-cc19-7447)、出口 VLAN、出端口。这样,后续发往 192.168.2.0的报文就可以直接通过交换芯片硬件转发了。如图3.5

3.5

3.1.4 LSW2收到ICMP包后的行为

        LSW2 收到报文后,与组网 1 中的处理相似,经过查 MAC => 查三层转发表 => CPU =>  匹配直连路由 => ARP 解析 => 转发报文同时添加硬件表项的过程,将报文转发给 PC B,此时报文的目的 MAC 修改为 PC 2 MAC0000-0000-0002),源 MAC 修改为 LSW2 MAC MAC LSW2 =4c1f-cc19-7447)。这样后续 发往 192.168.2.1 的报文就直接由交换芯片硬件转发了如图3.6

3.6

3.1.5 PC2收到ICMP包响应

        PC 2 收到来自 PC 1 ICMP 请求报文后进行 ICMP 应答。由于在 ICMP 请求报文转发的过程中,每个网段的两端节点都已经通过 ARP 解析得到了对方的 IP MAC 对应关系,因此应答报文的转发完全由交换芯片完成(查 MAC =>查三层转发表=>发送);

这样后续的往返报文都经过查 MAC =>查三层转发表的过程由交换芯片直接进行硬件转发了

3.2 总结

从上述两种组网情况下的转发流程可以看出,三层交换机的转发具有以下特点:

1.首包通过 CPU 转发,同时建立交换芯片硬件表项;后续包由交换芯片直接硬件转发, 即常说的一次路由、多次交换

2.交换芯片的硬件转发并不关心路由的具体下一跳 IP 地址是多少,硬件三层表项中只包含了目的地址(或网段)、目的 IP(或下一跳 IP)对应的 MAC、出口 VLAN、出端口;(*并不是所有的三层交换机的硬件三层表项都会包含出端口的。)

3.IP 报文每经过一次三层转发,它的源、目的 MAC 都会变化,但是源 IP、目的 IP 是始终不变

Chapter 4 不同交换芯片的交换机的一些转发细节

杂谈:

        在三层交换转发中,交换芯片(ASIC)起到了至关重要的作用,因此三层交换机的性能和转发特点主要取决于交换芯片的实现机制。在三层交换原理中描述的三层交换原理只是一个大致的转发流程,对于使用了不同交换芯片的三层交换机,其硬件转发过程中的一些细节内容是有所区别的。

        本文主要就硬件三层表项的结构和查表方式介绍几种不同的实现。 从前面的描述可以看出,三层转发是必然需要路由信息的,而转发过程中的路由选择决定了报文的最终出口如何,三层交换机只是将这种路由功能整合到交换芯片中去了。

路由选择存在精确匹配和最长匹配两种方式,

  • 精确匹配即目的 IP 地址与路由的地址信息必须完全吻合
  • 最长匹配则是选择所有包含了目的地址的路由中掩码最长的一条

        早期的三层交换机上,其交换芯片多采用精确匹配的方式,它们的硬件三层表项中只包含具的目的 IP 地址,并不带掩码信息。比如在转发目的 IP 192.168.2.1 的报文时,通过软件查找匹配了非直路由 192.168.2.0/24,那么就将 192.168.2.1 的转发信息添加到交换芯片中去,如果继续来了目的 IP 192.168.2.2192.168.2.3 的报文需要转发,则要重新进行软件查找,并在交换芯片中为 192.168.2.2192.168.2.3 增加新的表项。这样的选路方式表项结构对交换芯片的硬件资源要求很高,因为芯片中集成 的表项存储空间是很有限的,如果要发大量目的 IP 地址不同的报文那么就需要添加大量的硬件表项。

        曾经泛滥一时的冲击波病毒,就致了当时大量的只支持精确匹配的三层交换机资源耗尽。因为冲击波病毒的手段之一就是发送巨数量的网段扫描报文,而多数三层交换机上都配置了缺省路由,这样所有的报文在 CPU 软件查找都能够找到匹配路由,进而针对每一个病毒报文的目的 IP 都需要新增硬件表项并迅速将硬件资源满。这样,大部分用户的正常数据流 由于转发资源耗尽而得不到高速处理了。

        由于精确匹配方式的三层交换机的这种缺陷,后期的三层交换机增加了对最长匹配方式的支持,即硬件三层表项中可同时包含 IP 地址和掩码,在查找时遵循最长匹配原则。这种类型的三层交换机,一般在软件路由表建立时就将路由信息添加到硬件三层表中去,包括直连路由和非直连路由。

        对于直连路由,对应的硬件三层表项的“to CPU”标志位始终置 1,报文的目的 IP 匹配这样的表项被送往 CPU 处理,CPU 软件会在直连网段发送 ARP 请求,并将获取的 ARP 信息作为主机路由添加到硬件表 项中(对应的“to CPU”标志位置 0),这样后续的同样目的 IP 的报文就直接通过新添的硬件表项转发了;对于非直连路由,当下一跳地址的对应 ARP 信息还未获得时, 对应的硬件三层表项的“to CPU”标志位置 1,报文的目的 IP 匹配这样的表项以后被送往 CPU 处理,CPU 软件会在下 一跳地址对应的直连网段发送 ARP 请求,并使用获取的 ARP 信息中的下一跳 MAC、出口 VLAN 等信息更新对应 的硬件三层表项, 然后将其“to CPU”标志位置 0,这样后续的目的 IP 匹配该非直连路由的报文就能够直接通过修改后的硬件表项转发了。

        目前,大多数的三层交换机均能够同时支持精确匹配表项和最长匹配表项,一般来说精确匹配表项对应于软件中的 ARP 表,最长匹配表项对应于软件中的直连路由和非直连路由。 在交换机三层转发流程中,曾经提到,硬件三层表项由目的 IP(或网 段)、目的 IP(或 下一跳 IP)对应 MAC、出口 VLAN、出端口组成,采用这样表项的三层交换芯片一般直接通过查找三层转发表项就能够完成转发。

        这种处理机制流程简单、转发效率高,但是也使得 CPU 软件对硬件表项的配置控制比较复杂,因为每当 IP 地址对应的 MAC 和物理端口出现变化, 就必须对三层转发表项进行更新。而在交换机上二层信息变化的可能性是比较大的,特别是交换机支持链路聚合、生成树等冗余机制,所以在某些应用环境中 CPU 不得不经常的对三层转 发表进行更新,一旦更新出现问题(特别是出端口错误)必然对转发造成严重的不利影响。 不过,并不是所有三层交换机的硬件三层表项都带有出端口信息,部分交换芯片使用的硬件表项只包括目的 IP(或网段)、目的 IP(或下一跳 IP)对应 MAC、出口 VLAN,从转发流程上来说有以下变化:根据报文的目的 IP 查找三层转发表后,只得到了目的 IP(或下一跳 IP)对应的 MAC 和出 VLAN;然后继续根据 MAC+VID 去查找 MAC 地址表,并最终获得出端口 信息,如果查找 MAC 表失败的话会在出口 VLAN 进行广播。这样的处理机制虽然增加了芯片处理复杂度,但是流程更加清晰合理,CPU 的处理也更加简单,因为物理出口的变化只需要反映在 MAC 地址表中就可以了,硬件三层表项无需频繁更新。

        这两种处理方式的交换芯片各有优势,不同厂商会根据成本、可靠性、产品定位等各方面因素来进行选择,这也使得不同型号的三层交换机在同一应用环境中可能有不同的表现。

  • 31
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值