Neutron在OpenStack中的位置
可以为虚拟机或者 OpenStack 组件提供网络服务,(由 Nova-network 独立出来的)随着需承载业务的能力的增长作为 Nova 子组件无法满足。
过程:neutron-server 接收网络请求,会将其记录到 DB 中,调用不同的Agent,Agent 通过不同的驱动实现网络服务。
Neutron 架构
网络结构 | 功能 |
---|
Management Network | 提供OpenStack组件间的内部通信,该网络内的IP地址只有数据中心内部可达。 |
Data Network | 提供云内部VM间的数据通信,该网络内的IP地址取决于使用的网络插件程序。 |
External Network | 提供VM与Internet的通信,Internet上的任何人都可以访问该网络内的IP地址。 |
API Network | 为租户提供包括Networking API在内的所有OpenStack API,可被Internet上任何人访问。 与External Network基本一致,甚至可以创建一个external network子网作为该网络。 |
Neutron 组件
模块 | 功能 | 一般部署位置 |
---|
Neutron-server & plugin | 接收REST请求,向keystone鉴权,与数据库交互,提供API功能 | 控制节点 |
Neutron database | Neutron数据库,管理数据 | 控制节点 |
L2 agent(ovs-agent) | 连接网络端口,处理数据包 | 计算节点 |
Dhcp-agent | 提供DHCP服务 | 网络节点 |
L3-agent | 为客户机访问外部网络提供3层转发服务 | 网络节点 |
RPC(Message Queue) | 消息队列,用于Plugin与agent之间的通信 | 所有节点 |
Neutron Server机制
Neutron Server - ML2/L2
每天都有技术公开课分享【免费订阅,永久学习】学习地址:
C/C++Linux服务器开发/后台架构师【学习视频教程】
LinuxC/C++服务器开发/架构师 面试题、学习资料、教学视频和学习路线图(资料包括C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis、MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等),或点击这里加qun免费领取,关注我持续更新哦! !
【免费订阅,永久学习】学习地址:
Dpdk/网络协议栈/vpp/OvS/DDos/NFV/虚拟化/高性能专家-学习视频教程-腾讯课堂
Neutron L2 资源对象
网络虚拟化实现原理
-
在Linux-br上配置iptable规则,实现安全组。
-
在OVS网桥上配置流表规则,为不同端口配置不同的Vlan Tag,实现VLAN隔离。
-
为网卡命名,Neutron将虚拟网络的流量到处网卡。
Neutron服务与管理对象
Neutron对象 - Network
Neutron对象 - Subnet
Neutron对象 - Port
Neutron对象 - Security Group
-
Security group 安全组
-
Security Group主要是通过Iptables实现,能够对进出的流量按照协议、端口进行限制,能防止不知名协议,端口流量的攻击;
-
安全组由L2 agent实现,如neutron-openvswitch-agent会将安全组规则转换成IPTables规则,一般发生在计算节点;
-
在Compute节点上引入了qbr*这样的Linux传统bridge(iptables规则目前无法加载到直接挂在到ovs的tap设备上)
Neutron模块 - 安全组
Neutron模块 - OVS-agent
Neutron模块 - DHCP-agent
-
Neutron-dhcp-agent
-
Neutron-server负责处理外部的REST API请求,将数据刷新到DB中。
-
当操作network、subnet、port等对象时,neutron-server会发生rpc消息给dhcp-agent,通知其做进一步处理。
-
dhcp-agent接收到rpc消息后,调用driver进行实施,包括创建dhcp port、命名空间、tap设备、路由信息,并启动dnsmasq进程提供ip地址分配服务。
分布式DHCP实现背景:
-
级联层与被级联层的逻辑与物理分离。
-
网络节点命名空间过多(性能问题)
集中式DHCP与分布式DHCP比较:
-
集中式DHCP中network下的mac,ip信息在几个集中式的dhcp-agent下全量存有; 分布式条件下dhcp-agent仅存有network下在当前host的mac,ip对应关系。
-
集中式DHCP的neutron port与tap口一一对应; 分布式条件下则为一对多。
Neutron模块 - Metadata
-
为租户虚拟机获取自己定义数据提供网络通道。
-
提供两种方式:DHCP和Router。
Neutron L2 组网及二层特性
Neutron 二层组网
Neutron模块 - EVS
Neutron VLAN网络隔离
端口QoS
Neutron模块 - ServiceChain
Neutron模块 - SRIOV
Neutron部署模型
-
Neutron部署模型
-
Controller
-
DHCP
-
neutron-dhcp-agent
-
neutron-metadata-agent
-
Compute
-
Router
-
neutron-l3-agent
-
neutron-metering-agent
-
CPS在FS版本中承担服务安装部署的任务。
Neutron L2 典型操作
1. 创建网络
租户创建一个network
neutron net-create <net-name> --provider:network_type=vlan --provider:physical_network=physnet1
2. 创建子网
租户通过指定网络关联一个子网,可以关联多个子网
neutron subnet-create < net-name > 100.100.100.0/24(CIDR)
3. 创建虚拟机并附着网络
租户启动虚拟机并且指定一个vNIC连接到网络。该步骤有两种方式 (1)租户创建port,租户在创建虚拟机时指定network和port
nova boot --image <image_id> --flavor 1 --nic net-id=<net_id> <VM_name>
(2)租户在创建虚拟机是仅指定network, Nova动态创建port
nova boot --image <image_id> --flavor 1 --nic port-id=<port_id> <VM_name>
4. 删除虚拟机
租户删除虚拟机,Nova连接到Neutron并删除端口,被分配的IP地址回收到有效IP地址池。
nova delete <vm-id>
5. 删除端口
如果是租户创建了port,则需要删除该网络上的所有端口。虚拟机删除后,对应的端口也已经删除。
neutron port-delete <port_id>
6. 删除网络
租户删除网络,Neutron同时会自动删除关联在该网络上的子网。
neutron net-delete <net_id>
Neutron L3 基础概念
-
Neutron L3 作用:
-
vRouter分为两种模式:集中式、分布式
Neutron L3 - 集中式路由
集中式路由——概念
集中式路由——流量走向(东西向)
集中式路由——流量走向(南北向)
Neutron L3 - 分布式路由
分布式路由——概念
分布式路由——流量走向(同节点东西向)
分布式路由——流量走向(跨节点东西向)
分布式路由——流量走向(南北向)
Neutron L3 - 浮动IP
浮动IP——概念
访问外网: 1.绑定弹性IP 2.启动SNAT,路由器开启SNAT
浮动IP——公有云场景
为何公有云使用NGFW完成Float IP特性(两次NAT)?:
-
需要借用专业防火墙设备提升Float IP通信的性能和转换能力。
-
在使用Float IP的同时,可以使用NGFW的防火墙特性。
原文链接: https://www.cnblogs.com/Skybiubiu/p/14719271.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)