ovs-appctl 命令合集

通用命令

exit 優雅關閉ovs-vswitchd進程 linux

qos/show interface 查詢內核中關於qos的配置以及和給出端口有關的狀態 app

cfm/show [interface]
顯示在指定端口上CFM配置的詳細信息。若是沒有指定接口,則顯示全部使能了CFM的接口 dom

cfm/set-fault [interfacestatus 強制將指定端口的CFM模塊的錯誤狀態(若是沒指定接口則是所有接口)設置成指定的狀態。能夠是」true」,」false」,」normal」 tcp

stp/tcn [bridge]
在運行了stp的bridge上強制進行拓撲變動。之將致使該dp發送拓撲變動通知而且刷新MAC表。。若是沒有指定橋,則應用到全部dp工具

 

橋命令 

這些命令用於管理橋。
 性能

fdb/flush [bridge]
清除指定橋的MAC學習表,沒有指定橋則應用於全部橋 學習

fdb/show bridge 列出指定橋上每一個MAC直至與VLAN的對應信息,而且包含該學習到該MAC的端口號還有該條目的age信息,單位爲秒 測試

bridge/reconnect [bridge]
命令橋斷開和當前openFlow控制器的鏈接而且重連,若是沒有指定橋,則應用於全部橋,這個命令能夠在分析排查控制器錯誤的時候頗有用 debug

bridge/dump-flows bridge 列出橋上全部的流,包括那些在其餘命令中(例如 ovs-ofctl dump-flows)默認隱藏的流.一些機制好比帶內管理等設置的流策略是不行容許修改和覆蓋的,因此對控制器來講他們是隱藏的。
 日誌

BOND命令 這些命令管理ovs橋上綁定端口。要了解這些命令,你須要瞭解一種叫作源負載分擔(SLB)的實施細節。做爲直接將源MAC地址設成SLAVE的作法,經過特定的計算將48bit的MAC自動化映射到一個8bit的值(MAC hash)。全部匹配這個hash值得mac地址被指定爲slave。 

bond/list 列出全部的綁定配置,以及slaves,範圍包含全部橋 

bond/show[port] 給出指定端口的全部綁定有關的信息(updelay,downdelay,距離下次進行從新平衡的時間),若是沒指定端口,則列出全部bond的端口。同時也列出全部slave的信息,包括這些slave是處於enable仍是disable狀態、完成一個正在實施中的updelay或者一個downdelay的時間、是不是激活態的slave。任何關於LACP的信息可使用lacp/show來查看。 

bond/migrate port hash slave 僅適用於配置了SLB的綁定。分配一個指定的machash值給一個新的slave。Port指定了bond的端口,hash則是將要遷移的mac hash值(十進制0到255之間),slave便是要新的slave。 這個從新制定的關係不是永久的:rebalanceing或者發生fail-over時,這個mac hash蔣輝按照常規的方式切換到新的slave上面
MAC hash值不能指定到一個disable態的slave上
 

bond/set-active-slave port slave 將給定slave設爲激活態的slave。給定的slave必須是enable狀態。
這個配置不是永久的:若是該slave變成disable,將會自動選擇一個新的slave。 

bond/enable-slave port slave 

bond/disable-slave port slave Enable/disableslave在給定的bond port上,忽略任何updelay和downdelay。
這個設置不是永久的:他將保持到該slave的承載狀態變化 

bond/hashmac [valn] [basis]
返回指定mac(伴隨指定vlan和basis)的hash值 

lacp/show [port] 列出全部指定端口的lacp關聯信息。包括active/passive、system id、systempriority同時列出每一個slave 的信息:enable/disable、鏈接上或者未鏈接上、端口id和優先級、主用信息和成員信息。若是沒有指定端口,則顯示全部應用了CFM的接口信息。

 

 

數據通道命令(datapath) 

這些命令管理邏輯數據通道。相似ovs-dpctl的命令。 

dpif/dump-dps 在多行中顯示全部配置的datapath名稱 

dpif/show[dp….]
打印dp的彙總信息,包括dp的狀態還有鏈接上的端口列表。端口的信息包括openFlow的端口號,datapath的端口號,以及類型(本地端口被標識爲openflow port 65534)
若是指定了一個或多個datapath,將只顯示指定的這些dp的信息。不然,則顯示全部dp的信息。 

dpif/dump-flows dp 想控制端打印dp中流表的全部條目。
這個命令主要來與debugOpen Vswitch.它所打印的流表不是openFlow的流條目。它打印的是由dp模塊維護的簡單的流。若是你想查看OpenFlow條目,請使用ovs-ofctl dump-flows。 dpif/del-fow dp 刪除指定dp上全部流表。同上所述,這些不是OpenFlow流表。
  

OpenFlow協議命令 

這些命令管理核心OpenFlow交換的實施。 

 

ofproto/list 列出全部運行中ofproto實例。這些名字可能在ofproto/trace中用到。 

ofproto/trace[dpnameodp_flow [-generate] [packet] ofproto/tracebridgebr_flow [-generate] [packet]追蹤報告構造包在交換機中的路徑。包頭(例如源和目的)和元數據(好比:入端口),一塊兒組成它的「flow」,根據這些「flow」決定包的目的地。你能夠用些列途徑地址流。 dpnameodp-flow odp-flow 是一個可使用 ovs-dpctl dump-flows命令打印出來的流。若是你全部的橋都是一樣樣的類型,這也是一般的狀況,那麼你能夠忽略 dp-name,可是若是你的橋擁有不一樣類型(即ovs-netdev和ovs-system型那麼你必需要指定dp-name。 bridgebr_flow br_flow是一種可使用ovs−ofctl  add−flow命令添加的流類型。(這不是一個OpenFlow流:除了其餘的差別,這種流永遠不會有通配符)bridge指定了被追蹤的br-flow通過的橋名。
 
一般狀況下,你能夠只指定一個流,用以上提到的一種形式,可是有時候你可能須要值一個確切的數據包來代替流
  反作用 有些動做是由反作用的,好比,normal 動做能刷新MAC學習表,learn動做會改變OpenFlow表。ofproto/trace只有在指定包的時候發生反作用。若是你須要虛做用,那麼你必須提供一個包。
output 動做也是明顯的反作用,可是ofproto/trace 永遠不會執行這個動做,即使是你制定了包的時候)
  不完整的信息 大多數時候,Open Vswitch可以盡力用流就得出一個包所經路徑的全部信息,可是在一些特定場景下,ovs可能須要查看一些不包含在流內的其餘包的部分信息。這種狀況下,若是你不提供一個包,那麼ofproto/trace就會提示你須要一個包。
 
若是你但願在ofproto/trace 操做中包含一個包,你有兩種方法實現:
  -generate 這個選項,附加在以前敘述的兩種流方式後面用來在內生成該流的一個包而且使用這個包。若是你的目地是利用反作用,那麼這個選項是你達成目標的最容易的方法。可是-generate 不是一個填充不完整信息的好方式,由於生成的包是基於流信息的,便是說這個包並不能帶有任何這個流之外的信息。
  packet 這種形式提供了一個明確的以十六進制數字序列表示的包。一個以太網幀至少14 bytes長,即至少28個16進制的數字。很明顯,使用手工輸入是很不方便的。好在咱們的ovs-pacp 和ovs-tcpundump 工具提供了簡便的方法。
利用這種形式,包頭直接從packet中提取,那麼odp_flow或者br_flow應該只包含元數據。元數據能夠是如下類型:
  skb_priority 報文的qos優先級 skb_mark 報文的SKB標記 tun_id 報文到達的隧道id號 in_port 報文到達的端口
第一種流格式的in_port的值是內核 datapath的端口號,而OpenFlow的端口號值是OpenFlow的端口號。這兩種端口號通常都是不同的,並且沒什麼關係可言。
  

ofproto/self-check [switch] 運行內部一致性檢查,而且返回一個簡要的彙總。指定橋的時候限定在該實例,不然是全部實例。若是彙總報告了任何錯誤,那麼ovs的日誌中會包含更多詳細的信息。請將這些錯誤報告做爲bug發送給ovs的開發者。
 

vlog命令 

這些命令管理ovs-vswitchd的日誌配置
  

vlog/set [spec] 設置日誌等級。沒有spec時,設置全部模塊和設施的日誌等級爲dbg。其餘狀況下,spec是一個用逗號或者空格或者冒號分隔的單詞列表,最多支持下面所述範疇的每樣配置一個。
l  一個可用模塊名,能夠用ovs-appctlvlog/list 命令來查看全部可用模塊名。
syslog、console、file改變着三項任意項的日誌等級。
off、emer、err、warn、info、dbg,這些用來控制日誌等級,不低於這些等級的消息蔣輝被記錄在日誌中,全部低於該等級的將被過濾。參考ovs-appctl查看日誌等級的詳細定義。
若是沒有指定spec, 對於file選項,不論日誌等級是否設置,只有當ovs-vswitchd調用 –log-file選項時,日誌纔會被記錄至文件。
爲了保持和老版本的ovs的兼容性,any能夠做爲合法參數可是不會發生做用。 vlog/set PATTERN:facility:pattern 設置應用於每一個設施日誌的格式,能夠參考ovs-appctl查看格式的可用語法信息。 

vlog/list 列出全部支持記錄日誌的模塊和他們當前的日誌等級。

vlog/reopen 讓ovs-vswitchd關閉而且從新打開日誌文件(能夠用於在轉換日誌後,從新創建一個新日誌文件來使用)
須要ovs-vswitchd 使能 –log-file選項時纔有效 vlog/disable-rate-limit [module]… vlog/enable-rate-limit [module]… 默認狀況下,ovs-vswitchd 限制了記錄日誌的速率。當消息發生的頻率高於默認值時,該消息將會被抑制。這將節省磁盤空間,讓日誌更加可讀,而且讓進程更加流暢,可是有些狀況下的排錯須要更多的細節。這樣,vlog/disable−rate−limit容許特定獨立模塊的日誌記錄不限制在默認速率下。你能夠指定一個或多個模塊名,這些模塊名能夠經過vlog/list查看。不指定模塊名或者使用any關鍵字將應用到全部記錄日誌的模塊。 vlog/enable−rate−limit命令vlog/disable−rate−limit的語法同樣,能夠恢復速率限制。 內存命令(MEMORYCOMMANDS) 報告內存的使用率 memory/show 顯示一些ovs-vswitchd內存使用的基礎狀態信息。ovs−vswitchd也會在啓動後而且週期性的檢測內存的增加
  COVERAGE COMMANDS 這個命令管理ovs−vswitchd的「coverage counters」,即在守護進程運行期間發生的特殊事件的次數。除了使用這個命令意外,當ovs−vswitchd檢測到主循環運行週期異常長的時候,會自動以INFO的日誌等級記錄coverage counters。
主要用於性能分析和debugging。 coverage/show 顯示coverage counters值。
 

 


 

壓力選項命令(STRESSOPTION COMMANDS) 

這些命令容許開發者測試OpenvSwitch,從而觸發一些只有在極端案例中出現的行爲。開發和測試者所以能夠更加容易的發現只有在偶然的後者極端狀況下才會出現的bug。壓力選項可能致使一些非正常的行爲,但這些行爲可能並非bug,因此,這些命令應該僅僅用於測試。  

stress/enable

stress/disable 全部壓力選項的開關 stress/list 如下用表格形式列出了全部可用的壓力選項和他們的設置,表頭以下:
NAME
一個單詞用來定義這個選項,並在stress/set中使用這個名字
DESCRIPTION
爲不瞭解這個選項內部代碼和該選項完成動做的人所添加的描述信息
PERIOD
現行配置的觸發週期。若是壓力選項是去使能狀態,那麼這也是disabled。不然這是一個表示壓力選項觸發的動做時間發生的間隔計數。
MODE
若是壓力選項disabled,那麼值爲n/a。其餘狀況,若是選項制定了確切的觸發週期那麼是periodic,若是是指定週期內隨機觸發則是random COUNTER 若是壓力選項disabled,那麼n/a,其他狀況,顯示下個觸發週期錢一共觸發了多少次。
HITS
這個壓力選項從程序啓動開始一共觸發了多少次
RECOMMENDED
對不熟悉間隔的人建議的週期。這是一個可信的壓力,不會形成系統的崩潰。MINIMUM/MAXIMUM
週期的最大/最小值
DEFAULT
默認週期,這將會在今使能了壓力選項(tress/enable),可是沒有具體配置的時候(stress/set)。當壓力選項爲關閉時默認關閉。  

stress/set option period [random|periodic] 設置壓力選項option的週期爲給定period值。period爲0是disable這個選項。指定random時,將以一個平均週期爲給定period的值來隨機觸發這個選項,指定periodic時,將精確地以週期值來觸發動做。以後是默認值。
有過壓力選項沒有用stress/enable使能,這個命令將不會生效。
 

 


 

限制(LIMITS) 

咱們相信限制和咱們以下所寫的同樣精確。這些限制假設你使用linux內核的dp。 

l  大約256個橋須要5000個文件描述符來(ovs-switchd進程每一個datapath須要17個文件描述符)

l  每一個橋65280個端口。根據綁定的hash標的尺寸,每一個橋接口在1024以上,性能將會降級 

l  每一個橋能夠學習2048個MAC條目 

l  內核的流僅受限於內核的可用內存。32位的內核每一個橋維護的流數大於1048576或者64位的內核維護的流數目大於262144時,性能將會降級。(ovs-vswitchd永遠都不該該加載那麼多條流) 

l  OpenFlow流僅受限於可用內存。性能根據獨特的通配符個數呈現線性分佈。OpenFlow表中相同通配符的流信息都有相同的查找時間。可是當一個表擁有不少不一樣通配置的流時,查表的時間就線性上升了。 

l  每一個橋255端口能夠加入STP協議 

l  每一個橋支持32個端口鏡像(MIRROR) 

l  端口名最長15字節(這是linux系統內核的限制)

相關文章
相關標籤/搜索