交换机基本原理和转发流程总结

 关键词:

      以太网集线器Ethernet HUB
      交换机Switch
      虚拟局域网 VLAN
      路由器 Router
      路由表 Route Table
      地址解析协议 ARP
      ARP表 ARP Table
      MAC表 FIB Table
      三层硬件转发表 IP fdb Table
      计算机网络往往由许多种不同类型的网络互连连接而成。如果几个计算机网络只是在物理上连接在一起,它们之间并不能进行通信,那么这种“互连”并没有什么实际意义。因此通常在谈到“互连”时,就已经暗示这些相互连接的计算机是可以进行通信的,也就是说,从功能上和逻辑上看,这些计算机网络已经组成了一个大型的计算机网络,或称为互联网络,也可简称为互联网、互连网。下面将从互联网的渐进历程逐一阐述各种设备的工作原理:
      1、Ethernet  HUB 
      Ethernet 
      HUB的中文名称叫做以太网集线器,其基本工作原理是广播技术(broadcast),也就是HUB从任何一个端口收到一个以太网数据帧后,它都将此以太网数据帧广播到其它所有端口,HUB不记忆哪一个MAC地址挂在哪一个端口——这里所说的广播是指HUB将该以太网数据帧发送到所有其它端口,并不是指HUB将该报文改变为广播报文。
      以太网数据帧中含有源MAC地址和目的MAC地址,对于与数据帧中目的MAC地址相同的计算机执行该报文中所要求的动作;对于目的MAC地址不存在或没有响应等情况,HUB既不知道也不处理,只负责转发。HUB工作原理:
      ① HUB从某一端口A收到的报文将发送到所有端口;
      ② 报文为非广播报文时,仅与报文的目的MAC地址相同的端口响应用户A;
      ③ 报文为广播报文时,所有用户都响应用户A。
      随着网络应用不断丰富,网络结构日渐复杂,导致传统的以太网连接设备HUB已经越来越不能满足网络规划和系统集成的需要,它的缺陷主要表现在以下两个方面:
      ① 冲突严重——HUB对所连接的局域网只作信号的中继,所有物理设备构成了一个冲突域;
      ② 广播泛滥。
       
      2、二层交换技术
      二层交换机的出现能够在一定程度上解决HUB存在的缺陷——主要是冲突严重的问题,其与HUB的区别从大的方面来看可以分为以下三点: 
      ① 
      从OSI体系结构来看,HUB属于OSI模型的第一层物理层设备,而交换机属于OSI的第二层数据链路层设备。也就意味着HUB只是对数据的传输起到同步、放大和整形的作用,对数据传输中的短帧、碎片等无法进行有效的处理,不能保证数据传输的完整性和正确性;而交换机不但可以对数据的传输做到同步、放大和整形,而且可以过滤短帧、碎片等。
      ② 
      从工作方式来看,HUB是一种广播模式,当HUB的某个端口工作的时候,其他所有端口都能够收听到信息,容易产生广播风暴,当网络较大时网络性能会受到很大的影响;而当交换机工作的时候,只有发出请求的端口和目的端口之间相互响应而不影响其他端口,因此交换机就能够隔离冲突域,并在一定程度上抑制广播风暴。
      ③ 
      从带宽来看,HUB不管有多少个端口,所有端口都是共享一条带宽,在同一时刻只能有二个端口传送数据,其他端口只能等待,同时HUB只能工作在半双工模式下(半双工模式——在通道中同时只能沿着一个方向传输数据);而对于交换机而言,每个端口都有一条独占的带宽,当二个端口工作时并不影响其他端口的工作,同时交换机不但可以工作在半双工模式下而且可以工作在全双工模式下(全双工模式——在通道中同时双向数据传输的能力)。
      二层交换技术的工作原理:由于二层交换技术是在OSI七层网络模型中的第二层,即数据链路层进行操作的,因此交换机对数据报文的转发是建立在MAC(Media 
      Access Control )地址--物理地址基础之上的,对于IP 
      网络协议来说,它是透明的,即交换机在转发数据报文时,无须知道信源机和信宿机的IP 地址,只需知其物理地址(MAC 
      地址)即可。交换机在工作过程当中会不断的检测报文的源和目的MAC地址来建立MAC地址表,这个表说明了某个MAC 
      地址是在哪个端口上被发现的。这样当交换机收到一个报文时,它便会看一下该数据报文的目的MAC 
      地址,核对一下自己的MAC地址表以确认应该从哪个端口把数据报文发出去;但若交换机收到的报文在目的MAC地址不能在地址表中找到时,交换机会把IP 
      报文广播出去——这正是二层交换机的弱点所在。
      二层交换机的报文转发涉及到两个关键的线程:
      l         学习线程:
          ①交换机接收网段上的所有数据帧,利用接收数据帧的源MAC地址建立MAC地址表;
          ②端口移动机制:交换机如果发现一个报文的入端口和报文中源MAC地址的所在端口不同,就产生端口移动,将MAC地址学习到新的端口;
          ③地址老化机制:如果交换机在很长一段时间内没有收到主机发出的报文,则该主机对应的MAC地址就会被删除,等下次报文来的时候重新学习。
      l         报文转发线程:
      ① 交换机在MAC地址表中查找数据帧的目的MAC地址,如果找到就将该数据发送到相应的端口,如果找不到就向所有的端口发送(广播);
      ② 如果交换机收到的报文中源MAC与目的MAC地址相同,则丢弃该报文;
      ③ 交换机向入端口以外的所有其它端口发送广播报文。
      二层交换机的缺点:传统的以太网交换机对接收到的数据帧根据MAC地址进行二层转发,因此将网段上的冲突域限制到了端口级,但却无法限制广播域的大小,在主机数量很多的情况下,广播泛滥的现象仍然很严重。
       
      3、VLAN技术
      为解决在局域网中存在的广播泛滥和安全性的问题,引出了VLAN即虚拟局域网的概念,所谓VLAN 
      是一种将局域网内的设备逻辑地而不是物理地划分成一个个网段从而实现虚拟工作组的新兴技术。
      VLAN技术允许网络管理者将一个物理的LAN逻辑地划分成不同的广播域(或称虚拟LAN,即VLAN),每一个VLAN都包含一组有着相同需求的计算机工作站,与物理上形成的LAN有着相同的属性。但由于它是逻辑地而不是物理地划分,所以同一个VLAN内的各个工作站无须被放置在同一个物理空间里,即这些工作站不一定属于同一个物理LAN网段。一个VLAN内部的广播和单播流量都不会转发到其他VLAN中,从而有助于控制流量、减少设备投资、简化网络管理、提高网络的安全性。引入了VLAN以后,对二层交换机的报文转发线程产生了如下的影响:
      1)        
      交换机在MAC地址表中查找数据帧中的目的MAC地址,如果找到(同时还要确保报文的入VLAN和出VLAN是一致的),就将该数据帧发送到相应的端口,如果找不到,就向(VLAN内)所有的端口发送;
      2)        如果交换机收到的报文中源MAC地址和目的MAC地址所在的端口相同,则丢弃该报文;
      3)        交换机向(VLAN内)入端口以外的其它所有端口转发广播报文。
      Vlan与二层交换的规则:
      l       主机和交换机之间传送的是untagged报文
      l       交换机之间用干道链路(Trunk)连接
      l       交换机用Tag来标识报文所属的VLAN
      l       干道链路上传输的是Tagged Frame
      l       不同VLAN之间在二层不能相互通讯
      虚拟局域网将一组位于不同物理网段上的用户在逻辑上划分成一个局域网内,在功能和操作上与传统LAN基本相同,可以提供一定范围内终端系统的互联。VLAN的优势主要表现在以下四个方面:
      1)        建立虚拟工作组模型,使虚拟局域网中的各个设备很容易相互访问;
      2)       限制广播范围; 
      3)      增加网络的安全性; 
      4)        动态网络管理。
       
      VLAN的划分:
      l         基于端口的VLAN;
      l         基于MAC的VLAN;
      l         基于协议的VLAN;
      l         基于IP地址的VLAN;
      l         基于IP子网的VLAN;
      l         基于组合策略的VLAN。
      802.1Q协议规定了一段新的以太网祯字段,与标准的以太网祯头相比,VLAN报文格式在源地址后增加了一个4字节的802.1Q标签。 
      4个字节的802.1Q标签中,包含了2个字节的标签协议标识(TPID--Tag Protocol 
      Identifier,它的值是8100),和两个字节的标签控制信息(TCI--Tag Control 
      Information),TPID是IEEE定义的新的类型,表明这是一个加了802.1Q标签的报文。如图1所示:
      图1
      l         VLAN Identified( VLAN ID ): 
      这是一个12位的域,指明VLAN的ID,一共4096个,每个支持802.1Q协议的主机发送出来的数据包都会包含这个域,以指明自己所属的VLAN。
      l         Canonical Format Indicator( CFI 
      ):这一位主要用于总线型的以太网与FDDI、令牌环网交换数据时的祯格式。
      l         Priority:这3 位指明祯的优先级。一共有8种优先级,主要用于当交换机阻塞时,优先发送优先级高的数据包。
          在交换机中,直接与主机相连的端口是无法识别802.1Q报文的,那么这种端口称为 
      Access端口;对于交换机相连的端口,可以识别和发送802.1Q报文,那么这种端口称为Tag Aware 端口。
      工作原理:在交换机中的报文转发过程中,802.1Q报文标识了报文所属的VLAN;在跨越交换机的报文中,带有VLAN标签信息的报文尤其显得重要。例如,定义交换机中的1端口属于VLAN 
      2,且该端口类型为Acess,当 1 端口接收到一个数据报文后,交换机会查看该报文中没有802.1Q标签,若没有交换机根据1端口所属的VLAN 
      2,自动给该数据包添加一个VLAN 
      2的标签头,然后再将数据包交给数据库查询模块,数据库查询模块会根据数据包的目的地址和所属的VLAN进行查找,之后交给转发模块,转发模块看到这是一个包含标签头的数据包,根据报文的出端口的性质来决定是否保留还是去掉标签头。如果端口是Tag 
      Aware端口,则保留标签,否则删除标签头。一般情况下,两个交换机互连的端口一般都是Tag Aware端口,
      交换机和交换机之间交换数据包时是没有必要去掉标签的。
       
      VLAN的IVL和SVL方式
      l         IVL: Independent Vlan Learning
      l         SVL: Shared Vlan Learning
            MAC1  VLAN1  PORT1
            MAC2  VLAN2  PORT2
            MAC2  VLAN2  PORT2
            MAC3  VLAN3  PORT3
            MAC1  VLAN1  PORT1
            MAC2  VLAN2  PORT2
            MAC3  VLAN3  PORT3
             
            IVL
            SVL
      图2
      在IVL方式下: 
      每个VLAN都有自己的对应的MAC地址表(抽象的概念并不是物理的),相互之间没有影响。一个MAC地址可以被学习到不同的VLAN中,因此对一个用户来说如果属于多个VLAN,那么每个VLAN内的信息都需要重新学习。而SVL方式下,一个地址表项对所有的VLAN都通用,表中的MAC用户不能有重复。
       
      PVLAN 
      PVLAN,Primary-VLAN特性的简称,主要通过将用户划入不同的VLAN,实现用户之间二层报文的隔离。为客户提供了更多的解决方案。
      在PVLAN的设计中采用了多个Secondary vlan包含在一个Primary 
      VLAN中的方式,给用户提供了灵活的配置方式。如果用户希望实现二层报文的隔离,可以采用了为每个用户分配一个Secondary 
      vlan的方式,每个vlan中只包含用户连接的端口和Uplink 
      port;如果希望实现用户之间二层报文的互通,可以将用户连接的端口划入同一个VLAN中;同时创建Primary
      vlan,该VLAN包含所有Secondary 
      vlan中包含的端口和Uplink端口,这样对上层交换机来说,可以认为下层交换机中只有一个Primary 
      vlan,用来标识设备,而不必关心Primary VLAN中的端口实际所属的VLAN,简化了配置,节省了VLAN资源。
      图3
      Primary 
      vlan中的所有端口都不是802.1Q的Trunk端口,包括与其它交换机相连的Uplink口。每个端口的PVID就是它所属Secsondary 
      VLAN的ID,Uplink端口的PVID是Primary 
      vlan的ID。如图3所示,在交换机中可以实现端口同时属于多个VLAN,其中端口1为Uplink端口,属于Primary VLAN 
      1,端口2,3,4为接入端口,分别属于Secsondary VLAN 
      2,3,4。这样,从PVLAN的端口接收到的报文,可以被所有Secsondary 
      VLAN接收到,而每个Secondary之间,则由于VLAN的隔离作用,而不能互通报文。
          将PVLAN与VLAN的IVL、SVL方式相结合,则图3中两种情况的地址表如下:
      l         PVLAN+SVL方式:mac A    vlan 2    port 2
      mac B    vlan 3    port 3
      mac C    vlan 4    port 4
      l         PVLAN+IVL方式:
      1)        vlan 2地址表:mac A      vlan 2  port 2
      2)        vlan 3地址表:mac B       vlan 3  port 3
      3)        vlan 4地址表:mac C      vlan 4  port 4
      4)        vlan 1地址表:mac A      vlan 1  port 2
      mac B      vlan 1  port 3
      mac C      vlan 1  port 4
      采用VLAN(虚拟局域网)技术确实解决了一些问题,但也引发出一些新的问题:随着应用的升级,网络规划者可根据情况在交换式局域网环境下将用户划分在不同VLAN(虚拟局域网)上,但是VLAN(虚拟局域网)之间通信是不允许的,要想通信就需要用路由器/三层交换机来桥接这些VLAN(虚拟局域网)。
      4、三层交换技术
      随着网络模式的不断扩展,网络的流量情况从80/20向20/80的规则扩展,然而若仍然使用传统的路由器,则会在转发数据方面就会出现网络瓶颈的问题,因此采用三层交换机来代替路由器。
      三层交换技术采用 
      Intranet关键技术,将第二层交换机和第三层路由器两者的优势相结合。上面提到,二层交换技术是在OSI网络标准模型中的第二层——数据链路层进行操作的,而三层交换技术是在网络模型中的第三层实现了数据报文的高速转发。因此简单地说,三层交换技术就是:二层交换技术+三层转发技术。下面比较一下三层交换机和路由器的区别:
      ① 性能:传统路由器基于微处理器转发报文,靠软件处理,三层交换机通过ASIC硬件来进行报文转发,性能差别很大;
      ② 接口类型:三层交换机的接口基本上都是以太网接口没有路由接口类型丰富;
      ③ 三层交换机可以工作在二层模式,对于不需要路由的报文可以直接交换,而路由器不具有二层功能。
      三层交换技术的工作原理:假设两个使用IP协议的站点A、B通过第三层交换机进行通信,A在开始发送时,把自己的IP地址与B的IP地址比较,判断B是否与自己在同一子网内。若B与A在同一子网内,则进行二层的转发,A通过三层交换机转发,广播一个ARP 
      请求报文,B同样通过三层交换机转发返回其MAC 
      地址,在此过程中,A与B分别将对方的MAC地址学习到自己的MAC地址表,进行数据的二层转发;若两个站点不在同一子网内, 
      A向“缺省网关”发出ARP(地址解析)请求报文,而“缺省网关”的IP地址其实是三层交换机的三层交换模块。当A对“缺省网关”的IP地址发出一个ARP请求报文时,网关向A回复自己的MAC地址,然后A再向网关发出数据报文,这时如果三层交换模块在以前的通信过程中已经知道B的MAC地址,就通过三层硬件转发表IP 
      fdb 
      Table直接将报文发送出去;否则三层交换模块根据路由信息向B广播一个ARP请求,B得到此ARP请求后向三层交换模块回复其MAC地址,三层交换模块将地址保存到三层硬件转发表,这样后面的工作就可以重复上面的操作,使得报文的转发过程得以高效执行。
      举例:
      图4
      如图4所示:交换机上划分了两个VLAN——VLAN1和VLAN2,同时交换机中配置了路由接口来实现VLAN1和VLAN2的互通。可以看到主机A和B属于VLAN1,网关为1.1.1.1;主机C属于VLAN2,网关为2.2.2.2,另外还假设主机A、B、C的ARP表里面均没有彼此的MAC地址。
      l         三层交换机的二层转发(A向B发起Ping请求):
      1)        A检查报文的目的IP地址,发现和自己在同一网段,需要进行二层转发;
      2)        
      A检查自己的ARP表,发现B的MAC地址不在自己的ARP表里(注意:ARP表里记录了IP地址和MAC地址之间的对应关系,因而需要首先检查ARP表,通过目的IP地址得到MAC地址,再进行数据报文的发送操作);
      3)        A——> Switch发出ARP请求报文(注意:① ARP请求报文是广播报文;② 
      事实上,在二层转发时是A——>B发出ARP请求报文,但需要经过交换机进行转发);
      4)        
      Switch学习A的MAC地址到自己的MAC地址表(注意:MAC地址表是二层转发引擎,并且在二层转发时不能学习到Switch的ARP表和三层硬件转发表),并广播ARP请求报文;
      5)        B接收到ARP请求报文,学习A的MAC地址到自己的ARP表;
      6)        B——> Switch发出ARP回应报文;
      7)        Switch学习B的MAC地址到自己的MAC地址表,并向A发出ARP回应报文;
      8)        A接受到B的ARP回应报文,并学习B的MAC的地址;
      9)        A——> Switch发出ICMP请求报文;
      10)     Switch——>B转发ICMP请求报文;
      11)     B——> Switch发出ICMP回应报文;
      12)     Switch——>A转发ICMP回应报文。
      l         三层交换机的三层转发(A向C发起Ping请求):
      1)        A检查报文的目的IP地址,发现和自己不在同一网段,则需要进行三层转发,通过网关转发报文信息;
      2)        A检查自己的ARP表,发现网关的MAC地址不在自己的ARP表里;
      3)        A——>Switch(网关)发出ARP请求报文;
      4)        Switch将A的MAC地址学习到自己的MAC地址表、ARP表和三层硬件转发表(即IP fdb Table);
      5)        Switch——>A发出ARP回应报文;
      6)        A接收ARP回应报文,并学习Switch(VLAN1路由口)的MAC地址;
      7)        
      A——>Switch发出ICMP请求报文(注意:报文中的目的MAC地址是VLAN1的,源MAC地址是A的,目的IP地址是C的,源IP地址是A的);
      8)        Switch接收ICMP请求报文,判断出该报文是三层报文(原因:目的MAC地址与Switch的MAC地址相同);
      9)        Switch检查自己的路由信息表,发现报文的目的IP地址在自己的直连网段;
      10)     Switch——>C发出ARP请求报文,该报文在VLAN2内广播;
      11)     C接受到ARP请求报文,并学习Switch(VLAN2路由接口)的MAC地址;
      12)     C——>Switch发出ARP回应报文;
      13)     Switch学习C的MAC地址;
      14)     
      Switch——>C转发ICMP请求报文(注意:目的MAC地址是C的,源MAC地址是VLAN2的,目的IP地址是C的,源IP地址是A的);
      15)     C——>Switch发出ICMP回应报文;
      16)     Switch——>A转发ICMP回应报文。
          
      从上面的例子可以看到,三层交换机划分了两个VLAN,A与B之间的通信是在一个VLAN内完成的,相对于交换机而言属于二层数据流;而A与C之间的通信需要跨越VLAN,因此属于三层数据流。下面讨论三层转发技术需要特别注意的几个问题:
      l         
      交换机如何判断一个报文是二层报文还是三层报文呢?从上面的例子中可以看出,从A到B的报文由于在同一个VLAN内部,因此目的MAC地址是B的MAC地址;而从A到C的报文由于需要跨越VLAN,这样报文的目的MAC地址是Switch设备虚接口上VLAN1的MAC地址。简单来说,就是当报文的目的MAC地址与Switch的MAC地址相同时,该报文就为三层报文。
      l         三层转发的几个相关的数据表格:MAC地址表(FIB Table),路由表(Route Table),ARP表(ARP
      Table),三层硬件转发表(IP fdb 
      Table)。MAC地址表是二层转发引擎,主要记录MAC地址和报文发出的端口信息之间的对应关系;路由表记录路由信息;ARP表服务于三层转发,主要记录IP地址与MAC地址之间的对应关系;三层硬件转发表能够记录路由接口和VLAN的对应关系,以及下一跳的MAC地址和对应端口信息。其中三层硬件转发表(IP 
      fdb Table)的所有信息均来源于ARP表和MAC地址表,当这两个表发生变化时,IP fdb Table也随着变化。
      l         三层转发流程中围绕涉及IP fdb Table到两个关键的线程:①转发线程——硬件根据报文中的信息查找IP fdb Table 
      来转发报文;②学习线程——软件根据相关的信息来学习和维护IP fdb 
      Table以保证路由的畅通。三层交换机之所以转发报文的速度很快,在很大程度上都是这个三层硬件转发表的功劳,因为当它记录了报文的目的MAC地址时,就可以直接通过硬件来实现转发,速度极快。
      综上,本文重点讨论了各种网络设备的交换原理和报文的转发流程,其中以三层交换机的报文转发流程为例,将三层交换的二层转发和三层转发进行了详细的描述。需要特别指出的是,在研究报文转发流程时要注意二层和三层的报文转发过程的不同以及四种数据表格之间的区别和联系。

【转载自】 IT动力源 ItZero.COMIT快报
      本站部分文章收集于网络,版权归原作者及出版社所有 如果您觉得侵犯了您的版权请来信告诉我们,我们会尽快删除其内容! 
      本站原创文章版权归本站所有,除特别申明外,大家可以自由转载,但原作者和来自本站的链接必须保留! 

  • 7
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值