您的位置:首页 > 运维架构

Open vSwitch 使用

2013-07-16 10:17 190 查看

1 网桥管理

添加名为br0的网桥

ovs-vsctl add-br br0

删除名为br0的网桥

ovs-vsctl del-br br0

列出所有网桥

ovs-vsctl list-br

判断网桥br0是否存在

ovs-vsctl br-exists br0

列出挂接到网桥br0上的所有网络接口

ovs-vsctl list-ports br0

将网络接口eth0挂接到网桥br0上

ovs-vsctl add-port br0 eth0

删除网桥br0上挂接的eth0网络接口

ovs-vsctl del-port br0 eth0

列出已挂接eth0网络接口的网桥

ovs-vsctl port-to-br eth0

ovsdb是一个非常轻量级的数据库,与其说它是一个数据库,不如说它是一个提供增删查改等功能的临时配置缓存,之所以这么说,是因为ovsdb数据库的根本就未使用多少数据库技术,如SQL语言查询、存储过程等等。ovsdb 数据库通过模式文件“openvswitch-1.1.0pre2/vswitchd/vswitch.ovsschema”,如要定制ovsdb数据库,可通过更改 vswitch.ovsschema 文件实现,不过以下姑且仍以数据库称之。

数据库操作的一般格式为:

ovs-vsctl list/set/get/add/remove/clear/destroy table record column [value]

默认情况下ovsdb中有以下数据表:

bridge, controller,interface,mirror,netflow,open_vswitch,port,qos,queue,ssl,sflow

即table可为上面的任一个。record为数据表中name字段的值,column为数据表任一个字段的字段名,value字段值。

基本操作:

查看bridge数据表中的所有记录



获得bridge数据表_uuid字段的值



设置bridge数据表datapath_type字段的值



清除bridge数据表flood_vlans字段的值

ovs-vsctl remove bridge xenbr0 flood_vlans 23

或者

ovs-vsctl clear bridge xenbr0 flood_vlans

删除uuid为69ee0c09-9e52-4236-8af6-037a98ca704d的qos记录

ovs-vsctl destroy qos 69ee0c09-9e52-4236-8af6-037a98ca704d

2 应用场景设置

QoS设置

针对网络接口的设置:设置网络接口vif0.0的带宽为1000±100kbps

ovs-vsctl set interface vif0.0 ingress_policing_rate=1000

ovs-vsctl set interface vif0.0 ingress_policing_burst=100

(ingress_policing_rate:最大发送速率(单位均为kbps)

ingress_policing_burst:超过ingress_policing_rate的最大浮动值)

针对交换机端口的设置:创建在vif0.0端口上的linux-htb QoS,linux-htb QoS可以针对具有指定特征的数据包流设置最大最小带宽,且在最大带宽范围内,某一特征的数据包流可以借用其他特征数据包流未用完的带宽。

ovs-vsctl -- set port vif0.0 qos=@newqos

-- --id=@newqos create qos type=linux-htb other-config:

max-rate=100000000 queues=0=@q0,1=@q1

-- --id=@q0 create queue other-config:min-rate=100000000 other-config:max-rate=100000000

-- --id=@q1 create queue other-config:min-rate=500000000

将带宽限制加于某特征数据包流上

(假设vif0.0的接在交换机1号端口上,ovs-ofctl命令的使用见2.2.3)

ovs-ofctl add-flow xenbr0 "in_port=2,idle_timeout=0,actions=enqueue:1:0"

端口映射

将发往eth0端口和从eth1端口发出的数据包全部定向到eth2端口

(假设eth0、eth1、eth2端口的uuid分别为:

69ee0c09-9e52-4236-8af6-037a98ca704d

69ee0c09-9e52-4236-8af6-037a98ca704e

69ee0c09-9e52-4236-8af6-037a98ca704f

端口的uuid可以通过ovs-vsctl list port命令查看)

ovs-vsctl -- set bridge xenbr0 mirrors=@m

-- --id=@m create mirror name=mymirror

select-dst-port=69ee0c09-9e52-4236-8af6-037a98ca704d

select-src-port=69ee0c09-9e52-4236-8af6-037a98ca704e

output-port=69ee0c09-9e52-4236-8af6-037a98ca704f


流规则管理

流规则组成

每条流规则由一系列字段组成,分为基本字段、条件字段和动作字段三部分:

基本字段包括生效时间duration_sec、所属表项table_id、优先级priority、处理的数据包数n_packets,空闲超时时间idle_timeout等,空闲超时时间idle_timeout以秒为单位,超过设置的空闲超时时间后该流规则将被自动删除,空闲超时时间设置为0表示该流规则永不过期,idle_timeout将不包含于ovs-ofctl dump-flows brname的输出中。

条件字段包括输入端口号in_port、源目的mac地址dl_src/dl_dst、源目的ip地址nw_src/nw_dst、数据包类型dl_type、网络层协议类型nw_proto等,可以为这些字段的任意组合,但在网络分层结构中底层的字段未给出确定值时上层的字段不允许给确定值,即一条流规则中允许底层协议字段指定为确定值,高层协议字段指定为通配符(不指定即为匹配任何值),而不允许高层协议字段指定为确定值,而底层协议字段却为通配符(不指定即为匹配任何值),否则,ovs-vswitchd 中的流规则将全部丢失,网络无法连接。

动作字段包括正常转发normal、定向到某交换机端口output:port、丢弃drop、更改源目的mac地址mod_dl_src/mod_dl_dst等,一条流规则可有多个动作,动作执行按指定的先后顺序依次完成。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: