VLAN
1. 简介
- 虚拟局域网(Virtual Local Area Network,VLAN),是将局域网从逻辑上划分为一个个网段,从而实现虚拟工作组的一种交换技术。
- 每个网段内所有主机间的通讯和广播仅限于该 VLAN 内,广播帧不会被转发到其他网段,VLAN 间不能进行直接通信,从而实现了对广播域的分割和隔离。
1.1. VLAN 产生背景
- 网桥、集线器或交换机构成的整个物理局域网同属于一个广播域,任何一个广播帧或多播帧都将被光波导整个局域网的每一台主机
- 在网络通讯中,广播信息是普遍存在的,这些广播帧将占用大量网络带宽,导致网络速度和通讯效率下降,增加网络主机处理广播信息的负荷
- 蠕虫病毒泛滥,为防止网络阻塞和瘫痪,需要进行有效的广播域隔离
1.2. VLAN 作用
- 限制广播域:广播域被限制在一个 VLAN 内,节省了带宽,提高了网络处理能力。
- 增强局域网的安全性:不同 VLAN 内的报文在传输时是相互隔离的,即一个 VLAN 内的用户不能和其它 VLAN 内的用户直接通信。
- 提高网络的健壮性:故障被限制在一个 VLAN 内,本 VLAN 内的故障不会影响其他 VLAN 的正常工作。
- 灵活构建虚拟工作组:用 VLAN 可以划分不同的用户到不同的工作组,同一工作组的用户也不必局限于某一固定的物理范围,网络构建和维护更方便灵活。
2. 静态 VLAN 与动态 VLAN
2.1. 静态 VLAN
明确指定个端口所属 VLAN 的设定方法,也称为基于端口的 VLAN。
特点:是将交换机按端口进行分组,每组定义一个 VLAN,属于同一个 VLAN 的端口,可来自一台或多台交换机(即可跨多台交换机设置 VLAN)。
2.2. 动态 VLAN
根据每个端口所连的计算机,动态设置端口所属 VLAN 的设定方法。
划分依据 | 说明 | 优点 | 缺点 |
---|---|---|---|
基于端口 | 根据以太网交换机的端口来划分 | 定义 VLAN 成员时非常简单 (只要将所有的端口都指定一下就可以了) | 如果 VLAN A 的用户离开了原来的端口,到了一个新的交换机的某个端口,那么就必须重新定义。 |
基于 MAC 地址 | 根据端口所连计算机的网卡 MAC 地址,决定该端口所属的 VLAN。 eg.MAC 地址为”00-0C-6E-E1-1B-36” 的计算机被设置为属于 VLAN2,则该计算机连接的交换机端口会被自动划归为 VLAN2。 |
当用户物理位置移动时,即从一个交换机换到其他的交换机时,VLAN 不用重新配置,可以认为这种根据 MAC 地址的划分方法是基于用户的 VLAN | 初始化时,所有的用户都必须进行配置,若用户数量较大则配置量非常大。 此外这种划分的方法也导致了交换机执行效率的降低,因为在每一个交换机的端口都可能存在很多个 VLAN 组的成员,这样就无法限制广播包了。 |
基于子网 | 根据每个主机的网络层地址划分的。虽然这种划分方法是根据网络地址,比如 IP 地址,但它不是路由,与网络层的路由毫无关系 | 用户的物理位置改变了,不需要重新配置所属的 VLAN。 此外无需附加的帧标签来识别 VLAN,可减少网络的通信量 |
效率低,因为检查每一个数据包的网络层地址是需要消耗处理时间的,一般的交换机芯片都可以自动检查网络上数据包的以太网帧头,但要让芯片能检查 IP 帧头,需要更高的技术,同时更费时 |
基于协议 | 根据报文的协议类型和封装格式进行 VLAN 的划分。 如:IP、IPX、AppleTalk 协议族;Ethernet II,802.3,802.3/802.2 LLC, 802.3/802.2 SNAP 等封装格式 |
一个交换机换到其他的交换机时,VLAN 不用重新配置 | 初始化时,所有的用户都必须进行配置,配置量大、执行效率低、无法限制广播包 |
2.3. 动静态 VLAN 对比
静态 VLAN | 动态 VLAN | |
---|---|---|
划分方式 | 基于端口 | 基于 MAC 地址、子网、用户 |
特点 | 需人为设定,需设定的端口数目较多,工作量大 | 自动设定,灵活,省事 |
3. 802.1Q VLAN 帧格式
3.1. 传统以太网帧格式
目的 MAC 地址 | 源 MAC 地址 | 长度或类型 | 数据 | FCS | |
---|---|---|---|---|---|
区段大小(bytes)) | 6 | 6 | 2 | 46~1500 | 4 |
3.2. 802.1Q 帧格式
目的 MAC 地址 | 源 MAC 地址 | 802.1Q Tag | 长度或类型 | 数据 | FCS | |
---|---|---|---|---|---|---|
区段大小(bytes)) | 6 | 6 | 4 | 2 | 46~1500 | 4 |
其中 802.1Q Tag 中又细分了 TPID、PRI、CFI 和 VID4 个字段,四个字段说明如下:
字段 | 长度(bits) | 名称 | 说明 |
---|---|---|---|
TPID | 16 | Tag Protocol ID,表示这个帧是否带标签 | 如果该值取 0x8100,则表示这个帧是带 Tag 的帧,相反表示其是传统不带 Tag 标签的帧; 该帧与传统的以太网帧中该位置的 Type/Length 字段兼容 |
PRI | 3 | Priority,表示帧的优先级 | 取值范围为 0~7,值越大优先级越高,在交换机阻塞时,优先发送优先级较高的帧 |
CFI | 1 | 标准格式指示位 | - |
VID | 12 | VLAN Identifier,表示该帧所属的 VLAN | VLAN 的有效取值范围为 1~4094(0 和 4095 为保留取值) |
4. VLAN 间的通信
可使用路由器或三层交换机为 VLAN 设置路由,在三层交换机中划分 VLAN,以支持 VLAN 间的相互通讯。
4.1. 同 VLAN 内主机的跨域通讯
- 在交换机端口各拿 num (VLAN) 个端口级联,专门用于对应 VLAN 的主机跨交换机通讯
- 让交换机间的互联链路汇集到一条链路上(汇聚链路、主干链路),该链路的端口被称为汇聚连接端口,该链路允许各 VLAN 的通讯流过
4.2. 不同接口类型下的 VLAN 间通信流程
交换机上的端口分为三种一种是接入层端口直连设备的,叫做 Access;一种是交换机和交换机之间的端口负责汇聚的叫做 Trunk,还有一种是 Access 与 Trunk 混合的模式,叫做 Hybrid。
接口类型 | 不带 Tag 报文处理 | 带 Tag 报文处理 | 发送帧处理流程 |
---|---|---|---|
Access 接口 | 接收该报文,并打上缺省的 VLAN ID | 当 VLAN ID 与缺省 VLAN ID 相同(合法)时,接收该报文; 不合法时丢弃该报文 |
先剥离帧的 PVID Tag,然后再发送 |
Trunk 接口 | 打上缺省的 VLAN ID,当缺省 VLAN ID 在允许通过的 VLAN ID 列表里(合法)时,接收该报文; 不合法时丢弃该报文 |
当 VLAN ID 在接口允许通过的 VLAN ID 列表里(合法)时,接收该报文; 不合法时丢弃该报文 |
若不是接口允许通过的 VLAN ID 时,则丢弃该报文。 当 VLAN ID 与缺省 VLAN ID 相同(合法)时,去掉 Tag,发送该报文。 不合法时保持原有 Tag,发送该报文 |
Hybrid 接口 | 打上缺省的 VLAN ID,当缺省 VLAN ID 在允许通过的 VLAN ID 列表里(合法)时,接收该报文。 不合法时丢弃该报文 |
当 VLAN ID 在接口允许通过的 VLAN ID 列表里(合法)时,接收该报文; 不合法时丢弃该报文 |
当 VLAN ID 是该接口允许通过的 VLAN ID 时,发送该报文。 可以通过命令设置发送时是否携带 Tag |
4.3. Tag/Untag 报文的处理原则
背景:在交换机内部,为快速高效的处理,报文都是带 tag 转发的。(交换机上很多会配置多个 VLAN,不同 VLAN 的流量仅能靠 tag 标签区分)
4.3.1. 报文进入 switch 时
在接收报文时,交换机的主要职责是 —— 根据 tag/untag 属性和端口属性决定是否允许该报文进入该端口:
- 报文属性为 untag:允许报文进入该端口,并打上 PVID 的 VLAN tag(与端口属性无关)
- 报文属性为 tag,且此交换机端口为 Access 端口:若端口允许该报文 tag 标明的 VLAN 通过,接收并处理报文;若不允许则丢弃报文
- 报文属性为 tag,且此交换机端口为 Trunk/Hybrid 端口:若端口允许该报文 tag 标明的 VLAN 通过,接收并处理报文;若不允许则丢弃报文
4.3.2. 报文出 switch 时
在转发报文时,主要职责是 —— 根据出端口属性决定是否携带 tag 转发报文:
- 出端口为 Access 端口:不带 tag 转发(将标签剥离)
- 出端口为 Trunk 端口:若报文所在的 VLAN 和 PVID 相同,则报文不带 tag 转发;否则带 tag 转发
- 出端口为 Hybrid 端口:根据报文所在的 VLAN 配置是 / 否为 tag,决定是 / 否带 tag 转发
相关文章