-
Neutron 功能介绍
为了在分布式环境下面给虚拟机提供网卡,此外,Neutron还要虚拟化网络功能的其它元件,比如抽象交换机,抽象负载均衡器,抽象防火墙,抽象NAT。
其中,OpenStack内部虚拟机网络互连如下图所示
网络组件虚拟化的对象主要包括如下对象
对于上面提到的主要对象,Neutron在实现虚拟化的时候使用到了已有的软件或者模块,如下表所示
组件名称 | 实现方式 |
---|---|
网卡 | OpenvSwitch |
防火墙 | iptables |
交换机 | OpenvSwitch,Linux |
路由器 | Linux ip协议栈和iptables |
负载均衡器 | haproxy |
- 网络命名空间(nets)
- 网络命名空间本质上是多个逻辑上隔离的网络环境运行在同一个物理主机上
- 每个网络空间都有自己的网卡设备、路由表、防火墙规则
- veth pari是虚拟网络设备,成对出现,通常用于两个网络命名空间进行通信
4.常用到的一些命令如下所示
# 列出所有的nets
# ip nets list
# 在network namespace中运行命令
# ip nets exec <network namespace name> <command>
# 一个典型的例子,查看所有设备的地址
# ip netns exec nstest ip addr
- 网络分类
- 按照数据中心来分
OpenStack Cloud network,是OpenStack所管理的网络
External network,是数据中心所管理的公司网
Internet,是由各大运营商管理的公共网络,使用公共IP - 按照创建网络的用户权限来分类
提供者网络(Provider network),管理员创建的和物理网络有直接映射关系的虚拟网络之间的通信
租户网络(Project network),普通租户创建的虚拟网络
- 按照OpenStack功能划分
管理网络,用于OpenStack各个组件之间的内部通信
数据网络,用于云部署中虚拟数据
外部网络,公共网络,外部或者Internet可以访问的网络
API网络,暴露所有的OpenStack APIs
- 虚拟网络定义类型
- Local
只允许在本服务器内通信的虚拟网络,不能跨服务器通信,通常用于单节点测试 - Flat
所有租户都在一个网络内,没有进行网络隔离,容易产生广播风暴
一般用于提供者网络
创建命令如下
neutron net-create NAME --provider:network_type flat --provider:physical_network PHYS_NET_NAME
- Vlan
基于物理Vlan网络实现的虚拟网络,共享同一个物理网络的多个Vlan网络是相互隔离的,甚至可以使用重叠的IP地址空间。每个支持Vlan network的物理网络可以被视为一个分离的Valn trunk,它使用一组独占的Vlan ID,有效的VLAN ID范围是1到4094
一般只用于提供者网络
创建命令如下
neutron net-create NAME --provider:network_type vlan --provider:physical_network PHYS_NET_NAME --provider:segmentation_id VID
- GRE
(Generic Routing Encapsulation)通用路由协议封装协议,是一种Ip-over-IP的隧道
GRE是L3层的隧道技术,本质是在隧道的两端的L4层建立UDP连接传输重新包装的L3层包头,在目的地再取出包装后的包头进行解析
GRE封装的数据包基于路由表来进行路由,因此GRE network不和具体的物理网络绑定
一般只适用于租户网络
- 常用到的对象模型
- 网络(network)
是一个隔离的二层网段,类似于物理网络世界中的LAN - 子网(subnet)
子网是一组IPv4或者IPv6地址以及其有关联的配置,它是一个地址池,OpenStack可以从中向虚拟机分配IP地址,每个子网指定为一个无类别域间路由范围,必须和一个网络相关联 - 端口(Port)
一个Port代表虚拟机网络交换机上面的一个虚拟交换端口。虚拟机的网卡会被连接到port上,当虚拟机的网卡(VIF-Virtual Interface)连接到Port以后,这个vNIC就会拥有MAC地址和IP地址,Port的IP地址是从subnet中分配的
4.虚拟交换机(Virtual switch)
Neutron默认采用的是开源的OpenvSwitch作为其虚拟机交换机,同时也支持Linux Bridge - 虚拟路由器(Virtual router)
一个Virtual router提供不同网段的IP包路由功能,由Neutron L3 agent负责管理