一、DVR概述

为了提高neutron网络服务的鲁棒性与性能,OpenStack从Juno版开始正式加入的DVR(Distributed Virtual Router)服务,它将原本集中在网络节点的部分服务分散到了计算节点上。

在该模式下,同租户的跨网段路由在计算节点之间直接完成,无需网络节点的参与,SNAT服务仍由网络节点集中化的处理,Floating服务则可以选择在计算节点分布式地处理,也可以选择在网络节点集中式地处理。

二、有DVR与没有DVR的区别

1. 如图,没有DVR时,东西向流量和南北向流量都集中到了网络节点,导致网络节点负载过大,成为瓶颈。

2. 如图,有DVR时,对于东西向流量,流量会直接在计算节点之间传递;对于南北向流量,如果有FIP,流量会直接走计算节点;如果没有FIP,则会通过网络节点连接外部网络。

三、典型场景

涉及到L3路由服务的网络访问至少是需要跨网段之间的访问,这又分为是否是同一节点、是否涉及到外网,即东西向与南北向之间的流量。

1. 东西向流量

(1)同一计算节点

路由器直接在br-int上转发,不经过br-ex。

(2)不同节点

如图,租户T1的两个不同子网下的两台虚机VM1和VM4分别落在Compute1与Compute2上。VM1要访问VM4,过程如下:

①首先通过br-int->IR1->ARP得到默认网关的mac,并将Dest MAC修改为默认网关的mac地址;

②通过IR1得到目的地址以及目的网关的mac地址,并修改SRC MAC(目的网关mac)与DEST MAC(目的mac);

③通过br-int->br-tun得到与Compute2绑定的全局唯一的MAC地址,并修改SRC MAC为此mac地址;

④通过br-tun到达Compute2的br-int得到目的网关的mac地址,并修改SRC MAC为此mac地址,最终到达VM4

2. 南北向流量

(1)有FIP

如图所示, Compute1上租户T1的VM2和Compute2上租户T1的VM4,都绑定了FIP,那么它们都可以通过所在的计算节点访问外部网络。VM2访问外网的过程 如下:

①首先通过br-int->IR2->ARP得到默认网关的mac,并将Dest MAC修改为默认网关的mac地址;

②通过IR2中的rfp-XXX发送给FIP namespace的fpr-XXX,rfp-XXX与fpr-XXX是一对veth pair;

③通过FIP namespace查询路由,即通往外部网络的默认路由;

④最终通过fg-XXX发送到br-ex。

计算节点需要额外启用 l3-agent(dvr 模式),以及 metadata-agent。其实跟传统情况下的网络节点十分类似,不同的是单独有一个qfloat-XXX 路由器(如图中 的Floating IP,也在一个独立命名空间中)来负责处理带有 floating IP 的南北向流量,每个路由器有自己的命名空间,进行跨子网的转发。

(2)没有FIP

如图,租户T2想要通过外部网络来访问内部子网的VM1时,需要通过默认的SNAT网关来访问内部子网的虚机,即网络节点上的T2-SNAT。

相反,若租户T2内部子网的虚机VM1想要访问外部网络,则仍需经过网络节点上的T2-SNAT路由器。

四、总结

1. 所有节点的L3层通信,在流量出节点之前都会把源MAC替换成各节点都全局唯一的DVR host MAC。

2. 从实质上讲,neutron的DVR模式并没有使用任何颠覆性的技术手段,可以说也就是把原有的VRouter给Distribute了。

3. 网络节点只是在L3层服务配置了dvr_snat模式以及在命名空间上多了一个snat-XXX的专门处理来自计算节点的无FIP的南北向流量。

参考资料:https://docs.google.com/presentation/d/1ktCLAdglpKdsC--fQ2F_c2d3X1u-lyRGGUzRu9ITuWo/edit#slide=id.g2b6a14e30_036

转载于:https://www.cnblogs.com/viviane/p/10556539.html

