玩转OpenStack--12>Linux如何实现VLAN

玩转OpenStack--12>Linux如何实现VLAN

LAN局域网表示,本地局域网,通常使用和集线器LAN交换机来连接中的计算机。
一般来说,两台计算机连入同一个或者集线器交换机时,它们就在同一个中LAN。

一个LAN表示一个广播域。其含义是:LAN中的所有成员都会收到任意一个成员发出的广播包。

虚拟局域网VLAN表示。功能的一个带有VLAN交换机能够将自己的端口划分出多个LAN。
计算机发出的广播包可以被同一个中其他计算机收到LAN,LAN但位于其他的计算机则无法收到。简单地说,VLAN将一个交换机分成了多个交换机,限制了广播的范围,在二层将计算机隔离到不同的中VLAN。

比方说,有两组机器,B. A组和
我们想配置分类中翻译甲组中的机器可以相互访问,B组中的机器也可以相互访问,但是甲和乙中的机器无法互相访问。
一种方法是使用两个交换机,A和乙分别接到一个交换机。另一种方法是使用一个带VLAN功能的交换机,将甲和乙的机器分别放到不同的中VLAN。

请注意,VLAN的隔离是二层上的隔离,A和乙相互无法访问指的的英文二层广播包(比如ARP)无法跨越VLAN的边界。
但在三层上(比如IP)是可以通过路由器让A和B互通的。概念上一定要分清。

支持的交换机几乎都是支持VLAN的。通常交换机的端口有两种配置模式:Access和Trunk。看下图

接入口
这些被端口打上VLAN了的标签,表明该端口属于哪个VLAN。VLAN用不同来区分VLAN ID,VLAN ID 1-4096的范围是,接入口都是直接与计算机网卡相连的,这样从该网卡出来的数据包流入接入口后就被打上了所在的标签VLAN。接入口只能属于一个VLAN。

躯干口
假设有两个交换机甲和上有B.甲VLAN1(红),VLAN2(黄),VLAN3(蓝); B上也有那如何让VLAN1,2,3 AB上相同VLAN之间能够通信呢?

办法是将甲和乙连起来,而且连接甲和乙的端口要允许VLAN1,2,3三个VLAN的数据都能够通过。
这样的端口就是中继线口了。VLAN1,2,3的数据包在通过干线到达口交换机对方的过程中始终带着自己的标签VLAN。

了了VLAN的概念之后,我们来看KVM虚拟化环境下是如何实现VLAN的。还是先看图,

eth0的是宿主机上的物理网卡,有一个命名为eth0.10的子设备与之相连。eth0.10设备了就是VLAN,VLAN ID就是其VLAN 10 eth0.10 brvlan10挂在命名为上的Linux的桥,虚机VM1的虚拟网卡vent0也挂在brvlan10上。

这样的配置其效果就是:宿主机用软件实现了一个交换机(当然是虚拟的),上面定义了一个VLAN10 eth0.10,brvlan10和vnet0都分别接到VLAN10的接入口上而eth0的就是一个口中继线.. 。
VM1通过vnet0发出来的数据包会被打上VLAN10的标签。

eth0.10的作用是:定义了VLAN10 brvlan10的作用是:Bridge上的其他网络设备自动加入到VLAN10中

我们再增加一个VLAN20,见下图

image38.png

这样虚拟交换机就有两个VLAN了,VM1 VM2分别属于VLAN10和和VLAN20。对于新创建的虚机,只需要将其虚拟网卡放入相应的桥,就能控制其所属的VLAN。

VLAN设备总是以母子关系出现,母子设备之间是一对多的关系。一个母设备(eth0的)可以有多个子设备(eth0.10,eth0.20 ......),而一个子设备只有一个母设备。

点击阅读上一节 玩转OpenStack--11>理解 virbr0

点击阅读下一节玩转OpenStack--13>动手实践Linux VLAN

注:转载于Linux如何实现VLAN - 每天5分钟玩转OpenStack

猜你喜欢

转载自blog.csdn.net/shuiyuetianwy/article/details/83750738