【网络学习】交换基础知识
【网络学习】交换基础知识
订阅RSS,随时关注

>>当前位置: 首页 > 技术知识

【网络学习】交换基础知识

发布时间:2018-08-13 22:01:16

商家详细信息:

  与同轴电缆都是典型的物理层设备,所有互连的设备位于一个冲突域中,当网络流量较小时,冲突较少发生,利用冲突检测机制已经可以较好的保证通信质量;但是当网络流量增加到一定程度时,

  将导致冲突不断,网络的吞吐量受到严重影响,数据也可能频繁的由于冲突而被拒绝发送。二层交换机的出现有效的解决了这个问题,大大的减小了冲突域的范围。

  二层交换机工作在OSI模型的第二层,即数据链路层,它对数据包的转发是建立在链路层信息——MAC(Media Access Control)地址基础之上的,

  它的内部一般使用称为ASIC(Application Specific Integrated Circuit)的硬件芯片来实现转发,同时由于是硬件转发,其转发性能非常高。二层交换机不同的端口发送和接收数据独立,

  各端口属于不同的冲突域,因此有效地隔离了网络中物理层冲突域,使得通过它互连的主机(或网络)之间不必再担心流量大小对于数据发送冲突的影响,典型的组网结构如图2所示。

  在每个以太网帧的帧头,都包含有一个目的MAC地址和一个源MAC地址,它的作用是标志帧的源节点和目的节点的物理地址。一个MAC地址有48bit(6个字节),从应用上可以分为单播地址、组播地址、广播地址:

  (1)单播地址:第1字节的最低位为0,比如0000-0EF3-0038,一般用于标志唯一的设备;

  (2)组播地址:第1字节的最低位为1,比如0100-5E00-0001,一般用于标志同属一组的多个设备;

  (3)广播地址:所有48bit全为1,即FFFF-FFFF-FFFF,它用于标志同一网段中的所有设备。

  二层交换机通过解析和学习以太网帧的源MAC来维护MAC地址与端口的对应关系(保存MAC与端口对应关系的表称为MAC表),通过其目的MAC来查找MAC表决定向哪个端口转发,基本流程如下:

  (1)二层交换机收到以太网帧,将其源MAC与接收端口的对应关系写入MAC表,作为以后的二层转发依据。如果MAC表中已有相同表项,那么就刷新该表项的老化时间。MAC表表项采取一定的老化更新机制,老化时间内未得到刷新的表项将被删除掉;

  (2)根据以太网帧的目的MAC去查找MAC表,如果没有找到匹配表项,那么向所有端口转发(接收端口除外);如果目的MAC是广播地址,那么向所有端口转发(接收端口除外);如果能够找到匹配表项,则向表项所示的对应端口转发,但是如果表项所示端口与收到以太网帧的端口相同,则丢弃该帧。

  从上述流程可以看出,二层交换通过维护MAC表以及根据目的MAC查表转发,有效的利用了网络带宽,改善了网络性能。图4是一个二层交换的示例。

  二层交换机的MAC地址老化和刷新通常直接由硬件ASIC芯片来完成,这里顺便介绍一下其通常采用的机制:

  (1)在芯片中储存的每一个动态添加的MAC地址表项都有一个1 bit长度的老化标志,同时芯片有一个老化定时器用于控制地址老化;

  (2)对于新学习到的MAC地址表项,其老化标志位置1;对于已经学习到的MAC表项,如果后续有报文的源MAC与表项相同,那么将其老化标志位刷新为1;

  (3)每当芯片的老化定时器超时后,将MAC地址表中老化标志位等于1的项目,修改其老化标志位等于0;对于MAC地址表中老化标志位等于0的项目,直接删除。

  在这样的老化更新机制下,MAC地址的实际老化时间并不是精确的,而是一个范围:1~2倍的老化定时器时间。

  二层交换机虽然能够隔离冲突域,但是它并不能有效的划分广播域。因为从前面介绍的二层交换机转发流程可以看出,广播报文以及目的MAC查找失败的报文会向所有端口转发,

  当网络中的主机数量增多时,这种情况会消耗大量的网络带宽,并且在安全性方面也带来一系列问题。当然,通过路由器来隔离广播域是一个办法,

  但是由于路由器的高成本以及转发性能低的特点使得这一方法应用有限。基于这些情况,二层交换中出现了VLAN技术。

  由于不同VLAN之间是二层隔离的,通过将不同的主机划分到不同的VLAN中去,就有效的控制了广播域的范围。我们知道,通常情况下主机发出的报文都是不带VLAN Tag的(称为Untagged报文),

  那么如何将这样的报文划分到某个VLAN中去呢。VLAN划分的方法有多种,包括基于端口划分、基于MAC划分、基于IP划分、基于协议划分等等。目前,基于端口来划分VLAN是使用最为广泛的,

  也就是通过收到报文的端口来决定Untagged报文属于哪个VLAN。当Untagged报文进入交换机内部以后,会根据VLAN划分被加上VLAN Tag,然后进行后续转发处理。

  当然,如果报文本身是带了VLAN Tag的,就直接根据其中的VLAN ID来决定了。图6是一个VLAN应用的示意图。

  图6中,两台二层交换机之间的链路一般称为Trunk链路,其上传输的一般都是带VLAN Tag的报文(称为Tagged报文),这样的报文进入交换机以后直接根据其VLAN ID来区分VLAN。

  支持VLAN的二层交换机,其二层转发和MAC地址维护方式都发生了一定的变化,下面分别讨论两种不同的MAC地址维护方式的交换机。

  SVL(Shared VLAN Learning)方式的二层交换机在学习MAC地址并建立MAC地址表的过程中并不附加VLAN ID,或者说它的MAC地址表是为所有VLAN共享使用的。它的二层转发基本流程如下:

  (2)根据目的MAC信息查找MAC地址表,如果没有找到匹配项,那么在报文对应的VLAN内广播;

  (4)如果找到匹配项,且表项对应的端口属于报文对应的VLAN,那么将报文转发到该端口,但是如果表项对应端口与收到以太网帧的端口相同,则丢弃该帧。

  这种类型的二层交换机转发与普通二层交换机转发基本相同,只是多了转发过程中的VLAN检查。这样的交换机可能遇到下述问题:位于不同VLAN的主机(或网络设备)具有相同的MAC地址,

  由于SVL交换机所有VLAN共享一个MAC表,这样对应的MAC表项中端口就会不断的变化,而且两个VLAN的报文转发也会受到影响,这种情况如图7所示。

  图7中,VLAN 10的PC A发送给PC B的报文由于MAC地址表查找结果与VLAN不符而被丢弃了;同理,当MAC B学习到PORT 2时,VLAN 20的PC D和PC C之间的通信就会出现问题。

  这样,虽然不同的主机被隔离在了不同的冲突域和广播域中,但是MAC地址却可能导致不同VLAN的通信相互影响。

  (2)根据目的MAC+VLAN-ID查找MAC地址表项,如果没有找到匹配项,那么在VLAN-ID对应的VLAN内广播;

  (3)如果能够找到匹配表项,则向表项所示的对应端口转发,但是如果表项所示端口与收到以太网帧的端口相同,则丢弃该帧。

  IVL方式的二层交换机转发流程更加清晰,VLAN之间不会互相影响,目前实际应用中的二层交换机大多采用这种方式。

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

  但是,随着数据通信网络范围的不断扩大,网络业务的不断丰富,网络间互访的需求越来越大,而路由器由于自身成本高、转发性能低、端口数量少等特点无法很好的满足网络发展的需求。我们知道,

  路由器主要是通过IP转发(三层转发)来实现不同网络间的互连,那么是否能够将交换机的高性能应用到三层转发中去呢?答案是肯定的,三层交换机就是这样一种实现了高速三层转发的设备。

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

  路由器的三层转发主要依靠CPU进行,而三层交换机的三层转发依靠ASIC芯片完成,这就决定了两者在转发性能上的巨大差别。

  当然,三层交换机并不能完全替代路由器,路由器所具备的丰富的接口类型、良好的流量服务等级控制、强大的路由能力等仍然是三层交换机的薄弱环节。

  目前的三层交换机一般是通过VLAN来划分二层网络并实现二层交换,同时能够实现不同VLAN间的三层IP互访。在讨论三层交换机的转发原理之前有必要交代一下不同网络的主机之间互访时的行为:

  (1)源主机在发起通信之前,将自己的IP与目的主机的IP进行比较,如果两者位于同一网段(用网络掩码计算后具有相同的网络号),

  那么源主机直接向目的主机发送ARP请求,在收到目的主机的ARP应答后获得对方的物理层(MAC)地址,然后用对方MAC作为报文的目的MAC进行报文发送。

  (2)当源主机判断目的主机与自己位于不同网段时,它会通过网关(Gateway)来递交报文,即发送ARP请求来获取网关IP地址对应的MAC,在得到网关的ARP应答后,用网关MAC作为报文的目的MAC进行报文发送。

  注意,发送报文的源IP是源主机的IP,目的IP仍然是目的主机的IP。位于不同VLAN(网段)中的主机互访时属于这种情况,这时用于互连的交换机作三层交换转发。

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

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

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

  组网1如图12所示,通信的源、目的主机连接在同一台三层交换机上,但它们位于不同VLAN(网段)。

  图12中标明了两台主机的MAC、IP地址、网关,以及三层交换机的MAC、不同VLAN配置的三层接口IP。当PC A向PC B发起ICMP请求时,流程如下:(假设三层交换机上还未建立任何硬件转发表项)

  (1)根据前面的描述,PC A首先检查出目的IP地址2.1.1.2(PC B)与自己不在同一网段,因此它发出请求网关地址1.1.1.1对应MAC的ARP请求;

  (2)L3_SW收到PC A的ARP请求后,检查请求报文发现被请求IP是自己的三层接口IP,因此发送ARP应答并将自己的三层接口MAC(MAC S)包含在其中。

  同时它还会把PC A的IP地址与MAC地址对应(1.1.1.2==MAC A)关系记录到自己的ARP表项中去(因为ARP请求报文中包含了发送者的IP和MAC);

  (4)L3_SW收到报文后,首先根据报文的源MAC+VID(即VLAN ID)更新MAC地址表。然后,根据报文的目的MAC+VID查找MAC地址表,

  发现匹配了自己三层接口MAC的表项。这里说明一下,三层交换机为VLAN配置三层接口IP后,会在交换芯片的MAC地址表中添加三层接口MAC+VID的表项,并且为表项的三层转发标志置位。

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

  (6)CPU根据报文的目的IP去查找其软件路由表,发现匹配了一个直连网段(PC B对应的网段),于是继续查找其软件ARP表,仍然查找失败。

  然后L3_SW会在目的网段对应的VLAN 3的所有端口发送请求地址2.1.1.2对应MAC的ARP请求;

  (7)PC B收到L3_SW发送的ARP请求后,检查发现被请求IP是自己的IP,因此发送ARP应答并将自己的MAC(MAC B)包含在其中。

  同时,在交换芯片的三层表项中根据刚得到的三层转发信息添加表项(内容包括IP、MAC、出口VLAN、出端口),这样后续的PC A发往PC B的报文就可以通过该硬件三层表项直接转发了;

  (9)PC B收到L3_SW转发过来的ICMP请求报文以后,回应ICMP应答给PC A。ICMP应答报文的转发过程与前面类似,只是由于L3_SW在之前已经得到PC A的IP和MAC对应关系了,

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

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

  这种组网情况下的转发过程与图12的组网1情况是类似的,下面的流程讲解中将省略部分前面已经分析过的细节内容。

  当PC A向PC B发起ICMP请求时,流程如下:(假设三层交换机上还未建立任何硬件转发表项)

  (2)L3_SW1收到报文后,首先根据报文的源MAC+VID更新MAC地址表。然后,根据报文的目的MAC+VID查找MAC地址表,发现匹配了自己三层接口MAC的表项,于是继续查找芯片的三层转发表;

  (4)CPU根据报文的目的IP去查找其软件路由表,发现匹配路由2.1.1.0/24,其下一跳IP地址为3.1.1.2,于是继续查找3.1.1.2是否有对应的ARP,仍然查找失败。

  同时,将刚刚用到的转发信息添加到交换芯片的三层转发表中去,包括匹配的网段2.1.1.0/24、下一跳地址的MAC(MAC S2)、出口VLAN、出端口。

  (6)L3_SW2收到报文后,与组网1中的处理类似,经过查MAC表=查三层转发表=送CPU=匹配直连路由=ARP解析=转发报文同时添加硬件表项的过程,

  (7)PC B收到来自PC A的ICMP请求报文后进行ICMP应答。由于在ICMP请求报文转发的过程中

  ,每个网段的两端节点都已经通过ARP解析得到了对方的IP和MAC对应关系,因此应答报文的转发完全由交换芯片完成(查MAC表=查三层转发表=发送);

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

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

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

  (这里说明一下,并不是所有的三层交换机的硬件三层表项都会包含“出端口”的,这一点后面会有具体介绍。)

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

  在三层交换转发中,交换芯片(ASIC)起到了至关重要的作用,因此三层交换机的性能和转发特点主要取决于交换芯片的实现机制。

  在4.2节中讲解的三层交换原理只是一个大致的转发流程,对于使用了不同交换芯片的三层交换机,其硬件转发过程中的一些细节内容是有所区别的。

  从前面的描述可以看出,三层转发是必然需要路由信息的,而转发过程中的路由选择决定了报文的最终出口如何,三层交换机只是将这种路由功能整合到交换芯片中去了。

  路由选择存在精确匹配和最长匹配两种方式,精确匹配即目的IP地址与路由的地址信息必须完全吻合,而最长匹配则是选择所有包含了目的地址的路由中掩码最长的一条。

  早期的三层交换机上,其交换芯片多采用精确匹配的方式,它们的硬件三层表项中只包含具体的目的IP地址,并不带掩码信息。

  比如在转发目的IP为2.1.1.2的报文时,通过软件查找匹配了非直连路由2.1.1.0/24,那么就将2.1.1.2的转发信息添加到交换芯片中去,如果继续来了目的IP为2.1.1.3的报文需要转发,则要重新进行软件查找,并在交换芯片中为2.1.1.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表,最长匹配表项对应于软件中的直连路由和非直连路由。

  在4.2节描述的交换机三层转发流程中,曾经提到,硬件三层表项由目的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地址表中就可以了,硬件三层表项无需频繁更新。

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



推荐