以太网交换机与交换式以太网要点解析
选自沈鑫剡编写教材《计算机网络》
3.4.1 VLAN与广播域分割
在学习了网桥的工作原理后,可以给网桥下一个更全面的定义:网桥是一种具有地址学习和根据站表转发MAC帧、运行生成树协议消除环路、支持通过浏览器或Telnet实现远程配置等功能的设备。网桥转发MAC帧的过程是一种分组交换过程,通过输入端口输入的MAC帧,通过内部交换结构交换到输出端口,如果输出端口正在输出MAC帧,该MAC帧将在输出端口的输出队列中等待。虽然,为了提高网桥转发MAC帧的速率,有的网桥(通常是端口传输速率较低的网桥)在输出端口空闲的情况下,允许输入端口输入部分MAC帧(至少包含MAC帧的目的地址)后,就从开始通过输出端口输出MAC帧,但大部分网桥还是采用存储转发方式。因此,网桥是一种分组交换设备。为了和单个冲突域的以太网相区别,将由网桥组成的以太网称为交换式以太网。在计算机网络中,存在两种类型的分组交换设备,即在链路层用于转发帧的分组交换设备和在网络层用于转发IP分组的分组交换设备,通常用桥设备来泛指第一种分组交换设备。在以太网中,更多用以太网交换机来称呼这种网桥设备,但在本章中,为了讨论方便,同时使用网桥和以太网交换机这两种设备名称。但以太网交换机是指在网桥的基础上增加了VLAN(Virtual LAN:虚拟局域网)划分及其他一些增强网络性能的功能的一种设备。当前市场上还有一种简单设备,它只支持地址学习和根据站表转发MAC帧的功能,不能配置,也不支持远程管理,为和网桥、以太网交换机相区别,常常把这种设备称为交换式hub。
1.广播域
用集线器或总线构成的以太网是一个共享式以太网,任何终端发送的MAC帧能够被其他所有终端接收,因此,在共享式以太网中,即在同一个冲突域中,点到点传输和广播传输方式是没有多大区别的。但在由网桥构成的以太网中,对于点到点传输的MAC帧,网桥通过查找站表确定单一转发端口转发目的MAC地址为单播地址的MAC帧,网络中其他终端接收不到该MAC帧。图3.33给出了共享式和交换式以太网转发点到点MAC帧(终端A→终端B)的差别。
图3.33 共享式和交换式以太网转发点到点MAC帧的差别
如果MAC帧的目的MAC地址为广播地址,或者虽然MAC帧的目的MAC地址为单播地址,但在网桥站表中找不到和该MAC帧的目的MAC地址匹配的项,该MAC帧仍将广播到网络中的所有其他终端,见图3.34。因此,可以将广播域定义为目的地址为广播地址的广播帧在网络中的传播范围,并由此可以得出广播域和冲突域的最大区别在于任何终端发送的任何MAC帧均覆盖整个冲突域,而只有以广播方式传播的MAC帧才可能覆盖整个广播域。虽然由网桥构建的以太网消除了冲突域带来的问题,但整个网络仍然是一个广播域。在以太网中,广播操作是不可避免的,一是只有在不断的广播操作中,交换机才能建立起完整的站表,二是TCP/IP协议栈中的许多协议如ARP、DHCP都是面向广播的协议。如果整个以太网就是一个广播域,而广播操作又频繁地进行,网络带宽的利用率及终端的负荷都将成为问题。
2.通过VLAN分割广播域
为了解决这个问题,只有将一个大型的交换式以太网分割成若干个较小的子网,用路由器将这些子网互连在一起,每一个子网就是一个广播域,即使是目的MAC地址为广播地址的MAC帧,也不能跨越路由器从一个子网广播到另一个子网。见图3.35。
图3.34 终端A→终端D点到点传输引发的广播
图3.35 用路由器分割广播域
图3.35是VLAN出现前一种常见的网络拓扑结构,用以太网交换机(或网桥)构成若干较小的以太网,用路由器将这些小型以太网互连成一个大型网络。但这种结构也有着一些缺陷:一是由于传输距离的限制,某个交换机所连接的终端必须局限在相对较小的地理范围内,导致子网必须以物理地域作为划分单位。二是一旦网络完成设计和实施,增加或删除一个子网,或者重新划分子网都是一件十分不容易的事。但在实际应用中,人们非常希望不受物理地域限制来划分子网,如一个课题组包含了数学系、计算机系和无线电系的若干教员,这些教员分散在不同的大楼内,但需要相互共享一些与课题有关的文件和程序,简单而安全的共享方式要求他们所使用的终端必须在一个子网内。为了对不同应用的服务器设置不同的安全等级,也常常需要重新划分子网,将不同安全等级的服务器分配到相应子网中,但这种分配最好不需要对现有网络架构进行物理调整。这就要求有一种全新的子网划分(或叫广播域分割)技术出现,这种技术就是虚拟局域网技术(VLAN)。
虚拟局域网从功能上完全等同于一个独立的交换式以太网,虽然,物理上多个虚拟局域网可以存在于同一个由交换机组成的交换式以太网中,但这些虚拟局域网是相互独立,属于不同虚拟局域网的终端之间是不能通信的。为了讨论方便,将网桥作为一种无论物理上,还是逻辑上都只能属于单个VLAN的设备,而将以太网交换机作为一种支持VLAN划分的设备,一旦某台以太网交换机被划分为多个VLAN,该以太网交换机等同于若干个功能独立的网桥。
图3.36(a)是一个拥有9个端口的交换机,对这样一个交换机如何划分子网(或分割广播域)?本来整个以太网交换机就是一个广播域,连接任何端口的终端所发送的广播帧(目的MAC地址为广播地址)将从以太网交换机的所有其他端口发送出去,任何一个连接在该以太网交换机端口的终端都将收到该广播帧,那么如何才能分割广播域,使得广播帧只在少数几个端口内广播,比如说连接端口1的终端所发送的广播帧,只从以太网交换机的端口3、端口5发送出去,其他端口并不转发该广播帧。这就需要用到以太网交换机的VLAN功能,以太网交换机的VLAN功能可以使得以太网交换机能够用任意端口组合来构成一个广播域。在图3.36(b)中,用以太网交换机的端口1、端口3、端口5构成一个广播域,用以太网交换机的端口2、端口4、端口7构成另一个广播域,而以太网交换机的剩余端口(端口6、端口8、端口9)又构成一个广播域,每一个广播域可以想象成一个用网桥连接的以太网。这样,将9个端口分割成3个广播域后的以太网交换机,逻辑上等同于在以太网交换机内设置了三个独立的网桥,这三个网桥分别连接属于三个不同广播域的端口,如图3.36 (c)所示。以太网交换机每个广播域的端口配置是任意的,因此,以太网交换机内的网桥也只有逻辑意义。当以太网交换机配置了一个广播域,该广播域就拥有单独的站表,当从属于该广播域的某个端口输入一个MAC帧,首先判别该MAC帧的目的MAC地址是否是广播地址,若是,就从属于该广播域的其他端口发送出去,否则就用该MAC帧的目的MAC地址去查找站表,如果找到对应项,就从该对应项指定的转发端口发送出去(转发端口肯定属于同一广播域),如果在站表中找不到对应项,和广播帧一样,从属于该广播域的其他端口发送出去。
图3.36 交换机划分VLAN过程
3.VLAN内终端之间通信过程
可以对以太网交换机任意配置广播域解决了动态分割广播域的问题,但分割的广播域仍然有着物理地域限制,真正不受物理地域限制的广播域划分是可以将一个由以太网交换机组成的大型交换式以太网的任意若干个端口组成一个广播域,见图3.37。这种划分广播域的技术就称之为跨以太网交换机配置VLAN技术。
跨以太网交换机划分VLAN还需要解决一些问题。由于以太网交换机内的每一个广播域都有独立的站表,因此,所有进入以太网交换机的MAC帧在进行转发操作前,必须先确定该MAC帧在那个广播域内进行转发,即和那一个站表有关联。在图3.36中,通过划分以太网交换机端口来划分VLAN,而且每一个以太网交换机端口只属于一个VLAN,因此,所有进入以太网交换机的MAC帧,它只能在接收该MAC帧的以太网交换机端口所属的广播域内进行转发操作。对于跨以太网交换机的VLAN,如何保证从以太网交换机1属于VLAN 1的端口接收到的MAC帧,进入以太网交换机2后,只在以太网交换机2属于VLAN 1的端口间转发?当然,针对上述问题,也可以找到解决方法,如图3.37所示,为了实现终端A和终端D之间可以互相通信,终端B和终端C之间可以互相通信,终端A、D和终端B、C之间不能互相通信的目标,两个以太网交换机之间用2条物理链路互连,每一条物理链路互连的端口都属于同一广播域。但这样做也会带来一些问题,如果两个以太网交换机之间的物理距离很远,就需要配置光端口用于以太网交换机之间互连,而且必须在以太网交换机之间铺设光缆,但每个以太网交换机的光端口数量和需要的光纤对数是不确定的,随着跨以太网交换机VLAN的数量变化而变化。如果是一个大型交换式以太网实现VLAN动态划分,用于以太网交换机之间互连的物理链路数更是不可预测,这仍将对网络的设计、实施带来困难。因此,实现跨以太网交换机VLAN划分必须解决的问题是通过以太网交换机之间单一的物理链路实现任何广播域内两个端口之间的通信。
图3.37 跨以太网交换机VLAN划分
3.5.2 802.1Q与VLAN内数据传输
图3.38是用单一物理链路实现跨以太网交换机VLAN内终端之间通信的网络结构图,图3.39是任意VLAN内2个终端之间完成通信的过程。
图3.38 单一物理链路实现跨以太网交换机VLAN内终端之间通信
图3.39 跨以太网交换机VLAN内终端之间实现通信的过程
针对图3.38所示的VLAN划分,实现终端A→终端E之间通信有什么难度呢?当终端A通过端口2向以太网交换机1发送源MAC地址为MAC A,目的MAC地址为MAC E的MAC帧时,以太网交换机1由于通过端口2接收到该MAC帧,确定在VLAN 1内转发该MAC帧,如果在和VLAN 1关联的站表中找不到和MAC E匹配的项,以太网交换机1通过端口1、4和端口7将该MAC帧转发出去。如果在和VLAN 1关联的站表中找到和MAC E匹配的项,则只通过端口7转发该MAC帧。假定该MAC帧只通过端口7转发,但通过端口7转发出去的MAC帧通过以太网交换机2的端口1输入以太网交换机2后,以太网交换机2很难确定用于转发该MAC帧的VLAN,因为两个以太网交换机之间只用一条物理链路互连,因此,以太网交换机连接该物理链路的端口必须被所有VLAN共享,当以太网交换机2从端口1接收该MAC帧时,由于以太网交换机2的端口1被所有VLAN共享,以太网交换机2无法根据接收该MAC帧的端口确定转发该MAC帧的VLAN。
其实,以太网交换机1在将该MAC帧从其端口7转发出去时,是知道该MAC帧所属的VLAN的,而且以太网交换机1也知道端口7是共享端口,属于不同VLAN的MAC帧都有可能从该端口转发出去。为了让接收从该端口转发出去的MAC帧的设备能够确定每一个从其转发出去的MAC帧所属的VLAN,以太网交换机1对所有从共享端口转发出去的MAC帧加上一个VLAN标识符字段(VID),包含VLAN标识符字段的MAC帧的格式如图3.40所示。这种携带VLAN标识符字段的MAC帧结构称为802.1Q帧格式,802.1Q是IEEE 802委员会为实现跨以太网交换机的VLAN内的终端之间通信而制定的标准。图3.40中源MAC地址字段之后的2字节8100H用于指明该MAC帧携带VLAN标识符,为与类型字段相区分,类型字段值中不允许出现8100H。
图3.40 带VLAN标识符字段的MAC帧格式(801.1Q)
如图3.39所示,由于以太网交换机1通过共享端口(端口7)转发MAC帧时,在MAC帧上加上了VLAN标识符(VID=1),当以太网交换机2通过共享端口(端口1)接收到该MAC帧时,不是通过接收该MAC帧的端口,而是通过该MAC帧所携带的VLAN标识符(VID=1)确定用于转发该帧的广播域(或VLAN),并用该MAC帧携带的目的MAC地址查找和该广播域关联的站表,如果在站表中找到对应项,通过对应项给出的转发端口(端口4)转发该MAC帧,否则,通过广播域内的所有其他端口(端口2、4、7)转发该MAC帧。
如果以太网交换机支持802.1Q,单个端口可能属于多个VLAN,从该端口输入的MAC帧,必须携带VLAN标识符,以太网交换机通过该MAC帧携带的VLAN标识符确定用于转发该MAC帧的VLAN。从该端口输出的MAC帧也须携带VLAN标识符。这种必须通过MAC帧携带的VLAN标识符确定用于转发该MAC帧的VLAN的端口被称为标记端口。而那些通过输入MAC帧的端口就能确定用于转发该MAC帧的VLAN的端口被称为非标记端口。某个端口可以作为标记端口加入VLAN,也可以作为非标记端口加入VLAN,作为非标记端口只允许加入一个VLAN。假定某个端口作为非标记端口加入了VLAN 1,作为标记端口加入了VLAN 2和3。从该端口输入MAC帧时,首先判别该MAC帧是否携带VLAN标识符,如果携带VLAN标识符且VLAN标识符为2或3,则确定VLAN 2或VLAN 3为用于转发该MAC帧的VLAN。如果该MAC帧没有携带VLAN标识符,则确定VLAN 1为用于转发该MAC帧的VLAN。其他情况下,丢弃该MAC帧。
【例3.5】假定网络结构如图3.41所示,终端A、终端D和终端E属于一个VLAN(VLAN 1),终端B、终端C和终端F属于另一个VLAN(VLAN 2)。
①如何进行VLAN配置?
②给出终端B→终端C、终端A→终端D、终端F→终端B的传输过程;
③能否实现终端B→终端D的通信?解释为什么。
图3.41 网络拓扑结构及VLAN划分
【解析】①VLAN配置如图3.42所示,以太网交换机1配置2个VLAN,分别命名为VLAN 1和VLAN 2。VLAN 1包括端口1和端口4,其中端口4为2个VLAN共享的端口,因此,进出该端口的MAC帧必须携带VLAN ID,该类端口在配置时被称为802.1Q标记端口。而端口1由于只属于单个VLAN,进出该端口的MAC帧无须携带VLAN ID,这种端口在配置时被称为非802.1Q标记端口。VLAN 2包括端口2、端口3和端口4,端口4为802.1Q标记端口。以太网交换机2配置2个VLAN,端口1和端口2均被VLAN 1和VLAN 2所共享,因此,2个端口均是802.1Q标记端口。以太网交换机3配置2个VLAN,VLAN 1包括端口1、端口2和端口4,VLAN 2包括端口3和端口4,端口4为802.1Q标记端口。
图3.42 VLAN配置
②在链路层传输MAC帧,必须事先知道源和目的终端的MAC地址,在本例中,假定终端B已经知道终端C的MAC地址为MAC C,终端B构建一个以MAC B为源MAC地址,MAC C为目的MAC地址的MAC帧,并将该帧通过端口2发送给以太网交换机1,以太网交换机1根据该MAC帧进入的端口(端口2)确定该MAC帧在VLAN 2内传输,用目的MAC地址(MAC C)去查找和VLAN 2关联的站表,由于没有找到对应项(一开始站表为空),在VLAN 2内广播该MAC帧,同时在以太网交换机1内和VLAN 2关联的站表中添加MAC地址为MAC B,转发端口为端口2这一项。对于以太网交换机1而言,属于VLAN 2的端口为端口2、端口3和端口4,因此,它通过除接收端口(端口2)以外的端口(端口3、端口4)转发该MAC帧,由于端口4是802.1Q标记端口,从端口4转发出去的MAC帧需要携带VLAN标识符。因此,以太网交换机1在从端口4转发出去的MAC帧上带上VLAN 2的VLAN标识符(VID=2)。以太网交换机1从端口3转发出去的MAC帧到达该MAC帧的目的终端-终端C,但由于采取广播方式在VLAN 2内广播该MAC帧。该MAC帧继续在VLAN 2内以广播方式进行传输。以太网交换机2通过端口1接收到该MAC帧,通过该MAC帧携带的VLAN标识符(VID=2)得知该MAC帧在VLAN 2内传输,同样用该MAC帧携带的目的MAC地址(MAC C)去查找和VLAN 2关联的站表,也找不到对应项,以太网交换机2继续以广播方式广播该MAC帧,同时在和VLAN 2关联的站表内添加该MAC帧源MAC地址(MAC B)对应的项,该MAC帧一直在图3.42所示的VLAN 2中广播,到达属于VLAN 2的所有终端,如图3.43所示。
图3.43 终端B→终端C传输MAC帧的过程
终端A→终端D的通信过程与终端B→终端C的通信过程大致相同。由于以太网交换机1、2、3和VLAN 1关联的站表中均没有该MAC帧目的MAC地址(MAC D)对应的项,该MAC帧在VLAN 1内广播,广播过程如图3.44所示。
终端F→终端B传输方式与前2次传输方式有所不同,由于以太网交换机1、2、3和VLAN 2关联的站表中均有该MAC帧目的MAC地址对应的项,因此,以太网交换机3从端口3接收到该MAC帧后,只从端口4将该MAC帧转发出去,当然,转发出去的MAC帧携带VLAN 2的VLAN标识符(VID=2)。以太网交换机2通过查找和VLAN 2关联的站表,将该MAC帧从端口1转发出去。以太网交换机1也通过查找和VLAN 2关联的站表,从端口2将该MAC帧转发出去,由于在配置VLAN 2时指定端口2为非802.1Q标记端口,在将该MAC帧从端口2转发出去前,必须先移走该MAC帧上的VLAN 标识符(VID=2),如图3.45所示。
图3.44终端A→终端D传输MAC帧的过程
图3.45 终端F→终端B传输MAC帧的过程
③不能实现终端B→终端D的通信。由于在和VLAN 2关联的站表中找不到MAC D对应的项,以MAC B为源MAC地址,MAC D为目的MAC地址的MAC帧只能以广播方式在VLAN 2内广播,但只能到达属于VLAN 2的所有终端,终端D属于VLAN 1,该MAC帧到达不了终端D,见图3.43中终端B→终端C的传输过程。
【例3.6】VLAN配置如图3.46所示,以太网交换机1的端口1、2、4和7属于VLAN 1,端口3、5和6属于VLAN 2,所有端口均为非802.1Q标记端口。以太网交换机2的端口2、4和7属于VLAN 1,端口1、3、5和6属于VLAN 2,所有端口均为非802.1Q标记端口。问:①终端A能否和终端E通信?并解释为什么。
②终端B能否和终端D通信?并解释为什么。
③终端A能否和终端D通信?并解释为什么。
④终端B能否和终端E通信?并解释为什么。
图3.46 VLAN配置图
【解析】图3.46和图3.38的差别在于以太网交换机1的端口7和以太网交换机2的端口1的配置,在图3.38中,这两个端口均被VLAN 1和VLAN 2所共享,且都是802.1Q标记端口,这种配置下,题中四问很容易回答,即使跨以太网交换机,同一VLAN内的终端之间可以互相通信,不同VLAN内的终端之间,即使连接在同一以太网交换机,也不可以互相通信。但一旦如图3.46所示的VLAN配置方式,情况就不同了,对于①所要求的传输方式,由于终端A所连的端口2和端口7属于同一个VLAN,终端A发送给终端E的MAC帧可以从端口7转发出去,进入以太网交换机2的端口1。由于以太网交换机1的端口7是非802.1Q标记端口,进入以太网交换机2端口1的MAC帧没有携带任何VLAN标识信息,而以太网交换机2的端口1又属于VLAN 2,该MAC帧被以太网交换机2在VLAN 2对应的广播域内进行转发,当然无法到达属于VLAN 1的端口4,和连接在端口4上的终端E。对于②所要求的传输方式,由于终端B所连的端口3和端口7不属于同一个VLAN,终端B发送的MAC帧无法从端口7转发出去,因而也无法进入以太网交换机2的端口1,导致通信失败。对于③所要求的传输方式,由于终端A所连的端口2和端口7属于同一个VLAN,终端A发送给终端D的MAC帧可以从端口7转发出去,进入以太网交换机2的端口1。由于以太网交换机1的端口7是非802.1Q标记端口,进入以太网交换机2的端口1的MAC帧没有携带任何VLAN标识信息,而以太网交换机2的端口1又属于VLAN 2,该MAC帧被以太网交换机2在VLAN 2对应的广播域内进行转发,而终端D所连的端口3属于VLAN 2,该MAC帧能够到达终端D。对于④所要求的传输方式,由于终端B所连的端口3和端口7不属于同一个VLAN,终端B发送的MAC帧无法从端口7转发出去,因而也无法进入以太网交换机2的端口1,导致通信失败。造成上述情况的原因在于:如果输出端口是非802.1Q标记端口,VLAN只有本地意义,如终端A发送的MAC帧,由于端口2属于VLAN 1,被以太网交换机1在VLAN 1对应的广播域内进行转发,但一旦该MAC帧离开以太网交换机1,就像终端A刚发送的MAC帧一样,由于没有携带任何VLAN标识信息,其他以太网交换机只能重新通过接收该MAC帧的端口来确定用于转发该MAC帧的VLAN 。
3.5.3 基于MAC地址配置VLAN的方法
到目前为止,讨论的VLAN配置方式都是基于端口的,在一个交换式以太网中,通过配置可以将任意端口组合定义成一个VLAN,但这种端口组合是静态的,如果要改变某个VLAN的端口组合,必须重新对VLAN进行配置。或许读者有这样的要求:他希望能够带着一台笔记本计算机在校园漫游,不用重新配置该笔记本计算机的IP地址就可上网。基于端口配置VLAN的方式对这种应用限制较大,如果该笔记本计算机配置了属于某个IP子网的IP地址,那么,在不重新配置该笔记本计算机的IP地址的情况下,该笔记本计算机只能插入属于和该IP子网相关联的VLAN的端口,如假定该笔记本计算机的IP地址为192.1.1.1,而和IP子网192.1.1.0/24关联的VLAN为VLAN 7,那么如果该笔记本计算机要坚持使用IP地址192.1.1.1,它只能插入属于VLAN 7的端口。如果这种需求很大,必须在每一楼层为所有VLAN预留一些平时不用的端口,当VLAN数目很大时,预留的端口数就会很多,由于是静态配置且这些端口用于直接连接终端,每个端口只能固定对应一个VLAN,因此,预留端口的利用率很低。
除了基于端口配置VLAN外,还有一种基于MAC地址动态配置VLAN的方法。假定某个交换机有24个端口,它可以用基于端口配置方式将22个端口分配到指定VLAN,但将余下的2个端口作为动态端口,这2个端口究竟属于那一个VLAN,由连接到端口上的网络终端的MAC地址确定,其过程如图3.47所示。
图3.47 基于MAC配置VLAN过程
当某个动态端口接入终端,该终端就通过动态端口传输以该终端MAC地址(这里为MAC A)为源MAC地址的MAC帧,以太网交换机接收到该MAC帧后,发现该端口是动态端口,且还没有将该端口配置给任何VLAN,就向VMPS(VLAN Membership Policy Server:VLAN成员策略服务器)发送请求,请求中包含该MAC帧的源MAC地址,VMPS用该MAC地址检索它的数据库,找到对应项,并确定和该MAC地址(MAC A)关联的VLAN是VLAN 1。VMPS向以太网交换机回送一个确认响应,并指出将该端口暂时配置给VLAN 1。后续通过该端口接收到的MAC帧都在VLAN 1内进行转发。如果该端口一段时间内接收不到MAC帧,该端口将重新回到初始状态,不再属于任何VLAN,在再次能够转发MAC帧前,必须重新通过查询VMPS,获得有关该端口所属VLAN的确认信息。