1、什么是LAN
LAN表示Local Area Network,本地局域网。一个LAN表示一个广播域,含义是:LAN中的所有成员都会收到任意一个成员发出的广播包。如图1所示,所有的交换机的端口都在同一个广播域里面,所以当一台主机发出广播时,其他主机都可以收到这个广播。
图1 所有的主机均在同一个广播域里
但是这样的设置存在一个弊端,那就是会严重影响网络的可扩展性。随着企业的发展及信息技术的普及,当网络上的主机越来越多时,广播也就越来越多,交换机和主机都要拿出更多的开销处理这些广播,相应地,用户就会感觉网络的速度越来越慢。
于是,我们可以采用如下策略将广播域进行隔离,如图2所示,我们使用了路由器分隔开以太网络,这样就形成了两个子网,即LAN A和LAN B。两个LAN之间广播是不能互相传递的,每一个LAN都有一定的可扩展性,当它扩展到一定程度,我们可以再使用路由器将其再次分开。另外,使用路由器分隔LAN还有一个优点,就是一旦发生广播风暴,一个LAN里的广播风暴不会影响到另一个LAN。我们就利用了路由器不允许广播通过这个特性解决了网络里的广播问题。
图2 使用LAN隔绝广播
当使用了路由器进行LAN的划分后,由于路由器的两个接口不能同时在一个IP网段里出现,所以要把一个IP网段分成若干子网,这样LAN A与LAN B就不在一个IP网段上了。LAN A和LAN B各自的内部通信还是可以畅通无阻地进行交换的,但是LAN A与LAN B之间的通信,就必须经过路由操作实现。企业在规划LAN的时候,由于LAN的这个特性,经常把一个部门组建成一个LAN,因为可以在路由器上配置策略,使某个部门的资源不能被其他部门访问,或者只能被某个部门访问。
如此看来应该可以很好地解决广播隔离的问题了,但是,新的问题又出现了,在好多大型企业,往往好多项目都是由好几个不同的部门人员共同完成,而且人员还会出现一些变动等情况,此时,传统的LAN架构的弊端就慢慢呈现出来了,一个团队的人员如果调动到另一个团队,他的主机需要从一个LAN拆除,再添加进另一个LAN,是非常麻烦的事情,而且还要在用户的主机上重新设置IP地址、子网掩码、默认网关等信息,同样不方便。所以,我们引入了VLAN的概念。
2、什么是VLAN
上文提到了我们可以使用一种新的技术VLAN来解决LAN架构下出现的弊端,那么什么是VLAN呢?VLAN(Virtual Local Area Network)即虚拟局域网,是将一个物理的LAN在逻辑上划分成多个广播域的通信技术,由802.1Q标准所定义。每个VLAN是一个广播域,VLAN内的主机间可以直接通信,而VLAN间则不能直接互通。这样,广播报文就被限制在一个VLAN内。虚拟局域网(VLAN)是在局域网(LAN)的逻辑上划分成多个广播域,每一个广播域就是一个VLAN。图3为交换机划分虚拟局域网。交换机把一个广播域划分成了3个广播域,物理上这些设备在一个交换机上,但是逻辑上已经分别划分到三个交换机上,所以会有三个局域网(虚拟局域网),三个广播域。图中为了便于说明,以红绿蓝三色区别了不同的VLAN,而在实际使用中,则是用VLAN ID来进行区分的,即在802.1Q标准所定义的以太网帧格式在基于传统以太网帧格式中添加了描述VLAN信息的字段(即VID),帧格式如图4所示:
图3 交换机划分虚拟局域网
图4 802.1Q 帧格式示意图
802.1Q标准的以太网帧格式增加了802.1Q字段,该字段包含了Type、PRI、CFI和VID 4个部分,各个部分的含义如下:
- TPID:长度为2bytes,表示帧类型,802.1Q tag帧中Type字段取固定值0x8100,如果不支持802.1Q的设备收到802.1Q帧,则将其丢弃。
- PRI:priority字段,长度为3 bit,表示以太网帧的优先级,取值范围是0~7,数值越大,优先级越高。当交换机/路由器发生传输拥塞时,优先发送优先级高的数据帧。
- CFI:Canonical Format Indicator,长度为1bit,表示MAC地址是否是经典格式。CFI为0说明是经典格式,CFI为1表示为非经典格式。该字段用于区分以太网帧、FDDI帧和令牌环网帧,在以太网帧中,CFI取值为0。
- VID:VLAN ID,长度为12 bit,取值范围是0~4095,其中0和4095是保留值,不能给用户使用。这里需要关注的是VID字段,该字段唯一标识了一个VLAN,12bit长度的VID可以表示4096个不同的值,除去两个保留值,一个以太网最多可以划分为4094个VLAN。
交换机划分VLAN说明,VLAN1这个虚拟局域网编号,一般工作于管理组,所以普通VLAN都是从2开始编号,默认情况下,所有虚拟局域网都隶属于VALN1。在上图中不同的VLAN相互间是不能通讯的。为了解决这个问题,引进了三层交换机(或路由器)等OSI的三层设备实现跨网段通信。
小贴士:三层交换机与路由器有何区别?
在第三层交换技术出现之前,几乎没有必要将路由功能器件和路由器区别开来,他们完全是相同的:提供路由功能正在路由器的工作,
然而,现在第三层交换机完全能够执行传统路由器的大多数功能。交换机和路由器是性能和功能的矛盾体。
交换机交换速度快,但控制功能弱,路由器控制性能强,但报文转发速度慢。
解决这个矛盾的最新技术是三层交换,既有交换机线速转发报文能力,又有路由器良好的控制功能。
3、VLAN的访问链接
交换机的端口,可以分为以下两种:访问链接(Access Link)和汇聚链接(Trunk Link)
3.1 访问链接(Access Link)
访问链接,指的是“只属于一个VLAN,且仅向该VLAN转发数据帧”的端口。在大多数情况下,访问链接所连的是客户机。设定访问链接的手法,可以是事先固定的、也可以是根据所连的计算机而动态改变设定。前者被称为“静态VLAN”、后者自然就是“动态VLAN”了。
3.1.1 静态VLAN
静态VLAN又被称为基于端口的VLAN。是为了明确指定哪个Port属于哪个VLAN ID。在VLAN管理员最初配置交换机Port和VLANID的对应关系时,就已经固定了这种对应关系,即一个Port只能对应一个VLAN ID,之后无法进行更改,除非管理员再重新配置。
当一台设备接到这个Port上的时候,怎么判断该主机的VLAN ID与Port对应呢,这里是根据IP配置决定的,我们知道每个VLAN都有一个子网号,并对应着哪些Port,如果设备要求的IP地址和该Port对应的VLAN的子网号不匹配,则连接失败,该设备将无法正常通信。所以除了连接到正确的Port外,也必须给设备分配属于该VLAN网络段的IP地址,这样才能加入到该VLAN中。
由于需要一个个端口地指定,因此当网络中的计算机数目超过一定数字(比如数百台)后,设定操作就会变得烦杂无比。并且,客户机每次变更所连端口,都必须同时更改该端口所属VLAN的设定——这显然不适合那些需要频繁改变拓补结构的网络。
3.1.2 动态VLAN
动态VLAN则是根据每个端口所连的计算机,随时改变端口所属的VLAN。这就可以避免上述的更改设定之类的操作。动态VLAN可以大致分为3类:
(1)基于MAC的VLAN
基于MAC地址的VLAN,就是通过查询并记录端口所连的计算机网卡的MAC地址来决定端口的所属。假定有一个MAC地址“A”被交换机设定为属于VLAN10,那么不论MAC地址为“A”的这台计算机连在交换机哪个端口,该端口都会被划分到VLAN10中去。计算机连在端口1时,端口1属于VLAN10;而计算机连在端口2时,则是端口2属于VLAN10。
基于MAC地址的VLAN,在设定时必须调查所连接的所有计算机的MAC地址并加以登录。而且如果计算机交换了网卡,还是需要更改设定。
(2)基于IP的VLAN
基于子网的VLAN,则是通过所连计算机的IP地址,来决定端口所属VLAN的。不像基于MAC地址的VLAN,即使计算机因为交换了网卡或是其他原因导致MAC地址改变,只要它的IP地址不变,就仍可以加入原先设定的VLAN。
因此,与基于MAC地址的VLAN相比,能够更为简便地改变网络结构。IP地址是OSI参照模型中第三层的信息,所以我们可以理解为基于子网的VLAN是一种在OSI的第三层设定访问链接的方法。
(3)基于用户的VLAN
基于用户的VLAN,则是根据交换机各端口所连的计算机上当前登录的用户,来决定该端口属于哪个VLAN。这里的用户识别信息,一般是计算机操作系统登录的用户,比如可以是Windows域中使用的用户名。这些用户名信息,属于OSI第四层以上的信息。
3.2 汇聚链接(Trunk Link)
汇聚链接(Trunk Link)指的是能够转发多个不同VLAN的通信的端口。汇聚链路上流通的数据帧,都被附加了用于识别分属于哪个VLAN的特殊信息。下面来看看汇聚链接是如何实现跨交换机间的VLAN的。
如图5所示,当A发送的数据帧从交换机1经过汇聚链路到达交换机2时,在数据帧上附加了表示属于红色VLAN的标记。交换机2收到数据帧后,经过检查VLAN标识发现这个数据帧是属于红色VLAN的,因此去除标记后根据需要将复原的数据帧只转发给其他属于红色VLAN的端口。这时的转送,是指经过确认目标MAC地址并与MAC地址列表比对后只转发给目标MAC地址所连的端口。
图5 汇聚链路信息转发示意图
汇聚链路上流通着多个VLAN的数据,自然负载较重。因此,在设定汇聚链接时,有一个前提就是必须支持100Mbps以上的传输速度。默认条件下,汇聚链接会转发交换机上存在的所有VLAN的数据。换一个角度看,可以认为汇聚链接(端口)同时属于交换机上所有的VLAN。由于实际应用中很可能并不需要转发所有VLAN的数据,因此为了减轻交换机的负载、也为了减少对带宽的浪费,我们可以通过用户设定限制能够经由汇聚链路互联的VLAN。
4 什么是VXLAN
在介绍VXLAN之前,有必要先说明为何需要这个东西,前文已经有说明,VLAN技术的缺陷是VLAN header预留的长度只有12bit,故最多只能支持4096个子网的划分,而今云计算发展迅猛,而这些子网划分数量显然无法满足云计算大规模场景下主机数量。而VXLAN则可以支持更多的子网数量。那究竟什么是VXLAN呢,VXLAN(Virtual eXtensible Local Area Network,虚拟扩展局域网),是由IETF定义的NVO3(Network Virtualization over Layer 3)标准技术之一,是对传统VLAN协议的一种扩展。其本质上是一种隧道技术,在源网络设备与目的网络设备之间的IP网络上,建立一条逻辑隧道,将用户侧报文经过特定的封装后通过这条隧道转发。从用户的角度来看,接入网络的服务器就像是连接到了一个虚拟的二层交换机的不同端口上,效果图可见图6(可把蓝色虚框表示的数据中心VXLAN网络看成一个二层虚拟交换机),可以方便地通信。
图6 VXLAN通信效果图
总体而言VXLAN主要解决以下几个问题:
- 当前VXLAN的报文header有24bit,可以支持2^24个子网,并通过VNI(virtual network identifier)区分不同子网,相当于VLAN ID。
- 多租网络隔离,越来越多的数据中心,尤其是公有云服务,需要提供多租户的功能,不同用户之间需要独立的IP和MAC地址,如何保证这个功能的扩展性和正确性是待解决的问题。
- 云计算业务对业务灵活性要求很高,虚拟机可能会大规模迁徙,保证网络一直可用,也就是大二层的概念。解决这个问题同时保证二层的广播域不会过分扩大,这也是云计算网络的要求。
4.1 VXLAN原理
VXLAN隧道网络相比改造传统的二层或三层网络,对原有的网络架构影响较小。隧道网络不需要原来的网络做任何的修改,可在原来的网络基础上架设一层新的网络。VXLAN创建在原来的IP网络上,只要是三层网络可达(能够通过IP互相通信)的网络就能部署VXLAN。在VXLAN网络的每一个断点上都有一个VTEP设备,负责VXLAN协议报文的封包和解包,也就是在虚拟报文上封装VTEP通信的报文头部。物理网络上可以创建多个VXLAN网络,可将这些VXLAN网络看作一个隧道,不同节点上的虚拟机/容器能够通过隧道直连。通过VNI标识不同的VXLAN网络,使不同的VXLAN可以互相隔离。
4.2 VXLAN的几个重要概念
- VTEP(VXLAN Tunnel Endpoints,VXLAN 隧道端点):VXLAN 网络的边缘设备,用来进行 VXLAN 报文的处理(封包和解包)。VTEP 可以是网络设备(比如交换机),也可以是一台机器(比如虚拟化集群中的宿主机)。
- VNI(VXLAN Network Identifier,VXLAN 网络标识符):VNI 是每个 VXLAN 段的标识,是个24位整数,一共有2^24=16777216,一般每个VNI对应一个租户,也就是说使用VXLAN搭建的公有云可以理论上可以支撑千万级别的租户。
- Tunnel(VXLAN 隧道): 隧道是一个逻辑上的概念,在VXLAN模型中并没有具体的物理实体向对应。隧道可以看作是一种虚拟通道,VXLAN通信双方认为自己是在直接通信,并不知道底层网络的存在。从整体来说,每个VXLAN网络像是为通信的虚拟机搭建了一个单独的通信通道,也就是隧道。
5 总结
总的来讲,VLAN:虚拟局域网;VXLAN意为虚拟可拓展局域网。使用上的区别VXLAN是一种overlay网络,不能独立存在,必须依赖underlay网络,而在构建underlay网络时,还是需要借助VLAN。VXLAN的优势,都是在大规模环境下,如果数据中心的规模,不论虚机还是物理的,就几十上百台的情况,那直接用VLAN也可以了,没必要上VXLAN。VXLAN协议将Ethernet帧封装在UDP内,再加上8个字节的VXLAN header,用来标识不同的二层网络。
小贴士:Underlay网络 VS Overlay网络
Underlay网络是由各类物理设备构成,通过使用路由协议保证其设备之间的IP连通性的承载网络。Underlay网络是Overlay网络的底层物理基础,可以是由多个类型设备互联而成的物理网络,负责网络之间的数据包传输。Underlay网络可以是二层也可以是三层网络。其中二层网络通常应用于以太网,通过VLAN进行划分。三层网络的典型应用就是互联网,其在同一个自治域使用OSPF、IS-IS等协议进行路由控制,在各个自治域之间则采用BGP等协议进行路由传递与互联。随着技术的进步,也出现了使用MPLS这种介于二三层的WAN技术搭建的Underlay网络。
Overlay网络是通过网络虚拟化技术,在同一张Underlay网络上构建出的一张或者多张虚拟的逻辑网络。不同的Overlay网络虽然共享Underlay网络中的设备和线路,但是Overlay网络中的业务与Underlay网络中的物理组网和互联技术相互解耦。Overlay网络的多实例化,既可以服务于同一租户的不同业务(如多个部门),也可以服务于不同租户,是SD-WAN以及数据中心等解决方案使用的核心组网技术。