探索 OpenStack 之(8):Neutron 深入探索之 OVS + GRE 之 完整网络流程 篇
前两篇博文分别研究了Compute节点和Neutron节点内部的网络架构。本文通过一些典型流程案例来分析具体网络流程过程。
0. 环境
同 学习OpenStack之(7):Neutron 深入学习之 OVS + GRE 之 Neutron节点篇 中所使用的环境。

简单总结一下:
Compute 节点上由Neutron-OVS-Agent负责:
- br-int:每个虚机都通过一个Linux brige连到该OVS桥上
- br-tun:转化网络packet中的VLAN ID 和 Tunnel ID
- GRE tunnel:虚拟GRE通道
Neutron节点上:
- br-tun/br-int:同Compute节点,由Neutron-OVS-Agent负责
- br-ex:连接物理网卡,用于和外网通信
- Network namespace:用于tenant 网络DHCP服务的qDHCP由Neutron-DHCP-Agent负责,和用于网络间routing的qRouter由Neutron-L3-Agent负责
2. 几个典型流程案例
2.1 流程1: 同一个host上同一个子网内虚机之间的通信过程
因为br-int是个虚拟的二层交换机,所以同一个host上的同一个子网内的虚机之间的通信只是经过 br-int 桥,不需要经过 br-tun 桥。如下图中红线所示:

2.2 流程2: 不同主机上同一个子网内的虚机之间的通信过程

过程:
1. 从左边的虚机1出发的packet,经过Linux bridge到达br-int,被打上 VLAN ID Tag
2. 到达br-tun,将VLAN ID转化为Tunnel ID,从GRE Tunnel 发出,到达另一个compute节点
3. 在另一个compute节点上经过相反的过程,到达右边的虚机
注:本配置待不久之后的实验验证。
2.3 流程3: 虚机访问外网

1. Packet离开虚机,经过Linux bridge, 到达br-int,打上 VLAN ID Tag
2. 达到 br-tun,将 VLAN ID转化为 Tunnel ID
3. 从物理网卡进入GRE通道
4. 从GRE通道达到 Neutron 节点的网卡
5. 达到跟物理网卡相连的br-tun,将 Tunnel ID 转化为 VLAN ID
6. 达到 br-int,再达到 router,router的NAT 表 将 fixed IP 地址 转化为 floatiing IP 地址,再被route 到br-ex
7. 从br-ex相连的物理网卡上出去到外网
外网IP访问虚机是个相反的过程。
2.4 流程4:虚机发送DHCP请求

过程:
1. 虚机的packet -> br-int -> br-tun -> GRE Tunnel -> eth2 ------>eth2->br-tun->br-int->qDHCP
2. qDHCP返回其fixed IP地址,原路返回
例如:在虚机(IP为10.0.22.202)启动过程中,DHCP Server (10.0.22.201)所收到的请求及其回复:
root@network:/home/s1# ip netns exec qdhcp-d24963da--481e-adf5-fe033d6e0b4e tcpdump listening on tap15865c29-9b, link-type EN10MB (Ethernet), capture size bytes //dnsmasq在此TAP设备上监听
07:16:56.686349 IP (tos 0x0, ttl 64, id 41569, offset 0, flags [DF], proto UDP (17), length 287)
10.0.22.202.bootpc > 10.0.22.201.bootps: [udp sum ok] BOOTP/DHCP, Request from fa:16:3e:19:65:62 (oui Unknown), length 259, xid 0xab1b9011, secs 118, Flags [none] (0x0000)
Client-IP 10.0.22.202 //虚机eth0的IP地址
Client-Ethernet-Address fa:16:3e:19:65:62 (oui Unknown)
Vendor-rfc1048 Extensions
Magic Cookie 0x63825363
DHCP-Message Option 53, length 1: Release
Client-ID Option 61, length 7: ether fa:16:3e:19:65:62 //虚机eth0的Mac地址
Server-ID Option 54, length 4: 10.0.22.201 //DHCP Server IP地址
2.5 不同tenant内虚机之间的通信
Neutron Tenant网络是为tenant中的虚机之间的通信。如果需要不同tenant内的虚机之间通信,需要在两个subnet之间增加Neutron路由。
3. 关于GRE/OVS/Neutron的一些快速结论

探索 OpenStack 之(8):Neutron 深入探索之 OVS + GRE 之 完整网络流程 篇的更多相关文章
- 探索 OpenStack 之(9):深入块存储服务Cinder (功能篇)
		继研究了Neutron之后,继续Nova的外围研究之旅.本站是研究块存储服务Cinder. 0.验证环境 环境包括: 1.一个controller节点,运行nova-api, nova-schedul ... 
- 学习OpenStack之(6):Neutron 深入学习之 OVS + GRE 之 Compute node 篇
		0.环境 硬件环境见上一篇博客:学习OpenStack之(5):在Mac上部署Juno版本OpenStack 四节点环境 OpenStack网络配置:一个tenant, 2个虚机 Type drive ... 
- Neutron 理解 (3): Open vSwitch + GRE/VxLAN 组网 [Netruon Open vSwitch + GRE/VxLAN Virutal Network]
		学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ... 
- 探索 OpenStack 之(7):Neutron 深入探索之 Open vSwitch (OVS) + GRE 之 Neutron节点篇
		0. 测试环境 硬件环境:还是使用四节点OpenStack部署环境,参见 http://www.cnblogs.com/sammyliu/p/4190843.html OpenStack配置: ten ... 
- 探索 OpenStack 之(13):研究 Keystone
		Keystone 是 OpenStack Identity Service 的项目名称.本文就试着尽可能深入地研究 Keystone. 1. Keystone 的功能 做为 OpenStack 云系统 ... 
- 探索 OpenStack 之(12):cinder-api Service 处理 HTTP Request 的过程分析
		本文是上一篇 探索 OpenStack 之(11):cinder-api Service 启动过程分析 以及 WSGI / Paste deploy / Router 等介绍> 的后续篇. os ... 
- 探索 OpenStack 之(17):计量模块 Ceilometer 中的数据收集机制
		本文将阐述 Ceilometer 中的数据收集机制.Ceilometer 使用三种机制来收集数据: Notifications:Ceilometer 接收 OpenStack 其它服务发出的 noti ... 
- 照着官网来安装openstack pike之neutron安装
		neutron组件安装分为控制节点和计算节点,还是先从控制节点安装 1.前提条件,数据库为nova创建库和账户密码来连接数据库 # mysql -u root -p MariaDB [(none)]& ... 
- OpenStack Havana 部署在Ubuntu 12.04 Server 【OVS+GRE】(三)——计算节点的安装
		序:OpenStack Havana 部署在Ubuntu 12.04 Server [OVS+GRE] 计算节点: 1.准备结点 安装好ubuntu 12.04 Server 64bits后,进入ro ... 
随机推荐
- 使用 python 实现 memcached 的启动服务脚本 rc
			#!/usr/bin/python #coding:utf-8 import sys import os from subprocess import Popen, PIPE class Memcac ... 
- 设置 Unix,Linux环境下的NLS_LANG
			设置 NLS_LANG 变量 1) 正确配置 LC_ALL 参数 2) 配置 telnet/ssh/SecureCRT 客户端的字符集 linux中可以用locale命令来查看 NLS_LANG设置, ... 
- Centos7中所有的关机命令的奇怪现象
			今天在研究shutdown,reboot,halt,poweroff几种关机命令的区别是发现他们都是/bin/systemctl的软连接 ls -l /sbin/{shutdown,reboot,ha ... 
- Kibana+Logstash+Elasticsearch 日志查询系统
			搭建该平台的目的就是为了运维.研发很方便的进行日志的查询.Kibana一个免费的web壳:Logstash集成各种收集日志插件,还是一个比较优秀的正则切割日志工具:Elasticsearch一个开源的 ... 
- EF 资料
			初级部分 入门教程 Learn Entity Framework(微软官方) http://www.entityframeworktutorial.net/ Fluent API http ... 
- BI建模原则和常见问题
			BI建模的质量直接影响数据仓库项目的质量,所以在建模前,要对数据仓库的架构组成.大小以及模型功能有明确的定义. 影响BI数据仓库建模的因素众多,往往会随着项目的具体情况不同而变化.但有些原则是相通的, ... 
- COGS130. [USACO Mar08] 游荡的奶牛[DP]
			130. [USACO Mar08] 游荡的奶牛 ★☆ 输入文件:ctravel.in 输出文件:ctravel.out 简单对比时间限制:1 s 内存限制:128 MB 奶牛们在被划 ... 
- 第16章 List集合的总结和遍历
			第16章 List集合的总结和遍历 1.重构设计 根据Vector类,ArrayList类,和LinkedList类所具有的存储特点以及拥有的方法入手,发现共性往上抽取. 共同特点: 1.允许元素重复 ... 
- 网盘的选择,百度网盘、google drive 还是 Dropbox
			我是国内用户,需要越过Chinawall 我使用的是一枝红杏,用着还行 如果要买,结账时输入'laod80' 一枝红杏官网:官网地址 Dropbox: 稳定,速度快 Dropbox官网:链接 操作十分 ... 
- python3循环语句while
			Python的循环语句有for和while语句,这里讲while语句. Python中while语句的一般形式: while 条件判断 : 语句 需要注意冒号和缩进.另外,注意Python中没有do. ... 
