问题导读

1.br-int、br-ethx的作用是什么?
2.安全组策略是如何实现的?
3.VLAN 模式与GRE模式有哪些不同点?流量上有哪些不同?
4.L3 agent实现了什么功能?

接上篇深入理解 Neutron -- OpenStack 网络实现(1)

Vlan模式下的系统架构跟GRE模式下类似,如下图所示。
需要注意的是,在vlan模式下,vlan tag的转换需要在br-int和br-ethx两个网桥上进行相互配合。即br-int负责从int-br-ethX过来的包(带外部vlan)转换为内部vlan,而br-ethx负责从phy-br-ethx过来的包(带内部vlan)转化为外部的vlan。
(个人对vlan tag的理解,应该是对vlan的一个人为标记,起到识别的作用)
<ignore_js_op>
下面进行一些细节的补充讨论,以Vlan作为物理网络隔离的实现。假如要实现同一个租户下两个子网,如下图所示:
<ignore_js_op>

计算节点

<ignore_js_op>
查看网桥信息,主要包括两个网桥:br-int和br-eth1:
[Bash shell] 纯文本查看 复制代码
01 [root@Compute ~]# ovs-vsctl show
02 f758a8b8-2fd0-4a47-ab2d-c49d48304f82
03     Bridge "br-eth1"
04         Port "phy-br-eth1"
05             Interface "phy-br-eth1"
06         Port "br-eth1"
07             Interface "br-eth1"
08                 type: internal
09         Port "eth1"
10             Interface "eth1"
11     Bridge br-int
12         Port "qvoXXX"
13             tag: 1
14             Interface "qvoXXX"
15         Port "qvoYYY"
16             tag: 1
17             Interface "qvoYYY"
18         Port "qvoZZZ"
19              tag: 2
20              Interface "qvoZZZ"
21         Port "qvoWWW"
22              tag: 2
23              Interface "qvoWWW"
24         Port "int-br-eth1"
25             Interface "int-br-eth1"
26         Port br-int
27             Interface br-int
28                 type: internal

类似GRE模式下,br-int负责租户隔离,br-eth1负责跟计算节点外的网络通信。 在Vlan模式下,租户的流量隔离是通过vlan来进行的,因此此时包括两种vlan,虚拟机在Compute Node内流量带有的local vlan和在Compute Node之外物理网络上隔离不同租户的vlan。
br-int和br-eth1分别对从端口int-br-eth1和phy-br-eth1上到达的网包进行vlan tag的处理。此处有两个网,分别带有两个vlan tag(内部tag1对应外部tag101,内部tag2对应外部tag102)。 其中,安全组策略仍然在qbr相关的iptables上实现。

br-int

与GRE模式不同的是,br-int完成从br-eth1上过来流量(从口int-br-eth1到达)的vlan tag转换,可能的规则为
[Bash shell] 纯文本查看 复制代码
01 #ovs-ofctl dump-flows br-int
02  cookie=0x0, duration=100.795s, table=0, n_packets=6, n_bytes=468, idle_age=90, priority=2,in_port=3 actions=drop
03  cookie=0x0, duration=97.069s, table=0, n_packets=22, n_bytes=6622, idle_age=31, priority=3,in_port=3,dl_vlan=101 actions=mod_vlan_vid:1,NORMAL
04  cookie=0x0, duration=95.781s, table=0, n_packets=8, n_bytes=1165, idle_age=11, priority=3,in_port=3,dl_vlan=102 actions=mod_vlan_vid:2,NORMAL
05  cookie=0x0, duration=103.626s, table=0, n_packets=47, n_bytes=13400, idle_age=11, priority=1 actions=NORMAL

br-eth1

br-eth1上负责从br-int上过来的流量(从口phy-br-eth1到达),实现local vlan到外部vlan的转换。
[Bash shell] 纯文本查看 复制代码
01 #ovs-ofctl dump-flows br-eth0
02 NXST_FLOW reply (xid=0x4):
03  cookie=0x0, duration=73.461s, table=0, n_packets=51, n_bytes=32403, idle_age=2, hard_age=65534, priority=4,in_port=4,dl_vlan=1 actions=mod_vlan_vid:101,NORMAL
04  cookie=0x0, duration=83.461s, table=0, n_packets=51, n_bytes=32403, idle_age=2, hard_age=65534, priority=4,in_port=4,dl_vlan=2 actions=mod_vlan_vid:102,NORMAL
05  cookie=0x0, duration=651.538s, table=0, n_packets=72, n_bytes=3908, idle_age=2574, hard_age=65534, priority=2,in_port=4 actions=drop
06  cookie=0x0, duration=654.002s, table=0, n_packets=31733, n_bytes=6505880, idle_age=2, hard_age=65534, priority=1 actions=NORMAL

