neutron网络虚拟化

(1)Neutron 所实现的网络虚拟化
(2)Neutron OpenvSwitch + VLAN 虚拟网络
(3)Neutron OpenvSwitch + GRE/VxLAN 虚拟网络
(4)Neutron Linux Bridge + VLAN/VXLAN 虚拟网络
(5)Linux bridge + VXLAN 详解
(6)Neutron OVS OpenFlow 流表 和 L2 Population
(7)Neutron DHCP Agent
(8)Neutron L3 Agent
(9)Neutron LBaas
(10)Neutron Security Group
(11)Neutron FWaas 和 Nova Security Group
(12)Neutron VPNaas
(13)Neutron DVR
(14)Neutron VRRP
(15)High Availability (HA)

网络虚拟化

虚拟化的缘起

数据中心的现有网络不能满足云计算的物理需求

  • 大容量的MAC表项和ARP表项
  • 4K VLAN Trunk问题
  • 虚拟机迁移网络依赖问题

数据中心的现有网络不能满足云计算的软件化即SDN要求

云计算的 SDN 要求

数据中心(Data Center)中的物理网络是固定的、需要手工配置的、单一的、没有多租户隔离的网络
而云架构往往是多租户架构,这意味着多个客户会共享单一的物理网络。因此,除了提供基本的网络连接能力以外,云还需要提供网络在租户之间的隔离能力;同时云是自服务的,这意味着租户可以通过云提供的 API 来使用虚拟出的网络组建来设计,构建和部署各种他们需要的网络

Neutron 网络虚拟化

在实际的数据中心中,网络可以分为三层:OpenStack Cloud network,机房intranet (external network),以及真正的外部网络即 Internet

  • OpenSack Cloud network:OpenStack 所管理的网络。
  • External network:数据中心所管理的的公司网(Intranet) ,虚机使用的 Floating IP 是这个网络的地址的一部分。
  • Internet:由各大电信运营商所管理的公共网络,使用公共IP。

网络(L2 network)

网络(network)是一个隔离的二层网段,类似于物理网络世界中的虚拟 LAN (VLAN)
为创建它的租户而保留的一个广播域,或者被显式配置为共享网段
端口和子网始终被分配给某个特定的网络

  • 跨网络的子网之间的流量必须走 L3 Virtual Router
  • 每个网络使用自己的 DHCP Agent,每个 DHCP Agent 在一个 Network namespace 内
  • 不同网络内的IP地址可以重复(overlapping)

根据创建网络的用户的权限,Neutron network 可以分为:

  • Provider network:管理员创建的和物理网络有直接映射关系的虚拟网络。
  • Tenant network:租户普通用户创建的网络,物理网络对创建者透明,其配置由 Neutron根据管理员在系统中的配置决定

根据网络的类型,Neutron network 可以分为:

  • VLAN network(虚拟局域网) :基于物理 VLAN 网络实现的虚拟网络
    共享同一个物理网络的多个 VLAN 网络是相互隔离的,甚至可以使用重叠的 IP 地址空间。每个支持 VLAN network 的物理网络可以被视为一个分离的 VLAN trunk,它使用一组独占的 VLAN ID。有效的 VLAN ID 范围是 1 到 4094
  • Flat network:基于不使用 VLAN 的物理网络实现的虚拟网络
    每个物理网络最多只能实现一个虚拟网络
  • local network(本地网络):一个只允许在本服务器内通信的虚拟网络,不知道跨服务器的通信
    主要用于单节点上测试
  • GRE network (通用路由封装网络):一个使用 GRE 封装网络包的虚拟网络
    GRE 封装的数据包基于 IP 路由表来进行路由,因此 GRE network 不和具体的物理网络绑定
  • VXLAN network(虚拟可扩展网络):基于 VXLAN 实现的虚拟网络
    同 GRE network 一样, VXLAN network 中 IP 包的路由也基于 IP 路由表,也不和具体的物理网络绑定

Provider network

