TCP/IP 详解(第 2 版) 笔记 / 3 链路层 / 3.2 以太网与 IEEE 802 LAN/MAN 标准 / 3.2.3 802.1p/q: 虚拟局域网与 QoS 标记

目录、参考文献


3.2.3 802.1p/q: 虚拟局域网(Virtual LANs)与 QoS 标记

随着交换式以太网的使用越来越多,位于同一个以太局域网的网站中的每一台计算机都可以互相连接起来
这样做的好处是任何主机都可以使用 IP 和其他网络层协议直接与任何其它主机通信,并且需要很少的或不需要管理员配置
此外,广播和组播流量(见第 9 章)被分发到所有可能希望接收它的主机,而不必设置特殊的组播路由协议
虽然把许多工作站放在一个以太网上有很多优点,但当许多主机使用广播时,让广播流量流向所有计算机会造成多余的网络流量
并且出于一些安全方面的原因,一般不会允许任意到任意工作站的通信

由集线器连接的网络称为共享式网络
由交换机连接的网络称为交换式网络

为了解决运行大型多功能交换式网络的一些问题,IEEE 扩展了 802 局域网标准
在一个被称为 802.1q [802.1Q-2005] 的标准中,新增了一个被称为虚拟局域网(virtual LANs (VLANs))的功能
符合该标准的以太网交换机将主机之间的流量隔离为多个常见的 VLAN
由于这种隔离,不同 VLAN 上的主机即便物理上连接在同一个交换机上,但仍然无法直接通信,要通信必须在它们之间使用路由器
为了解决这个问题,人们制造了一种结合了交换机与路由器功能的设备,路由器的性能也得到了改进,以匹配 VLAN 交换的性能
VLAN 交换机的吸引力因此有所减弱,很多人会直接使用带交换机功能的现代高性能路由器
尽管如此,VLAN 交换机仍在使用,在某些场景仍很流行,并且理解其工作原理是很重要的

有若干种方法可以用来建立工作站到 VLAN 的映射关系
一种简单而常见的方法是通过端口来分配 VLAN,使用这种方法时,交换机上用来接入工作站的端口被分配了对应的 VLAN
某个工作站接入某个端口时,这个工作站就成为了与这个端口关联的 VLAN 的一员
另一种方式是基于 MAC 地址的 VLAN,以太网的交换机上维护了一个表,用来建立工作站 MAC 地址到 VLAN 的映射关系
如果工作站更改了它们的 MAC 地址,可能会变得难以管理
还可以用 IP 地址作为分配 VLAN 的基础

当不同 VLAN 中的工作站连接到同一个交换机时,无论工作站使用什么类型的以太网接口,交换机都会确保流量不会从一个 VLAN 泄漏到另一个
当多个 VLAN 必须跨越多个交换机(链路聚集(trunking))时,需要在将以太网帧发送到另一台交换机前,用其所属的 VLAN 标记以太网帧
为了支持这个功能,需要使用被称为虚拟局域网标记(或报头(header))的标记,它是一个 12 位的 VLAN 标识符(提供 4096 个 VLAN,VLAN 0 和 VLAN 4095 被保留)
802.1p 标准定义,VLAN 标记还包含一个用来支持 QoS 的 3 位优先级(priority)字段,如图 3-3 所示
在许多情况下,管理员必须通过在适当的端口上启用链路聚集(trunking)来配置交换机的端口,以用于发送 802.1p/q 帧
为了使这项工作更容易一些,一些交换机的链路聚集端口支持本地 VLAN 选项,这意味着未标记的帧默认与本地 VLAN 关联
链路聚集(trunking)端口用于互连支持 VLAN 的交换机,而其它端口通常用于连接工作站
一些交换机支持 VLAN 链路聚集(trunking)的专有方法(如:思科的交换机机间链路(Inter-Switch Link (ISL))协议)

802.1p 指定了一种机制来在每个帧上表示一个 QoS 标识符
802.1p 报头(header)包含一个 3 位的优先级字段,用于指示 QoS 级别,该标准是 802.1q VLAN 标准的扩展
这两个标准一起工作,并在同一个报头(header)中共享比特位,3 个比特位定义了 8 个服务等级
0 级,最低优先级,用于普通场景,采用尽力而为(best-effort)策略的流量,7 级,最高优先级,可用于关键路由或网络管理功能
这些标准指定了优先级在数据包中的编码方式,但将管理哪些数据包应该接收哪个级别的策略以及实现优先服务的底层机制留给具体的实现者去定义
因此,流量的某个优先级的处理方式相对于另一个优先级的差异是由具体实现或供应商定义的
802.1p 可以独立于 VLAN 使用,独立使用时,802.1p/q 标头中的 VLAN ID 字段的值为 0

用于操作 802.1p/q 信息的 Linux 命令为 vconfig,它可以用来:

  1. 向物理网卡添加和移除关联 VLAN ID 的虚拟网卡
  2. 设置 802.1p 属性
  3. 改变虚拟网卡的定义方式
  4. 影响 “ 被 VLAN ID 标记的数据包 ” 与 “ 它们在操作系统的协议处理过程中的优先级 ” 的映射

下边的命令:

  1. 用 VLAN ID 2 向 eth1 添加了一个虚拟网卡
  2. 移除这个虚拟网卡
  3. 改变虚拟网卡的命名方式
  4. 添加一个新的虚拟网卡,用新的命名方式查看虚拟网卡信息
Linux# vconfig add eth1 2
Added VLAN with VID == 2 to IF -:eth1:-
Linux# ifconfig eth1.2
eth1.2 Link encap:Ethernet HWaddr 00:04:5A:9F:9E:80
            BROADCAST MULTICAST MTU:1500 Metric:1
            RX packets:0 errors:0 dropped:0 overruns:0 frame:0
            TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
            collisions:0 txqueuelen:0
            RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Linux# vconfig rem eth1.2
Removed VLAN -:eth1.2:-
Linux# vconfig set_name_type VLAN_PLUS_VID
Set name-type for VLAN subsystem. Should be visible in
            /proc/net/vlan/config
Linux# vconfig add eth1 2
Added VLAN with VID == 2 to IF -:eth1:-
Linux# ifconfig vlan0002
vlan0002 Link encap:Ethernet HWaddr 00:04:5A:9F:9E:80
            BROADCAST MULTICAST MTU:1500 Metric:1
            RX packets:0 errors:0 dropped:0 overruns:0 frame:0
            TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
            collisions:0 txqueuelen:0
            RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

在 Linux 中,为虚拟网卡命名的默认方法是在对应的物理网卡后边加上 VLAN ID
例如,VLAN ID 2 关联到物理网卡 eth1,则虚拟网卡叫做 eth1.2
另一种方式是,VLAN 名称由 vlan 枚举,其中 为 VLAN 标识符
设置完成后,VLAN 设备上发送的帧将按预期使用 VLAN ID 进行标记
可以通过 Wireshark 看到这一点,如图 3-5 所示

Figure 3-5
图 3-5
带有 VLAN ID 标记的帧
已经更改了 Wireshark 默认的列和设置以显示 VLAN ID 和原始以太网地址

图 3-5 显示了 VLAN 2 上携带的 ARP 数据包(见第 4 章),帧大小为 60 字节(不包括 CRC)
该帧使用类型为 0x8100 的以太网 II 封装方式进行封装,表示一个 VLAN
这个帧的虚拟局域网报头(header)表示该帧属于 VLAN 2,优先级为 0
除了报头(header)外,该帧的其它字段都与常规 ARP 数据包一致


目录、参考文献

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值