Open vSwitch基本操作

摘自:

http://www.yandong.org/archives/485

http://blog.csdn.net/yahohi/article/details/6631934

 

Open vSwitch虚拟化网络架构图:

 

ovs-vsctl命令简介:

添加名为br0的网桥

ovs-vsctl add-br br0

 

删除名为br0的网桥

ovs-vsctl del-br br0

 

列出所有网桥

ovs-vsctl list-br

 

列出挂接到网桥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

 

VLAN建立与配置:

示例:

建立下图所示VLAN网络,

详见http://www.yandong.org/archives/485


虚拟机的虚拟网卡由tap或vif标记,同一VLAN下的虚拟机可实现互ping。

 

流规则:

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

基本字段包括生效时间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 中的流规则将全部丢失,网络无法连接。其中dl是datalink的缩写,nw是network的缩写,tp是transport的缩写。

动作字段包括正常转发normal、定向到某交换机端口output:port、丢弃drop、更改源目的mac地址mod_dl_src/mod_dl_dst等,一条流规则可有多个动作,动作执行按指定的先后顺序依次完成。

 

ovs-ofctl命令简介:

查看虚拟交换机ovsbr0的信息

ovs-ofctl show ovsbr0

 

查看ovsbr0上各交换机端口的状态

ovs-ofctl dump-ports ovsbr0

 

查看ovsbr0上的所有流规则

ovs-ofctl dump-flows ovsbr0

 

丢弃从2号端口发来的所有数据包

ovs-ofctl add-flow ovsbr0idle_timeout=0,in_port=2,actions=drop

注意:in_port是指虚拟网卡号(vif,tap),而非传输层端口号。

 

删除条件字段中包含in_port=2的所有流规则

ovs-ofctl del-flows ovsbr0 in_port=2

 

丢弃所有收到的数据包

ovs-ofctl add-flow ovsbr0dl_type=*,nw_src=ANY,action=drop

 

注意:

(1)、流规则中可包含通配符和简写形式,任何字段都可等于*或ANY;

(2)、简写形式为将字段组简写为协议名,目前支持的简写有ip,arp,icmp,tcp,udp,与流规则条件字段的对应关系如下:

dl_type=0×0800 <=> ip

dl_type=0×0806 <=> arp

dl_type=0×0800,nw_proto=1<=> icmp

dl_type=0×0800,nw_proto=6<=> tcp

dl_type=0×0800,nw_proto=17<=> udp

 

应用场景设置:

QoS设置

针对网络接口的设置:

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

ovs-vsctl set interface vif0.0ingress_policing_rate=1000

ovs-vsctl set interface vif0.0ingress_policing_burst=100

其中,ingress_policing_rate为最大发送速率(单位均为kbps),ingress_policing_burst为超过ingress_policing_rate的最大浮动值。

针对交换机端口的设置:

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

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

-- --id=@newqos create qos type=linux-htbother-config:

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

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

-- --id=@q1 create queueother-config:min-rate=500000000

2、将带宽限制加于某特征数据包流上。假设vif0.0接在交换机1号端口上,

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-vsctllist 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

 

Sflow:

可实现流量导出,并结合snort,tcpdump对流量进行监控和分析。

示例:

建立如下监控环境,

详见http://www.yandong.org/archives/485


Open vSwitch不仅可以控制虚拟机(VM1, VM2),也可以控制物理机器(PY1)。

 

一些说明:

tap和vif的区别

Xen支持运行两种不同类型的虚拟机:半虚拟化(PV)和全虚拟化(HVM)。PV虚拟机只有一个vifX.N,而HVM虚机不安装PV Driver时会有两个网络接口vifX.N和tapX.N,实际上使用的是tapX.N。HVM虚机安装PV Driver并重启后,tapX.N会消失,使用vifX.N(若不重启还是使用tapX.N)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值