Provider Network 是由 OpenStack 管理员创建的,直接对应于数据中心的已有物理网络的一个网段

三个和物理网络有关的属性
provider:network_type (网络类型,包括 vxlan, gre, vlan, flat, local)
provider:segmentation_id (网段 ID, 比如 VLAN 的 802.1q tag, GRE 网络的 Tunnel ID, VXLAN 网络的 VNI)
provider:physical_network (物理网络的逻辑名称,比如 physnet1, ph-eth1, etc)

Tenant network

Tenant network 是由 tenant 的普通用户创建的网络

Provider network 和 Tenant network 的区别

  • Provider network 是由 Admin 用户创建的,而 Tenant network 是由 tenant 普通用户创建的
  • Provider network 和物理网络的某段直接映射,比如对应某个 VLAN,因此需要预先在物理网络中做相应的配置。而 tenant network 是虚拟化的网络,Neutron 需要负责其路由等三层功能
  • 对 Flat 和 VLAN 类型的网络来说,只有 Provider network 才有意义。即使是这种类型的 tenant network,其本质上也是对应于一个实际的物理段
  • 对 GRE 和 VXLAN 类型的网络来说,只有 tenant network 才有意义,因为它本身不依赖于具体的物理网络,只是需要物理网络提供 IP 和 组播即可
  • Provider network 根据 admin 用户输入的物理网络参数创建;而 tenant work 由 tenant 普通用户创建,Neutron 根据其网络配置来选择具体的配置,包括网络类型,物理网络和 segmentation_id
  • 创建 Provider network 时允许使用不在配置项范围内的 segmentation_id

子网(subnet)

子网是一组 IPv4 或 IPv6 地址以及与其有关联的配置

端口(Port)

一个 Port 代表虚拟网络交换机(logical network switch)上的一个虚机交换端口(virtual switch port)

虚机交换机 (Virtual switch)

Neutron 默认采用开源的 Open vSwitch 作为其虚机交换机,同时还支持使用 Linux bridge

虚拟路由器 (Virtual router)

一个 Virtual router 提供不同网段之间的 IP 包路由功能,由 Nuetron L3 agent 负责管理

各组件之间的关系

OpenStack 实际上并未增加网络功能
路由、交换和名称解析是由底层的网络基础架构处理的
OpenStack 的作用是将这些组件的管理捆绑在一起,并将它们连接到计算工作负载

Neutron中的网络连通性

一个标准 OpenStack 环境中的物理网络配置

  • Internet(Pulic network):传统意义上的公共网络,使用往往由电信运营商提供的公共IP
  • 外部网络(External network):数据中心 Intranet,从这里分配浮动IP地址
  • OpenStack 内部网络:
    • 管理网络(management network):提供 OpenStack 各个组件之间的内部通信,以及 API 访问端点(Endpoint)
    • API 网络:其实这不是一个单独的网络,而是包含在外部和内部网络中
    • 数据网络(data network):除管理网络以外的其它网络
      • 租户网络(Tenant network):提供虚机在计算节点之间,以及计算节点和网络节点之间的通信,这也是数据中心的内部网络
      • 存储访问网络(storage access network):访问存储的网络
      • 存储后端网络(storage backend network):比如 Ceph 和 Swift 集群用于后端数据复制的网络
  • 除了以上网络外,往往还有各种功能网络,包括 IPMI 网络,PXE 网络,监控网络等等

这几种网络,在物理交换机上,往往都使用 VLAN 来做网络隔离。现在讨论的只是租户网络即虚机之间通信的网络,在 Neutron 的实现看来,该网络的连通性包括几个层次

  • 同主机和不同主机上一个网段内的虚机之间的连接性:虚拟二层网络,走物理二层(VLAN)或者三层(GRE/VxLAN)网络。
  • 不同网段内的虚机之间的连通性:经过物理(VLAN)或者 Neutron Virtual router
  • 虚机和外部网络之间的连通性:经过物理路由器(给 VLAN 虚拟网络实用的物理交换机连接的路由器)或者 Neutron Virtual router

