OpenStack----Neutron网络服务基础理论(持续更新)
文章目录
- 前言:
- 一、Neutron基本概念
- 二、基础服务
- 2.1 network 网络
- 2.2 subnet 子网
- 2.3 router 路由器
- 2.4 port 端口
- 2.5 plugin 插件
- 2.6 agent 代理
- 2.7 provider 网络提供者
- 三、Neutron-server 架构
- 四、Neutron部署
- 五、Linux虚拟网络
- 六、Linux Bridge 代理
- 七、Open vSwitch代理
- 八、namespace
- 九、Neutron 路由器
- 十、FWaaS
- 十一、ML2插件
- 十二、L3代理服务
- 12.1 L3代理服务概述
- 12.2 一般实用场景
- 12.3 路由
- 12.4 网络重叠
- 12.5 源地址转换
- 12.5 安全组
- 12.6 VIP(Virtual IP)
- 12.7 VRRP
- 12.6 VIP(Virtual IP)
- 12.7 VRRP
- 总结
前言:
Neutron是OpenStack核心组件之一,本篇博客对Neutron组件的进行简单分解介绍。
一、Neutron基本概念
1.1 Neutron概述
-
Neutron的设计是为了实现网络及服务。为了实现这个目标,设计上遵循了基于SDN实现网络虚拟化的原则,在实现上充分利用了Linux系统上的各种网络相关技术
-
SDN 模式服务— NeutronSDN( 软件定义网络 ), 通过使用它,网络管理员和云计算操作员可以通过程序来动态定义虚拟网络设备。Openstack 网络中的 SDN 组件就是 Quantum.但因为版权问题而改名为Neutron
-
Neutron已经实现的网络机制有3种类型
基于代理(Agent-based):包括 Linux Bridge,Open vSwith
基于控制器(controller-based):包括OpenStacDaylight,VMWaver NSX 等
基于物理交换的:包括 Cisco Nexus,Arista,Mellanox等
-
Neutron架构框架:
1.2 Neutron基本功能
-
主要功能
为了整个openstack环境提供网络支持,包括二层交换(ML2插件),三层路由(L3代理),负载均衡,防火墙和v*n(隧道技术)等
-
二层交换
nova的实例是通过虚拟交换机连接到虚拟二层网络的
neutron支持多种虚拟交换机,包括
- linux bridge
- open vswitch
-
三层路由
实例上可以配置不通网段的IP,neutron的虚拟路由器实现实例跨网段通信
同时可以让内网实例通过配置NAT的方式访问外网
-
负载均衡 load balancing
支持多种负载均衡产品和档案,不同的实现以Plugin(插件)的形式集成到neutron
-
防火墙
-
securityy group (安全组)
通过iptables限制进出实例的网络包
-
虚拟防火墙FWaas
限制进出虚拟路由的网络包,也是通过iptables实现
-
1.2 SDN优点
- openstack的SDN组件架构属于可插拔类型,通过各种插件可以管控不通种类的交换机、路由器、防火墙、负载均衡并实现虚拟防火墙等多种功能,通过软件来定义的网络,可以对云计算实施进行更为精细的掌控
二、基础服务
2.1 network 网络
-
类似于实际的物理环境中的网络,OpenStack网络用于连接云主机或路由器。除此之外,还包含子网、网关以及DHCP服务等。OpenStack网络分为内部网络和外部网络,内部网络一般用于连接虚拟机,而外部网络一般用于连接宿主机外面的网络
-
Openstack网络
-
内部网络
一般用于连接虚拟机
-
外部网络
一般用于连接宿主机外的网络
-
2.2 subnet 子网
- OpenStack中的子网是一个IP地址段,用于定义实际的IP地址范围
2.3 router 路由器
- 路由器用于连接 OpenStack的内部网络和外部网络。类似实际路由器功能,支NAT功能,通过绑定浮动IP地址还可以实现地址映射
2.4 port 端口
- 端口类似于实际网络中的网络接口,用于连接终端设备或另外一个网络。不同的是, OpenStack中端口连接的一般都是虚拟设备接口,如虚拟机的虚拟网卡或者路由器的虚拟接口等。端口还描述了相关的网络配置,例如可以在端口上配置MAC地址和IP地址
2.5 plugin 插件
- 处理网络服务发来的请求,维护openstack逻辑网络状态,并调用相应代理进行处理
2.6 agent 代理
- 处理插件的请求,负责在网络提供者上真正实现各种网络功能
2.7 provider 网络提供者
- 提供网络服务的虚拟或物理网络设备,如linux bridge,open vswitch或其他支持neutron的物理交换机
三、Neutron-server 架构
3.1 分层模型
-
Neutron 架构
-
Neutron-server服务介绍
neutron-server是 neutron的主服务进程,它运行在网络控制节点,提供restfulapi作为访问neutron 的入口,neutron-server接收到用户的http请求最终遍布于计算节点和网络节点的各种agen来完成 主要代码 /neutron/server neutron也是采用分布式架构,由多个组件(子服务共同对外提供网络服务)
-
Neutron api (resetful API)
-
① neutron将基于各种虚拟网络资源的得到的API资源分成核心资源core api和扩展资源extension api两种
Core api :对应于L2层的网络、子接口和subnetpool资源池(openstack k版加入的特性)四种抽象资源等
Extension api :提供给网络管理路由器、负载均衡、防火墙、安全组等扩展资源
-
② 直接对接客户端API服务,属于最前端的API,包括核心api和扩展api两种,核心api提供管理网络,子网和端口核心资源的resetful API;扩展 api提供网络管理路由器、负载均衡、防火墙、安全组等扩展资源的resetful api
-
-
Common serveice
通用服务,负责对API请求进行检验、认证并授权
-
Neutron core
核心处理程序,调用相应的插件API来处理API的请求
-
Plugin API
定义插件的抽象功能集合,提供调用通用插件的API接口,包括核心插件api和扩展插件API两种,网络核心(server core)通过核心插件API调用相应的核心插件,通过扩展插件API调用相应的服务插件
3.2 架构分析
3.2.1 Neutron-plugin
-
Neutron-plugin(网络插件)是Neutron的一中API的后端实现,目的是增强扩展性。插件按照功能可分为两种类型。
Core Plugin:提供基础二层虚拟机网络支持,实现网络,子网和端口核心资源支持。
Service Plugin:是Core Plugin之外的其他插件,提供路由器,防火墙,安全组,负载均衡等服务支持,值得一提的是,知道Openstack的Havana版本,Neutron才开始提供一个名为L3 Router Service Pluginde 插件支持路由服务。
-
Neutron-plugin由Neutron-server的Core Plugin API和Extension Plugin API调用,用于确定具体的网络功能,既要配什么样的网络,插件处理Neutron-server发来的请求,主要职责是在数据库中维护Neutron网络的状态信息(更新Neutron数据库),通知相应的代理实现具体的网络功能。
-
每一个插件支持一组API资源并完成特定的操作,这些操作最终由插件通过RPC调用相应的代理(Agent)来完成。
3.3 逻辑架构
-
① neutron-server 收到创建网络的请求,通过消息队列(RabbitMQ)通知已注册的linux bridge 插件,这里架构网络提供者为linux bridge
-
② 该插件讲要创建的网络信息(如名称、ID值、VLAN ID等)保存到数据库中并通过消息队列通知运行在各个节点上的代理
-
③ 代理收到信息后会在节点服务器物理网卡上创建vlan设备(比如物理接口的子接口eth1.10)并创建一个网桥(比如brgxxx)来桥接网络设备
-
示例:
-
① Neutron-server收到创建网络( Network)的请求,通过消息队列( RabbitMQ)通知已注册的 Linux Bridge插件,这里架设网络提供者为 Linux Bridge。
-
② 该插件将要创建的网络信息(如名称、ID值、ⅥANID等)保存到数据库中并通过消息队列通知运行在各个节点上的代理
-
③ 代理收到信息后会在节点上的物理网卡上创建Ⅵan设备(比如物理接口的子接口Eth1.10),并创建一个网桥(比如 brgXXX)来桥接网络设备
四、Neutron部署
-
Neutron与其他OpenStack服务组件系统工作,可以部署在多个物理主机节点上,主要涉及控制节点、网络节点、计算节点,每个节点可以部署多个,典型的主机节点部署介绍如下
-
控制节点和计算节点:
控制节点上部署Neutron-service (API)、Core Plugin和Service Plugin的代理,主要包括:
- neutron-plugin -agent
- neutron-me dadata-agent
- neutron-dhcp-a gnet
- neutron-l3-agent
- neutron-lbaas-agent
- 其他
Core plugin和service plugin已经集成到neutron-server中,不需要运行独立的plugin服务
计算节点上可以部署Core Plugin、Linux Bridge或Open ySwitch的代理,负责体提供二层的网络功能
-
控制节点和计算节点都需要部署CorePlugin的代理,因为控制节点与计算节点通过该代理才能建立二层连接
-
控制节点和网络节点部署
- 可以通过增加网络节点承担更大的负载,该方案特别适合规模较大的OpenStack环境控制节点部署Neutron-server服务,只负责通过Neutron-server响应的API请求。(水平扩展)
- 网络节点部署的服务包括Core Plugin的代理和se rvice Plugin的代理。将所有的代理从上述控制节点分离出来,部署到独立的网络节点上,由独立的网络节点实现数据的交换,路由以及负责均衡等高级网络服务。
五、Linux虚拟网络
5.1 linux 虚拟网络类型
-
linux虚拟网络主要包括以下5种
-
local
local 网络与其他网络和节点隔离。local 网络中的 instance 只能与位于同一节点上同一网络的 instance 通信,local 网络主要用于单机测试。
-
Flat
Flat网络,相当于Local网络的Linux Bridge连接到一个物理网卡,该网络中的instance能与同网络的instance通信,且可以跨多个节点,实际场景也很少用到。
-
VLAN
vlan 网络是具有 802.1q tagging 的网络。vlan 是一个二层的广播域,同一 vlan 中的 instance(实例) 可以通信,不同 vlan 只能通过 router 通信。vlan 网络可跨节点,是应用最广泛的网络类型。
-
VXLAN
VXLAN网络,是基于隧道技术的 overlay 网络,通过唯一的VNI区分于其他 vxlan 网络。vxlan中数据包通过VNI封装成UPD包进行传输,因为二层的包通过封装在三层传输,能够克服vlan和物理网络基础设施的限制
-
GRE
gre 是与 vxlan 类似的一种 overlay 网络。主要区别在于使用 IP 包而非 UDP 进行封装。
5.2 小结
- 不同 network 之间在二层上是隔离的,但可以借助路由器进行不通网络空间的通信(三层)
六、Linux Bridge 代理
6.1 Linux Bridge概述
- Linux Bridge是成熟可靠的Neutron二层网络虚拟化技术,支持Flat,VLAN,VXLAN,Local四种网络类型,不支持GRE
- 可以将一台主机上的多个网卡桥接起来,充当一台交换机,可以桥接物理网卡,又可以是虚拟网卡,用于桥接虚拟机网卡的是Tap接口,这是一个虚拟出来的网络设备,称为Tap设备,作为网桥的一个端口,Tap接口在逻辑上与物理接口具有相同的功能,可以接受和发送数据包。
6.2 Linux Bridge代理
-
如果选择Linux Bridge代理,在计算机节点上数据包从虚拟机发送到物理网卡需要经过以下设备:
-
Tap接口(Tap interface)
用于网桥虚拟机的网卡,命令为tapXXX
-
Linux网桥(Linux Bridge)
作为二层交换机,命令为brqXXXX
-
VLAN接口(VLAN interface)
在VLAN网络中用于连接网桥,命名为sthx.y(ethx为物理网卡,y为VLAN ID)
-
VXLAN接口(VXLAN interface)
在VXLAN网络中用于连接网桥,命名为vxlan-z(z是VNID)
-
物理网络接口:用于连接到物理网络
-
VLAN网络有2个VLAN有自己的网桥,实现了基于VLAN的接口,如果改用VXLAN,其中的VLAN接口换成VXLAN接口,可以命令为VXLAN-101和VXLAN-102.
七、Open vSwitch代理
7.1 Open vSwitch简介
- Open vSwith(简称OVS)具有几种管控功能,而且性能更加优化,支持更大的功能,目前Openstack领域称为主流,它支持Flat,VLAN,VXLAN,Local,GRE和GENEVE等所有网络类型。与linux bridge相比最明显的是支持更多的网络类型
7.2 Open vSwitch设备类型
-
Tap设备
用于网桥连接虚拟机网卡。
-
Linux网桥
桥接网卡接口(包括虚拟接口)
-
VETH对(VETH Pair)
直接相连一对虚拟网络接口,发送VETH对一段的数据包,由另一端接收。在Open vSwith中,它用来连接两个虚拟网桥
-
OVS网桥
Open vSwith的核心设备,包括一个OVS集成网桥和一个OVS物理连接网桥。所有在计算节点上运行的许牛机连接到集成网桥,Neutron通过配置集成网桥上的端口来实现虚拟机网络隔离。物理连接网络直接连接到物理网卡。这两个OVS网络通过一个VETH对连接,Open vSwith的每个网桥都可以看作成是一个真正的交换机,可以支持VLAN
7.3 数据包流程
-
如果选择Open vSwith代理,在计算节点上的数据包从虚拟机发送到物理网卡需要依次经过以下设备。
① Tap接口(Tap interface):用于网桥虚拟机的网卡,命令为tapXXX
② Linux网桥(Linux Bridge):与Linux Bridge不同,命令为qbrXXXX(其中编号xxx与tapXXX中的x相同)。
③ VETH对:两端分别命名为qvbxxx和qvoxxx(其中编号xxx与tapXXX中的xxx保持一致)
④ OVS集成网桥:命名为br-int
⑤ OVS PATCH端口:两端分别命名为int-br-ethx 和 phy-br-ethx(x 为物理网卡名称编号)
⑥ OVS物理连接网桥:分为两种类型,在Flat和VLAN网络使用OVS提供者网桥(Provider Bridge),命名为Br-ethx(x为物理网卡名称编号);在VXLAN,GRE和GENEVE叠加网络中使用OVS隧道网桥(Tunnel Bridge),命名为Br-tun另外在Local网络中不需要任何OVS物理连接网桥。
⑦ 物理网络接口:用于连接到物理网络,命名为ethx(x为物理网卡的名称编号)
7.4 逻辑结构
-
与Linux Bridge代理不同,Open vSwith代理不通过Eth1.101,Eth1.102等VLAN接口隔离不同的VLAN
-
所有的虚拟机都连接到同一个网桥br-int, Open vSwith通过配置br-int和br-ethx上的流程规则(Flow rule)来进行VLAN转换,进而实现VLAN之间隔离
-
例如:
内部标签分别为1和2,而物理网络的VLAN标签是101和102,当br-eth1网桥上的phy-br-eth1端口收到一个VLAN1标记的数据包时,会将其中的VLAN1转成为VLAN101;当br-int网桥上的int-br-eth1端口收到一个VLAN101标记的数据包时,会将其中的VLAN101转成为VLAN1
八、namespace
8.1 namespace概述
- namespace (名词空间)可以创建一个完全独立的全新网络环境,包括独立的网络接口,路由表,ARP表,IP地址表,iptables 或 ebtables等,与网络有关的 组件都是独立的。(每个名称空间都由独自的网络栈)
- 它能提供名称空间内运行的功能,后台进程可以运行不同名称空间内的相同端口,用户还可以虚拟出一块网卡
- namespace是基于router在neutron中的UUID来命名的
8.2 namespace 功能
- 二层网络通过Vlan对租户网络进行隔离
- 三层网络是通过 namespace进行隔离,每个 namespace都是自己独立网络栈,包括路由表,防火墙规则,网络接口等
- Neutron为每个 namespace提供DHCP和路由服务,所以各个租户之间的网络地址允许重叠,因为他们在不同的namespace中进行抽象
8.3 DHCP 获取
-
在创建 instance 时,Neutron 会为其分配一个 port,里面包含了 MAC 和 IP 地址信息。这些信息会同步更新到 dnsmasq 的 host 文件
-
同时 nova-compute 会设置虚机 VIF 的 MAC 地址
-
instance 获取 IP 的过程如下:
vm 开机启动,发出 DHCPDISCOVER 广播,该广播消息在整个 net 中都可以被收到。
广播到达 veth tap19a0ed3d-fe(dhcp端口),然后传送给 veth pair 的另一端 ns-19a0ed3d-fe。dnsmasq 在它上面监听,dnsmasq 检查其 host 文件,发现有对应项,于是dnsmasq 以 DHCPOFFER 消息将 IP、子网掩码、地址租用期限等信息发送给 vm。
vm 发送 DHCPREQUEST 消息确认接受此 DHCPOFFER。
dnsmasq 发送确认消息 DHCPACK,整个过程结束。
8.4 涉及的Linux网络技术
-
bridge 网桥
Linux中用于表示一个能连接不同网络设备的虚拟设备,linux中传统实现的网桥类似一个hub设备,而ovs管理的网桥一般类似交换机。
-
br-int 综合网桥
常用于表示实现主要内部网络功能的网桥
-
br-ex 外部网桥
通常表示负责跟外部网络通信的网桥
-
GRE
一种通过封装来实现隧道的方式。在openstack中一般是基于L3的gre,即original pkt/GRE/IP/Ethernet
-
VETH对
虚拟ethernet接口,通常以pair(对)的方式出现,一端发出的网包,会被另一端接收,可以形成两个网桥之间的通道
-
QVB
neutron veth, Linux Bridge-side
-
QVO
neutron veth, OVS-side
-
TAP设备
模拟一个二层的网络设备,可以接受和发送二层网络数据包
-
TUN设备
模拟一个三层的网络设备,可以接受和发送三层网包
-
iptables
安全策略的防火墙
-
Vlan
虚拟局域网,同个物理局域网下用标签实现隔离,可用标签范围 1-4094
-
VXLAN
利用 UDP 协议作为底层传输协议的 Overlay 实现。一般认为作为 VLan 技术的延伸或替代者。(隧道技术)
8.5 常用命令
-
ip netns add
添加新的网络名词空间
-
ip netns list
查看所有的网络名词空间
-
ip netns exec nets
进入指定的网络名词空间
-
ip netns exec netns0 ip address add 10.0.1.1/24 eth0
为虚拟网络环境netns0 的 eth0 接口添加IP
8.6 namespace 实现DHCP服务隔离
-
通过网络名称空间为每个网络提供独立的DHCP和路由服务,从而允许项目创建重叠的网络,如果没有这种隔离机制,网络就不能重叠,这样就失去了很多灵活性。
-
每个dnsmasq 进程都位于独立的网络名称空间
-
以创建FLAT网络为例:
Neutron 自动新建该网络对应的网桥 brqxxx, 以及DHCP的Tap设备 tapxxx. 物理主机本身也有一个网络名称空间,称为 root, 拥有一个回环设备(Loopback Device) 如果DHCP的Tap虚拟接口放置到 qdhcp-xxx名称空间,该Tap虚拟接口将无法直接与root 名称空间中的网桥设备brqxxx 连接。为此,Neutron 使用VETH对 来解决这个问题,添加VETH对 tapxxx与ns-xxx 让 qdhcp-xxx 连接带 brqxxx。
九、Neutron 路由器
-
Neutron 路由器是一个三层的(L3)网络的抽象,模拟物理路由器,为用户提供路由,NAT等服务
-
在 Openstack网络中,不用子网之间的通信需要路由器,项目网络与外部网络之间的通信更需要路由器。
-
Neutron提供虚拟路由器,也支持物理路由器。
-
例如
两个隔离的VLAN网络之间需要实现通信,可以通过物理路由器实现,由物理路由器提供相应的IP路由表,确保两个IP子网之间通信,将连个VLAN网络中的虚拟机默认网关分别设置为路由器的接口A 和 B的IP地址
VLAN 中的虚拟机要与VLAN B中的虚拟机通信时,数据包将通过VLAN A中的物理网卡到达路由器,有物理路由器转发到VLAN B中的物理网卡,在到目的的虚拟机
-
Neutron的虚拟路由器使用软件模拟物理路由器,路由实现机制相同
-
Neutron的路由服务由L3代理服务
十、FWaaS
10.1 FWaaS概述
-
FWaaS是一种基于 Neutron L3 Agent 的虚拟防火墙,是Neutron的一个高级服务
通过他,Openstack 可以将防火墙应用到项目(租户),路由器,路由器端口和讯机端口,在子网边界上对三层和四层的流量进行过滤。
-
传统的网络中的防火墙一般在网关上,用来控制子网之间的访问
Fwaas 的原理也是一样,在Neutron 路由上应用防火墙规则,控制进出项目(租户)网络的数据
-
防火墙必须关联某个策略(Policy)。策略是规则(rule)的集合,防火墙会按顺序策略中的每一条规则。规则是访问控制的规则,由原目的子网IP,源目的端口,协议,运行(Allow)和拒绝(Deny)动作组成。
-
安全组是最早的网络安全模块,其应用对象是虚拟网卡,计算机节点上通过 iptables规则控制进出实例寻网卡的流量。
-
Fwaas的应用对象是虚拟路由器,可以在安全组之前控制下从外部传入的流量,但是对于通一个子网内的流量不做限制
-
安全组保护的是实例,而Fwaas 保护的是子网,两种互为补充,通常部署Fwaas 和安全组来实现双重防护
10.2 FWaaS三个重要概念
-
① firewall
租户能够创建和管理的逻辑防火墙资源。firewall必须管理某个policy,因此必须先创建policy
-
② policy
policy是rule的集合,firewall会按顺序应用policy中的每一条Rule
-
③ rule
Rule是访问控制的规则,由源、目的的子网IP、源、目的的端口、协议、allow或deny动作组成
10.3 FWaaS版本
-
FwaaS V1
传统防火墙方案,对路由器通过保护,将防火墙应用到路由器时,改路由器的所有内部端口受到保护,其中虚拟机2 进出的数据流量都会得到防火墙保护。
-
FwaaS V2
提供了更具细粒度的安全服务,防火墙的概念防火墙(firewall group)代替,一个防火墙包括两项策略:入口策略(ingress policy)和出口策略(egress policy).
-
防火墙组不再用于路由器级(路由器全部端口)而是路由器端口,注意 FwaasV2的配置仅提供命令行工具,不支持 dashboard图形页面
十一、ML2插件
11.1 ML2插件概述
- L2指的是七层网络协议中的第二层数据链路层,它的传输是以MAC地址为基础
- ML2插件是在openstack H版本实现的核心插件,用于替代原有的linux bridge插件和open vswitch插件,ML2提供了一个框架,允许在openstack网络中使用多种Layer2网络技术,不同的节点可以使用不通的网络实现机制
- ML2对二层网络进行抽象和建模。引入了type driver(类型驱动)和mechansim driver(机制驱动)。这两类driver解耦了neutron所支持的网络类型与访问这些网络类型的机制。
- ML2具备非常好的弹性,易于扩展,能够灵活支持多种type和mechanism(机制)
11.2 ML2的两种驱动
-
type driver(类型驱动)
Neutron 支持的每一种网络类型都由一个相应的ML2类型驱动,类型驱动负责维护网络类型的状态,执行验证、创建网络等工作
目前neutron已经实现的网络类型包括: flat、vlan、local、vxlan、gre
-
mechansim driver(机制驱动)
Neutron支持得每一种网络机制都由一个对应得ML2机制驱动。机制驱动负责获取类型驱动维护得网络状态,并确保在相应得网络设备(物理、虚拟)上正确实现这些状态
-
示例
- 类型驱动VLAN,机制驱动为Linux Bridge,创建VLAN10
- 那么VLAN的类型驱动会确保将VLAN10的信息保存到Neutron数据库中,包括网络的名称,VLAN ID等
- 而Linux Bridge机制驱动会确保各个节点上的LinuxBridge代理在物理网卡上创建ID为10的VLAN设备和Bridge设备,并将二者进行桥接
十二、L3代理服务
12.1 L3代理服务概述
- 在 Neutron中L3代理( neutron-l3 agent)具有相当重要的地位。他的主要功能与特点如下:
- 允许用户创建用于连接二层的虚拟路由
- 实现三层数据转发,并且通过iptables提供地址转换(SNAT、DNAT)、浮动地址(Floating IP)和安全组(security group)功能
- 利用namespace,可以创建多个具有重合IP地址段的虚拟路由器,如此每个虚拟路由器都具有自己的名称空间
- L3代理可以部署在控制节点或者网络节点上
12.2 一般实用场景
- 创建多个由Neutron管理的tenant network 再通过虚拟路由器连接至公共网络,这样仅需要一个网桥连接公共网络,并且neutron可以管理到tenant network(租户网络),在这种场景下,作为虚拟路由器的管理者 L3代理是必不可少的
12.3 路由
- L3代理提供的虚拟机路由器通过虚拟接口连接到子网,一个子网一个接口,该接口的地址是该子网的网关地址,虚拟机的IP地址栈如果发现数据包的目的IP地址不在本网段,则会将其发到路由器上对应其子网的虚拟机接口,然后,虚拟机路由器根据配置的路由规则和目的IP地址将包转发到目的的端口发出。
- L3代理会将每个路由器创建一个网络名称空间,通过VETH对 和Tap相连,然后将网关IP配置在位于名称空间的VETH接口上,这样就能够提供路由,网络节点如果不支持linux名称空间,则中能运行一个虚拟路由器。
- 主要用于处理三层网络通信
12.4 网络重叠
- 在云环境下用户可以按照自己的规划常见网络,不同的项目(租户)的网络IP地址可能回重叠,为实现此功能,L3代理使用linux网络名称空间来提高隔离的转发上下文,隔离不tom农民工项目(租户)的网络,每个L3代理运行在一个名称空间中。
12.5 源地址转换
- L3代理通过在 iptables表中增加POSTROUTING 链来实现源地址转换,即内网计算机访问外网时,发起访问的内网 IP地址(源IP地址) 转换为外网网关的IP地址
- 这种观念让虚拟机实例能够之际访问外网。不过外网计算机还不能直接访问虚拟机实例,因为实例没有外网IP地址,而目的地址转化就能解决这一问题。
12.5 安全组
-
安全组定义了那些进入的网络流量能被转发给虚拟机实例
-
安全组包含一些防火墙策略,称为安全组规则(Security Group rule),可以定义若干个安全组。每个安全组可以头若千调规则。可以给每个实例绑定若干个安全组。
-
安全组的原理
通过 iptables 对所在的计算节点的网络流量进行过滤。安全组规则作用在实例的端口上,具体是在连接实例的计算节点上的 linux网桥上实施
12.6 VIP(Virtual IP)
- 与一般地址不一样,VIP不对应某一具体忘了设备,可以根据实际需要在不同的忘了设备做迁移,这样不管后台设备如何变化,VIP提供的地址始终是不变的
12.7 VRRP
- 计算机网络协议,它能够自动选择可用的路由路径,从而提高路由路径的可用性和稳定性。L3代理的HA(高可用)就是基于VRRP实现的
小结:项目(租户)网络连接到 Neutron路由器,通常将路由器作为默认网关,当路由器收到实例的数据包并将其转发到外网时。路由器会将数据包的源地址修改成自己的外网地址,确保数据包转发到外网,并能够从外网返回,路由器修改返回的数据包,并转发之间发起访问的实例。
12.5 安全组
-
安全组定义了那些进入的网络流量能被转发给虚拟机实例
-
安全组包含一些防火墙策略,称为安全组规则(Security Group rule),可以定义若干个安全组。每个安全组可以头若千调规则。可以给每个实例绑定若干个安全组。
-
安全组的原理
通过 iptables 对所在的计算节点的网络流量进行过滤。安全组规则作用在实例的端口上,具体是在连接实例的计算节点上的 linux网桥上实施
12.6 VIP(Virtual IP)
- 与一般地址不一样,VIP不对应某一具体忘了设备,可以根据实际需要在不同的忘了设备做迁移,这样不管后台设备如何变化,VIP提供的地址始终是不变的
12.7 VRRP
- 计算机网络协议,它能够自动选择可用的路由路径,从而提高路由路径的可用性和稳定性。L3代理的HA(高可用)就是基于VRRP实现的
小结:项目(租户)网络连接到 Neutron路由器,通常将路由器作为默认网关,当路由器收到实例的数据包并将其转发到外网时。路由器会将数据包的源地址修改成自己的外网地址,确保数据包转发到外网,并能够从外网返回,路由器修改返回的数据包,并转发之间发起访问的实例。
总结
Neutron 内容比较繁多,比较难整理,之后会持续更新,之后会尽量分成多篇博客进行详解。