Neutron OVS-DVR相关推荐

  1. neutron之DVR(distributed virtual router)学习笔记

    何为网络南北东西向: North                      external                                       |               ...

  2. Neutron系列 : Neutron OVS OpenFlow 流表 和 L2 Population(8)

    问题导读: 1.怎样使用arp_responder ? 2.怎样搭建l2pop环境? 3. ARP Responder arp_responder 的原理不复杂.Neutorn DB 中保存了所有的端 ...

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

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

  4. 【neutron】Neutron的基本原理与代码实现

    分享正文 大家好,很高兴今天能与大家分享一些Neutron的知识.今天分享的思路是:OpenStack网络基础.Neutron的软件实现.Nova虚拟机启动时的网络处理以及OVS流表分析. 一.Ope ...

  5. Neutron 理解 (2): 使用 Open vSwitch + VLAN 组网 [Neutron Open vSwitch + VLAN Virtual Network]

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

  6. openstack neutron基本原理

    分享正文 大家好,很高兴今天能与大家分享一些Neutron的知识.今天分享的思路是:OpenStack网络基础.Neutron的软件实现.Nova虚拟机启动时的网络处理以及OVS流表分析. 一.Ope ...

  7. Neutron(二)上层资源模型篇

    目录 文章目录 目录 Neutron 的资源模型 Network 运营商网络和租户网络 创建运营商网络 创建租户网络 创建外部网络 Network 小结 Subnet IP 核心网络服务 Subnet ...

  8. Neutron — Hierarchical Port Binding(层次化端口绑定)

    目录 文章目录 目录 Neutron OvS VxLAN 的局限性 硬件 SDN 方案 Hierarchical Port Binding(层次化端口绑定) Neutron OvS VxLAN 的局限 ...

  9. Neutron 理解 (6): 如何实现虚拟三层网络

    Neutron 理解 (1): Neutron 所实现的虚拟化网络 Neutron 理解 (2): 使用 Open vSwitch + VLAN 组网 Neutron 理解 (3): Open vSw ...

最新文章

  1. jump-server 安装部署
  2. mongodb studio 3t 破解无限使用脚本
  3. 2 使用_索尼黑卡RX100M6的使用指南2
  4. 使用nginx为ArcGIS Server做反向代理
  5. MySQL substr函数使用详解
  6. html中模板引擎—前端与后端
  7. python 给文本加下划线_untiy3dUGUI实现text文本下划线
  8. Nginx是什么 ? 能干嘛 ?
  9. 辗转相除法求最小公约数
  10. [2018.04.29 T1] 图
  11. 外文参考文献去哪找和下载?
  12. jpg照片太大怎么压缩?三步轻松搞定
  13. 索尔维会议记录软件测试,科学史上的今天:10/30|索尔维会议创立,史上最强科学梦幻明星队...
  14. php group 用法,thinkphp5 链式操作group分组用法
  15. iterator的用法及概念
  16. 使用 ESP32 设计智能手表第 3 部分 - 磁力计和陀螺仪
  17. 学历对于程序员找工作重要吗?我来分享一下看法
  18. 草莓tv 无法播放_草莓:高质量的声音,开源音乐播放器
  19. 劲爆!电波拉皮有什么危害,电波拉皮效果好吗能维持多久,人见人夸了
  20. 万能乘法速算法大全_小学生两位数乘法容易出错?只因没掌握这个“万能”速算法...

热门文章

  1. flinkcdc实时监测oracle数据库某张表的变化
  2. 【教学类-30-04】10以内减法题不重复(一页两份)(包括6以内、7以内、8以内、9以内、10以内减法题 只抽取25个)
  3. Slidworks2018基础到实战设计视频教程 产品建模 渲染 钣金设计
  4. mysql中null值求和_sql求和涉及到null值
  5. ThinkPad 插电时电源指示灯不亮
  6. java 运行 对象_java实例对象的编译时类型和运行时类型
  7. MarkDown生成目录索引
  8. MYSQL学习日记(三)
  9. Android自定义Scrollbar样式
  10. 达梦数据库-国产的荣光