虚拟二层网络的实现

所谓虚拟二层网络,就是提供给虚机的一种虚拟网络,使得虚机可以和同网段中的其它虚机就像在物理二层网络一样在网络二层直接通信,不管目的虚机处于什么物理位置。也就是说,对虚机来说,物理三层网络对它是透明的

使用 VLAN 实现虚拟二层网络

基于 GRE/VxLAN 实现的二层网络 (L2)

虚拟路由器

跨子网的通信需要走虚拟路由器。同物理路由器一样,虚拟路由器由租户创建,拥有多个 virtual interface,连接一个租户的子网,以及外部网络

  • 一个 VR 只属于创建它的租户,只用于该租户的子网之间和子网与外网的路由
  • 同一网络内的若干子网可以挂在一个 VR 上
  • 同一租户的不同网络的没有 IP 地址重叠的子网可以挂在一个 VR 上
  • 不同租户之间的内网之间是不能使用 VR 的
  • 同一租户的不同网络内的有 IP 地址重叠的两个子网不能使用同一个 VR(添加子网到 VR 时会报错)
  • 在网络节点上,一个 VR 运行在一个 Network namespace 内,该namespace 的名称包含该 VR 的 UUID

DHCP 服务

DHCP 服务是网络环境中必须有的。Neutron 提供基于 Dnamasq 实现的虚机 DHCP 服务,向租户网络内的虚机动态分配固定 IP 地址

Neutron 租户网络的隔离性(isolation of tenant network)

Neutron 实现了不同层次的租户网络隔离性

  • 租户之间的网络是三层隔离的,连通过 VR 做路由都不行,实在要连通的话,需要走物理网络
  • 一个租户内的不同网络之间二层隔离的,需要通过 VR 做三层连通
  • 一个网络内的不同子网也是二层隔离的,需要通过 VR 做三层连通

Neutron 对每个租户网络(tenant network)都分配一个 segmentation_id,其特点包括

  • 每个 tenant network 都有一个这种 ID
  • 每个租户网络的 ID 在全部的租户范围内都是唯一的
  • 一个 ID 代表一个广播域
  • 一个 ID 使得同一网络内的两个虚机之间好像建立了一个虚拟通道(tunnel)一样
  • 不同 ID 的网络 tunnel 之间是互相隔离的
  • 根据物理实现不同,该ID被实现为几种不同的形式:
    • VLAN ID
    • GRE Tunnel ID
    • VxLAN VNI

Neutron 租户网络的安全性(security)

  • Neutron 还提供数据网络与外部网络的隔离性。默认情况下,所有虚机通往外网的流量全部走网络节点上的 L3 agent。在这里,内部的固定 IP 被转化为外部的浮动 IP 地址。这种做法一方面保证了网络包能够回来,另一方面也隐藏了内部的 IP 地址
  • Neutron 还是用 Linux iptables 特性,实现其 Security Group 特性,从而保证访问虚机的安全性
  • Neutron利用网络控制节点上的 network namespace 中的 iptables,实现了进出租户网络的网络包防火墙,从而保证了进出租户网络的安全性

Neutron 租户网络的可用性(HA)和扩展性(Scalability)

  • 软件架构上,Neutron 实现OpenStack 标准的去中心化架构和插件机制,有效地保证了其扩展性
  • Neutron 为每个 provider/tenant network 分配一个唯一的 segmentation_id。该 ID 的数目是影响可扩展性的因素之一。在规模不大的私有云中,往往是用 VLAN 模式,简单、可靠、能够满足规模要求;而在大型的私有云或者公有云中,往往使用 VxLAN
  • 分布式 Virtual Router (DVR) 和 分布式 DHCP agent
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,163评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,301评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,089评论 0 352
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,093评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,110评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,079评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,005评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,840评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,278评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,497评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,394评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,980评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,628评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,649评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,548评论 2 352