简介

我们已经在上一篇文章中初步介绍过 AWS VPC: 简而言之,一个 VPC 相当于一个软件定义的网络,在 VPC 下你可以创建多个 Subnet 实例,一个 Subnet 从功能上来说有一点点接近于一个软件定义的路由器或者三层交换机,也就是说你可以给它配置路由表,并且它会按照用户期望的、指定的方式把 IP 分组转发到下一个路由节点。

在默认情况下这个”路由器“并不支持 IP 多播,也就是说你无法给该路由器发送一个多播 IP 分组然后让路由器把它转给多个接收者,但是我们可以通过在 AWS VPC 中创建 Transit gateway 实例来在 VPC 中实现多播支持,你可以把一个 Transit gateway 理解为支持多播功能的路由器。

VXLAN 全称是 Virtual extensible Local Area Network, 是基于 UDP 和多播技术的一种网络隧道技术,它允许网络管理员在两个 IP 互联但是 Ethernet segments 不同的网络之间建立隧道(隧道端点,VTEP)来组建虚拟局域网,在这个由 VTEP 建立的虚拟局域网中,这些不同子网的机器可以通过 VXLAN 虚拟网卡直接以以太网地址(MAC 地址)联系对方(直接给对方发以太帧),就好像这些机器都是接在一个物理交换机一样!VXLAN 与 VLAN 不同:1)VXLAN 是基于 UDP 多播技术的,UDP Header 中带有端口,可以穿过网络 NAT 设备;2)VXLAN 支持更大范围的 ID 号码,理论上有2的24次方个,大约一千六百多万,而 802.1Q 规范定义的 VLAN 最多只能够表示 4096 个不同的 VLAN ID.

在本文中,我们会演示如何在 AWS 中建立虚拟网络,然后在这些虚拟网络范围内的 EC2 实例之间搭建横跨区域的虚拟局域网。

在 VPC 内不同子网之间构建虚拟局域网

我们将利用 VXLAN 技术把多个不同 Subnet 下的机器都放到一个软件定义的虚拟局域网中。

VXLAN 技术是依赖于 UDP 多播的,所以成功建立 VXLAN 虚拟局域网的关键在于多播网络的成功搭建,也就是说,你只有在确定了这个网络正常地能够地支持多播之后,才能够开始敲命令创建 VXLAN。

建立 VPC

在 AWS Web 控制台页面,进入到 VPC 管理界面,进行下列操作:

  1. 创建一个新的 VPC;
  2. 在该 VPC 下建立两个子网 10.0.1.0/24 和 10.0.2.0/24;
  3. 在该 VPC 下建立一个 Internet gateway 实例,把它和 VPC 关联,并且在路由表中添加到它的路由;
  4. 创建一个 Transit gateway 实例,创建时记得把 Multicast support 复选框钩上;
  5. 创建一个 Transit gateway attachment 实例,把它和 Transit gateway 关联起来,注意 Transit gateway 会有一段 pending 时间,这段时间过后才能创建它的 Transit gateway attachment, 在创建时选到刚才创建的 VPC 和 Transit gateway;
  6. 创建一个 Transit gateway multicast domain 实例,将它和刚创建的 Transit gateway 关联起来,创建时钩上 IGMPv2 Support(重要);
  7. 将刚创建的 Transit gateway multicast domain 与 VPC 的两个 Subnet 关联起来;

建立 EC2 实例作为 VTEP 寄主

进入到 EC2 管理界面,进行下列操作: