neutron理解总结 neutron功能

476 阅读4分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

以下内容为网络内容整理,如有侵权部分,通知删除:

Neutron 功能

Neutron为整个OpenStack环境提供网络支持,包括二层交换,三层路由,负载均衡,防火墙和VPN等。

二层交换 Switching

Nova 的 Instance 是通过虚拟交换机连接到虚拟二层网络的。

Neutron 支持多种虚拟交换机,包括 Linux 原生的 Linux Bridge 和 Open vSwitch。

三层路由 Routing

Instance 可以配置不同网段的 IP,Neutron 的 router(虚拟路由器)实现 instance 跨网段通信。router 通过 IP forwarding,iptables 等技术来实现路由和 NAT。

负载均衡 Load Balancing

Openstack 在 Grizzly 版本第一次引入了 Load-Balancing-as-a-Service(LBaaS),提供了将负载分发到多个 instance 的能力。LBaaS 支持多种负载均衡产品和方案,不同的实现以 Plugin 的形式集成到 Neutron,目前默认的 Plugin 是 HAProxy。

防火墙 Firewalling

Neutron 通过下面两种方式来保障 instance 和网络的安全性。

Security Group
通过 iptables 限制进出 instance 的网络包。

Firewall-as-a-Service
FWaaS,限制进出虚拟路由器的网络包,也是通过 iptables 实现。

Neutron 管理的网络资源包括 Network,subnet 和 port

network

是一个隔离的二层广播域。Neutron支持多种类型的network,包括local,flat,VLAN,VxLAN和GRE。

local
local网络与其他网络和节点隔离。local网络中的instance只能与位于同一节点上同一网络的 instance 通信,local网络主要用于单机测试。

flat
flat网络是无vlan tagging的网络。flat网络中的instance能与位于同一网络的instance通信,并且可以跨多个节点。

vlan
vlan网络是具有802.1q tagging 的网络。vlan是一个二层的广播域,同一vlan中的instance可以通信,不同vlan只能通过router 通信。vlan网络可以跨节点,是应用最广泛的网络类型。

vxlan
vxlan是基于隧道技术的overlay网络。vxlan网络通过唯一的segmentation ID(也叫 VNI)与其他 vxlan网络区分。vxlan中数据包会通过VNI封装成UDP包进行传输。因为二层的包通过封装在三层传输,能够克服 vlan 和物理网络基础设施的限制。解决了VLAN数目上限为4094的局限性的问题。

gre
gre是与vxlan类似的一种overlay网络。主要区别在于使用IP包而非UDP进行封装。

subnet

subnet是一个IPv4或者IPv6地址段。instance的IP从subnet中分配。每个subnet需要定义IP地址的范围和掩码。

subnet与network是1对多关系。一个subnet只能属于某个network;一个network可以有多个subnet,这些subnet可以是不同的IP段,但不能重叠。

port

port可以看做虚拟交换机上的一个端口。port上定义了MAC地址和IP地址,当instance的虚拟网卡VIF(Virtual Interface) 绑定到port时,port会将MAC和IP分配给VIF。

port与subnet是1对多关系。一个port必须属于某个subnet;一个subnet可以有多个port。

Open vSwitch中,每个端口都属于一个特定的网桥。端口收到的数据包会经过流规则的处理,发往其他端口;也会把其他端口来的数据包发送出去。Open vSwitch支持的端口有以下几种:

Normal Port: 用户可以把操作系统中的网卡绑定到Open vSwitch上,Open vSwitch会生成一个普通端口处理这块网卡进出的数据包。

Internal Port: 当设置端口类型为internal,Open vSwitch会创建一快虚拟网卡,此端口收到的所有数据包都会交给这块网卡,网卡发出的包会通过这个端口交给Open vSwitch。当Open vSwitch创建一个新网桥时,默认会创建一个与网桥同名的Internal Port。

Patch Port: 当机器中有多个Open vSwitch网桥时,可以使用Patch Port把两个网桥连起来。Patch Port总是成对出现,分别连接在两个网桥上,在两个网桥之间交换数据。

Tunnel Port: 隧道端口是一种虚拟端口,支持使用gre或vxlan等隧道技术与位于网络上其他位置的远程端口通讯。