Q1:移植过程中好像没有修改OVS源代码,那源码中有没有跟特定平台相关的代码呢?(应该有与linux内核交互的部分吧)
A1:我在学习ovs时候,看到只有windows、linux平台。而linux平台下面只有一个dpdk是intel特定平台相关的,其他并没有
Q2:目前是否有已知的需要修改源代码的地方呢
A2:这个需要与公司特定产品才能进行改造。像我之前修改OpenFlow协议
Q3:假设 我要移植到2.6.x内核 怎么办? 2.6.31之前的一个版本不支持dpdk
A3:那就没有办法 dpdk也是有最低要求,如果这些不能满足是无法使用dpdk功能的
Q4:切换分支时候使用的是 git checkout -b 命令,-b 是否应该不用呢?因为这好像是会新建分支的
A4:git checkout -b 分支名 表示创建分支并且切换到新分支名
Q5:我看到你移植了vswitchd模块,但是OVS偶尔性很高,其会牵扯到和ovsdb-sever之间的交互等多模块,只是移植vswitchd这部分,可以完成ovs一个完整的功能吗?耦合性
A5:不可以的 vswtichd只是用户态核心程序,内核态核心程序是dataplane。在分享过程中也说了,虽然ovs耦合性很高,但好在很多公司都是全部移植
Q6:文中需要找的源文件比如 ofproto/.libs/ libofproto.a完整路径是/ ofproto/.libs/ libofproto.a吗?
A6:[attach]1018[/attach]
Q7:目前基于ovs做开发的很多,一般只是打印输出,但是效率很低,能否介绍一下开发过程中调试的一些经验和工具。
A7:1、能用gdb调试就用gdb。 在我之前博客中有一篇介绍main函数,里面会涉及到gdb调试,你可以参考一下。但是gdb调试多线程的时候 需要特别注意
2、日志。 对于多线程、多进程的ovs,日志特别重要。日志需要把ovs的日志开关打开,里面会有详细日志,其他方面我也不是很清楚。
Q8:请教下,编译时指定dpdk选项后是否意味着ovs与dpdk协同工作,不再需要改动其他地方?另外指定dpdk后比原来效率提高明显嘛?
A8:开启了dpdk选项,就必须与dpdk结合,因为源码中有些函数是条件编译。dpdk官方号称 使用dpdk性能会有所提升。但是通过我查看相关资料,dpdk配置还是比较麻烦,如果设置不好,反而性能会下降。编译选项这个地方有预编译[attach]1019[/attach]
Q9:如果想调试比较靠后过程中的一段代码(可能已经不是main函数所在的文件代码),比如说是匹配过程代码等,是否gdb可以直接调试操作?
A9:一样可以的,我调试过的,你按照函数名进行断点调试
Q10:gdb调试文档在哪里?
A10:gdb是很高深的内容,你可以先查看一下gdb简单介绍,比如说:如何设置断点、如何查看堆栈等,建议百度。
Q11:这个是我参照你那篇main调试的,不知道为什么总是出现这个问题
[attach]1020[/attach]
A11:把ovs-vswitchd 去掉,r参数。
欢迎光临 51学通信论坛2017新版 (http://bbs.51xuetongxin.com/) | Powered by Discuz! X3 |