OpenStack 网络
概述
- OpenStack最重要的资源之一,没有网络,虚拟机将被隔离,其最主要的功能就是为虚拟机实例提供网络连接,最初由nova的一个单独模块nova-compute实现,但是nova-compute支持的网络服务有限,无法适应大规模、高密度和多项目的云计算,现已被专门的网络服务项目Neutron所取代
- Neutron 为整个 OpenStack 环境提供软件定义网络支持,主要功能包括二层交换、三层路由、防火墙、VPN以及负载均衡等
- Neutron 在由其他 OpenStack服务(如nova)管理的网络接口设备(如虚拟网卡)之间提供网络连接即服务
Linux 网络虚拟化
- OpenStack 网络服务最核心的任务就是对二层物理网络进行抽象和管理
- 实现虚拟化后,多个物理服务器可以被虚拟机取代,部署在同一台物理服务器上。虚拟机由虚拟机管理器(Hypervisor)实现
- 在 Linux 系统中 Hypervisor 通常采用 kvm。在对服务器进行虚拟化的同时,也对网络进行虚拟化
- Hypervisor 为虚拟机创建一个或多个虚拟网卡(vNIC),虚拟网卡等同于虚拟机的物理网卡。物理交换机在虚拟网络中被虚拟为虚拟交换机(vSwitch),虚拟机的虚拟网卡连接到虚拟交换机上,虚拟机交换机再通过物理主机的物理网卡连接到外部网络
- 对于物理网络来说,虚拟化的主要工作是对网卡和交换设备的虚拟化


Linux 虚拟网桥
- 虚拟机与物理机不同,它并没有硬件设备,但也需要与物理机和其他虚拟机进行通信。Linux KVM则是提供虚拟网桥设备,像物理交换机具有若干网络接口一样,在网桥上创建多个虚拟的网络接口,每个网络接口再与KVM虚拟机的网卡相连
- 在Linux的KVM虚拟系统中,为支持虚拟机的网络通信,在创建虚拟机时会自动创建这些接口,接口名称通常以vnet开头(vnet0、vnet1……)

虚拟局域网
- 一个网桥可以桥接若干虚拟机,当多个虚拟机连接在同一网桥时,每个虚拟机发出的广播包会引发广播风暴,影响虚拟机的网络性能。通常使用虚拟局域网(VLAN)将部分虚拟机的广播包限制在特定范围内,不影响其他虚拟机的网络通信
- 通常使用 VLAN 将部分虚拟机的广播包限制在特定范围内,不影响其他虚拟机的网络通信
- 将多个虚拟机划分到不同的 VLAN 中,同一 VLAN 的虚拟机相当于连接同一网桥上
- 在Linux虚拟化环境中,通常会将网桥与 VLAN 对应起来,也就是将网桥划分到不同的 VLAN 中
- VLAN 协议为
802.1Q,VLAN是具有802.1Q标签的网络
虚拟交换机
- OVS,虚拟交换机(Open vSwitch) 与硬件交换机具备相同特性,可在不同虚拟平台之间移植,具有产品级质量的虚拟交换机,适合在生产环境中部署
- 交换设备的虚拟化对虚拟网络来说至关重要
- 在传统的数据中心,管理员可以对物理交换机进行配置,控制服务器的网络接入,实现网络隔离、流量监控、Qos配置、流量优化等目标
- 在云环境中,采用 OVS 技术的虚拟交换机可使虚拟网络的管理、网络状态和流量的监控得以轻松实现
- OpenSwitch 在云环境中的虚拟化平台上实现分布式虚拟交换机,可以将不同主机上的 OVS 交换机连接起来,形成一个大规模的虚拟网络

OpenStack 网络基础服务
概述
- Neutron 网络服务提供一个 APl 让用户在云中建立和定义网络连接
- Neutron 提供防火墙和VPN等一些高级服务,可以将网络服务部署到特定主机
neutron 网络架构
- 一个简化的典型的 Neutron 网络结构包括外部网络、内部网络和路由器
- 外部网络
- 外部网络负责连接 OpenStack 项目之外的网络环境,又称公共网络
- 与其他网络不同,它不仅仅是一个虚拟拟网络,更重要的是,它表示 OpenStack 网络能被外部物理网络接入并访问
- 外部网络可以是企业的局域网(Intranet),也可能是互联网(Internet),这类网络并不是由 Neutron 直接管理
- 内部网络
- 内部网络完全由软件定义,又称私有网络
- 虚拟机实例所在的网络,能够直接连接到虚拟机
- 项目用户可创建自己的内部网络,默认情况下,项目之间的内部网络相互隔离,不能共享,该网络由 Neutron 直接配置与管理
- 路由器
- 用于将内部网络与外部网络连接起来
- 要使虚拟机访问外部网络,必须创建一个路由器
网路、子网及端口
- 网路
- 一个隔离的二层广播域,类似交换机中的VLAN
- Neutron 支持多种类型的网络:FLAT、VLAN、VXLAN……
- 子网
- 一个 IPV4 或者 IPV6 的地址段及其相关配置状态
- 虚拟机实例的 IP 地址从子网中分配,每个子网需要定义 IP 地址的范围和掩码
- 端口
- 设备的连接点,类似虚拟交换机上的一个网络端口
- 端口定义了MAC地址和 IP地址,当虚拟机的虚拟网卡绑定到端口时,端口会将 MAC 和 IP 分配给该虚拟网卡
小结
- 网络必须属于某个项目,一个项目中可以创建多个网络
- 一个子网只能属于某个网络,一个网络可以有多个子网
- 一个端口必须属于某个子网,一个子网可以有多个端口
网络拓扑类型
- Local(测试用)
- Local 网络与其他网络和节点隔离
- 该网络中的虚拟机实例只能与位于同一节点上同一网络的虚拟机实例通信,实际意义不大,主要用于测试环境
- 位于同一 Local 网络的实例之间可以通信,位于不同 Local 网络的示例之间无法通信
- 一个Local网络只能位于同一个物理节点上,无法跨节点部署
- Flat(同一局域网)
- 所有的虚拟机实例都连接在同一网络中,能与位于同一网络的实例进行通信,并且可以跨多个节点
- 这种网络不使用VLAN,没有对数据包打VLAN标签,无法进行网络隔离
- Flat 是基于不使用 VLAN 的物理网络实施的虚拟网络。每个物理网络最多只能实现一个虚拟网络
- VLAN(主要由二层交换机实现)
- VLAN 是支持 802.1q 协议的虚拟局域网,使用VLAN标签标记数据包,实现网络隔离
- 同一 VLAN 网络中的实例可以通信,不同VLAN网络中的实例只能通过路由器来通信
- VLAN网络可以跨节点,是应用最广泛的网络拓扑类型之一
- VXLAN
- 虚拟扩展局域网,可以看作是VLAN的一种扩展,相比于 VLAN,它有更大的扩展性和灵活性
- GRE
- 通用路由封装,是用一种网络层协议去封装另一种网络层协议的隧道技术
- GRE 的隧道由两端的源 IP地址和目的 IP地址定义,它允许用户使用IP封装IP等协议,并支持全部的路由协议。
- GRE与 VXLAN 的主要区别在于,它是使用 IP包而非UDP进行封装的
- GRNEVE
- 通用网络虚拟封装,尽可能实现数据格式的弹性和扩展性
- GENEVE 封装的包通过标准的网络设备传送,即通过单播或多播寻址,包从一个隧道端点传送到另一个或多个隧道端点
网络基本结构


Comments NOTHING