OpenStack Neutron 是一种 SDN(Software Defined Network)实现。Neutron发展历史:nova-network
-> Quantum(F,因其他公司冲突改名)
-> Neutron(H)
网络虚拟化基础
- Linux net namespace:用来实现隔离的一套机制,不同 namespace 中的资源之间彼此不可见
- bridge:网桥,Linux中用于表示一个能连接不同网络设备的虚拟设备,linux中传统实现的网桥类似一个hub设备,而
ovs
管理的网桥一般类似交换机 - VETH:虚拟ethernet接口,通常以
pair
的方式出现,一端发出的网包,会被另一端接收,可以形成两个网桥之间的通道 - TAP:模拟一个二层的网络设备,可以接受和发送二层网包
- TUN:模拟一个三层的网络设备,可以接受和发送三层网包
- iptables:Linux 上常见的实现安全策略的防火墙软件
- 网络相关
- GRE(General Routing Encapsulation):一种通过封装来实现隧道的方式。在
OpenStack
中一般是基于L3
的gre
,即original pkt/GRE/IP/Ethernet
- VLan:虚拟
Lan
,同一个物理 Lan
下用tag
实现隔离,可用标号为1-4094
- VXLAN:一套利用
UDP
协议作为底层传输协议的 Overlay
实现。一般认为作为 VLan
技术的延伸
或替代
几种网络类型
根据可见访问不同分为:
Provider network
:管理员创建的和物理网络有直接映射关系的虚拟网络。Tenant network
:租户普通用户创建的网络,物理网络对创建者透明,其配置由Neutron根据管理员在系统中的配置决定。
根据网络类型不同分:
Local network
(本地网络):一个只允许在本服务器内通信的虚拟网络,不进行跨服务器的通信。主要用于单节点上测试。Flat network
:不使用 tag
的物理网络实现(一对一)的虚拟网络,可以跨节点通信。GRE network
(通用路由封装网络):一个使用 GRE 封装网络包的虚拟网络。GRE 封装的数据包基于 IP 路由表来进行路由,因此 GRE network
不和具体的物理网络绑定。VLAN network
(虚拟局域网) :基于物理 VLAN 网络实现的虚拟网络。共享同一个物理网络的多个 VLAN 网络是相互隔离的,甚至可以使用重叠的 IP 地址空间。每个支持 VLAN network 的物理网络可以被视为一个分离的 VLAN trunk,它使用一组独占的 VLAN ID。有效的 VLAN ID 范围是 1 到 4094。VXLAN network
(虚拟可扩展网络):基于 VXLAN(通过UDP包封装)实现的虚拟网络。同 GRE network 一样, VXLAN network 中 IP 包的路由也基于 IP 路由表,也不和具体的物理网络绑定。GRE network
:基于 tunnel 技术的 overlay网络
,通过IP包封装实现。
几种网桥的作用
Physical L2 Switch for Private Network
网络设备名称说明:
qbr
(quantum bridge
, neutron 沿用了 Quantum 的叫法,下同): Linux Bridge
,OpenStack
早期安全组通过 iptables
实现;iptables
只能用于 Linux Bridge
而非 OVS bridage
qvb
(quantum veth-pair Linux-bridge-side
):Linux veth pair
用来连接 Linux 桥 qbr
qvo
(quantum veth-pair OpenvSwitch-size
):Linux veth pair
用来连接 集成网桥(br-int)
。集成网桥上的 qvo
端口有一个内部 VLAN 标签
,当数据包到达集成网桥的时候自动贴到数据包头部的
计算节点:
br-int:bridge-integration,集成网桥
是 OpenvSwitch
虚拟化出来的网桥,起到虚拟交换机的功能,主要职责:- 把其所在
计算节点
上的 VM
都连接到该虚拟交换机上,然后利用 br-tun
的隧道功能,实现不同 计算节点
上的 VM
连接在同一个逻辑上的 虚拟交换机
上的功能 - 对运行在计算节点上实例的流量执行
VLAN
标记和取消标记
br-tun:bridge-tunnel,隧道网桥
也是 OpenvSwitch
虚拟化出来的网桥,起到 GRE
隧道层的功能,实现网络节点
和计算节点
、计算节点
和计算节点
的互通- 根据
OpenFlow
规则将 VLAN
标记的流量从 集成网桥(br-int)
转换为隧道 ID
。它允许不同网络的实例彼此进行通信,它支持两层网络,即 GRE
和 VXLAN
- 基于隧道技术的
VxLAN
和 GRE
网络将使用该网桥进行通信
Neutron Routers are realized in OpenVSwitch
网络节点:
br-ex:bridge-external,外部网桥
通常表示负责跟外部网络通信的网桥(以混杂模式加载在物理网卡上),以允许 VM
和外部网络自由通信(VM
分配 float-ip
)br-int:bridge-integration,集成网桥
是 OpenvSwitch
虚拟化出来的网桥,起到虚拟交换机的功能,还实现:br-tun:bridge-tunnel,隧道网桥
和计算节点上的网络的功能一致
计算节点与网络节点
重要概念