3.2 基础设施分段
在开始深入研究WAN模块(参见图1-2)之前,还需要在构建光纤模块时讨论一个问题:基础设施分段。基础设施分段是随着虚拟DC扩展至WAN而产生的,它与网络虚拟化的下列功能相关:
·确保网络传输仍然是在第3层被划分。
·网络传输是在相互独立的第3层分区上进行。
·在访问和服务的边缘,将第3层孤立的路径关联至VLAN。
换句话说,基础设施分段有助于实现一个多租户形式的基础设施,同时又能在虚拟共享的第3层基础设施上实现充分的隔离性。它是实现云基础设施即服务的重要组成部分。
第2层和第3层的分段
第一级基础设施分段利用VLAN从汇聚层开始,VLAN通常是基于网络第2层,考虑到可扩展性的需要,通常会在汇聚和访问层交换端口实现VLAN,参见图3-7的说明。在实际工作中,由VLAN提供的第2层分段也可以使用FCoE技术扩展至光纤通道虚拟存储局域网络(FC VSAN)(为了简单,在图3-7中未涉及这点)。关于FCoE的更多细节请参考2.6.3节。
在核心层与汇聚层使用的是第3层分段,而非端到端的VLAN,因为这类VLAN并不如它们在端到端广播领域那样流行,虚拟路由与转发(Virtual Routing and Forwarding,VRF)技术比较适合该层。从第3层角度看,VRF技术与VLAN的界限比较模糊。它们将一个路由“划分”成很多个路由和传送的实例,每个VRF都与某个特定接口(物理及/或逻辑)绑定,同一个接口不能在同一时刻连至同个VRF,也就是说,一个接口只能与一个VRF连接。
图3-7描述了一个多租户场景,其中租户A和租户B分别采用L2分段,被划分在VLAN-A和VLAN-B的汇聚层及接入层交换机中,VLAN-A和VLAN-B间通信通过802.1q trunk在核心和汇聚层交换机间实现连接。路由接口一般是核心层和汇聚层上的交换虚接口(Switch Virtual Interface,SVI),根据L3层分段被分配给VRF-A和VRF-B,如果能同时支持多个VRF,则是我们所熟悉的基于VRF的组播(multi-VRF)或多VRF客户边缘(VRF-lite),这样通过L2和L3层的划分,租户A和租户B实现了彼此间完全独立。L2和L3层的分段可以同样被“映射”到虚拟设备上下文中,以支持诸如防火墙以及SLB这样的智能网络设备的多租户模式。
图 3-7 L2和L3层分段
说明:L3层的分段即俗称的网络虚拟化。
L3控制平面虚拟化:VRF方法
VRF到底是什么呢?简短回答即为L3控制平面虚拟化。其主要目的是在L3层实现闭合用户群(Closed User Group,CUG)特征。换句话说,虚拟专用网络(Virtual Private Network,VPN)或者虚拟网络(Virtual Network,VN)是控制平面虚拟化过程的一部分,这些虚拟网络之间是完全被划分开并相互隔离的。可以通过创建一个独立的控制转发实例或者VRF实例,在VN之间传播路由信息,为每个VN建立一个单独的IP路由空间。鉴于multi-VRF实例可以与同样的物理路由(或者是L3层交换机)单独共存,不同的VN可以使用相同的或重叠的IP地址空间而不会引发冲突。
当L3层设备实现了控制平面虚拟化后,不同设备的VRF实例必须连接在一起才能组建VN,理想情况下每一个VN都将使用单独的物理链路,但实际上这种做法不但效率低、成本高,同时也会带来可扩展性问题。基于此就必须实施不同VRF实例间数据路径的虚拟化,使得同一VN内的VRF实例间能够相互连通。如果希望虚拟后的L3层设备可以彼此直接连接,那么就必须进行链路或回路虚拟化。当L3层虚拟设备是多跳连接时,还需要一个隧道机制。有关数据路径虚拟化的更多内容请参见后面的“数据路径虚拟化:逐跳寻径或端到端寻径”一节。
图3-8左边部分是两个VRF实例间路由原理的一个逻辑示意:VRF黄和VRF蓝,其中子接口f1/0.101、f1/0.102和f1/0.103绑定了VRF黄表,子接口f1/1.201、f1/1.202和f1/1.203与VRF蓝表绑定。两者之间映射的接口地址是互斥的,例如f1/0.101已经与VRF黄表绑定,就不能再分配给VRF蓝表,同样,f1/1.201已经与VRF蓝表绑定,就不能再分配给VRF黄表。
图 3-8 multi-VRF示例
图3-8右边是对图3-7中提到的multi-VRF中核心交换器的一个放大示意,在这个案例中已经实现了802.1q链路汇聚,因此每一个VRF都使用了一个SVI,代码清单3.1中的代码展示了某个L3层交换机上的multi-VRF配置模板。
代码清单3.1 L3交换机的multi-VRF配置模板
核心层交换机同时拥有上行和下行802.1q trunk,汇聚层上行使用802.1q trunk,下行使用接入链路。两层上的multi-VRF的配置差不多,不同之处是汇聚层配置multi-VRF时,需要同时完成VLAN到VRF的映射。按照3.1的配置方案,被分配给VLAN 100的汇聚层访问端口将被映射到VRF-A,而被分配给VLAN 200的汇聚层访问端口将被映射到VRF-B。
L3层设备需支持多种控制及转发实例,因此需要具备VRF感知能力,即L3协议要与IP服务相融合。路由协议是最基础的一步,因为要通过它们在VN间传递包。为了实现每一个VRF的路由功能,需要对一些现有路由协议进行扩充,包括距离矢量路由协议(Routing Information Protocol version 2,RIPv2)版本2、开放式最短路径优先(Open Shortest Path First,OSPF)协议以及边界网关(Border Gateway Protocol,BGP)协议等。有关这些VRF感知路由协议的细节将在本书稍后章节予以说明。
数据路径虚拟化——逐跳寻径或端到端寻径
L3控制平面虚拟化只是网络虚拟化的一部分,L3控制平面虚拟化支持的分段需要被扩展至数据路径级别。从根本上说,数据路径虚拟化在一个共享的物理拓扑结构上为不同的VN构造了相互独立的逻辑路径(或者称为路径隔离),实现方式通常分为两种:逐跳寻径(Hop by Hop,HBE)或端到端寻径(End to End,E2E)。
最简单的L3 HBE数据路径虚拟化是借助图3-7提及的802.1链路汇聚,这种流行方法是在每一级L3节点,包括所有的核心层和汇聚层,实现multi-VRF,这些交换机上正确的SVI必须被分配到相应的VRF中,以获得良好的数据路径隔离效果。尽管这一方法在系统扩展及配置复杂性方面存在一定局限,但绝大多数企业的DC网络都还是采用该种隔离方案。
说明:如果打开trunk模式,802.1q trunk也可以当成L2层端口通道使用,如果使用了L3层端口,那么VRF的接口一般会选端口通道接口而非SVI。
图3-7给出的数据路径虚拟化设计配置可以被如图3-9所示的L3隧道临时取代。为了降低核心层交换机的配置负担,在图3-9中删除了交换机的multi-VRF配置。图3-9使用端到端方法,汇聚层交换机之间的通用路由协议封装(Generic Routing Encapsulation,GRE),完成L3层数据路径虚拟化,这种路径虚拟化是隧道多跳分离的,这样一来只需在汇聚层交换机部署multi-VRF,对核心层交换机则是透明的。
鉴于GRE隧道在汇聚层交换机之间是端到端形式,实际的multi-VRF配置则有点像被从汇聚层交换机一个“推到”另一个一样,也不再需要核心层交换机参与。但是对核心层交换机配置的简化却将引起另外的汇聚层交换机与GRE隧道间可扩展性问题。图3-9解释了两个分别服务VRF-A和VRF-B的隧道互相穿越的场景,从图中可知,当搭建一个新的VRF时,需要增加相应比例的隧道。由于隧道本身是点到点连接,因此将自然而然地产生可扩展性问题,这个问题在系统的设计要求具备更好的弹性或者要效仿LAN时会更加明显。
图 3-9 端到端数据路径虚拟化样例