网络节点

<ignore_js_op>
类似GRE模式下,br-eth1收到到达的网包,int-br-eth1和phy-br-eth1上分别进行vlan转换,保证到达br-int上的网包都是带有内部vlan tag,到达br-eth1上的都是带有外部vlan tag。br-ex则完成到OpenStack以外网络的连接。 查看网桥信息,包括三个网桥,br-eth1、br-int和br-ex。
[Bash shell] 纯文本查看 复制代码
01 #ovs
02 3bd78da8-d3b5-4112-a766-79506a7e2801
03     Bridge br-ex
04         Port "qg-VVV"
05             Interface "qg-VVV"
06                 type: internal
07         Port br-ex
08             Interface br-ex
09                 type: internal
10         Port "eth0"
11             Interface "eth0"
12     Bridge br-int
13         Port br-int
14             Interface br-int
15                 type: internal
16         Port "int-br-eth1"
17             Interface "int-br-eth0"
18         Port "tapXXX"
19             tag: 1
20             Interface "tapXXX"
21                 type: internal
22 Port "tapWWW"
23             tag: 2
24             Interface "tapWWW"
25                 type: internal
26         Port "qr-YYY"
27             tag: 1
28             Interface "qr-YYY"
29                 type: internal
30         Port "qr-ZZZ"
31             tag: 2
32             Interface "qr-ZZZ"
33                 type: internal
34     Bridge "br-eth1"
35         Port "phy-br-eth1"
36             Interface "phy-br-eth1"
37         Port "br-eth1"
38             Interface "br-eth1"
39                 type: internal
40         Port "eth1"
41             Interface "eth1"

br-eth1

br-eth1主要负责把物理网络上外部vlan转化为local vlan。
[Bash shell] 纯文本查看 复制代码
01 #ovs-ofctl dump-flows br-eth1
02 NXST_FLOW reply (xid=0x4):
03  cookie=0x0, duration=144.33s, table=0, n_packets=13, n_bytes=28404, idle_age=24, hard_age=65534, priority=4,in_port=5,dl_vlan=101 actions=mod_vlan_vid:1,NORMAL
04  cookie=0x0, duration=144.33s, table=0, n_packets=13, n_bytes=28404, idle_age=24, hard_age=65534, priority=4,in_port=5,dl_vlan=102 actions=mod_vlan_vid:2,NORMAL
05  cookie=0x0, duration=608.373s, table=0, n_packets=23, n_bytes=1706, idle_age=65534, hard_age=65534, priority=2,in_port=5 actions=drop
06  cookie=0x0, duration=675.373s, table=0, n_packets=58, n_bytes=10625, idle_age=24, hard_age=65534, priority=1 actions=NORMAL

br-int

br-int上挂载了大量的agent来提供各种网络服务,另外负责对发往br-eth1的流量,实现local vlan转化为外部vlan。
[Bash shell] 纯文本查看 复制代码
01 #ovs-ofctl dump-flows br-int
02 NXST_FLOW reply (xid=0x4):
03  cookie=0x0, duration=147294.121s, table=0, n_packets=224, n_bytes=33961, idle_age=13, hard_age=65534, priority=3,in_port=4,dl_vlan=1 actions=mod_vlan_vid:101,NORMAL
04  cookie=0x0, duration=603538.84s, table=0, n_packets=19, n_bytes=2234, idle_age=18963, hard_age=65534, priority=2,in_port=4 actions=drop
05  cookie=0x0, duration=603547.134s, table=0, n_packets=31901, n_bytes=6419756, idle_age=13, hard_age=65534, priority=1 actions=NORMAL

dnsmasq负责提供DHCP服务,绑定到某个特定的名字空间上,每个需要DHCP服务的租户网络有自己专属隔离的DHCP服务(图中的tapXXX和tapWWW上各自监听了一个dnsmasq)。
路由是L3 agent来实现,每个子网在br-int上有一个端口(qr-YYY和qr-ZZZ,已配置IP,分别是各自内部子网的网关),L3 agent绑定到上面。要访问外部的公共网络,需要通过L3 agent发出,而不是经过int-br-ex到phy-br-ex(实际上并没有网包从这个veth pair传输)。如果要使用外部可见的floating IP,L3 agent仍然需要通过iptables来进行NAT。
每个L3 agent或dnsmasq都在各自独立的名字空间中,如下图所示,其中同一租户的两个子网都使用了同一个路由器。
<ignore_js_op>
对于子网使用不同路由器的情况,多个路由器会在自己独立的名字空间中。例如要实现两个租户的两个子网的情况,如下图所示。
<ignore_js_op>
这种情况下,网络节点上的名字空间如下图所示。
<ignore_js_op>

br-ex

