作者: Stan Peng,微软云计算架构师

本文我们分 2部分来说Azure网络。

  • Azure网络总体架构和diagnostic机制
  • Azure网络实现细则和data flow

首先Azure网络的总体架构:

多层 CLOS 矩阵。

1

和最近刚出的下一代数据中心网络报告中的下一代数据中心结构大致相同:

2

虚拟交换机,网络加速卡, leaf/spine节点,跨数据中心互联。大家该有的元素,一样不缺。

在这样大规模的网络环境下,其实我们的管理也碰到过许多的问题。比如超大量的路径, ASICS,交换机测试要求。“灰色失败”,追寻99.995% latency问题。

Azure 的解决之道是如何呢?

我们开发了一整套监控和管理应用来控制管理整套网络,搜索可能存在的问题和剔出已经失败的硬件。保证整个网络处在目标状态:

3

目前 A zure Cloud Switch 已经开源,可以参考 ACS 介绍文章

Fault mitigation 机制,根据 link switch 情况,自动剔除和修复 fabric

4

Azure的物理机延迟监控应用,可以测量DC/cluster之间的latency情况,报告或生成对应方案。

5

如之前提到的报告所说, SDN/ 网络的整体分析和大数据处理也是非常重要的一点。在 Azure上,我们使用Azure storage analysis 服务来快速找到问题原因:

6

这样一整套的服务和应用措施,就是 Azure网络的管理系统亦就是Azure Cloud Switch OS +DC Networking monitoring/manager.

说完整体,我们再来说说实现细节。

基于为了把事情说的简单明了,我决定放弃一部分技术细节。说说整体的 flow

A zure Network 就必须说一个东西, VFP 目前在 Azurehyper-v 网络上,我们有2个标准,即

Hyper-V Network Virtualization HNV1 HNV2 HNV2 就是目前 2016 以及 Azure网络所使用的技术,HNV2使用的了Azure virtual filtering (VFP) 来与hyper-v switch交互。他们构建起了整个SDN栈。所有创建的VNET的规则,是通过network controller来管理host agent,完成隔离交互。

换句话说,每个虚拟网络都存在 1或多个虚拟子网。一个虚拟网络下自主隔离了里面的VM,让他们只能在这个虚拟网络下和别的VM进行交流。在传统情景下,这种隔离是通过VLANIP地址802.1q tag/VLAN tag来分离的,但在HNV模式下,我们使用NVGRE或者VXLAN来加密网络,创建overlay 网络来交互。如之前云舒大大所说,现在市面上大多都是通过这样实现的。

另外,每个虚拟网络还有一个独立 routing domain id(RDID) 在主机上,这个 ID map Azure Resource ID ,帮助 A zure Network Controller 来识别网络。这部分资源会被识别成 URI

举个例子:

在这个图里,客户的 VNET各有各的 RDID ,互相独立,不存在互相能交流的情况。除非有 peering 等后期配置。

7

这里在来演示一下 VFP hyper-v vm switch 中, VFP 起到了一个 virtual switch 的作用。他能做到 ACL, metering, security等配置。做到VIP-DIP的转换,(比如客户的VIP是如何mapping到我们数据中心里的IP地址的)。

7 8

说个具体到数据中心内部的 flow:

比如,客户目前要发一个 packet到虚拟机vm1 10.1.1.2。 过程是如何的呢? 这里先跳过一下我们SLB的流程,我们看看VFPNetwork controller是怎么做的。

  • 首先,我们的network controller通过解析,了解到客户需求的VNET的对应RDID,找到了那个唯一独立的VNET,并把包传给VFP
  • VNET在解包过程后,把包分发给VFP里的LB NAT,NAT在了解到SNAT地址后,转换并找到数据中心内的物理IP地址
  • 检查ACL,如果通过就放行到具体的虚拟机实例中

9

这样,就是一个完整的 VNETVMdata flow。也是我们Azure network的虚拟化工作原理。