VLAN
ps:VLAN 的隔离是二层上的隔离, A 和 B 无法相互访问指的是二层广播包 (比如 arp) 无法跨越 VLAN 的边界. 但在三层上 (比如 IP) 是可以通过路由器让 A 和 B 互通的. 概念上一定要分清
通常交换机的端口有两种配置模式: Access 和 Trunk
Access 口 这些端口被打上了 VLAN 的标签, 表明该端口属于哪个 VLAN. 不同 VLAN 用 VLAN ID 来区分, VLAN ID 的 范围是 1-4096. Access 口都是直接与计算机网卡相连的, 这样从该网卡出来的数据包流入 Access 口后就被打上了所在 VLAN 的标签. Access 口只能属于一个 VLAN.
Trunk 口 假设有两个交换机 A 和 B. A 上有 VLAN1(红),VLAN2(黄),VLAN3(蓝);B 上也有 VLAN1,2,3 那如何让 AB 上相同 VLAN 之间能够通信呢? 办法是将 A 和 B 连起来, 而且连接 A 和 B 的端口要允许 VLAN1,2,3 三个 VLAN 的数据都能够通过.
这样的端口就是 Trunk 口了.
KVM 下的交换机实现原理如下:
brvlan10 和 brvlan20 就是虚拟交换机, vnet0,eth0.10 就是虚拟 Acess 口, eth0 就是虚拟 Trunk 口
动手实验: https://www.cnblogs.com/CloudMan6/p/5326737.html
Linux Bridge + VLAN = 虚拟交换机
现在对 KVM 的网络虚拟化做个总结.
物理交换机存在多个 VLAN, 每个 VLAN 拥有多个端口. 同一 VLAN 端口之间可以交换转发, 不同 VLAN 端口之间隔离. 所以交换机其包含两层功能: 交换与隔离.
Linux 的 VLAN 设备实现的是隔离功能, 但没有交换功能. 一个 VLAN 母设备 (比如 eth0) 不能拥有两个相同 ID 的 VLAN 子设备, 因此也就不可能出现数据交换情况.
Linux Bridge 专门实现交换功能. 将同一 VLAN 的子设备都挂载到一个 Bridge 上, 设备之间就可以交换数据了.
总结起来, Linux Bridge 加 VLAN 在功能层面完整模拟现实世界里的二层交换机.
来源: http://www.bubuko.com/infodetail-2913193.html