相关概念
一、Neutron网络项目
- Neutron是openstack核心项目之一,提供云计算环境下的虚拟网络功能。
- Neutron为整个openstack环境提供软件定义网络支持
- 主要功能包括二层交换、三层路由、防火墙、VPN, 以及负载均衡等。
- Neutron在由其他openstack服务 (如nova)管理的网络接口设备 (如虚拟网卡)之间提供网络连接即服务。
二、Linux虚拟网络
linux网络虚拟化
Neutron最核心的任务:对二层物理网络进行抽象和管理
传统物理网络与虚拟化网络的区别
- 传统物理网络
- 使用多个物理服务器
- 使用物理网络设置
- 虚拟化网络
- 将多个虚拟机部署在一台物理服务器,减少了物理服务器的数量
- 虚拟机由虚拟机管理器(Hypervisor)统一管理
- 在Linux系统中Hypervisor通常采用kvm。
- 网络虚拟化,减少了物理网络设置的数量
- Hypervisor为虚拟机创建一个或多个虚拟网卡(vNIC),虚拟网卡等同于虚拟机的物理网卡。
- 物理交换机在虚拟网络中被虚拟为虚拟交换机(vSwitch)
- 虚拟机的虚拟网卡连接到虚拟交换机上,虚拟机交换机再通过物理主机的物理网卡连接到外部网络。
- 将多个虚拟机部署在一台物理服务器,减少了物理服务器的数量
- 对于物理网络来说,虚拟化的主要工作是对网卡和交换设备的虚拟化。
网络虚拟化中几个关键的组件
- 虚拟网桥(即虚拟交换机)
- 网桥接口连着虚拟网卡,网桥接口名称通常以vnet开头;
- 例:虚拟网卡1连接vnet0,虚拟网卡2连接vnet1,虚拟网卡3连接vnet2
- 网桥接口连着虚拟网桥,虚拟网桥以br开头;
- 例如vnet0和vnet1连接br1,vnet2连接br2
- 虚拟网桥分别连着物理主机的物理网卡;
- 例如br1连接物理网卡1,br2连着物理网卡2
- 网桥接口连着虚拟网卡,网桥接口名称通常以vnet开头;
- 虚拟局域网(即vlan)
- 防止广播风暴的产生
- 划分VLAN区域,一个VLAN含有多台虚拟机,一个VLAN的虚拟机相当于连接同一网桥
- 虚拟化环境中,会将网桥划分到不同的VLAN中
- VLAN的协议是802.1Q
- 开放虚拟交换机(open vSwitch)
- 和硬件交换机拥有一样的特性,可以在不同虚拟平台上移植
- 在虚拟交换机上使用open vSwitch技术,可以使虚拟网络的管理、网络状态和流量的监控更加的轻松
- 可以在云环境中的虚拟化平台上实现分布式虚拟交换机
- 也可以将不同主机上的open vSwitch交换机连接起来,形成一个大规模的虚拟网络
三、openstack网络基础服务
OpenStack网络服务提供一个API让用户在云中建立和定义网络连接。该网络服务的项目名称是Neutron。OpenStack网络负责创建和管理虚拟网络基础架构,包括网络、交换机、子网和路由器,这些设备由OpenStack计算服务Nova管理。同时,网络服务还提供防火墙和VPN这样的高级服务。可以将网络服务部署到特定主机上。OpenStack网络组件与身份服务、计算服务和仪表板等多个OpenStack组件进行整合
1、Neutron网络结构
一个简化的典型的Neutron网络结构,包括一个外部网络、一个内部网络和一个路由器。
- 外部网络:负责连接OpenStack项目之外的网络环境,又称公共网络。
- 与其他网络不同,它不仅仅是一个虚拟网络,更重要的是,它表示OpenStack网络能被外部物理网络接入并访问。
- 外部网络可能是企业的局域网(Intranet),也可能是互联网(Internet) ,这类网络并不是由Neutron直接管理。
- 内部网络:完全由软件定义,又称私有网络。
- 它是虚拟机实例所在的网络,能够直接连接到虚拟机。
- 项目用户可以创建自己的内部网络。
- 默认情况下,项目之间的内部网络是相互隔离的,不能共享。
- 该网络由Neutron直接配置与管理。
- 路由器:用于将内部网络与外部网络连接起来,因此,要使虚拟机访问外部网络,必须创建一个路由器。
Neutron需要实现的主要是内部网络和路由器。内部网络是对二层(L2)网络的抽象,模拟物理网络的二层局域网,对于项目来说,它是私有的。路由器则是对三层(L3)网络的抽象,模拟物理路由器,为用户提供路由、NAT等服务。
2、网络子网和端口
- 网络:一个隔离的二层广播域,类似交换机中的VLAN。
- Neutron支持多种类型的网络, 如FLAT、VLAN、VXLAN等。
- 子网:一个IPV4或者IPV6的地址段及其相关配置状态。
- 虚拟机实例的IP地址从子网中分配。
- 每个子网需要定义IP地址的范围和掩码(这个有点像DHCP中定义的作用域的概念)。
- 端口:连接设备的连接点,类似虚拟交换机上的一个网络端口。
- 端口定义了MAC地址和IP地址,当虚拟机的虚拟网卡绑定到端口时,端口会将MAC和IP分配给该虚拟网卡。
通常可以创建和配置网络、子网和端口来为项目搭建虚拟网络。网络必须属于某个项目,一个项目中可以创建多个网络。一个子网只能属于某个网络,一个网络可以有多个子网。一个端口必须属于某个子网,一个子网可以有多个端口。
3、网络拓扑类型
- Local
- Local网络与其他网络和节点隔离。
- 该网络中的虚拟机实例只能与位于同一节点上同一网络的虚拟机实例通信,实际意义不大,主要用于测试环境。
- 位于同一Local网络的实例之间可以通信,位于不同Local网络的示例之间无法通信。
- 一个Local网络只能位于同一个物理节点上,无法跨节点部署。
- Flat
- Flat是一种简单的扁平网络拓扑,所有的虚拟机实例都连接在同一网络中,能与位于同一网络的实例进行通信,并且可以跨多个节点。
- 这种网络不使用VLAN,没有对数据包打VLAN标签,无法进行网络隔离。
- Flat是基于不使用VLAN的物理网络实施的虚拟网络。
- 每个物理网络最多只能实现一个虚拟网络。
- VLAN
- VLAN是支持802.1q协议的虚拟局域网,使用VLAN标签标记数据包,实现网络隔离。
- 同一VLAN网络中的实例可以通信,不同VLAN网络中的实例只能通过路由器来通信。
- VLAN网络可以跨节点。
- VXLAN
- VXLAN (虚拟扩展局域网)可以看作是VLAN的一种扩展,相比于VLAN,它有更大的扩展性和灵活性,是目前支持大规模多租房网络环境的解决方案。
- 由于VLAN包头部限长是12位, 导致VLAN的数量限制是4096 (212) 个,不能满足网络空间日益增长的需求。
- 目前VXLAN的封包头部有24位用作VXLAN标识符(VNID)来区分VXLAN网段,最多可以支持16777216 (224) 个网段。
- VXLAN使用STP防止环路,导致一半的网络路径被阻断。
- VXLAN的数据包是封装到UDP通过三层传输和转发的,可以完整地利用三层路由,能克服VLAN和物理网络基础设施的限制,更好地利用已有的网络路径。
- GRE
- GRE (通用路由封装)是用一种网络层协议去封装另一种网络层协议的隧道技术。
- GRE的隧道由两端的源IP地址和目的IP地址定义,它允许用户使用IP封装IP等协议,并支持全部的路由协议。
- 在OpenStack环境中使用GRE意味着"IP over IP”,GRE与VXLAN的主要区别在于,它是使用IP包而非UDP进行封装的。
- GENEVE
- GENEVE(通用网络虚拟封装)的目标宣称是仅定义封装数据