技术分享:OpenStack DVR部署与分析

openstackdvr模式 openstack配置dvr模式目录环境准备控制节点配置网络节点配置计算节点配置查看network agent创建public网络创建router查看l3-namespace网络节点计算节点 目录 环境准备 二层驱动是ovs(ovn本身就支持分布式路由),隧道网络使用vxlan,router为传统的集中式,仅在网络节点创建。计算节点需要一张floating网卡用来绑定br-ex。 控制节点配置 vi /etc/neutron/neutron.conf [DEFAULT] router_distribute 阅读详情

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

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

DVR在带来网络服务鲁棒性与性能提升的同时,也带来了一些缺陷。东西向的FWAAS服务变得无法实现,具体参考“链接”。简单来说就是FWAAS功能依赖于在同命名空间的vrouter下看到双向(有状态)的进出两条流。现在部署DVR功能后的东西向通信,打破了这条规则。下面将对OpenStack Queens版本的 DVR部署进行阐述分析。

部署

准备

已经部署好的基于租户网络是vxlan的OpenStack环境

控制节点配置

文件:neutron.conf

router_distributed = true

重启服务

systemctl restart neutron-server.service

网络节点配置

文件:openvswitch_agent.ini

l2_population=true

enable_distributed_routing = true

文件:l3_agent.ini

agent_mode =dvr_snat

external_network_bridge 留空

重启服务

systemctl restart openvswitch.service

systemctl restart neutron-openvswitch-agent.service

systemctl restart neutron-l3-agent.service 

systemctl restart neutron-dhcp-agent.service 

systemctl restart neutron-metadata-agent.service

计算节点配置

安装neutron相关服务

yum install openstack-neutron

修改内核配置

echo '

net.ipv4.conf.all.rp_filter=0

net.ipv4.conf.default.rp_filter=0

net.bridge.bridge-nf-call-iptables=1

net.bridge.bridge-nf-call-ip6tables=1

'>>/etc/sysctl.conf

sysctl -p

修改配置dhcp_agent.ini,l3_agent.ini,metadata_agent.ini这3个文件。

文件:openvswitch_agent.ini

l2_population=true

enable_distributed_routing = true

文件:l3_agent.ini

agent_mode =dvr

external_network_bridge 留空

添加对外网桥,eth_TBD,IP_TBD要根据实际环境而定

echo '#

ovs-vsctl add-br br-ex

ovs-vsctl add-port br-ex eth_TBD

ovs-vsctl show

ifconfig  eth_TBD 0.0.0.0 

ifconfig br-ex IP_TBD/24

#'>>/etc/rc.local

chmod +x /etc/rc.d/rc.local ;  tail -n 8 /etc/rc.local |bash

重启服务

systemctl restart openvswitch.service

systemctl restart neutron-openvswitch-agent.service

systemctl restart neutron-l3-agent.service 

systemctl restart neutron-dhcp-agent.service 

systemctl restart neutron-metadata-agent.service

验证操作

 

在控制节点上查看network agent。

实验分析

部署虚机与网络

 

 

总览

本着“无图无真相””一图胜千言”的原则,在接下来的分析中争取多放图,少废话。

在部署好DVR,虚机,网络后,整个系统的网络组成及各节点上的功能分布如下图所示。

 

同节点东西向

 

 

跨节点东西向

 

 

从上表中我们可以直观的看到跨节点的路由通信过程。原理与传统路由功能基本一致。唯一的区别在进入VXLAN隧道前把原本网关MAC替换成DVR_HOST_MAC,在出VXLAN隧道后又把DVR_HOST_MAC换回网关MAC。具体原理我们将在“如何解决各节点上DVR的冲突”这一小节给出解释。

进入qrouter这个命名空间就使用linux的高级路由功能来完成路由过程。(引用《深入理解openstack neutron》中一句话:“Linux创建router并没有像创建虚机bridge那样,有一个直接的命令brctl,而且它间接命令也没有,不能创建虚拟路由器……因为它就是路由器(router)”)。在compute-1计算节点上我们可以观察到如下图所示信息。不同网段该从哪个qr口出去,不同neighbor的IP,MAC的对应关系都是有neutron事先设置好的。

 

NAT

 

 

这里遇到了和上一小节同样的问题。具体原理我们将在“如何解决各节点上DVR的冲突”这一小节给出解释。

FloatingIP

 

如何解决各节点上DVR的冲突

 

 

在各节点上的vrouter其qr口的IP,MAC都是图中各network:router_interface_distributed Port的IP,MAC.在这种情况下,各节点中的VM是如何正确的找到同宿主机下正确的vrouter及正确的网关的呢?

让我们看一下br-tun上的部分流表

 

从图中可知,br-int中进入br-tun中的所有流量都会经过table 1的筛选过滤。注意流表项5、6、7、8的匹配项。这4条流表把所有查询网关MAC的ARP广播报文丢弃,把所有目的MAC是网关MAC的未知单播报文都丢弃。这里就确保了一个宿主机内的VM只能感知到本宿主机内的vrouter,或者认为一些数据包是同宿主机内的vrouter给其转送数据包。

但是经过上面描述的处理后,那么三层转发报文又如何能到达其他节点呢?这里我们看一段社区给出的说明。

 

在初始化期间,OVS agent需要知道其持有的唯一的DVR MAC地址,以此在br-tun,br-int中输入正确的流表项。出于这个目的,L2 agent通过RPC的方式调用ML2 plugin中的get_dvr_mac_address(host_id)函数。

让我们去控制节点看看这个dvr_mac_address又是什么。在Tables_in_neutron中找到一张名为dvr_host_macs的表,查询其中的内容我们是不是又发现了熟悉的MAC。这些都是neutron分配的,全局唯一的,与各节点一一对应的MAC地址。如果有心的话在配置控制节点的neutron.conf文件时,可以看到有个名为”dvr_base_mac”配置项,该项可以自定义DVR MAC的前缀高位。

 

 

所有跨界点的三层通信,在出节点前都会把源MAC是网关MAC的报文,把源MAC都替换成各节点都唯一的DVR host MAC。这里也就解释了上面跨节点东西向和NAT中遗留的问题了。

总结

从实质上讲,neutron的DVR模式并没有使用任何颠覆性的技术手段。可以说也就是把原有的VRouter给Distribute了。至于生产环境中是否需要采用DVR功能,可能这也是网络性能,鲁棒性与网络可维护性,是否需要东西向FWAAS之间的博弈。

OpenStack核心组件实战指南:从部署到运维 本文提供了一份全面的OpenStack实战指南,涵盖从单节点快速部署到多节点高可用生产架构的完整流程。详细解析了Nova、Neutron、Keystone等核心组件的操作与配置,并分享了运维监控、性能调优、安全加固及与Kubernetes生态整合的实战经验,帮助读者系统掌握OpenStack的部署与运维核心技能。 阅读详情

相关推荐

OpenStack实战:从零搭建企业级私有云平台

本文提供了一份从零开始搭建企业级OpenStack私有云平台的实战指南。内容涵盖单节点快速部署、核心组件(Nova、Neutron、Keystone)解析、虚拟网络与云主机创建,并深入探讨了多节点生产架构规划与高可用设计,旨在帮助企业IT人员构建稳定、灵活且成本可控的云基础设施。

white的博客 233

讲清楚说明白openstack中vm流量走向之2——DVR模式

https://blog.51cto.com/arkling/2409789

北观止的博客 2101

交通流预测爬坑记(一):交通流数据集,原始数据

常用的交通流数据集,持续更新~~

K_first的博客 4万+

neutron DVR

DVR 简介 DVR 提出的背景 在 Neutron 的网络环境中,跨子网的虚机通信是需要通过 Neutron 的路由器。这既包括不同子网的虚拟机之间的通信,又包括虚拟机与外网之间的通信。在 DVR 被提出之前, 由于 Neutron 的 legacy router 只会部署在网络节点上,因此会造成网络节点的流量过大,从而产生了两个问题,其一是网络节点将成为整个 Neutron 网络的瓶颈,其...

weixin_33763244的博客 544

从零构建基于ZYNQ与AD9361的SDR信号源:FPGA逻辑与射频前端的协同设计

本文详细介绍了从零开始构建基于ZYNQ与AD9361的SDR信号源的完整流程。通过解析FPGA逻辑与射频前端的协同设计,重点阐述了如何利用FPGA生成基带信号,并通过ARM处理器配置AD9361,最终实现一个可编程的2.4GHz载波信号发生器。内容涵盖硬件选型、Vivado环境搭建、AXI总线通信、LVDS接口设计及软件驱动开发,为SDR开发者提供了实用的实战指南。

weixin_29200485的博客 214

深入浅出DNS系列(一)- DNS杂谈

黄丝玛:班达山,你好,我记性不好,你告诉我搜狐、新浪的网站IP地址好吗? 班达山:你问问DNS先生吧,他专门干这买卖的

jiangsd198的博客 4129

openstack 分布式路由器dvr

DVR(Distributed Virtual Route)分布式虚拟路由 用户可能会发现,所有网络服务都在网络节点上进行,这意味着大量的流量和处理,给网络节点带来了很大的压力。 这些处理的核心是路由器服务。那么如果计算节点上自己就能实现路由器服务的话,无疑是更为合理的。这个思路是正确的,但具体实施起来有诸多的考量和细节问题。 为了降低网络节点的负载,同时提高可扩展性,OpenStack

u013920085的专栏 6663

C#读取和写入excel表数据--手把手教详解

C#读写excel数据详解

如如水的博客 4055

一文理解OpenStack网络

如果你能理解OpenStack的网络,那么对于其他云平台的网络,应该也可以通过分析后理解掌握了。

华为云官方博客 3879

6.14华为OD机试真题 新系统 - 字符串格式调整 (Java/Py/C/C++/Js/Go)

# **字符串格式调整** > 2026 华为OD机试真题 6月14日华为OD上机新系统考试真题 100 分题型 点击查看华为 OD 机试真题完整目录:[2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解](https://blog.youkuaiyun.com/banxia_frontend/article/details/160346662) # 题目描述 输入一个字符串,字符串中只包含大写字母和数字。要求将字符串中的所有数字提取出来,按出现的顺序组

算法大师! 947

轻量化部署实战:C#上位机集成AI模型的3种方案深度对比(ML.NET/ONNX/TensorFlow.NET)

C#上位机部署AI模型,核心不是“选最强大的方案”,而是“选最适配的方案”——工控机的低配置、高稳定性需求,决定了“轻量化”和“部署简单”是选型的首要原则。回顾3种方案:ML.NET:原生、轻量化、零依赖,适合传统ML场景,低配置工控机首选;ONNX Runtime:通用、平衡、易落地,适合深度学习场景,工业落地首选;TensorFlow.NET:强大、灵活、纯C#,适合复杂模型,高配置工控机首选。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 364

OpenStack中的重要概念

软件定义网络的思想是通过控制与转发分离,将网络中交换设备的控制逻辑集中到一个计算设备上,为提升网络管理配置能力带来新的思路。SDN的本质特点是控制平面和数据平面的分离以及开放可编程性。通过分离控制平面和数据平面以及开放的通信协议,SDN打破了传统网络设备的封闭性。此外,南北向和东西向的开放接口及可编程性,也使得网络管理变得更加简单、动态和灵活。简单可理解为:业务应用是灵活多变的,随之而来的网络转发策略也需要做相应配置改动,但传统的方式业务需要变动则底层网络配置改动相对麻烦。

甘信的博客 603

YOLOv11改进策略【损失函数篇】| arXiv2025 TeLU双曲正切指数线性单元 强梯度防消失 + 解析光滑稳训练,极速提升收敛与泛化

本文记录的是。TeLU(Hyperbolic Tangent Exponential Linear Unit)通过。本文利用TeLU激活函数,以x⋅tanhex统一实现正区间强梯度加速收敛与负区间持续梯度避免死神经元,全程保持解析光滑与极低计算开销,,显著提升深度网络在分类、检测、分割、时序任务中的收敛速度、精度与泛化鲁棒性。

Limiiiing的博客 224

OpenStack企业部署遇到的问题总结

先说句题外话,突然想知道在国内IDC中大家都用的什么操作系统,但是百度了半天也没有发现有相关的信息。所以如果有大牛了解。可以分享一下。 一、基本情况说明: 当前IDC中OS选择的是Ubuntu14.04 Server 64bit LTS。  OpenStack是社区版L版本。 监控系统用的 Zabbix。 部署的组件主要包括: Nova、Neutron、Glance、Keystone

zhangzhenhao的专栏 580

连续相位调制通信调制方法的载波同步和定时同步研究及MATLAB仿真

本文将探讨CPM调制方法中的载波同步和定时同步问题,并提供MATLAB仿真源代码。本文讨论了连续相位调制通信中的载波同步和定时同步问题,并提供了相应的MATLAB仿真源代码。通过适当的载波同步和定时同步方法,可以实现对CPM信号的准确解调。希望本文对您理解连续相位调制通信调制方法的载波同步和定时同步问题有所帮助,同时也为您提供了一些MATLAB仿真实现的思路和示例代码。在CPM系统中,载波同步的主要任务是估计接收信号的载波频率偏移和相位偏移。在CPM系统中,常用的定时同步方法是基于自相关函数的峰值检测。

2301_79331230的博客 692

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

ArchSummit干货分享:通向企业级的OpenStack网络服务

