OpenStack neutron vlan 模式下的网络包流向
时间:2015-01-15 18:09:41
1、什么是Neutron?
Neutron是OpenStack的network project ,是NaaS(networking-as-a-service)专题,负责网络虚拟化,开始于OpenStack的Folsom版,取名为Quantum,在Havana版本改名为Neutron。Neutron并非提供特定的网络功能,而是为了管理网络,提供网络服务,你可以使用不同厂商开发的插件,在同一个架构中可以同时拥有多种网络模式(vlan、gre、vxlan等),当然前提是使用ml2插件。
2、为什么是Neutron?
1、云租户可以按照自己的意愿进行网络设计
2、允许各租户添加各种网络插件
3、Neutron提供丰富的网络服务,诸如LB-aas,firewall-aas等
3、Neutron当中vlan模式的网络包流向

这张图主要想说明三种场景,第一:位于不同物理机上的虚拟机与虚拟机的通信;第二:位于同一物理机上的虚拟机与虚拟机之间的通信;第三:虚拟机与外网的通信。
不同物理机上的虚拟机之间的通信:
vlan模式下的网络特点:每一次的通信多需要进行vlan号和tag号的相互转换,其中将vlan号转换为tag号是在int-br-xxx,将tag号转换为vlan号是在phy-br-xxx;int-br-xxx和phy-br-xxx是一对veth设备,其中int-br-xxx位于桥br-int上,phy-br-xxx位于桥br-xxx上;
包从VM1出来到达compute1的网卡,已经将tag转换为vlan号,因此包带着vlan号进入交换机,寻找相应路径进入compute2经过桥br-int将vlan号转换为tag号,从而进入虚拟机VM2;
那么在这个过程当中包经过了哪些设备?
查看虚拟机的ip
nova list|grep vnc-test
| 187949aa-0c6f-47d9-b9b3-317e8eea7897 | vnc-test | ACTIVE | - | Running | net=10.0.0.231 |
根据虚拟机的ip查找port id:
neutron port-list|grep 10.0.0.231
| b4396540-8b7f-4386-9db5-3e1660a7ff48 | | fa:16:3e:e0:1b:58 | {"subnet_id": "5d9500ef-2f11-4455-9398-478026939659", "ip_address": "10.0.0.231"} |

第一个字段便是port id(b4396540-8b7f-4386-9db5-3e1660a7ff48),tapxxx、qvbxxx、qbrxxx通过brctl进行相关联,可以使用命令在相应的计算节点上查看:
brctl show
bridge name bridge id STP enabled interfaces
qbrb4396540-8b 8000.9afa4f3bb650 no qvbb4396540-8b
tapb4396540-8b
eth2是数据网络(虚拟机与虚拟机之间通信的网络),其中桥br-eth2与eth2进行桥接,它们可配ip也可不配;
当包从交换机到达eth2进入br-eth2(ovs-vsctl add-port br-eth2 eth2,往桥br-eth2添加端口eth2),经过phy-br-eth2转发到int-br-eth2,在这里将vlan号转换为tag号(一个vlan号对应一个tag号),从而包到达虚拟机;
同一物理机上的虚拟机之间的通信:
此场景与上一场景唯一的区别在于无需通过交换机。
虚拟机与外网的通信:
包从VM1出来到达交换机(在到达compute1的网卡时已经将tag号转换为vlan号),从交换机到达网络节点,经过namespace,在经过网络节点的外网网卡,与外网进行通信。
详细解释:
VM1(虚拟机)->eth0(VM1虚拟机的网卡)->br-int->br-eth2->eth2->switch->eth2(网络节点网卡)->namespace(br-ethx(包从phy-br-eth2端口转发到int-br-eth2(在这里将vlan号转换为tag号))->br-int(qr-xxx)->br-ex(qg-xxx))->网络节点的外网网卡;

使用如下命令查看namespace:
ip netns
使用如下命令进入namespace,xxxx代表ip netns执行结果的内容:
ip netns exec xxxx bash
4、结语
这是在Icehouse版本上,Juno版本,已将qr-xxx和qg-xxx分隔开来(前提是使用dvr)。neutron_packet_flows-notes-handout这篇文章有必要去读读(对于刚开始接触OpenStack Neutron这块的人员),该文件我已上传。
相关链接:https://wiki.openstack.org/wiki/Neutron
OpenStack neutron vlan 模式下的网络包流向的更多相关文章
- VLAN 模式下的 OpenStack 管理 vSphere 集群方案
本文不合适转载,只用于自我学习. 关于为什么要用OpenStack 管理 vSphere 集群,原因可以有很多,特别是一些传统企业,VMware 的使用还是很普遍的,用 OpenStack 纳管至少会 ...
- VMware NAT模式下设置网络
一.虚拟机NAT模式原理 NAT模式在VMware下又称VMnet8.在这种模式下,宿主机有两块网卡,一块是真实的物理网卡(即NAT device),连接Network:一块是 VMware Netw ...
- 1_NAT模式和桥接模式下的网络配置
相信当你看到这篇文章时,你一定对linux的桥接模式和NAT模式有所了解,所以你应该是能看懂这篇文件的,希望对你有所帮助,figthing ! 一.桥接模式:虚拟机和主机是连在同一个路由下的. ...
- nat模式下更改网络环境, 虚拟机中Linux无法上网的问题
出现的问题: 1.ifconfig -a 命令下会出现eth0信息中无ip地址等等信息: 2.无法ping通baidu,也就是无法上网: 3.ping 8.8.8.8 提示 connect:netwo ...
- Linux系统NAT模式下设置网络网关
1.配置Vm网络编辑器 2.配置固定IP地址 命令:vi /etc/sysconfig/network-scripts/ifcfg-ens33 #下面内容直接复制进去,如果有重复的可以去除 TYPE= ...
- 深入理解 Neutron -- OpenStack 网络实现(2):VLAN 模式
问题导读 1.br-int.br-ethx的作用是什么?2.安全组策略是如何实现的?3.VLAN 模式与GRE模式有哪些不同点?流量上有哪些不同?4.L3 agent实现了什么功能? 接上篇深入理解 ...
- openstack项目【day24】:VLAN模式
本节内容 一 二层基础知识 1.1 vlan介绍 1.1.1:vlan的含义 1.1.2:vlan的类型 1.1.3:vlan的不足 1.2 : 二层交换的基础知识 1.2.1:二层交换机最基本的功能 ...
- VLAN模式
一 二层基础知识 1.1 vlan介绍 本小节重点: vlan的含义 vlan的类型 交换机端口类型 vlan的不足 1.1.1:vlan的含义 局域网LAN的发展是VLAN产生的基础,因而先介绍一下 ...
- Openstack Neutron:三层技术和实现
目录 - 1.Neutron 三层技术简介 - 2.集中式router - 1.在节点上安装L3 agent - 2.配置外部网络 - 3.通过CLI或者Horizon 来创建路由 - 4.连接租户网 ...
随机推荐
- 创建支持依赖注入、Serilog 日志和 AppSettings 的 .NET 5 控制台应用
翻译自 Mohamad Lawand 2021年3月24日的文章 <.NET 5 Console App with Dependency Injection, Serilog Logging, ...
- 如何自己设计一个类似dubbo的rpc框架?
(1)上来你的服务就得去注册中心注册吧,你是不是得有个注册中心,保留各个服务的信息,可以用zookeeper来做,对吧 (2)然后你的消费者需要去注册中心拿对应的服务信息吧,对吧,而且每个服务可能会存 ...
- Oracle-buffer cache过小导致SQL执行时间长
一.问题:客户反馈在生产库和测试库执行相同SQL,测试库执行比生产库慢一倍 问题摆在这里,需要进行分析? 啥??? 版本11.2.0.4,都是单实例,主机系统硬件配置差不多. 二.对比SQL的执行效率 ...
- Day09_45_Set集合_SortedSet02
SortedSet * TreeSet是SortedSet接口的实现类,TreeSet底层是一个TreeMap,相当于TreeMap中的key. * SortedSet集合是如何实现自动排序的呢? - ...
- AI数学基础之:P、NP、NPC问题
目录 简介 P问题 NP问题 NP问题的例子 有些NP问题很难解决 NPC问题 NP-hard P和NP问题 简介 我们在做组合优化的时候需要去解决各种问题,根据问题的复杂度不同可以分为P.NP.NP ...
- 基于MATLAB的手写公式识别(转折)
2021-03-29 21:11:00 很难说自己是不是上当受骗了,老师明明说利用MATLAB进行手写体(记得是手写体,再不济印刷体)的识别是轻而易举的. 平时我也十分喜欢MATLAB这一操作系统,认 ...
- [重要更新]微信小程序登录、用户信息相关接口调整:使用 wx.getUserProfile 取代 wx.getUserInfo
2021年2月24日,微信官方团队发布了一个调整通知:<小程序登录.用户信息相关接口调整说明>,公告明确从4月13日起,所有发布的小程序将无法使用 wx.getUserInfo 接口(JS ...
- 1. Robot Framework入门
RF定义: 通用型的 自动测试框架, 绝大部分的软件的的自动化系统都可以采用它. 特点: 测试数据文件(Test Data)对应一个个的测试用例.测试数据文件里面使用的功能小模块叫关键字,由测试库(T ...
- git基于master创建本地新分支
应用场景:开发过程中经常用到从master分支copy一个本地分支作为开发分支 步骤: 1.切换到被copy的分支(master),并且从远端拉取最新版本 $git checkout master $ ...
- Portswigger web security academy:Cross-site request forgery (CSRF)
Portswigger web security academy:Cross-site request forgery (CSRF) 目录 Portswigger web security acade ...