open vSwitch学习资料整理

来源:互联网 发布:索爱java论坛 编辑:程序博客网 时间:2024/05/13 17:43

(整理下最近学习的open vSwitch资料,部分还没理解待以后深入)

(参考文章http://sdnhub.cn/index.php/openv-switch-full-guide/  and  http://blog.csdn.net/yahohi/article/details/6631934)


1.模块

ovs-vsctl:查询和更新ovs-vswitchd的配置;

ovs-ofctl:查询和控制OpenFlow交换机和控制器;

ovsdb-server:轻量级数据库服务器,提供ovs-vswitchd获取配置信息;


ovs-openflowd:一个简单的OpenFlow交换机;

ovs-controller:一个简单的OpenFlow控制器;

ovs-vswitchd 主要模块,实现switch的daemon,包括一个支持流交换的Linux内核模块;

ovs-dpctl 用来配置switch内核模块;

ovs-appctl 发送命令消息,运行相关daemon;

ovsdbmonitor GUI工具,可以远程获取OVS数据库和OpenFlow的流表;

(其他暂未用到,待补充)


2.基础命令

ovs-vsctl list-br            /显示所有的桥ovs-vsctl list bridge        /显示所有桥的详细信息ovs-vsctl show               /显示所有的桥和对应接口ovs-vsctl add-br br100       /添加桥br100ovs-vsctl del-br br100       /删除桥br100ovs-vsctl list-ports br100       /显示桥br100上的端口ovs-vsctl add-port br100 eth1    /添加接口eth1到桥br100ovs-vsctl del-port br100 eth1    /删除桥br100上的接口eth1ovs-vsctl port-to-br eth1        /显示接口eth1所在的所有桥ovs-ofctl dump-flows br100       /显示桥br100上所有流表ovs-ofctl dump-ports br100       /显示桥br100上各接口的状态(受到的数据包数、字节数、丢包数、错误包数等)ovs-ofctl show br100             /显示桥br100上所有接口详细信息ovs-ofctl add-flow br100 <em>flow</em>    /在桥br100上添加流表规则“flow”ovs-ofctl del-flows br100        /删除桥br100上所有流表ovs-vsctl set-controller br100 tcp:192.168.1.2:6633    /把桥br100连接到控制器(控制器ip和端口号)ovs-vsctl del-controller br100                         /移除桥br100上的控制器ovs-vsctl set-fail-mode br100 secure|standalone        /配置桥br100的fail模式(2选1)ovs-vsctl get-fail-mode br100                        /查询桥br100的fail模式ovs-vsctl del-fail-mode br100                        /移除桥br100的fail模式配置


ovs-vsctl set interface eth0 ofport_request=100    /更改ofport为100ovs-vsctl set interface eth0 type=internal        /设置port为internalovs-vsctl set bridge br100 stp_enable=ture    /在桥br100上开启STPovs-vsctl set bridge br100 stp_enable=false   /在桥br100上关闭STPovs-vsctl get bridge br100 stp_enable        /查询桥br100上STP状态ovs-vsctl set bridge br100 other_config:stp-priority=0x7800     /设置优先级ovs-vsctl set port eth0 other_config:stp-path-cost=10           /设置costovs-vsctl clear bridge br100 other_config                      /移除STP设置


ovs-vsctl add-port br100 vlan3 tag=3 -- set interface vlan3 type=internal    /设置VLAN tagovs-vsctl del-port br100 vlan3         /移除VLANovs-vsctl show     /可查询到VLAN信息 ovs-vsctl set port eth0 tag=2          /设置已存在的接口到VLAN

ovsdb-tool show-log      /查询指令历史记录



3.网桥管理

数据库操作一般格式:

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,

record为数据表中name字段的值,column为数据表任一个字段的字段名,value字段值;


ovs-vsctl get bridge br100 _uuid    /显示桥br100的_uuid字段值ovs-vsctl get bridge br100 datapath_type    /显示桥br100的datapath_type字段值ovs-vsctl set bridge br100 datapath_type="system"    /设置桥br100的数据表datapath_type字段的值ovs-vsctl clear bridge br100 flood_vlans            /清除桥br100数据表flood_vlans字段的值

实例:

qos,设置接口eth1的带宽为1000 ±100kbps

ovs-vsctl set interface eth1 ingress_policing_rate=1000    /ingress_policing_rate 设置最大发送速率 kbpsovs-vsctl set interface eth1 ingress_policing_burst=100    /ingress_policing_burst 超过rate参数的最大浮动值


ovs-vsctl --set bridge br100 mirrors=@m -- --id=@m create mirror name=mymirror select-dst-port=eth0的_uuid值 select-src-port=eth1的_uuid值 output-port=eth2的_uuid值    //端口映射:将发往eth0端口和从eth1端口发出的数据包全部定向到eth2端口




4.流表

规则组成:由一系列字段组成,基本字段、条件字段、动作字段;

基本字段:duration_sec    生效时间

                  table_id             所属表项

                  priority                优先级

                  n_packets         处理的数据包数

                  idle_timeout      空闲超时时间;    以秒为单位,超时后该流被自动删除,时间为0表示永不过期;

                  等

条件字段:in_port                输入端口号

                  dl_src/dl_dst      源目的mac地址

                  nw_src/nw_dst   源目的ip地址

                  dl_type                 数据包类型

                  nw_proto             网络层协议类型

                  等

动作字段:normal                   正常转发

                  output:port             定向到某交换机端口

                  drop                        丢弃

                  mod_dl_src/mod_dl_dst              更改源目的mac地址

                  等

(一条流可以有多个动作,按先后顺序依次执行)

在网络分层结构中底层的字段未给出确定值时上层的字段不允许给确定值,即一条流规则中允许底层协议字段指定为确定值,高层协议字段指定为通配符(不指定即为匹配任何值),而不允许高层协议字段指定为确定值,而底层协议字段却为通配符(不指定即为匹配任何值),否则,ovs-vswitchd 中的流规则将全部丢失,网络无法连接


实例:

流表规则中可含通配符和简写形式,目前支持的协议简写有ip, arp, icmp, tcp, udp;

dl_type=0x0800 <=> ip

dl_type=0x0806 <=>arp

dl_type=0x0800,nw_proto=1 <=> icmp

dl_type=0x0800,nw_proto=6 <=> tcp

dl_type=0x0800,nw_proto=17 <=> udp

ovs-ofctl add-flow br100 idle_timeout=120,in_port=2,actions=drop          //丢弃从端口2发来的所有数据包ovs-ofctl del-flow br100 in_port=2            //删除条件字段中包含in_port=2的所有流规则ovs-ofctl add-flow br100 dl_type=*,nw_src=ANY,actions=drop                //丢弃所有收到的数据包ovs-ofctl add-flow br100 idle_timeout=0,dl_type=0x0800,nw_src=192.168.1.3,actions=drop    //屏蔽所有主机对主机1.3的ip数据包访问(无法访问主机1.3上所有基于IP协议的服务,www,ftp等)ovs-ofctl add-flow br100 idle_time=0,dl_type=0x0800,nw_proto=1,actions=output:4    //将所有icmp协议的包全部转发到4号端口,包括4号端口自己发出的包ovs-ofctl add-flow br100 idle_timeout=0,in_port=3,actions=strip_vlan,normal    //去除从3号端口发来的所有VLAN数据包中的tag,然后转发ovs-ofctl add-flow br100 idle_timeout=0,in_port=3,actions=mod_nw_src:192.168.1.4,normal    //将从3号端口进来的所有数据包源IP字段更改为1.4,然后转发
















0 0
原创粉丝点击