exit 优雅关闭ovs-vswitchd进程 linux
qos/show interface 查询内核中关于qos的配置以及和给出端口有关的状态 app
cfm/show [interface]
显示在指定端口上CFM配置的详细信息。若是没有指定接口,则显示全部使能了CFM的接口 dom
cfm/set-fault [interface] status 强制将指定端口的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的接口信息。
这些命令管理逻辑数据通道。相似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交换的实施。
ofproto/list 列出全部运行中ofproto实例。这些名字可能在ofproto/trace中用到。
ofproto/trace[dpname] odp_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的开发者。
这些命令管理ovs-vswitchd的日志配置
vlog/set [spec] 设置日志等级。没有spec时,设置全部模块和设施的日志等级为dbg。其余状况下,spec是一个用逗号或者空格或者冒号分隔的单词列表,最多支持下面所述范畴的每样配置一个。
l 一个可用模块名,能够用ovs-appctlvlog/list 命令来查看全部可用模块名。
l syslog、console、file改变着三项任意项的日志等级。
l 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值。
这些命令容许开发者测试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使能,这个命令将不会生效。
咱们相信限制和咱们以下所写的同样精确。这些限制假设你使用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系统内核的限制)