OpenvSwitch操作手册.docx

上传人:b****3 文档编号:5920908 上传时间:2023-05-09 格式:DOCX 页数:9 大小:72.28KB
下载 相关 举报
OpenvSwitch操作手册.docx_第1页
第1页 / 共9页
OpenvSwitch操作手册.docx_第2页
第2页 / 共9页
OpenvSwitch操作手册.docx_第3页
第3页 / 共9页
OpenvSwitch操作手册.docx_第4页
第4页 / 共9页
OpenvSwitch操作手册.docx_第5页
第5页 / 共9页
OpenvSwitch操作手册.docx_第6页
第6页 / 共9页
OpenvSwitch操作手册.docx_第7页
第7页 / 共9页
OpenvSwitch操作手册.docx_第8页
第8页 / 共9页
OpenvSwitch操作手册.docx_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

OpenvSwitch操作手册.docx

《OpenvSwitch操作手册.docx》由会员分享,可在线阅读,更多相关《OpenvSwitch操作手册.docx(9页珍藏版)》请在冰点文库上搜索。

OpenvSwitch操作手册.docx

OpenvSwitch操作手册

1、OVS各模块简要介绍如下:

ovs-vswitchd:

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

ovsdb-server:

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

ovs-dpctl:

用来配置switch内核模块;

一些Scriptsandspecs辅助OVS安装在CitrixXenServer上,作为默认switch;

ovs-vsctl:

查询与更新ovs-vswitchd的配置;

ovs-appctl:

发送命令消息,运行相关daemon。

OVS提供了支持OpenFlow的特性实现,包括:

ovs-ofctl:

查询与控制OpenFlow交换机与控制器;

ovs-pki:

OpenFlow交换机创建与管理公钥框架;

ovs-tcpundump:

tcpdump的补丁,解析OpenFlow的消息。

2、基于OpenvSwitch的OpenFlow实践(ubuntu14.04)

1.OpenFlow命令如何创建交换机?

2.如何将一个端口添加到交换机上?

3.如何查看ovs结构?

2.1OpenvSwitch安装

查看ubuntu版本:

lsb_release-a

Ubuntu14.04的OVS版本,已经是2.02,所以默认安装就可以。

不过不同的发行版,ovs的名字会有点不同。

apt-cachesearchopenvswitch

本次实验我们选择openvswitch-switch安装。

apt-getinstallopenvswitch-switch

成功安装时在命令行可看到openvswich-switchstart/running的字样。

执行

ps-ea|grepovs

查看OVS运行情况

OVS中最重要的组件是ovs-vswitchd,它实现了OpenFlow交换机的核心功能,并且通过netlink协议直接与OVS的内核模块进行通信。

交换机运行过程中,ovs-vswitchd还会将交换机的配置、数据流信息及其变化保存到数据库ovsdb中,因为这个数据库由ovsdb-server直接管理,所以ovs-vswitchd需要与ovsdb-server通过UNIXsocket机制进行通信以获得或者保存配置信息。

数据库ovsdb的存在,使得OVS交换机的配置能够被持久化存储,即便设备被重启后相关的OVS配置仍旧能够存在。

查看OVS版本,ubuntu默认的OVS版本是2.0.2。

ovs-appctl--version

查看OVS支持的OpenFlow协议的版本,其中0x1代表OpenFlow1.0,0x4代表OpenFlow1.3

ovs-ofctl--version

2.2OpenFlow命令

创建一个OVS交换机

ovs-vsctladd-brovs-switch

创建一个端口p0,设置端口p0的OpenFlow端口编号为100。

ovs-vsctladd-portovs-switchp0--setInterfacep0ofport_request=100

设置网络接口设备类型为”internal”。

ovs-vsctlsetInterfacep0type=internal

查看设置后的结果。

ethtool-ip0

创建一个namespace:

ns0,把p0端口接入到ns0里,并且配置ip地址192.168.1.100/24

重复步骤,创建p1

重复步骤创建p2

