VLAN
A virtual local area network (VLAN) is any broadcast domain that is partitioned and isolated in a computer network at the data link layer (OSI layer 2).[2][3] In this context, virtual refers to a physical object recreated and altered by additional logic, within the local area network. VLANs work by applying tags to network frames and handling these tags in networking systems – creating the appearance and functionality of network traffic that is physically on a single network but acts as if it is split between separate networks. In this way, VLANs can keep network applications separate despite being connected to the same physical network, and without requiring multiple sets of cabling and networking devices to be deployed.
1998 年,以太网 VLAN 在第一版 IEEE 802.1Q-1998 标准中进行了描述。 IEEE 802.1ad 对此进行了扩展,允许在提供商桥接服务中嵌套 VLAN 标签。 IEEE 802.1ah-2008 改进了该机制。
from wiki https://en.wikipedia.org/wiki/VLAN
其他相关协议:
IEEE 802.1QinQ (802.1ad)
这是一种扩展的 VLAN 标签技术,有时也称为“双层 VLAN”或“堆叠 VLAN”。QinQ 允许多重 VLAN 标签被插入到一个单一的以太网帧中,这样做可以进一步增加网络的灵活性和扩展性,特别是在服务提供商环境中,用以区分不同客户的流量。
IEEE 802.1ah
IEEE 802.1ah 通过引入一个额外的 MAC 地址层次,可以创建更多的隔离网络,有效扩展了 VLAN 的规模限制
IEEE 802.1p
这是一个在 802.1Q 标准中定义的优先级标记,用于在网络设备中实现流量优先级和简单的质量服务(QoS)。虽然它直接关联于 802.1Q 的 VLAN 标签,但它专门用于流量分类和优先级处理。
IEEE 802.1v
这个标准提供了基于协议和端口号的 VLAN 分类。它允许网络管理员根据更细粒度的规则,如网络协议类型或特定的端口号,将流量分配到 VLAN。
IEEE 802.1ak
这是多个注册协议和多个 VLAN 注册实例(MVRP/MVR)的扩展,用于更动态和灵活地管理 VLAN 配置。
GVRP (GARP VLAN Registration Protocol)
这是一个在 IEEE 802.1Q 标准中定义的协议,用于自动管理 VLAN 信息的注册和传播。GVRP 允许通过通用属性注册协议 (GARP) 自动传播 VLAN 注册和反注册,简化了 VLAN 的配置和管理。
使用场景
VLAN的出现与网络增长,管理复杂性,安全和性能需求增加有关。
- 网络规模不断扩大,需要更多的网络硬件,通过子网加路由模式不够灵活。
- 广播流量如ARP会占用大量带宽,尤其是大型局域网中
- 安全和隔离要求, 进行流量分离防止数据泄露恶意访问
- 网络策略与Qos,同一网络下实现差异化服务, 如实时视频流量需要比普通文件传输更高的优先级
virtual 这个词让我想到开始用的虚拟机软件,Vmware, virtualbox。在物理层上通过tags将物理网路进行划分管理。
VLAN的介绍
VLAN概念出现在以太网网络中,在以太网帧中源地址目的地址后插入TAG来区分vlan, 对应保准IEEE802.1Q , VLAN标签包含以下部分:
- TPID Tag Protocol Identifier: 固定未0x8100, 标示帧包含802.1Q标签;
- 优先级代码点(PCP):3位字段,用于支持质量服务(QoS),定义帧的优先级;
- 丢弃合格标识(DEI):1位, 用于标识网络拥堵下可被丢弃的帧。
- VLAN ID(VID):12位, 共定义4096个不同VLAN (其中0和4095保留)
Tagged VLAN: 标记VLAN信息
Untagged VLAN:未标记VLAN信息
Trunk & Access
在设置配置VLAN,可以选择两种工作模式Trunk,Access, Trunk允许以太帧携带VLAN通常用于交换机之间链接, Access只能属于一个VLAN,一边用户末端设备, 服务器,打印机,终端等。
网络中不只一个交换机,而是有一大堆交换机,并且A组的一些机器直接连接到交换机1和交换机2。为了让这些机器能够相互通话,你可以在交换机1上添加一个A组VLAN的接入端口,在交换机2上也添加一个,然后在这些端口之间连接一根以太网线。这种方法可以工作,但随着交换机数量和VLAN数量的增加,它的扩展性不佳,因为你需要使用大量宝贵的交换机端口来连接你的VLAN。
VLAN实验
由于就一台机器使用 network namespace 和openvswitch 搭建实验环境,来验证一下vlan的功能。
环境准备
openvswitch安装。
os环境:Linux iZ8vbd88lmglnbsnad85q3Z 5.10.134-16.3.al8.x86_64+debug #1 SMP 使用源码安装
| |
| |
网路拓扑
| |
创建两个虚拟交换机 ovs-br0 , ovs-br1。
验证vlan隔离性
| |
测试ns1到ns2
| |
在ns2抓包
| |
设置vlan tag=10
| |
使用ovs-tcpdump此抓包, 这次抓的交换机上的端口, veth-ns1-br, veth-ns2-br可以看到vlan信息,。使用tcpdump抓包接口还是没有vlan信息一样,
ovs-tcpdump是openvswitch的工具,抓到的是交换机上的报文,也就是交换机处理完毕后吧vlan tag给删掉了发给了物理接口。
| |
| |
把ns2 tag改为20, ping不通
| |
| |
验证trunk&access
创建另外一台交换机,配置名字空间
vlan的trunk模式主要用于多交换机链接, 如果仅是抓包trunk端口信息,一个交换机就可以。
| |
验证ns3, ns4到ns1, ns2不通, 增加两个patch类型端口对接
| |
创建一对patch类型的端口将两个交换机连接
| |
| |
ns3设置为trunk端口,测试ns1 到ns3与ns4的连通性, 并在ns3和ns4抓包
| |
ns3 端口抓包
| |
ns4端口抓包, 未包含vlan信息
| |
由于ns3是设置为trunk模式,可以看到不同模式交换机对vlan tagid处理不同。可以在对应ns3上增加vlan。把地址绑定到设置了vlan的接口上
| |
再次验证一下, ping通了。
| |
ns3 抓包,收到报文,包含vlan信息。
| |
验证bond
| |
从ns1 ping ns5
| |
bond0状态, 从ns5中veth0抓包
| |
| |
停止 veth0-ns5-br端口,从ns5中veth1抓包抓包
| |
继续ping还是可以ping通
| |
bond通过绑定多个网卡实现扩容和负载的功能。
bond mode类型不匹配
业务环境中出现过交换及配置了balances-rr, 服务器配置active-backup导致网路不稳定。由于openvswitch不支持balances-rr,通过创建两个ns实现, ns6模拟服务器, ns7模拟交换机
| |
从ns7 ping ns6, 发两个包丢包50%
| |
在ns6的两个接口上抓包
| |
ns7抓包
| |
请求id54666, 55215, 只响应了一个id7025
| |
| |
可以看到返回包的接口是active-backup中primary 接口
balance-rr(Round Robin)是一种负载均衡模式,它按顺序将出站流量分配到所有可用的从属接口。每个接口轮流发送数据包,从而实现流量分配的平衡。如果服务器配置了这种模式交换机需要进行active-backup模式在任何时候只允许一个从属接口处于活动状态,其他所有的接口都处于备用状态。当活动接口出现故障时,某个备用接口会自动接管,从而保证网络连接的持续性。
| |
可以看到与bond0不同, bond1中两个接口mac是一样的, 应该是这个原因需要在交换机进行特殊设置。
缘起:在给客户培训资料准备的过程中,发现了自己一个不了解的知识点,聚合端口类型access,trunk,于是先把vlan资料整理一下。
图片from陳丁光