總結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


    以上命令的作用可以通過英文很容易的看出來,不過建議大家還是運行一下,直觀感受了解下,加深印象,方便以后調試。
  2. ovs-vswitchd
    這是OVS最核心的模塊了,對外負責和控制器通過OpenFlow通信,通過OVSDB協議和數據庫通信,通過netlink和內核模塊通信,通過netdev抽象接口和系統通信。調試命令主要有以下:

  3. 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!

    posted @ 2015-12-23 11:56  cotyb  閱讀( 4910)  評論( 0編輯  收藏
    AmazingCounters.com
    另外還有一個命令ovsdb-tool,是管理數據庫文件的,使用方式如下: ovsdb-tool show-log [-mmm]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM