51学通信论坛2017新版

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2585|回复: 0
打印 上一主题 下一主题

总结OpenvSwitch的调试经验

[复制链接]

 成长值: 15613

  • TA的每日心情
    开心
    2022-7-17 17:50
  • 2444

    主题

    2544

    帖子

    7万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    74104
    跳转到指定楼层
    楼主
    发表于 2017-11-17 15:43:23 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
    转自:https://www.cnblogs.com/cotyb/p/5069450.html
    相信相信不少人在开始用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!
      不向静中参妙理,纵然颖悟也虚浮 立乎其大 和而不同 古之成大事者,不惟有超世之才,亦必有坚韧不拔之志

    扫描并关注51学通信微信公众号,获取更多精彩通信课程分享。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|51学通信技术论坛

    GMT+8, 2025-1-31 15:05 , Processed in 0.211605 second(s), 32 queries .

    Powered by Discuz! X3

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表