写在前面的话 在周六落幕的ArchSummit深圳站上,Unitedstack有云的网络工程师王为进行了关于OpenStack网络的主题演讲《通向高可用与分布式的OpenStack网络服务》,对OpenStack的网络发展做了一个综合性的总结和比较,也解答了对于OpenStack网络复杂、Neutron难维护、Overlay网络性能低下的疑问。 前言 当我们提到 OpenStac

jincm的专栏 1091

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

从零部署到故障排查:手把手教你用华为云OpenStack搭建跨数据中心网络

本文提供了一份基于华为云OpenStack构建跨数据中心网络的实战指南。文章详细解析了华为云全局SDN架构与VxLAN技术原理,并手把手指导从环境规划、核心服务部署到Neutron深度配置的全过程。同时,重点分享了跨数据中心网络不通、隔离失效等典型故障的排查思路与命令,旨在帮助企业云架构师与运维人员高效搭建并运维灵活、统一的多数据中心云网络。

mac99的博客 808

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

OpenStack性能优化终极指南:20个实用技巧提升云平台效率

OpenStack作为开源的云计算平台,其性能优化对于提升云服务效率至关重要。本文将分享20个实用技巧,帮助管理员和开发者充分发挥OpenStack的潜力,优化资源利用率,提升系统响应速度,降低运营成本。 ## 一、计算资源优化 ### 1. 合理配置Nova计算节点 调整Nova计算服务的配置参数,优化虚拟机调度和资源分配。关键配置文件路径:nova/nova.conf。建议根据硬件配置调整

gitblog_00809的博客 792

openstack neutron基本原理

分享正文 大家好,很高兴今天能与大家分享一些Neutron的知识。今天分享的思路是:OpenStack网络基础、Neutron的软件实现、Nova虚拟机启动时的网络处理以及OVS流表分析。 一、Openstack网络基础 下面对Openstack和Neutron的介绍,要从几个关键词入手。 1. 三代网络 在网络这一口,OpenStack经历了由nova-network到

java 1万+

有效地为OpenStack的Neutron项目做出贡献

今年早些时候,凯尔·梅斯特(Kyle Mestery) 在他的博客上发表了一篇文章,概述了有关对Neutron项目做出贡献以及如何有效向上游做出贡献的一些常见误解。 Kyle是HP开源网络高级总监兼首席技术专家,负责开源计划的技术构想,战略和开发。 他还致力于OpenStack,OpenDaylight和Open vSwitch。 他还是OpenStack Neutron项目的程序技术主管(P...

cumj63710的博客 175

Neutron的基本原理与代码实现

分享正文 大家好,很高兴今天能与大家分享一些Neutron的知识。今天分享的思路是:Openstack网络基础、Neutron的软件实现、Nova虚拟机启动时的网络处理以及OVS流表分析。 一、Openstack网络基础 下面对Openstack和Neutron的介绍,要从几个关键词入手。 1. 三代网络 在网络这一口,OpenStack经历了由nova-network到

Tomstrong_369的专栏 3591

OpenStack Neutron手动安装:从内核参数到OVS流表的深度实践

Neutron是OpenStack中实现软件定义网络(SDN)的核心组件,其本质是通过控制平面(Neutron Server)、插件(如ML2)与数据平面代理(OVS Agent、L3 Agent等)协同,将网络策略转化为Linux内核路由、iptables规则及Open vSwitch流表。理解其工作原理需掌握三大技术基座:Linux内核网络参数(如ip_forward、rp_filter)决定数据包能否转发;Keystone作为统一认证中心,为所有API调用提供token鉴权;OVS流表则是网络策略在数

weixin_34293911的博客 622

OpenStack在生产环境的实战配置:高可用架构与性能调优技巧

本文深入探讨了OpenStack在生产环境中的高可用架构设计与性能调优实战技巧。通过控制节点集群、计算节点池和分布式存储的优化配置,结合Pacemaker、Ceph等工具,实现服务级和主机级的高可用性。文章还提供了CPU调度、内存优化、存储性能调优和网络加速的黄金法则,助力企业构建稳定高效的OpenStack生产环境。

weixin_30752699的博客 429

理解 OpenStack 高可用(HA) (6): MySQL HA

本系列会分析OpenStack 的高可用性(HA)概念和解决方案: (1)OpenStack 高可用方案概述 (2)Neutron L3 Agent HA - VRRP (虚拟路由冗余协议) (3)Neutron L3 Agent HA - DVR (分布式虚机路由器) (4)Pacemaker 和 OpenStack Resource Agent (RA) (5)RabbitMQ HA...

weixin_33800593的博客 393
上一篇: neutron-Qos服务介绍
下一篇: Multipath 安装和 Openstack Nova + Cinder 配置
hxpjava1
博客等级 码龄19年 1365粉丝 511原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值