Linux实现的IEEE 802.1Q VLAN

第一部分:VLAN的核心概念说起IEEE 802.1q,都知道是VLAN,说起VLAN,基本上也没有盲区,网络基础。然而说到配置,基本所有人都能顺口溜一样说出Cisco或者H3C设备的配置命令,对于Linux的VLAN配置却存在大量的疑问。这些疑问之所以存在我觉得有两点原因:1.对VLAN的本质还是没有理解。不管你的Cisco/H3C命令敲得再熟练,如果看不懂Linux的vconfig,那么也将无法掩饰你对概念理解的浅显;2.对Linux实现虚拟网络设备风格不熟悉

可能你已经十分理解802.1q了,也许还看过了IEEE的文档,然而却对Linux的Bridge,tap,bond等虚拟设备不是很理解,那么也将无法顺利配置VLAN。

对于VLAN概念的理解,有几点要强调:1.VLAN分离了广播域;2.单独的一个VLAN模拟了一个常规的交换以太网,因此VLAN将一个物理交换机分割成了一个或多个逻辑交换机;3.不同VLAN之间通信需要三层参与;4.当多台交换机级联时,VLAN通过VID来识别,该ID插入到标准的以太帧中,被称作tag;5.大多数的tag都不是端到端的,一般在上行路上第一个VLAN交换机打tag,下行链路的最后一个VLAN交换机去除tag;6.只有在一个数据帧不打tag就不能区分属于哪个VLAN时才会打上tag,能去掉时尽早要去掉tag;7.最终,IEEE 802.1q解决了VLAN的tag问题。除了IEEE 802.1q,其余的都是和实现相关的,虽然Cisco和H3C的实现很类似,Linux可以和它们有大不同。关键看最后3点,也就是3,4,5。这是VLAN最难理解的部分,不过一旦理解了,VLAN也就不剩下什么了。为了使得叙述上以及配置上更加的方便,Cisco以及其他的厂商定义了很多的细节,而这些细节在IEEE 802.1q标准中并没有被定义,这些细节包括但不局限于以下几点:1.每一个VLAN交换机端口需要绑定一个VLAN id;2.每一个VLAN交换机端口处于下面三类中的一类:access,trunk,hybrid。2.1.access端口:从此类端口收到的数据帧是不打tag的,从此类端口发出的数据帧是不打tag的;2.2.trunck端口:从此类端口收到的数据帧打着tag,从此类端口发出的数据帧需要打tag(不考虑缺省VLAN的情况);2.3.hybrid端口:略我们实则没有必要去深究Cisco/H3C的命令以及到底那三类端口类型有何区别,之所以有三类端口类型完全是为了将VLAN的概念(最终的IEEE 802.1q标准)很方便的用起来。说白了,,trunk端口的存在是因为不得已,因为有属于多个VLAN的数据帧要通过单一的物理链路,不打tag是无法区分各自属于哪个VLAN的,于是就有了IEEE 802.1q这个标准,定义了一个tag插入到以太帧中,为了使这个理论性的东西被使用起来,厂商便定义了一系列的概念性的东西,比如和tag相关的链路就是trunk链路之类。 于是乎,我们可以完全抛开任何的配置命令,抛开任何厂商定义的东西,完全按照IEEE 802.1q标准以及我们的需求来理解VLAN,这样下来之后,你绝对可以在Linux上完美实现任何VLAN配置了。首先我们定义一下我们的需求以及满足该需求的网络拓扑,关键看如何接线。1.情况一.同一VLAN内部通信1.1.同一交换机同一VLAN的不同端口进行通信

1.2.不同交换机的不同端口进行通信

2.情况二.不同VLAN之间通信2.1.同一交换机不同VLAN之间进行通信

有时不但是必要的,而且是很有必要的。

Linux实现的IEEE 802.1Q VLAN

相关文章:

你感兴趣的文章:

标签云: