交换机:vlan

VLAN,中文翻译是虚拟局域网,从字面含义可以看出,VLAN就是将一个LAN分割为多个虚拟的LAN。LAN,也就是局域网,既可以是家里两台机器,也可以是公司的几百台机器,这里的LAN特指由路由器分割的网络,也就是广播域。广播域,指的是广播帧(目标MAC地址全部为1)所能传递到的范围,亦即能够直接通信的范围。严格地说,并不仅仅是广播帧,多播帧(Multicast Frame)和目标不明的单播帧(Unknown Unicast Frame)也能在同一个广播域中畅行无阻。所谓VLAN,其实就是将一个二层广播域分割为多个独立的广播域,那么为何要这么做呢?

   本来,二层交换机只能建立单一的广播域,但是单一广播域会影响到网络性能。请参考以下示意图:

 VLAN的定义与实现机制

   这是一个5个交换机连接大量电脑的网络。如果A需要和B通信,那么首先A需要知道B的MAC地址,这时A就会广播一个ARP请求,交换机1收到ARP请求后,由于这是一个广播报文,交换机1会将这个报文从各个口转发出去,也就是Flooding。这时交换机2到5收到ARP请求后,都从各个端口转发出去,最后所有的电脑都收到了这个ARP请求,而实际上只需要B收到ARP请求并回应即可。报文的转发示意图如下:

VLAN的定义与实现机制

   在网络中,类似的广播报文经常出现,我们常见的一些广播通信包括:ARP、RIP、DHCP、 NetBEUI等。因此,在网络设计中,分割广播域是非常重要。路由器在IP层可以很有效的分割广播域,而在二层,分割广播域的办法就是VLAN了。比如,在下图的交换机上,将端口1和2定为VLAN1,端口3和4定为
VLAN2,那么广播报文就只在自己的VLAN里转发,1的ARP请求只转发给2,从而有效的提高了网络性能。

VLAN的定义与实现机制

   VLAN包括静态VLAN和动态VLAN,所谓静态VLAN就是上述的将端口与VLAN绑定的方式;而动态VLAN则不固定绑定端口,而是根据端口连接的MAC、IP或用户来确定VLAN。VLAN的区分如下:

VLAN的定义与实现机制

   我们已经了解了什么是VLAN?那么VLAN是怎么实现的呢?

   我们已经知道,在一台没有设置VLAN的二层交换机上,所有的广播帧都会被Flooding;而在设置了VLAN的交换机上,交换机只会在与入口为同一个VLAN的端口上广播。如下图所示:

VLAN的定义与实现机制

   就这样,VLAN通过限制广播帧转发的范围分割了广播域。上图中为了便于说明,以红、蓝两色识别不同的VLAN,在实际使用中则是用“VLAN ID”来区分的。你也可以这样理解,VLAN在逻辑上将一个交换机分割为多台交换机,而且这几台交换机之间不做二层通信。

   到目前为止,我们都是研究在一台交换机上设置VLAN,那么如何建立一个跨交换机的VLAN呢?我们将在下一节TRUNK接口中介绍


我们已经了解什么是VLAN,已经在单台交换机上设置VLAN的方法和实现机制,而如果我们需要建立一个跨交换机,也就是多台交换机之间的一个VLAN的话,那么我们就需要用到TRUNK接口的概念了。

   二层交换接口分为两种:access接口和TRUNK接口。所谓access接口,指的是只属于一个VLAN,且仅向该VLAN转发数据帧的端口。在上一节介绍VLAN时举例的交换机接口都是属于access接口。而所谓TRUNK接口,指的是能够转发多个不同VLAN的通信的端口。为何我们需要TRUNK接口呢?可以先看一个例子,在下图中,需要将不同楼层的A和C放入同一个VLAN,该如何连接呢?

TRUNK接口的定义与实现机制

   假如没有TRUNK口,那么我们至少需要在交换机1和交换机2上各用两个接口连接,将这些接口分别设置在各自的VLAN中。如下图所示:

TRUNK接口的定义与实现机制

   很显然,这样设计的网络是非常麻烦的,而且需要给交换机增加投资以扩充端口。而如果我们采用TRUNK口,将两个VLAN都假如TRUNK口允许通过的VLAN中,那么网络就可以按照下图进行设计了。

TRUNK接口的定义与实现机制

   A发给C的报文到达交换机1时,交换机1会将报文从TRUNK口转发出去,交换机2收到报文后,需要判断出是红色VLAN的报文,并转发给C。因此在TRUNK口直接的报文需要添加VLAN标识以标示报文属于哪个VLAN。

   VLAN标识常用的协议有两种,包括IEEE 802.1Q和ISL。

      IEEE 802.1Q的协议格式如下:

TRUNK接口的定义与实现机制

    而ISL的协议格式如下:

TRUNK接口的定义与实现机制

     现在,我们已经了解了在交换机上VLAN的定义和实现机制,已经如何使用TRUNK接口来实现跨交换机的VLAN。那么我们已经知道VLAN之间是没有二层通信的,那么我们该如何实现VLAN之间的通信呢?我们将在下一节中讨论这个问题。



我们已经知道了VLAN之间没有二层通信,那么VLAN之间该如何通信呢?答案是通过路由。我们知道,LAN内的通信需要知道MAC地址,而在TCP/IP协议中,获取MAC的方式ARP请求。而ARP是广播报文,这就意味着,如果两个电脑不在一个广播域里,就无法解析MAC地址,也就无法直接通信,因此两个VLAN之间无法通过二层通信,只有通过路由来通信。那么VLAN间路由的具体过程是什么样的呢?在讲述过程之前,我们首先解决一个问题,那就是接口扩展性。

   采用VLAN间路由最直观的方式,就是每个VLAN提供一个路由接口,如下图:

VLAN间路由以及三层交换加速路由转发的原理

   可以看出,红色VLAN内部的报文可以走二层转发,而红色和蓝色VLAN通信的报文则要经过路由器,通过IP的方式来通信。但是这就遇到了和之前跨交换机VLAN交换类似的问题,接口扩展性不好,每个VLAN都需要增加一个接口,增加更多的投资。因此,在路由器上采用了子接口的概念。具体实现过程为:首先将用于连接路由器的交换机端口设为TRUNK口,而路由器上的端口也必须支持TRUNK协议。双方用于TRUNK链路的协议自然也必须相同。接着在路由器上定义对应各个VLAN子接口(Sub Interface)”。尽管实际与交换机连接的物理端口只有一个,但在理论上我们可以把它分割为多个虚拟端口。这样改进后的网络设计图如下所示:

VLAN间路由以及三层交换加速路由转发的原理

   同一个VLAN内部的通信,此处不再赘述,在交换机内部即可。这里描述一下两个VLAN之间的通信过程,请考虑一下下图A到C的通信过程。

VLAN间路由以及三层交换加速路由转发的原理

   计算机A从通信目标的IP地址(192.168.2.1)得出C与本机不属于同一个网段。因此会向设定的默认网关(Default GatewayGW)转发数据帧。在发送数据帧之前,需要先用ARP获取路由器的MAC地址。在得到路由器端口的MAC地址后,A会发送去往C的报文,但是MAC地址是路由器端口的地址,也就是报文①。

   交换机在端口1上收到①的数据帧后,检索MAC地址列表中与端口1同属一个VLAN的表项。由于TRUNK链路会被看作属于所有的VLAN,因此这时交换机的端口6也属于红色VLAN中。这样交换机就知道往路由器MAC发送数据帧,需要经过端口6转发。从端口6发送数据帧时,由于它是TRUNK链接,因此会被附加上红色VLAN识别信息,也就是报文②。

   路由器收到的数据帧后,确认其VLAN识别信息,由于它是属于红色VLAN的数据帧,因此交由负责红色VLAN的子接口接收。由于目标网络192.168.2.0/24是蓝色VLAN,,且该网络通过子接口与路由器直连,因此只要从负责蓝色VLAN的子接口转发就可以了。这时,数据帧的目标MAC地址被改写成计算机C的MAC地址;并且由于需要经过TRUNK链路转发,因此被附加了属于蓝色VLAN的识别信息。这就是报文③。

   交换机收到的数据帧后,根据VLAN标识信息从MAC地址列表中检索属于蓝色VLAN的表项。由于通信目标计算机C连接在端口3上、且端口3为普通的access链接,因此交换机会将数据帧除去VLAN识别信息后从端口3转发给计算机C,也就是报文④。

   至此,A就完成了和C的通信。在整个过程中,不同VLAN间的通信需要经过发送方——交换机——路由器——交换机——接收方的过程。

   在上述过程中,我们可以看到,这个过程不仅需要二层交换,也需要三层路由,而路由器基本上是软件处理,不像交换机大多是高速处理的硬件,因此这个过程往往会拖慢网络速度,逐渐成为网络转发中的瓶颈。由此,三层交换机应运而生。

   在前面的文章里,我们已经大致了解了三层交换与路由器之间的区别。三层交换机实际上是一个带有路由模块的交换机,如果不加以改进,VLAN间的交换实际上和刚才描述的过程完全一样,只是将所有的步骤移到了一个交换机内部实现,如下图所示。

VLAN间路由以及三层交换加速路由转发的原理

   因此,VLAN间的通信还是要遵循发送方交换模块路由模块交换模块接收方的模式,并没有很大的改进。因此三层交换机对整个过程做了改进,加速VLAN间的通信。

   在实际的网络传输中,五元组相同的报文实际上传输的过程也完全一致(五元组:源目IP、源目端口和协议,我们称之为一条数据流)。因此只要知道一条数据流的第一个报文从哪个端口转发,那么后续所有的报文也从这个端口转发即可。如下图所示。VLAN间路由以及三层交换加速路由转发的原理

   因此,三层交换机的加速办法就是:在第一个报文的通信完成后,将这条数据流的信息保存在缓存中,后续的报文也从相同的端口转发出去,也不需要经过路由模块了。转发过程如下图所示。

VLAN间路由以及三层交换加速路由转发的原理

   通过在交换机上缓存路由结果,实现了以缆线速度(Wired Speed)接收发送方传输来数据的数据、并且能够全速路由、转发给接收方。当然加速的原理大致如此,实际加速的办法各个厂商会有不同的实现方式。

   讲到这里,你也许会有疑问,既然三层交换可以完成路由的工作,而且速度更快,那么为什么还需要路由器呢?

   关于路由器的必要性,主要体现在以下三个方面:

1、用于与WAN连接

  三层交换机终究是“交换机”。也就是说,绝大多数机型只配有LAN(以太网)接口。在少数高端交换机上也有用于连接WAN的串行接口或是ATM接口,但在大多数情况下,连接WAN还是需要用到路由器。

2、保证网络安全

  在三层交换机上,通过数据包过滤也能确保一定程度的网络安全。但是使用路由器所提供的各种网络安全功能,用户可以构建更为安全可靠的网络。路由器提供的网络安全功能中,除了最基本的数据包过滤功能外,还能基于IPSec构建VPN(Virtual Private Network)、利用RADIUS进行用户认证等等。

3、支持除TCP/IP以外的网络架构

  尽管TCP/IP已经成为当前网络协议架构的主流,但还有不少网络利用Novell Netware下的IPX/SPX或Macintosh下的Appletalk等网络协议。三层交换机中,除了部分高端机型外基本上还只支持TCP/IP。因此,在需要使用除TCP/IP之外其他网络协议的环境下,路由器还是必不可少的。

   下图就是一个交换机和路由器配合构建LAN的实例。

VLAN间路由以及三层交换加速路由转发的原理

   在这个例子中,我们利用在各楼层配置的二层交换机定义VLAN,连接TCP/IP客户计算机。各楼层间的VLAN间通信,利用三层交换机的高速路由加以实现。如果网络环境要求高可靠性,还可以考虑冗余配置三层交换机。

  与WAN的连接,则通过带有各种网络接口的路由器进行。并且,通过路由器的数据包过滤和VPN等功能实现网络安全。此外,使用路由器还能支持Novell Netware等TCP/IP之外的网络。

  只有在充分掌握了二层、三层交换机以及传统路由器的基础上,才能做到物尽其用,构筑出高效率、高性价比的网络。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值