Neutron 网络基本概念 - 天天5分钟玩转 OpenStack(66)

image494.5.png

上次咱们讨论了 Neutron 提供的功能,今天咱们学习 Neutron 模块几个重要的概念。网络

Neutron 管理的网络资源包括 Network,subnet 和 port,下面依次介绍。架构

network

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

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

flat
flat 网络是无 vlan tagging 的网络。flat 网络中的 instance 能与位于同一网络的 instance 通讯,而且能够跨多个节点。spa

vlan
vlan 网络是具备 802.1q tagging 的网络。vlan 是一个二层的广播域,同一 vlan 中的 instance 能够通讯,不一样 vlan 只能经过 router 通讯。vlan 网络能够跨节点,是应用最普遍的网络类型。router

vxlan
vxlan 是基于隧道技术的 overlay 网络。vxlan 网络经过惟一的 segmentation ID(也叫 VNI)与其余 vxlan 网络区分。vxlan 中数据包会经过 VNI 封装成 UPD 包进行传输。由于二层的包经过封装在三层传输,可以克服 vlan 和物理网络基础设施的限制。资源

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

不一样 network 之间在二层上是隔离的。
以 vlan 网络为例,network A 和 network B 会分配不一样的 VLAN ID,这样就保证了 network A 中的广播包不会跑到 network B 中。固然,这里的隔离是指二层上的隔离,借助路由器不一样 network 是可能在三层上通讯的。io

network 必须属于某个 Project( Tenant 租户),Project 中能够建立多个 network。 network 与 Project 之间是 1对多 关系。基础

subnet

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

subnet 与 network 是 1对多 关系。一个 subnet 只能属于某个 network;一个 network 能够有多个 subnet,这些 subnet 能够是不一样的 IP 段,但不能重叠。下面的配置是有效的:

network A       subnet A-a: 10.10.1.0/24  {"start": "10.10.1.1", "end": "10.10.1.50"}
                subnet A-b: 10.10.2.0/24  {"start": "10.10.2.1", "end": "10.10.2.50"}

但下面的配置则无效,由于 subnet 有重叠

networkA        subnet A-a: 10.10.1.0/24  {"start": "10.10.1.1", "end": "10.10.1.50"}
                subnet A-b: 10.10.1.0/24  {"start": "10.10.1.51", "end": "10.10.1.100"}

这里不是判断 IP 是否有重叠,而是 subnet 的 CIDR 重叠(都是 10.10.1.0/24)

可是,若是 subnet 在不一样的 network 中,CIDR 和 IP 都是能够重叠的,好比

network A       subnet A-a: 10.10.1.0/24  {"start": "10.10.1.1", "end": "10.10.1.50"}

networkB        subnet B-a: 10.10.1.0/24  {"start": "10.10.1.1", "end": "10.10.1.50"}

这里你们难免会疑惑: 若是上面的IP地址是能够重叠的,那么就可能存在具备相同 IP 的两个 instance,这样会不会冲突? 简单的回答是:不会!

具体缘由: 由于 Neutron 的 router 是经过 Linux network namespace 实现的。network namespace 是一种网络的隔离机制。经过它,每一个 router 有本身独立的路由表。

上面的配置有两种结果:

  1. 若是两个 subnet 是经过同一个 router 路由,根据 router 的配置,只有指定的一个 subnet 可被路由。

  2. 若是上面的两个 subnet 是经过不一样 router 路由,由于 router 的路由表是独立的,因此两个 subnet 均可以被路由。

这里只是先简单作个说明,咱们会在后面三层路由的章节详细分析这种场景。

port

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

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

小节

下面总结了 Project,Network,Subnet,Port 和 VIF 之间关系。

Project 1 : m Network 1 : m Subnet 1 : m Port 1 : 1 VIF m : 1 Instance

下一节咱们讨论 Neutron 的架构。

相关文章
相关标签/搜索