zoukankan      html  css  js  c++  java
  • 总结OpenvSwitch的调试经验

    相信相信不少人在开始用OpenvSwitch(以下简称OVS)或者修改源码的时候,都不知道如何去调试,根据我的学习历程以及从网上搜集的资料做一个汇总。

    一. 个人经验

    1. 从网上找相关资料,熟悉OpenvSwitch的构架和自己需要修改的代码,后续如果有事件,我会写关于OpenvSwitch2.4.0的代码分析(和前面版本的核心相同);
    2. 推荐一个QQ群:387310964,里面的大神都挺热心的,凡问必答;
    3. 前面写了一个自动化编译和安装OVS的脚本,通过我的观察,即使编译有错误,不会自动中断,而是会编译完成,并且启动OpenvSwitch;
    4. 学会使用log。
    5. 我同时安装了CPqD,可以验证控制器的功能
    6. 熟练使用wireshark

    二. 调试方法

    首先来看下OVS的结构图:

    调试就是从上图中的几大构件分别入手的。

    1. 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]
      以上命令的作用可以通过英文很容易的看出来,不过建议大家还是运行一下,直观感受了解下,加深印象,方便以后调试。
    2. 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: 追踪流量的处理过程
    3. log文件
    log文件存储的路径是/var/log/openvswitch,里面包括:
    •  ovs-vswitchd.log
    •  ovsdb-server.log

    三. 总结

    上面只是列举了一些常用的调试命令,更详细的可以看官网,当然调试是一项十分复杂繁琐的工程,所以熟悉和使用好上面的命令是最基本的,其他的只能具体情况具体处理了。good luck!

  • 相关阅读:
    战略就是做出各种选择和不断权衡取舍;战略就是要刻意与众不同
    获取基目录,它由程序集冲突解决程序用来探测程序集
    Entity Framework的原理及使用方式
    NHibernate使用之详细图解
    最重要的不是你认识多少个人,而是你认识多少种人
    强关系利于执行,弱关系利于创新
    判断它是不是你的社群成员,你要看它对你的态度
    粉丝不在于多,在于够残
    没有请不起的人才,只有付不起的诚意
    所有有可能被互联网取代的组织一定会被取代--颠覆式创新研习社
  • 原文地址:https://www.cnblogs.com/cotyb/p/5069450.html
Copyright © 2011-2022 走看看