查看创建的交换机信息,获得dpid,端口openflow端口编号。

获取openflow端口编号

查看datapath的信息

互ping测试。

查看mac地址,然后运行。

查看交换机所有table

ovs-ofctldump-tablesovs-switch

有253个table;

查看交换机中的所有流表项。

ovs−ofctldump−flowsovs-switch

执行时如果出现图示错误,将openvswitch-switch重启一次。

serviceopenvswitch-switchrestart

输出如下信息:

表示此时actions=NORMAL表示ovs采用匹配MAC地址的形式转发包。

ovs-ofctldel-flowsovs-switch“in_port=100”

删除编号为100的端口上的所有流表项

2.3流规则管理

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

基本字段包括:

∙生效时间duration_sec

∙所属表项table_id

∙优先级priority、

∙处理的数据包数n_packets

∙空闲超时时间idle_timeout等空闲超时时间idle_timeout以秒为单位,超过设置的空闲超时时间后该流规则将被自动删除,空闲超时时间设置为0表示该流规则永不过期,idle_timeout将不包含于ovs-ofctldump-flowsbrname的输出中。

条件字段包括:

∙输入端口号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等,一条流规则可有多个动作,动作执行按指定的先后顺序依次完成。

2.4修改数据包

屏蔽所有进入OVS的以太网广播数据包

ovs-ofctladd-flowovs-switch“table=0,dl_src=01:

00:

00:

00:

00:

00/01:

00:

00:

00:

00:

00,actions=drop"

屏蔽STP协议的广播数据包

ovs-ofctladd-flowovs-switch"table=0,dl_dst=01:

80:

c2:

00:

00:

00/ff:

ff:

ff:

ff:

ff:

f0,actions=drop"

修改数据包,添加新的OpenFlow条目,修改从端口p0收到的数据包的源地址为9.181.137.1

ovs-ofctladd-flowovs-switch"priority=1idle_timeout=0,in_port=100,actions=mod_nw_src:

9.181.137.1,normal"

从端口p0(192.168.1.100)发送测试数据到端口p1(192.168.1.101),就是没啥响应。

ipnetnsexecns0ping192.168.1.101

新开一个终端,进入根目录,执行如下指令。

ipnetnsexecns1tcpdump-ip1icmp

等几分钟,会出现如下结果。

说明下发的OpenFlow流生效了,端口p0收到的数据包源地址被修改了。

2.5重定向数据包

添加新的OpenFlow条目,重定向所有的ICMP数据包到端口p2

ovs-ofctladd-flowovs-switchidle_timeout=0,dl_type=0x0800,nw_proto=1,actions=output:

102

从端口p0(192.168.1.100)发送数据到端口p1(192.168.1.101)

这个时候你从p2里,如上图所示。

2.6修改vlantag

删除网桥,并新建。

具体步骤可参照前面的内容。

在创建好ovs-switch网桥后,并添加p0,p1,p2端口后,可以继续如下实验。

执行指令,记录下p0,p1,p2的mac地址,方便后续实验使用。

ovs-appctlfdb/showovs-switch

修改端口p1的VLANtag为101,使端口p1成为一个隶属于VLAN101的端口

ovs-vsctlsetPortp1tag=101

现在由于端口p0与p1属于不同的VLAN,它们之间无法进行数据交换。

我们使用ovs-appctlofproto/trace生成一个从端口p0发送到端口p1的数据包,这个数据包不包

含任何VLANtag,并观察OVS的处理过程

ovs-appctlofproto/traceovs-switchin_port=100,dl_src=p0的mac地址,dl_dst=p1的mac地址-generate

在第一行输出中,“Flow:

”之后的字段描述了输入的流的信息。

由于我们没有指定太多信息,所以多数字段(例如dl_type与vlan_tci)被OVS设置为空值。

在第二行的输出中,“Rule:

”之后的字段描述了匹配成功的流表项。

在第三行的输出中,“OpenFlowactions”之后的字段描述了实际执行的操作。

最后一段以”Finalflow”开始的字段是整个处理过程的总结,“Datapathactions:

4,1”代表数据包被发送到datapath的4与1号端口。

创建一条新的Flow

ovs-ofctladd-flowovs-switch"priority=3,in_port=100,dl_vlan=0xffff,actions=mod_vlan_vid:

101,normal"

对于从端口p0进入交换机的数据包,如果它不包含任何VLANtag,则自动为它添加VLANtag101。

再次尝试从端口p0发送一个不包含任何VLANtag的数据包,发现数据包进入端口p0之后,会被加上VLANtag101,同时转发到端口p1上。

ovs-appctlofproto/traceovs-switchin_port=100,dl_src=p0的mac地址,dl_dst=p1的mac地址-generate

反过来从端口p1发送数据包,由于p1现在是带有VLANtag101的Access类型的端口,所以数据包进入端口p1之后,会被OVS添加VLANtag101并发送到端口p0

ovs-appctlofproto/traceovs-switchin_port=101,dl_src=p1的mac地址,dl_dst=p0的mac地址-generate

3、OVS连接到OpenDaylight

新创建一个ubuntu14.04的虚拟机。

设置ovs的控制器为OpenDaylight,192.168.202.137就是OpenDaylight虚拟机的IP。

ovs-vsctlset-controllerovs-switchtcp:

192.168.202.137:

6633

设置OVS的连接模式为secure模式

ovs-vsctlsetBridgeovs-switchfail-mode=secure

执行指令,查看网桥。

若有如下流表:

执行:

ipnetnsexecns0ping192.168.1.101

ipnetnsexecns0ping192.168.1.102

此时是ping不通的。

如下指令查看流表,此时为空流表。

则需要手动添加流表。

 

查看此时ovs-switch中的流表。

然后用p0pingp1,就能够通。

用如下网址登入OpenDaylight的GUI,在Topology中就可以看到拓扑信息。

http:

//控制器的IP地址:

8080/index.html

4、OVS常用操作:

1.添加网桥:

ovs-vsctladd-br交换机名 

2.删除网桥:

ovs-vsctldel-br交换机名 

3.添加端口:

ovs-vsctladd-port交换机名端口名(网卡名) 

4.删除端口:

ovs-vsctldel-port交换机名端口名(网卡名) 

5.连接控制器:

ovs-vsctlset-controller交换机名tcp:

IP地址:

端口号 

6.断开控制器:

ovs-vsctldel-controller交换机名 

7.列出所有网桥:

ovs-vsctllist-br 

8.列出网桥中的所有端口:

ovs-vsctllist-ports交换机名 

9.列出所有挂接到网卡的网桥:

ovs-vsctlport-to-br端口名(网卡名) 

10.查看openvswitch的网络状态:

ovs-vsctlshow 

11.查看OpenvSwitch中的端口信息(交换机对应的dpid,以及每个端口的OpenFlow端口编号,端口名称,当前状态等等):

ovs-ofctlshow交换机名 

12.修改dpid:

ovs-vsctlsetbridge交换机名other_config:

datapath-id=新DPID 

13.修改端口号:

ovs-vsctlsetInterface端口名ofport_request=新端口号 

14.查看交换机中的所有Table:

ovs-ofctldump-tablesovs-switch 

15.查看交换机中的所有流表项:

ovs−ofctldump−flowsovs-switch 

16.删除编号为100的端口上的所有流表项:

ovs-ofctldel-flowsovs-switch“in_port=100” 

17.添加流表项(以“添加新的OpenFlow条目,修改从端口p0收到的数据包的源地址为9.181.137.1”为例):

 

ovs-ofctladd-flowovs-switch“priority=1idle_timeout=0,in_port=100,actions=mod_nw_src:

9.181.137.1,normal” 

18.查看OVS的版本信息:

ovs-appctl–version 

19.查看OVS支持的OpenFlow协议的版本:

ovs-ofctl–version

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 艺术创意

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2