04.04.01 L3交换机功能的分类 尽管各制造厂商的L3交换机产品提供了的功能不同,但这些功能大致可以分为如表4-11所示的几个类别。 表4-11 L3交换机的功能 STP、SNMP、RMON、NetFlow 等相关内容请参考本书02.08 节,QoS 相关内容请参考03.06 节。 在L3 交换机中,只有使用这些功能对分组进行的管理是由CPU(软件)直接处理的。用户之间的通信均如图4-13 所示,是由ASIC(硬件)处理实现分组的高速转发的。 图4-13 使用ASIC 完成高速分组转发 04.04.02 VLAN 由1 台或者多台交换集线器所组成的1 个广播域可以称为是一个扁平网络(flat network)。该网络只由L2 组成,相互连接的硬件会接收所有网络发来的广播帧。因此,随着连接硬件数量的增加,广播数量也会增加,网络状况也就越发混杂。 这种情况下就需要采用能够将整个扁平网络进行逻辑分段的VLAN(Virtual LAN)技术。各个VLAN 均使用同1 个广播域,因此能够控制该域内广播通信的规模。(图4-14) 交换机通过设置(configuration)能够轻易更改物理端口的属性,使该物理端口附加到某个VLAN之中,因此当连接交换机的用户终端发生变化时,也无需更改所对应的物理配线。 VLAN之间的通信需要使用路由选择,不借助路由器就无法与不同VLAN的终端进行通信,因此安全性也有了保障。 VLAN在1998年的IEEE 802.1Q中完成了标准化。 ■■基于端口的VLAN 基于端口的VLAN(Port VLAN)是指在1台交换机上完成VLAN构建的功能。 基于端口的VLAN是在交换机的端口上设置VLAN ID信息,将拥有相同VLAN ID的多个端口构成一个VLAN。符合IEEE 802.1Q标准的交换机在初始状态时所有端口默认VLAN ID=1(即VLAN 1),但是使用者能够对任意一个端口进行VLAN ID=2的设置,从而使该端口归属VLAN 2。 图4-14 LAN与VLAN的比较 ■标签VLAN(IEEE 802.1Q) 当需要跨越多个交换机创建VLAN时,一般会用到使用中继端口(trunk port)的标签VLAN(tag VLAN)。标签VLAN通过中继端口完成以太网数据帧的收发,其中以太网数据帧上需添加4字节IEEE 802.1Q所定义的首部(即VLAN 标签信息)(图4-15)。为以太网数据帧添加标签的过程称为tagging。当tagging完成后,以太网数据帧的最大长度将从1518字节变为1522字节,因为其中还包含了12bit的VLAN ID信息,因此最多可以支持的VLAN数也达到了4096个。 图4-15 使用标签VLAN时的以太网数据帧格式 在以太网中,TPID的值为0x8100。如果发送源地址后面的值不是0x8100,那么该域则不表示TPID信息,而是作为“长度/类型”数据域被识别。顺便一提,当“长度/类型”数据域的值在0x05DC(10进制数为1500)以下时,表示该以太网数据帧的长度;在0x0600以上时,则表示该以太网数据帧的类型。表示以太网数据帧类型的值分别是:IPv4为0x0800,ARP为0x0806、IPv6为0x86DD等。 一些不支持IEEE 802.1Q的交换机由于无法识别TPID,会将0x8100的值视作以太网帧类型,但是由于不存在0x8100类型的数据帧,因此交换机会将其作为错误帧直接丢弃。 IEEE802.1Q标准中定义的首部还存在一个数据域——TCI,该数据域可以进一步分成3个子数据域(表4-12)。 表4-12 TCI数据域的组成要素A A 最新标准已将该域修改为Drop Eligible Indicator (DEI)。——译者注 图4-16 在使用标签VLAN的多个交换机之间进行转发 图4-17 跨越多个交换机的VLAN ■本征VLAN VLAN编号为1的VLAN通常被称为本征VLAN(Native VLAN)或管理员VLAN,一般用于管理VLAN,也作为初始值分配给交换机的各个端口。本征VLAN的指定或变更是可以自定义的,但基本所有厂商的交换机都默认使用VLAN ID为1的VLAN作为本征VLAN。在定义新VLAN时如果设定VLAN ID=1,则有可能会发生同预期端口无法通信的情况,因此最好使用2以上的数值作为新建VLAN的ID。 ■■中继端口 使用标签VLAN向其他交换机传递VLAN编号时,首先需要设置中继端口(trunk port)。中继端口也被称为“附带标签的端口”,能够属于多个VLAN,与其他交换机进行多个VLAN的数据帧收发通信。两台交换机中继端口之间的链路则称为中继链路(trunk link)。 与中继端口和中继链路相对应的还有接入端口(access port)和接入链路(access link)这两个概念。接入端口只属于1个VLAN,接入链路也仅传输1个VLAN数据帧(图4-18)。 图4-18 中继端口和中继链路 ■协议VLAN 参考以太网数据帧首部的数据帧类型,基于网络层的各个协议来定义的VLAN称为协议VLAN(Protocol VLAN)。其中,数据帧类型的值为16bit,VLAN能够识别的网络层协议有IP、IPX、AppleTalk等。 目前,网络层的通信基本都使用IP协议,因此协议VLAN变得没有意义,几乎已不再使用了。 ■■上行VLAN 上行VLAN(Uplink VLAN)是由ALAXALA公司的交换机产品提供的、基于端口VLAN的功能之一(图4-19)。 属于VLAN的端口可以分为上行端口和与终端相连的下行端口,上行端口之间或上行端口和下行端口之间可以进行通信,但下行端口之间则无法进行通信。 图4-19 上行VLAN的分组流向 ■私有VLAN 私有VLAN(Private VLAN)也可以记为PVLAN,是指在VLAN内部再构建一层VLAN的功能(图4-20),因此也可以称为多层VLAN。 私有VLAN能够通过进一步分割广播域(子网),削减VLAN内部的广播通信流量并保障通信的安全性。例如,在酒店、公寓、服务供应商等场所灵活使用该功能,就能够控制服务器或网关与终端的连接,使不同终端之间无法相互通信。 如表4-13所示,私有VLAN由主VLAN(Primary VLAN)和从VLAN(Secondary VLAN)组成,从VLAN与1个主 VLAN关联。 表4-13 私有VLAN的组成要素 使用私有VLAN的物理端口可以设置成表4-14中的任何一个模式。 表4-14 使用私有VLAN的物理端口模式 图4-20 私有VLAN的组成 ■静态VLAN和动态VLAN 将交换机的端口进行VLAN划分的过程称为“VLAN成员划分”。 管理员通过输入交换机命令,将一个交换机端口固定分配给某个VLAN,这种VLAN成员划分方式称为静态VLAN。 与之相对地,根据与端口相连的个人计算机或用户信息自动分配端口至某个VLAN的方式则称为动态VLAN或者认证VLAN。具体而言,就是交换机根据终端的MAC地址来分配(基于MAC地址库的认证),或者基于IEEE 802.1X的认证来决定该端口属于何种VLAN。而且在动态VLAN中,网络上的个人计算机无论与哪台交换机相连,都能固定归属于同一VLAN(图4-21)。 有些厂商通过交换机内部的数据库来实现基于MAC地址的认证,但大多数情况下动态VLAN的实现都需要使用RADIUS服务器。 关于IEEE 802.1X认证的详细内容请参考02.08节。 图4-21 动态VLAN与端口认证 ■VTP与ISL VTP(VLAN Trunking Protocol,VLAN中继协议)是思科公司的独有协议,在拥有大量交换机的大规模网络中,通过该协议各交换机能够使用中继链路进行VLAN相关信息(VTP 通告)的交互,从而自动完成网络内部交换机中VLAN的创建、删除和更新等工作。不过,仍然需要手动设置接入端口的VLAN分配。 另外,思科公司还研发了独有的VLAN识别标识ISL(Inter-Switch Link,交换机间链路)。 该标识使用与IEEE 802.1Q中的VLAN标签不同的帧格式进行VLAN通信数据的交互,思科公司的交换机产品Catalyst 1900就仅支持ISL而不支持IEEE 802.1Q。 图4-22 ISL数据帧 04.04.03 VLAN环境中的数据流向 假设现在主机A要和属于同一VLAN的主机F通过运行ping命令通信。 主机A的用户在命令行提示符处输入了主机FIP地址或主机名(域名)的ping命令,如果输入的是主机名,则需要通过DNS进行主机名解析,然后才能获取主机F的IP地址。 由于主机A同主机F位于同一网段(相同广播域),因此主机A需要知道主机F的MAC地址,这时主机A会向主机F发送ARP请求的广播。 交换机1接收到来自主机A的ARP请求消息后,在MAC地址表中记录下主机A的信息,由于ARP请求的目的地MAC地址为广播地址,因此交换机1会向除接收端口之外的所有端口复制该数据帧并进行扩散(flooding),但在VLAN环境下,只有和主机A同属一个VLAN的端口会被扩散到。 交换机2接收到来自主机A的ARP请求后,在MAC地址表中记录下主机A的信息。之后与交换机1一样,交换机2也会向除接收端口之外的、所有同属一个VLAN的端口复制该数据帧并进行扩散(flooding)。 主机F接收到ARP的请求后,向主机A回复ARP的响应消息。这时交换机2将习得主机F的MAC地址信息,因为之前已经从ARP请求中习得了主机A的MAC地址信息,因此ARP响应消息将直接转发到端口1处。 交换机1接受ARP响应消息后,也从中习得主机F的MAC地址,综合判断所有习得的信息后将MAC地址信息转发至交换机的端口1处。 由于主机A已经知道目的地的MAC地址,因此利用该地址信息向主机F发送ICMP echo消息。 04.04.04 VLAN之间的路由选择 ■■L2交换机 在L2交换机上设置了多个VLAN后,单台交换机就无法在不同的VLAN之间转发以太网数据帧。 当需要在多个VLAN之间转发数据时,一般会使用中继链路连接路由器,通过路由器进行VLAN之间的路由选择。 图4-23 L2交换机上VLAN之间的路由选择 ■L3交换机 L3交换机能够在交换机内部直接完成VLAN之间的路由选择。 ■■UDLD UDLD(Uni-Directional Link Detection,单向链路检测)由RFC5171文档公布,是思科公司开发的L2协议,用于检测在发送(TX)或接收(RX)数据时线缆发生的单向链路故障。由于传输媒介无论是光纤还是双绞线,以太网都会通过接收方和发送方两边的物理线缆来传输数据,因此线缆发生某种故障造成单向链路的可能性很大。 一旦发生单向链路故障,无论端口是否处于已连接的状态,都会造成通信一方的交换机只能发送数据而不能接收数据,另一方则只能接收数据而不能发送数据的状况。而且发生单向链路故障时,生成树也无法正常工作,位于转发线路上的数据帧也会被丢弃。 交换机上UDLD生效的端口如果根据UDLD检测出了链路发生的单向故障,就能够及时关闭端口,修正网络上的不良运行状态。 图4-24 单向链路发生故障的概念图