总结OpenvSwitch的调试经验
相信相信不少人在开始用OpenvSwitch(以下简称OVS)或者修改源码的时候,都不知道如何去调试,根据我的学习历程以及从网上搜集的资料做一个汇总。
一. 个人经验
- 从网上找相关资料,熟悉OpenvSwitch的构架和自己需要修改的代码,后续如果有事件,我会写关于OpenvSwitch2.4.0的代码分析(和前面版本的核心相同);
- 推荐一个QQ群:387310964,里面的大神都挺热心的,凡问必答;
- 前面写了一个自动化编译和安装OVS的脚本,通过我的观察,即使编译有错误,不会自动中断,而是会编译完成,并且启动OpenvSwitch;
- 学会使用log。
- 我同时安装了CPqD,可以验证控制器的功能
- 熟练使用wireshark
二. 调试方法
首先来看下OVS的结构图:
调试就是从上图中的几大构件分别入手的。
- ovsdb-server
这个数据库存储着交换机的配置信息,包括网桥,接口,控制器的地址等。主要有以下核心表组成,其中“Open_vSwitch”是根目录表,只有一列,下面会提供查看表的命令:ovs-vsctl
ovs-vsctl是用来配置ovs-vswitchd模块的,但是配置信息都是存储在数据库中的,所以其本质是一个访问和配置数据库的接口,他主要提供了以下命令:
• ovs-vsctl add-br
• ovs-vsctl list-br
• ovs-vsctl add-port
• ovs-vsctl list-ports
• ovs-vsctl get-manager
• ovs-vsctl get-controller
• ovs-vsctl list
另外还有一个命令ovsdb-tool,是管理数据库文件的,使用方式如下:
ovsdb-tool show-log [-mmm]
以上命令的作用可以通过英文很容易的看出来,不过建议大家还是运行一下,直观感受了解下,加深印象,方便以后调试。- ovs-vswitchd
这是OVS最核心的模块了,对外负责和控制器通过OpenFlow通信,通过OVSDB协议和数据库通信,通过netlink和内核模块通信,通过netdev抽象接口和系统通信。调试命令主要有以下:
***
ovs-dpctl主要是面向内核datapath模块的
• ovs-dpctl show 用于查看内核datapath以及相关的转发命中数
• ovs-dpctl dump-flows 用处查看datapath中的流表
***
ovs-ofctl主要是面向OpenFlow模块的
• ovs-ofctl show
• ovs-ofctl dump-flows
• ovs-ofctl add-flow
• ovs-ofctl del-flows [flow]
• ovs-ofctl snoop
***
ovs-appctl主要是面向守护程序的,其中-t指定守护程序名称,默认为ovs-vswitchd
• help 罗列程序支持的命令
• version
• vlog/list 罗列日志模块和他们的level(error,warn,info,dbg等)
• vlog/set [spec] 设置日志level
• ovs-appctl ofproto/trace flow: 追踪流量的处理过程- log文件
log文件存储的路径是/var/log/openvswitch,里面包括:
• ovs-vswitchd.log
• ovsdb-server.log三. 总结
上面只是列举了一些常用的调试命令,更详细的可以看官网,当然调试是一项十分复杂繁琐的工程,所以熟悉和使用好上面的命令是最基本的,其他的只能具体情况具体处理了。good luck!
总结OpenvSwitch的调试经验的更多相关文章
- (转)CMOS Sensor的调试经验分享
CMOS Sensor的调试经验分享 我这里要介绍的就是CMOS摄像头的一些调试经验. 首先,要认识CMOS摄像头的结构.我们通常拿到的是集成封装好的模组,一般由三个部分组成:镜头.感应器和图像信号处 ...
- CMOS Sensor的调试经验分享
转自:http://bbs.52rd.com/forum.php?mod=viewthread&tid=276351 CMOS Sensor的调试经验分享 我这里要介绍的就是CMOS摄像头的一 ...
- 调试经验--硬盘U菜
调试经验--硬盘U菜 随着嵌入式设备功能的开发,随着对存储设备的需求:需要存储大量数据信息.需要在转储数据,U盘升级功能等. 在使用存储设备的过程中,我们遇到一些问题,也总结了些经验: 1.几 ...
- CMOS Sensor的调试经验分享【转】
转自:https://blog.csdn.net/yapingmcu/article/details/37817727 转自:http://bbs.52rd.com/forum.php?mod=vie ...
- 程序异常崩溃后用windbg辅助调试解决的经验 以及 堆栈问题调试经验
1,程序异常崩溃后用windbg辅助调试解决的经验 状况:我的程序调用别人的库做 文件写入工作. 在这一过程中出现异常,程序崩溃. 经反复检查,认为自己的程序没有错,但无法判断在别人库里哪里有错. ...
- 17调试经验之串口读写flash协议
一是设计功能 我的理解协议就是一个命令包,通过给出不同的控制命令,来调动不同的功能模块,实现不同的功能,如读数据,写数据,擦除等. 二设计过程 先看了尤老师的视频,主要讲了大致设计原理和总体框架,当然 ...
- 电机三环pid控制及调试经验
一.伺服电机的双环pid 双环pid在正常底盘运动的控制中已经足够了,但是对于双轴云台的控制来说,双环pid的云台控制的响应速度是远远不够的,所以加入了电流环的控制. 两篇大佬的文章--这是我学习pi ...
- 13 年的 Bug 调试经验总结
在<Learning From Your Bugs>一文中,我写了关于我是如何追踪我所遇到的一些最有趣的bug.最近,我回顾了我所有的194个条目(从13岁开始),看看有什么经验教训是我可 ...
- mipi 调试经验
转载自http://blog.csdn.net/g_salamander/article/details/9163455 以下是最近几个月在调试 MIPI DSI / CSI 的一些经验总结,因为协议 ...
随机推荐
- Spring3.0官网文档学习笔记(四)--3.1~3.2.3
3.1 Spring IoC容器与Beans简单介绍 BeanFactory接口提供对随意对象的配置: ApplicationContext是BeanFactory的子接口.整合了Sp ...
- CSS3Transition添加多个过渡效果
本篇文章由:http://xinpure.com/css3transition-to-add-multiple-transition-effects/ 通过监听动画的结束事件,可以为一个元素添加多个动 ...
- Linux Load average负载详细解释
http://tianmaotalk.iteye.com/blog/1027970 Linux Load average负载详细解释 linux查看机器负载
- min-height clear
在编辑页面时,总是会遇到min-height的设置 但是设置min-height后下面的div总是 跟随min-height的高度有些漂浮,如果不想让下面的div没有漂浮的效果 可以用到样式 clea ...
- jQuery 树型菜单插件(Treeview)
jQuery Treeview 提供了一个无序灵活的可折叠的树形菜单.试用于一些菜单的导航,支持基于 cookie 的持久性菜单
- Windows Azure Platform 性能监视器(转载)
Windows操作系统提供了查看性能监视器的功能,用于监视CPU使用率.内存使用率,硬盘读写速度,网络速度等.您可以在开始-->运行-->输入Perfmon,就可以打开性能监视器. 我们知 ...
- SVN安装配置及安全注意事项
两个脚本: svn遍历脚本.zip wooyun上也是已经有非常多的svn泄露网站信息的事件,有的甚至由此导致整个服务器沦陷: WooYun: [盛大180天渗透纪实]第四章.SVN猎手 (某站SVN ...
- IOS 拍照旋转修正
- (UIImage *)fixOrientation:(UIImage *)aImage { // No-op if the orientation is already correct if (a ...
- JUC组件扩展(二)-JAVA并行框架Fork/Join(一):简介和代码示例
一.背景 虽然目前处理器核心数已经发展到很大数目,但是按任务并发处理并不能完全充分的利用处理器资源,因为一般的应用程序没有那么多的并发处理任务.基于这种现状,考虑把一个任务拆分成多个单元,每个单元分别 ...
- Android-->Realm(数据库ORM)使用体验,lambda表达式
Realm,为移动设备而生.替代 SQLite 和 Core Data. 非常庆幸,官方帮助文档有中文: https://realm.io/cn/docs/java/latest/ 尽管眼下最新的版本 ...
- ovs-vswitchd