VLAN工作原理及优点
什么是VLAN?
VLAN(Virtual
LAN),翻译成中文是“虚拟局域网”。LAN可以是由少数几台家用计算机构成的网络,也可以是数以百计的计算机构成的企业网络。VLAN所指的LAN特指使用路由器分割的网络——也就是广播域。
在此让我们先复习一下广播域的概念。广播域,指的是广播帧(目标MAC地址全部为1)所能传递到的范围,亦即能够直接通信的范围。严格地说,并不仅仅是广播帧,多播帧(Multicast
Frame)和目标不明的单播帧(Unknown Unicast Frame)也能在同一个广播域中畅行无阻。
本来,二层交换机只能构建单一的广播域,不过使用VLAN功能后,它能够将网络分割成多个广播域。
未分割广播域时……
那么,为什么需要分割广播域呢?那是因为,如果仅有一个广播域,有可能会影响到网络整体的传输性能。具体原因,请参看附图加深理解。
图中,是一个由5台二层交换机(交换机1~5)连接了大量客户机构成的网络。假设这时,计算机A需要与计算机B通信。在基于以太网的通信中,必须在数据帧中指定目标MAC地址才能正常通信,因此计算机A必须先广播“ARP请求(ARP
Request)信息”,来尝试获取计算机B的MAC地址。
交换机1收到广播帧(ARP请求)后,会将它转发给除接收端口外的其他所有端口,也就是Flooding了。接着,交换机2收到广播帧后也会Flooding。交换机3、4、5也还会Flooding。最终ARP请求会被转发到同一网络中的所有客户机上。
请大家注意一下,这个ARP请求原本是为了获得计算机B的MAC地址而发出的。也就是说:只要计算机B能收到就万事大吉了。可是事实上,数据帧却传遍整个网络,导致所有的计算机都收到了它。如此一来,一方面广播信息消耗了网络整体的带宽,另一方面,收到广播信息的计算机还要消耗一部分CPU时间来对它进行处理。造成了网络带宽和CPU运算能力的大量无谓消耗。
广播信息是那么经常发出的吗?
读到这里,您也许会问:广播信息真是那么频繁出现的吗?
答案是:是的!实际上广播帧会非常频繁地出现。利用TCP/IP协议栈通信时,除了前面出现的ARP外,还有可能需要发出DHCP、RIP等很多其他类型的广播信息。
ARP广播,是在需要与其他主机通信时发出的。当客户机请求DHCP服务器分配IP地址,就必须发出DHCP的广播。而使用RIP作为路由协议时,每隔30秒路由器都会对邻近的其他路由器广播一次路由信息。RIP以外的其他路由协议使用多播传输路由信息,这也会被交换机转发(Flooding)。除了TCP/IP以外,NetBEUI、IPX和Apple
Talk等协议也经常需要用到广播。例如在Windows下双击打开“网络计算机”时就会发出广播(多播)信息。(Windows
XP除外……)
总之,广播就在我们身边。下面是一些常见的广播通信:
ARP请求:建立IP地址和MAC地址的映射关系。
RIP:一种路由协议。
DHCP:用于自动设定IP地址的协议。
NetBEUI:Windows下使用的网络协议。
IPX:Novell
Netware使用的网络协议。
Apple Talk:苹果公司的Macintosh计算机使用的网络协议。
如果整个网络只有一个广播域,那么一旦发出广播信息,就会传遍整个网络,并且对网络中的主机带来额外的负担。因此,在设计LAN时,需要注意如何才能有效地分割广播域。
广播域的分割与VLAN的必要性
分割广播域时,一般都必须使用到路由器。使用路由器后,可以以路由器上的网络接口(LAN
Interface)为单位分割广播域。
但是,通常情况下路由器上不会有太多的网络接口,其数目多在1~4个左右。随着宽带连接的普及,宽带路由器(或者叫IP共享器)变得较为常见,但是需要注意的是,它们上面虽然带着多个(一般为4个左右)连接LAN一侧的网络接口,但那实际上是路由器内置的交换机,并不能分割广播域。
况且使用路由器分割广播域的话,所能分割的个数完全取决于路由器的网络接口个数,使得用户无法自由地根据实际需要分割广播域。
与路由器相比,二层交换机一般带有多个网络接口。因此如果能使用它分割广播域,那么无疑运用上的灵活性会大大提高。
用于在二层交换机上分割广播域的技术,就是VLAN。通过利用VLAN,我们可以自由设计广播域的构成,提高网络设计的自由度。
实现VLAN的机制
在理解了“为什么需要VLAN”之后,接下来让我们来了解一下交换机是如何使用VLAN分割广播的首先,在一台未设置任何VLAN的二层交换机上,任何广播帧都会被转发给除接收端口外的所有其他端
口(Flooding)。例如,计算机A发送广播信息后,会被转发给端口2、3、4。
这时,如果在交换机上生成红、蓝两个VLAN;同时设置端口1、2属于红色VLAN、端口3、4属于蓝色VLAN。再从A发出广播帧的话,交换机就只会把它转发给同属于一个VLAN的其他端口——也就是同属于红色VLAN的端口2,不会再转发给属于蓝色VLAN的端口。同样,C发送广播信息时,只会被转发给其他属于蓝色VLAN的端口,不会被转发给属于红色VLAN的端口。
就这样,VLAN通过限制广播帧转发的范围分割了广播域。上图中为了便于说明,以红、蓝两色识别不同的VLAN,在实际使用中则是用“VLAN
ID”来区分的。
直观地描述VLAN
如果要更为直观地描述VLAN的话,我们可以把它理解为将一台交换机在逻辑上分割成了数台交换机。在一台交换机上生成红、蓝两个VLAN,也可以看作是将一台交换机换做一红一蓝两台虚拟的交换机。
在红、蓝两个VLAN之外生成新的VLAN时,可以想象成又添加了新的交换机。但是,VLAN生成的逻辑上的交换机是互不相通的。因此,在交换机上设置VLAN后,如果未做其他处理,VLAN间是无法通信的。
明明接在同一台交换机上,但却偏偏无法通信——这个事实也许让人难以接受。但它既是VLAN方便易用的特征,又是使VLAN令人难以理解的原因。
需要VLAN间通信时怎么办
那么,当我们需要在不同的VLAN间通信时又该如何是好呢?
请大家再次回忆一下:VLAN是广播域。而通常两个广播域之间由路由器连接,广播域之间来往的数据包都是由路由器中继的。因此,VLAN间的通信也需要路由器提供中继服务,这被称作“VLAN间路由”。
VLAN间路由,可以使用普通的路由器,也可以使用三层交换机。其中的具体内容,等有机会再细说吧。在这里希望大家先记住不同VLAN间互相通信时需要用到路由功能。
VLAN的访问链接
交换机的端口
交换机的端口,可以分为以下两种:
访问链接(Access Link)
汇聚链接(Trunk Link)
接下来就让我们来依次学习这两种不同端口的特征。这一讲,首先学习“访问链接”。
访问链接
访问链接,指的是“只属于一个VLAN,且仅向该VLAN转发数据帧”的端口。在大多数情况下,访问链接所连的是客户机。
通常设置VLAN的顺序是:
生成VLAN
设定访问链接(决定各端口属于哪一个VLAN)
设定访问链接的手法,可以是事先固定的、也可以是根据所连的计算机而动态改变设定。前者被称为“静态VLAN”、后者自然就是“动态VLAN”了。
静态VLAN
静态VLAN又被称为基于端口的VLAN(Port
Based VLAN)。顾名思义,就是明确指定各端口属于哪个VLAN的设定方法。
由于需要一个个端口地指定,因此当网络中的计算机数目超过一定数字(比如数百台)后,设定操作就会变得烦杂无比。并且,客户机每次变更所连端口,都必须同时更改该端口所属VLAN的设定——这显然不适合那些需要频繁改变拓补结构的网络。
动态VLAN
另一方面,动态VLAN则是根据每个端口所连的计算机,随时改变端口所属的VLAN。这就可以避免上述的更改设定之类的操作。动态VLAN可以大致分为3类:
基于MAC地址的VLAN(MAC
Based VLAN)
基于子网的VLAN(Subnet
Based VLAN)
基于用户的VLAN(User
Based VLAN)
其间的差异,主要在于根据OSI参照模型哪一层的信息决定端口所属的VLAN。
基于MAC地址的VLAN,就是通过查询并记录端口所连计算机上网卡的MAC地址来决定端口的所属。假定有一个MAC地址“A”被交换机设定为属于VLAN“10”,那么不论MAC地址为“A”的这台计算机连在交换机哪个端口,该端口都会被划分到VLAN10中去。计算机连在端口1时,端口1属于VLAN10;而计算机连在端口2时,则是端口2属于VLAN10。
由于是基于MAC地址决定所属VLAN的,因此可以理解为这是一种在OSI的第二层设定访问链接的办法。
但是,基于MAC地址的VLAN,在设定时必须调查所连接的所有计算机的MAC地址并加以登录。而且如果计算机交换了网卡,还是需要更改设定。
基于子网的VLAN,则是通过所连计算机的IP地址,来决定端口所属VLAN的。不像基于MAC地址的VLAN,即使计算机因为交换了网卡或是其他原因导致MAC地址改变,只要它的IP地址不变,就仍可以加入原先设定的VLAN。
因此,与基于MAC地址的VLAN相比,能够更为简便地改变网络结构。IP地址是OSI参照模型中第三层的信息,所以我们可以理解为基于子网的VLAN是一种在OSI的第三层设定访问链接的方法。
基于用户的VLAN,则是根据交换机各端口所连的计算机上当前登录的用户,来决定该端口属于哪个VLAN。这里的用户识别信息,一般是计算机操作系统登录的用户,比如可以是Windows域中使用的用户名。这些用户名信息,属于OSI第四层以上的信息。
总的来说,决定端口所属VLAN时利用的信息在OSI中的层面越高,就越适于构建灵活多变的网络。
使用VLAN具有以下优点:
1、控制广播风暴
一个VLAN就是一个逻辑广播域,通过对VLAN的创建,隔离了广播,缩小了广播范围,可以控制广播风暴的产生。
2、提高网络整体安全性
通过路由访问列表和MAC地址分配等VLAN划分原则,可以控制用户访问权限和逻辑网段大小,将不同用户群划分在不同VLAN,从而提高交换式网络的整体性能和安全性。
3、网络管理简单、直观
对于交换式以太网,如果对某些用户重新进行网段分配,需要网络管理员对网络系统的物理结构重新进行调整,甚至需要追加网络设备,增大网络管理的工作量。而对于采用VLAN技术的网络来说,一个VLAN可以根据部门职能、对象组或者应用将不同地理位置的网络用户划分为一个逻辑网段。在不改动网络物理连接的情况下可以任意地将工作站在工作组或子网之间移动。利用虚拟网络技术,大大减轻了网络管理和维护工作的负担,降低了网络维护费用。在一个交换网络中,VLAN提供了网段和机构的弹性组合机制。
=============================================================================
1.需要使用到vconfig软件。首先yum安装vconfig
代码如下:
yum install vconfig
2.查看核心是否提供VLAN 功能,執行
代码如下:
dmesg | grep -i 802
查看是否支持,如下图表示支持
代码如下:
[[email protected]]# dmesg | grep -i 802
802.1Q VLAN Support v1.8 Ben Greear <[email protected]>
3.检查「/proc/net/vlan」档案是否存在:
代码如下:
ls /proc/net/vlan
如果沒有提供VLAN 功能,「/proc/net/vlan」目錄是不存在的。
如果存在如下所示:
复制代码
代码如下:
[[email protected]]# ls /proc/net/vlan
config eth1.100 eth1.25
4.使用「m o d p ro b e 」模组命令载入「802.1q.o」模组,而且利用「lsmod」命令确认模組是否已经载入到核心內。
代码如下:
[[email protected]]# modprobe 8021q
[[email protected]]# lsmod | grep 8021q
8021q 25493 0
garp 7152 1 8021q
5.使用vconfig命令增加子接口:增加vlan为25和vlan为100的子接口
代码如下:
vconfig add eth1 25
vconfig add eth1 100
然后,利用ls 指令查看「/proc/net/vlan」目录下有何变化,发现多了一哥名为「eth1.25」的档案,而且可使用「ifconfig eth1.25」命令來确定VLAN 介面是否存在。
注意增加vlan,增加子接口时,首先确保eth1端口无ipadd。
6.增加好以后,利用cp命令复制接口的ip地址配置。
代码如下:
cp ifcfg-eth1 ifcfg-eth1.25
cp ifcfg-eth1 ifcfg-eth1.100
再vi修改ifcfg-eth1.25 ifcfg-eth1.100文件,设置IP地址等信息。
7.最后重启network服务。令配置生效。
==================================================
2.使用linux vconfig命令配置vlan
#vconfig add eth0 100
#vconfig add eth0 200
在eth0接口上配置两个VLAN
#vconfig set_flag eth0.100 1 1
#vconfig set_flag eth0.200 1 1
设置VLAN的REORDER_HDR参数,默认就行了。
可以使用cat /proc/net/vlan/eth0.100查看eth0.100参数
配置网络信息
#ifconfig eth0 0.0.0.0
#ifconfig eth0.100 192.168.100.50 netmask 255.255.255.0 up
#ifconfig eth0.200 192.168.200.50 netmask 255.255.255.0 up
删除VLAN命令
#vconfig rem eth0.100
#vconfig rem eth0.200
3.将VLAN信息写入配置文件
#echo "modprobe 8021q">>/etc/rc.local
开机加载8021q模块,或者使用echo "8021q">>/etc/modules
#cp /etc/network/interfaces /etc/network/interfaces.default
#vim /etc/network/interfaces
auto lo eth0
iface lo inet loopback
iface eth0.100 inet static
address 192.168.100.50
netmask 255.255.255.0
iface eth0.200 inet static
address 192.168.200.50
netmask 255.255.255.0
声明:
本文整理自网络:
http://www.jb51.net/LINUXjishu/287672.html
http://blog.csdn.net/wangwenwen/article/details/13629193