br-ex要做的事情很简单,只需要正常转发即可。
[Bash shell] 纯文本查看 复制代码
01 #ovs-ofctl dump-flows br-ex
02 NXST_FLOW reply (xid=0x4):
03  cookie=0x0, duration=6770.969s, table=0, n_packets=5411, n_bytes=306944, idle_age=0, hard_age=65534, priority=0 actions=NORMAL

转载于:https://www.cnblogs.com/yudar/p/4666412.html

深入理解 Neutron -- OpenStack 网络实现(2):VLAN 模式相关推荐

  1. Openstack的nova-network的vlan模式扩展

    openstack的nova-network的vlan模式是可以在安装的时候,将网络划分为多个子网,每个项目一个或者多个子网进行虚拟机创建. 但是他现在代码级别上不支持:如果一开始安装的环境的vlan ...

  2. 理解 neutron(15):Neutron Linux Bridge + VLAN/VXLAN 虚拟网络

    学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...

  3. 深入理解openstack网络架构(2)----Basic Use Cases

    2019独角兽企业重金招聘Python工程师标准>>> 原文地址: https://blogs.oracle.com/ronen/entry/diving_into_openstac ...

  4. OpenStack网络 - 使用vlan模式来剖析openstack网络相关概念及原理

    OpenStack网络 - 使用vlan模式来剖析openstack网络相关概念及原理 OpenStack网络 OpenStack网络设置比较复杂,阅读了一些文档,主要是采用两种网络 flat net ...

  5. 一文理解OpenStack网络

    摘要:如果你能理解OpenStack的网络,那么对于其他云平台的网络,应该也可以通过分析后理解掌握了. 本文分享自华为云社区<<跟唐老师学习云网络> - OpenStack网络实现& ...

  6. openstack网络服务neutron

    一.环境准备 1.虚拟机准备 IP地址 主机名 操作系统 192.168.56.11 linux-node1 CentOS7 192.168.56.12 linux-node2 CentOS7 其中, ...

  7. 测试openstack neutron的网络连通性

    测试openstack网络连通性,方式如下: 1.openstack控制端执行nova list 查看VM对应的名称和VM_UUID. 2.openstack控制端执行nova show $VM_UU ...

  8. 访问 Neutron 外部网络 - 每天5分钟玩转 OpenStack(143)

    前面我们学习了位于不同 Neutron subnet 的 instance 可以通过 router 通信,今天开始讨论 instance 如何访问外部网络. 这里的外部网络是指的租户网络以外的网络.租 ...

  9. 玩转OpenStack网络Neutron(1)--热身

    转载自:http://blog.csdn.net/yanheven1/article/details/44788581#0-tsina-1-32631-397232819ff9a47a7b7e80a4 ...

最新文章

  1. boost::lambda::constructor用法的测试程序
  2. animation基础练习源码_用vue简单写一个音乐播放组件「附源码」
  3. 在线课程学习、科研科技视频网站
  4. python测开面试题_python十道经典面试题,测试你的python功底!
  5. 菜鸟裹裹升级退换货:全程可见让商家物流纠纷率降半
  6. python多线程与多进程
  7. 前端使用vue+ js-xlsl + elemen-ui实现导出Excel表格(绝对好使, 前端有问题直接关注我, 或者评论立刻给你回应, 专业解决)
  8. echarts 饼图文字图例多种颜色
  9. usrp n310测试总结---环境搭建篇2-uhd-dpdk干货
  10. K--最邻近(K-NN)算法
  11. 详解MOVE PROTOCOL的测试版,让健康运动如影随形
  12. 雅典娜暴利烹饪系列(上)
  13. 如何正确与 HR 谈薪资?
  14. mysql 大写 小写_MySQL大写和小写问题
  15. 企业购买银行理财产品如何核算
  16. Excel 中连续生成开始日期和结束日期之间的日期
  17. 【建议收藏】数据结构和算法面试题
  18. 51单片机两只老虎c语言程序,51单片机两只老虎仿真加代码
  19. Python中datetime.timedelta的应用
  20. SpringBoot | 四大核心之actuator(程序监控器)

热门文章

  1. Windows 多种版介绍
  2. python knn-基于python实现KNN分类算法
  3. python 列表多行_Python Pandas list列表数据列拆分成多行的方法实现
  4. harris角点检测_角点检测(2) - harris算子 - 理论与Python代码
  5. sap 新建事务_SAP操作常用事务代码(大全)
  6. 机器学习如何计算特征的重要性_机器学习之特征缩放
  7. php转移动,php移动或拷贝文件夹
  8. arcgis制作空间变化图怎么做_【教程:如何使用ArcGIS10.2制作气温空间分布图】...
  9. c++语言中如何写入文件,C++:在多线程程序中写入文件
  10. MFC消息响应函数OnPaint