美文网首页
neutron网络虚拟化

neutron网络虚拟化

作者: visionarywind | 来源:发表于2020-07-21 16:13 被阅读0次

    (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

    相关文章

      网友评论

          本文标题:neutron网络虚拟化

          本文链接:https://www.haomeiwen.com/subject/auyikktx.html