免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2301 | 回复: 1
打印 上一主题 下一主题

Open Vswitch用法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-22 08:52 |只看该作者 |倒序浏览
<div style="text-align: center;"><font class="Apple-style-span" size="5">网桥管理(ovsdb数据库操作)</font></div><div>&nbsp; &nbsp; &nbsp;<font class="Apple-style-span" size="4">ovsdb是一个非常轻量级的数据库,与其说它是一个数据库,不如说它是一个提供增删查改等功能的临时配置缓存,之所以这么说,是因为ovsdb数据库的根本就未使用多少数据库技术,如SQL语言查询、存储过程等等。ovsdb 数据库通过模式文件“openvswitch-1.2.0/vswitchd/vswitch.ovsschema”,如要定制ovsdb数据库,可通过更改 vswitch.ovsschema 文件实现,不过以下姑且仍以数据库称之。</font></div><div><font class="Apple-style-span" size="4">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></div><div>&nbsp; &nbsp; <font class="Apple-style-span" size="4">&nbsp;数据库操作的一般格式为:</font></div><div><font class="Apple-style-span" size="4">ovs-vsctl list/set/get/add/remove/clear/destroy table record column [value]</font></div><div><font class="Apple-style-span" size="4"><br></font></div><div><font class="Apple-style-span" size="4">&nbsp; &nbsp;&nbsp;默认情况下ovsdb中有以下数据表:</font></div><div><font class="Apple-style-span" size="4">bridge,controller,interface,mirror,netflow,open_vswitch,port,qos,queue,ssl,</font></div><div><font class="Apple-style-span" size="4">sflow&nbsp;即table可为上面的任一个。record为数据表中name字段的值,column为数据表任一个字段的字段名,value字段值。</font></div><div><br></div><div>&nbsp; &nbsp; &nbsp;<font class="Apple-style-span" size="4">&nbsp;基本操作:</font></div><div><font class="Apple-style-span" size="4">查看bridge数据表中的所有记录</font></div><div><font class="Apple-style-span" size="4">&nbsp; &nbsp;<font class="Apple-style-span" color="#f00000"> ovs-vsctl list bridge&nbsp;</font></font></div><div><font class="Apple-style-span" size="4"><br></font></div><div><font class="Apple-style-span" size="4">获得bridge数据表_uuid字段的值</font></div><div><font class="Apple-style-span" size="4" color="#f00000">&nbsp; &nbsp;&nbsp;ovs-vsctl get bridge br1 _uuid</font></div><div><font class="Apple-style-span" size="4"><br></font></div><div><font class="Apple-style-span" size="4">设置bridge数据表datapath_type字段的值</font></div><div><font class="Apple-style-span" size="4">&nbsp;&nbsp;</font>&nbsp;<font class="Apple-style-span" size="4" color="#f00000">ovs-vsctl set bridge br1 datapath_type="system"</font></div><div><font class="Apple-style-span" size="4" color="#f00000">&nbsp; &nbsp;ovs-vsctl get bridge br1 datapath_type&nbsp;</font></div><div><font class="Apple-style-span" size="4"><br></font></div><div><font class="Apple-style-span" size="4">清除bridge数据表flood_vlans字段的值</font></div><div><font class="Apple-style-span" size="4">ovs-vsctl remove bridge xenbr0 flood_vlans 23</font></div><div><font class="Apple-style-span" size="4">或者</font></div><div><font class="Apple-style-span" size="4">ovs-vsctl clear bridge xenbr0 flood_vlans</font></div><div><font class="Apple-style-span" size="4">删除uuid为69ee0c09-9e52-4236-8af6-037a98ca704d的qos记录</font></div><div><font class="Apple-style-span" size="4">ovs-vsctl destroy qos 69ee0c09-9e52-4236-8af6-037a98ca704d</font></div><div><font class="Apple-style-span" size="4">应用场景设置:</font></div><div><font class="Apple-style-span" size="4">QoS设置</font></div><div><font class="Apple-style-span" size="4">针对网络接口的设置:设置网络接口vif0.0的带宽为1000±100kbps</font></div><div><font class="Apple-style-span" size="4">ovs-vsctl set interface vif0.0 ingress_policing_rate=1000</font></div><div><font class="Apple-style-span" size="4">ovs-vsctl set interface vif0.0 ingress_policing_burst=100</font></div><div><font class="Apple-style-span" size="4">(ingress_policing_rate:最大发送速率(单位均为kbps)</font></div><div><font class="Apple-style-span" size="4">ingress_policing_burst:超过ingress_policing_rate的最大浮动值)</font></div><div><font class="Apple-style-span" size="4">针对交换机端口的设置:创建在vif0.0端口上的linux-htb QoS,linux-htb QoS可以针对具有指定特征的数据包流设置最大最小带宽,且在最大带宽范围内,某一特征的数据包流可以借用其他特征数据包流未用完的带宽。</font></div><div><font class="Apple-style-span" size="4">ovs-vsctl -- set port vif0.0 qos=@newqos</font></div><div><font class="Apple-style-span" size="4">-- --id=@newqos create qos type=linux-htb other-config:</font></div><div><font class="Apple-style-span" size="4">max-rate=100000000 queues=0=@q0,1=@q1</font></div><div><font class="Apple-style-span" size="4">-- --id=@q0 create queue other-config:min-rate=100000000 other-config:max-rate=100000000</font></div><div><font class="Apple-style-span" size="4">-- --id=@q1 create queue other-config:min-rate=500000000</font></div><div><font class="Apple-style-span" size="4">将带宽限制加于某特征数据包流上</font></div><div><font class="Apple-style-span" size="4">(假设vif0.0的接在交换机1号端口上,ovs-ofctl命令的使用见2.2.3)</font></div><div><font class="Apple-style-span" size="4">ovs-ofctl add-flow xenbr0 "in_port=2,idle_timeout=0,actions=enqueue:1:0"</font></div><div><font class="Apple-style-span" size="4">端口映射</font></div><div><font class="Apple-style-span" size="4">将发往eth0端口和从eth1端口发出的数据包全部定向到eth2端口</font></div><div><font class="Apple-style-span" size="4">(假设eth0、eth1、eth2端口的uuid分别为:</font></div><div><font class="Apple-style-span" size="4">69ee0c09-9e52-4236-8af6-037a98ca704d</font></div><div><font class="Apple-style-span" size="4">69ee0c09-9e52-4236-8af6-037a98ca704e</font></div><div><font class="Apple-style-span" size="4">69ee0c09-9e52-4236-8af6-037a98ca704f</font></div><div><font class="Apple-style-span" size="4">端口的uuid可以通过ovs-vsctl list port命令查看)</font></div><div><font class="Apple-style-span" size="4">ovs-vsctl -- set bridge xenbr0 mirrors=@m</font></div><div><font class="Apple-style-span" size="4">-- --id=@m create mirror name=mymirror</font></div><div><font class="Apple-style-span" size="4">select-dst-port=69ee0c09-9e52-4236-8af6-037a98ca704d</font></div><div><font class="Apple-style-span" size="4">select-src-port=69ee0c09-9e52-4236-8af6-037a98ca704e</font></div><div><font class="Apple-style-span" size="4">output-port=69ee0c09-9e52-4236-8af6-037a98ca704f</font></div><div><font class="Apple-style-span" size="4">流规则管理</font></div><div><font class="Apple-style-span" size="4">流规则组成</font></div><div><font class="Apple-style-span" size="4">每条流规则由一系列字段组成,分为基本字段、条件字段和动作字段三部分:</font></div><div><font class="Apple-style-span" size="4">基本字段包括生效时间duration_sec、所属表项table_id、优先级priority、处理的数据包数n_packets,空闲超时时间idle_timeout等,空闲超时时间idle_timeout以秒为单位,超过设置的空闲超时时间后该流规则将被自动删除,空闲超时时间设置为0表示该流规则永不过期,idle_timeout将不包含于ovs-ofctl dump-flows brname的输出中。</font></div><div><font class="Apple-style-span" size="4"><br></font></div><div><font class="Apple-style-span" size="4"><br></font></div><div><font class="Apple-style-span" size="4">条件字段包括输入端口号in_port、源目的mac地址dl_src/dl_dst、源目的ip地址nw_src/nw_dst、数据包类型dl_type、网络层协议类型nw_proto等,可以为这些字段的任意组合,但在网络分层结构中底层的字段未给出确定值时上层的字段不允许给确定值,即一条流规则中允许底层协议字段指定为确定值,高层协议字段指定为通配符(不指定即为匹配任何值),而不允许高层协议字段指定为确定值,而底层协议字段却为通配符(不指定即为匹配任何值),否则,ovs-vswitchd 中的流规则将全部丢失,网络无法连接,解决方法请参考“Open vSwitch维护”。</font></div><div><font class="Apple-style-span" size="4"><br></font></div><div><font class="Apple-style-span" size="4"><br></font></div><div><font class="Apple-style-span" size="4">动作字段包括正常转发normal、定向到某交换机端口output:port、丢弃drop、更改源目的mac地址mod_dl_src/mod_dl_dst等,一条流规则可有多个动作,动作执行按指定的先后顺序依次完成。</font></div><div><font class="Apple-style-span" size="4">基本操作</font></div><div><font class="Apple-style-span" size="4">查看虚拟交换机xenbr0的信息</font></div><div><font class="Apple-style-span" size="4">&nbsp;</font></div><div><font class="Apple-style-span" size="4"><br></font></div><div><font class="Apple-style-span" size="4">显示的xenbr0信息中网络接口名称前的数字为该网络接口挂接到Open vSwitch上的端口号,如1(vif0.0): 中的1为网络接口vif0.0对应的端口号,在添加包含in_port字段的流规则时可通过该命令查看网络接口对应的端口号。</font></div><div><font class="Apple-style-span" size="4">查看xenbr0上各交换机端口的状态</font></div><div><font class="Apple-style-span" size="4">&nbsp;</font></div><div><font class="Apple-style-span" size="4"><br></font></div><div><font class="Apple-style-span" size="4">输出的结果中包含了各网络接口上收到的数据包数,字节数,丢包数,错误数据包数等信息</font></div><div><font class="Apple-style-span" size="4">查看xenbr0上的所有流规则</font></div><div><font class="Apple-style-span" size="4">&nbsp;</font></div><div><font class="Apple-style-span" size="4"><br></font></div><div><font class="Apple-style-span" size="4">输出结果中共有两条流规则,第一条为默认的流规则,即对所有数据包进行正常转发,为普通二层交换机完成的功能,优先级为0,最低,永不超时。</font></div><div><font class="Apple-style-span" size="4">第二条为手动添加的流规则,基本字段中不包含idle_timeout字段,表示永不超时,优先级为32768,Open vSwitch将先根据该条流规则处理收到的数据包,如从数据包中提取出的特征与条件字段不符,则该用第一条流规则处理收到的所有数据包。</font></div><div><font class="Apple-style-span" size="4">添加一条流规则:丢弃从2号端口发来的所有数据包</font></div><div><font class="Apple-style-span" size="4">&nbsp;</font></div><div><font class="Apple-style-span" size="4"><br></font></div><div><font class="Apple-style-span" size="4">删除一条流规则:删除条件字段中包含in_port=2的所有流规则</font></div><div><font class="Apple-style-span" size="4">&nbsp;</font></div><div><font class="Apple-style-span" size="4"><br></font></div><div><font class="Apple-style-span" size="4"><br></font></div><div><font class="Apple-style-span" size="4"><br></font></div><div><font class="Apple-style-span" size="4">流规则中可包含通配符和简写形式,任何字段都可等于*或ANY,如:</font></div><div><font class="Apple-style-span" size="4">丢弃所有收到的数据包</font></div><div><font class="Apple-style-span" size="4"><br></font></div><div><font class="Apple-style-span" size="4">ovs-ofctl add-flow xenbr0 dl_type=*,nw_src=ANY,actions=drop</font></div><div><font class="Apple-style-span" size="4">简写形式为将字段组简写为协议名,目前支持的简写有ip,arp,icmp,tcp,udp,与流规则条件字段的对应关系如下:</font></div><div><font class="Apple-style-span" size="4">dl_type=0x0800 &lt;=&gt; ip</font></div><div><font class="Apple-style-span" size="4">dl_type=0x0806 &lt;=&gt; arp</font></div><div><font class="Apple-style-span" size="4">dl_type=0x0800,nw_proto=1 &lt;=&gt; icmp</font></div><div><font class="Apple-style-span" size="4">dl_type=0x0800,nw_proto=6 &lt;=&gt; tcp</font></div><div><font class="Apple-style-span" size="4">dl_type=0x0800,nw_proto=17 &lt;=&gt; udp</font></div><div><font class="Apple-style-span" size="4"><br></font></div><div><font class="Apple-style-span" size="4"><br></font></div><div><font class="Apple-style-span" size="4">(1.1.0 即以后版本支持)</font></div><div><font class="Apple-style-span" size="4"><br></font></div><div><font class="Apple-style-span" size="4">dl_type=0x86dd. &lt;=&gt; ipv6</font></div><div><font class="Apple-style-span" size="4">dl_type=0x86dd,nw_proto=6. &lt;=&gt; tcp6</font></div><div><font class="Apple-style-span" size="4">dl_type=0x86dd,nw_proto=17. &lt;=&gt; udp6</font></div><div><font class="Apple-style-span" size="4">dl_type=0x86dd,nw_proto=58. &lt;=&gt; icmp6</font></div><div><font class="Apple-style-span" size="4"><br></font></div><div><font class="Apple-style-span" size="4"><br></font></div><div><font class="Apple-style-span" size="4">应用场景设置</font></div><div><font class="Apple-style-span" size="4">网站屏蔽</font></div><div><font class="Apple-style-span" size="4">屏蔽由Open vSwitch管理的任何主机对主机119.75.213.50的访问,但只屏蔽ip数据包(由dl_type=0x0800指定),即所有主机将无法访问该主机上所有基于IP协议的服务,如万维网服务、FTP访问等</font></div><div><font class="Apple-style-span" size="4">ovs-ofctl add-flow xenbr0 idle_timeout=0,dl_type=0x0800,nw_src=119.75.213.50,actions=drop</font></div><div><font class="Apple-style-span" size="4">数据包重定向</font></div><div><font class="Apple-style-span" size="4">将交换机中所有的icmp协议包(有dl_type=0x0800,nw_proto=1指定)全部转发到4号端口,包括4号端口自己发出的icmp包,该流规则将导致由Open vSwitch管理的主机间以及与外部网络间都将访问ping通,但可以使用万维网、FTP等服务。</font></div><div><font class="Apple-style-span" size="4">ovs-ofctl add-flow xenbr0 idle_timeout=0,dl_type=0x0800,nw_proto=1,actions=output:4</font></div><div><font class="Apple-style-span" size="4">去除VLAN tag</font></div><div><font class="Apple-style-span" size="4">去除从3号端口发来的所有VLAN数据包中的tag,然后转发</font></div><div><font class="Apple-style-span" size="4">ovs-ofctl add-flow xenbr0 idle_timeout=0,in_port=3,actions=strip_vlan,normal</font></div><div><font class="Apple-style-span" size="4">更改数据包源IP地址后转发</font></div><div><font class="Apple-style-span" size="4">将从3号端口收到的所有IP包的源IP字段更改为211.68.52.32</font></div><div><font class="Apple-style-span" size="4">ovs-ofctl add-flow xenbr0 idle_timeout=0,in_port=3,actions=mod_nw_src:211.68.52.32,normal</font></div><div><font class="Apple-style-span" size="4"><br></font></div><div><font class="Apple-style-span" size="4">内核模块中flow操作</font></div><div><font class="Apple-style-span" size="4">查看内核模块flow</font></div><div><font class="Apple-style-span" size="4">ovs-dpctl dump-flows xenbr0</font></div><div><font class="Apple-style-span" size="4"><br></font></div><div><font class="Apple-style-span" size="4"><br></font></div><div><font class="Apple-style-span" size="4">后台模块控制,如日志系统、后台模块退出</font></div><div><font class="Apple-style-span" size="4">查看后台模块支持的appctl命令</font></div><div><font class="Apple-style-span" size="4">查看ovsdb-server支持的appctl命令,ovs-appctl必须在后台模块运行后才能针对后台模块使用,默认情况下,所有运行的后台模块都会在/usr/local/var/run/openvswitch/目录下创建一个与ovs-appctl通信的socket文件</font></div><div><font class="Apple-style-span" size="4">&nbsp;</font></div><div><font class="Apple-style-span" size="4"><br></font></div><div><font class="Apple-style-span" size="4">更改Open vSwitch各后台的模块的日志级别</font></div><div><font class="Apple-style-span" size="4">更改ovs-vswitchd模块的日志级别info,“ANY:ANY:info”中的前一个“ANY”代表ovs-vswitchd中的任何模块组件,“ovs-appctl --target=/usr/local/var/run/openvswitch/</font></div><div><font class="Apple-style-span" size="4">ovs-vswitchd.29384.ctl vlog/list”命令输出的第一列将为ovs-vswitchd包含的所有模块组件。“ANY:ANY:info”中的后一个“ANY”代表日志的任何方式的输出,日志的输出方式有三种,分别为:console,syslog,file,分别代表将日志输出到控制台、写入到系统日志系统和写入到ovs-vswitchd启动时由—log-file参数指定的文件。“ANY:ANY:info”中的“info”表示日志级别,共有emer、err、warn、info、dbg五个日志级别,dbg为最低级别,指定为dbg时,所有的日志信息都将输出,但此时可能导致日志系统迅速膨胀,而占用越来越多的硬盘存储空间。</font></div><div><font class="Apple-style-span" size="4">ovs-appctl --target=/usr/local/var/run/openvswitch/ovs-vswitchd.29384.ctl vlog/set</font></div><div><font class="Apple-style-span" size="4">ANY:ANY:info</font></div><div><font class="Apple-style-span" size="4">退出后台模块</font></div><div><font class="Apple-style-span" size="4">让ovs-vswitchd停止运行</font></div><div><font class="Apple-style-span" size="4">ovs-appctl --target=/usr/local/var/run/openvswitch/ovs-vswitchd.29384.ctl exit</font></div><div><font class="Apple-style-span" size="4"><br></font></div><div><br></div>

论坛徽章:
29
技术图书徽章
日期:2013-09-02 19:59:502015元宵节徽章
日期:2015-03-06 15:51:332015小元宵徽章
日期:2015-03-06 15:57:20操作系统版块每日发帖之星
日期:2015-08-16 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17操作系统版块每日发帖之星
日期:2015-09-21 06:20:002015亚冠之水原三星
日期:2015-10-30 00:06:07数据库技术版块每日发帖之星
日期:2015-12-24 06:20:0015-16赛季CBA联赛之上海
日期:2016-01-07 10:32:07操作系统版块每日发帖之星
日期:2016-01-08 06:20:00操作系统版块每日发帖之星
日期:2016-05-18 06:20:00IT运维版块每日发帖之星
日期:2016-07-23 06:20:00
2 [报告]
发表于 2011-12-22 10:48 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP