OpenvSwitch用户层处理深度解析
2星 需积分: 47 41 浏览量
更新于2024-09-09
收藏 214KB PDF 举报
"openvswitch用户层处理详解流程主要涉及openvswitch的用户空间组件,尤其是ovs_vswitchd进程的运行机制。该过程涵盖了从启动到数据包处理的多个关键步骤,涉及到与数据平面(datapath)的交互以及配置管理。"
在Open vSwitch(OVS)中,用户层的处理主要由`ovs_vswitchd`守护进程负责,它通过`ofproto`(OpenFlow协议转换器)模块与数据平面交互。`ovs_vswitchd`的入口点是`main`函数,其中包含了整个系统的核心运行逻辑。
首先,`ovs_vswitchd`通过`main`函数中的`bridge_init(remote)`初始化桥接设备。这个过程从远程数据库(例如Open vSwitch数据库管理系统OVSDB)获取配置信息,用于设置和初始化桥接实例。初始化完成后,`ovs_vswitchd`会创建和管理多个`bridge`对象,这些对象代表实际的网络桥接实体。
接下来,`ovs_vswitchd`调用`ofproto_run_fast()`来执行快速处理流程。`ofproto_run_fast()`的主要任务是处理来自数据平面的`upcall`事件,即当 datapath 中的数据包无法找到匹配的流表条目时,会触发上行调用到用户空间。`ofproto_run_fast()`主要关注的是高优先级的事件,例如处理miss的数据包。
然后,`ofproto_run()`函数被调用,执行更全面的数据包处理。在这个阶段,`ovs_vswitchd`会执行更复杂的配置更新,读取数据库中的最新配置,并构建或更新相应的`bridge`和`dp`数据结构。每个`bridge`的`ofproto`都会执行`ofproto_class`中的`run()`方法,这是一个抽象类定义,其具体实现取决于不同的数据路径提供商。
在`ofproto_run()`中,`run_fast()`函数被调用,通常定义在`ofproto-dpif.c`文件中。此函数处理`upcall`事件,通过`handle_upcalls()`来处理miss的数据包。`handle_miss_upcalls()`会尝试查找匹配的流表条目,如果找不到,则会调用`flow_miss_find()`来决定如何响应这些未匹配的数据包。`dpif_operate()`则根据找到的行动执行相应的操作。
`rule_dpif_lookup()`函数用于在流表中查找精确匹配的规则,而`facet_lookup_valid()`则用于查找有效的流表条目。这些函数协同工作,确保了`ovs_vswitchd`能够正确地处理数据包并维护网络的正确运行。
总结来说,`openvswitch用户层处理详解流程`深入剖析了`ovs_vswitchd`如何启动、配置桥接设备、处理来自数据平面的事件以及如何根据流表策略来转发或处理数据包。这一过程展示了Open vSwitch如何在用户空间中高效地管理和控制虚拟网络基础设施。
2021-05-10 上传
点击了解资源详情
2020-08-03 上传
2024-11-16 上传
2024-11-16 上传
linqianwu
- 粉丝: 0
- 资源: 2
最新资源
- SSM Java项目:StudentInfo 数据管理与可视化分析
- pyedgar:Python库简化EDGAR数据交互与文档下载
- Node.js环境下wfdb文件解码与实时数据处理
- phpcms v2.2企业级网站管理系统发布
- 美团饿了么优惠券推广工具-uniapp源码
- 基于红外传感器的会议室实时占用率测量系统
- DenseNet-201预训练模型:图像分类的深度学习工具箱
- Java实现和弦移调工具:Transposer-java
- phpMyFAQ 2.5.1 Beta多国语言版:技术项目源码共享平台
- Python自动化源码实现便捷自动下单功能
- Android天气预报应用:查看多城市详细天气信息
- PHPTML类:简化HTML页面创建的PHP开源工具
- Biovec在蛋白质分析中的应用:预测、结构和可视化
- EfficientNet-b0深度学习工具箱模型在MATLAB中的应用
- 2024年河北省技能大赛数字化设计开发样题解析
- 笔记本USB加湿器:便携式设计解决方案