openflow pox操作命令

来源:互联网 发布:一加手机抢购软件 编辑:程序博客网 时间:2024/06/05 03:01

  目录:

1OPENFLOW操作(match

./pox.pyopenflow.of_01 --address=x.x.x.x –port=yy py

Import pox.openflow.libopenflow_01 as of

core.openflow.connections.keys()

core.openflow.connections[key].send(msg)

msg=of.ofp_flow_mod()

msg.priority=x

msg.match.in_port=y

msg.match.dl_src=EthAddr(“”)

msg.match.dl_dst=EthAddr(“”)

msg.match.dl_type=x

msg.match.dl_vlan=x

msg.match.dl_vlan_pcp=x

msg.match.nw_src= x

msg.match.nw_dst= x

msg.match.nw_proto=x

msg.match.nw_tos=x

msg.match.tp_src=x

msg.match.tp_dst=x

msg.idle_timeout=x

msg.hard_timeout=x

2OPENFLOW操作(action

2.1说明:若规则无动作则默认为丢弃;规则中没有显示的设置出端口的需要在相应动作之后添加出端口。

msg.actions.append(of.ofp_action_output(port=x))

msg.actions.append(of.ofp_action_enqueue(port=xqueue_id=y))

msg.actions.append(of.ofp_action_dl_addr.set_dst(“mac”))

msg.actions.append(of.ofp_action_dl_addr.set_src(“mac”))

msg.actions.append(of.ofp_action_nw_tos(nw_tos=x))

msg.actions.append(of.ofp_action_vlan_vid(vlan_vid=x))

msg.actions.append(of.ofp_action_vlan_pcp(vlan_pcp=x))

3OPENFLOW操作(examples

add flow-匹配入端口,动作为出端口

add flow-匹配目的mac,动作为出端口

add flow-匹配以太类型,动作为出端口和队列

add flow-匹配源mac,动作为设置vlan并指定出端口

add flow-匹配入端口,动作为设置vlancos,并指定出端口

del flow

del flow-strict


说明

环境windowsor linux

编译器:python2.7+

poxpox-betta

1OPENFLOW操作(match

./pox.py openflow.of_01--address=x.x.x.x –port=yy py

命令./pox.pyopenflow.of_01 --address=x.x.x.x –port=yy py

功能:控制器开启对应地址监控进程

参数addressportpy

缺省情况:无。

命令模式:路径包含pox.py的命令行。

使用指南./pox.pyopenflow.of_01 --address=x.x.x.x –port=yy py

举例

控制端:

开启pox地址监控,默认使用6633端口,进入交互模式

root@long-Aspire-4733Z:/home/long/usr/pox#./pox.py openflow.of_01 --address=6.6.6.6 py

POX0.1.0 (betta) / Copyright 2011-2013 James McCauley, et al.

INFO:core:POX0.1.0 (betta) is up.

Thisprogram comes with ABSOLUTELY NO WARRANTY. This program is freesoftware,

andyou are welcome to redistribute it under certain conditions.

Type'help(pox.license)' for details.

Ready.

POX>

Pc端:

DCRS-6500-52X(config)#openflowmode

DCRS-6500-52X(config-openflow)#openflowtcp 6.6.6.6 6633

控制端:

交换机连接提醒

POX>INFO:openflow.of_01:[00-03-0f-27-5e-91 1] connected

Importpox.openflow.libopenflow_01 as of

命令importpox.openflow.libopenflow_01 as of

功能:导出核心模块,并命名为of

参数

缺省情况:无。

命令模式:交互模式,pox>

使用指南importpox.openflow.libopenflow_01 as of,导出核心模块,并命名为of

举例

控制端:

POX>import pox.openflow.libopenflow_01 as of

core.openflow.connections.keys()

命令core.openflow.connections.keys()

功能:获取连接控制端的ofswitchkey

参数

缺省情况:无。

命令模式:交互模式,pox>

使用指南core.openflow.connections.keys(),获取key之后通过key发送msg

举例

控制端:

POX>core.openflow.connections.keys()

core.openflow.connections[key].send(msg)

命令core.openflow.connections[key].send(msg)

功能:通过特定key发送msg

参数

缺省情况:无。

命令模式:交互模式,pox>

使用指南core.openflow.connections[key].send(msg)key为上一条命令获取的switch代号

举例

控制端:

POX>core.openflow.connections[key].send(msg)

msg=of.ofp_flow_mod()

命令msg=of.ofp_flow_mod()

功能:编辑消息,消息类型为flowmod

参数command0ADD(添加流)1MODIFY2MODIFY_STRICT3DELETE(删除所有流规则)4DELETE_STRICT(严格匹配掩码和优先级删除流规则)

缺省情况command0

命令模式:交互模式,pox>

使用指南msg=of.ofp_flow_mod()msg的消息类型为flowmod

举例

控制端:

POX>msg=of.ofp_flow_mod()

msg.priority=x

命令msg.priority=x

功能:设置规则的优先级

参数

缺省情况:无。

命令模式:交互模式,pox>

使用指南msg.priority=x,必须初始化priority,priority的有效范围1-5

举例

控制端:

POX>msg.priority=5

msg.match.in_port=y

命令msg.match.in_port=y

功能:匹配入端口

参数

缺省情况:无。

命令模式:交互模式,pox>

使用指南msg.match.in_port=yy为字段的值

举例

控制端:

指定规则匹配入端口为1

POX>msg.match.in_port=1

msg.match.dl_src=EthAddr(“”)

命令msg.match.dl_src=EthAddr(“”)

功能:匹配源mac

参数

缺省情况:无。

命令模式:交互模式,pox>

使用指南msg.match.dl_src=EthAddr(“”)

举例

控制端

指定规则匹配源mac00:00:00:00:00:11

POX>msg.match.dl_src=EthAddr(“00:00:00:00:00:11”)

msg.match.dl_dst=EthAddr(“”)

命令msg.match.dl_dst=EthAddr(“”)

功能:匹配目的mac

参数

缺省情况:无。

命令模式:交互模式,pox>

使用指南msg.match.dl_dst=EthAddr(“”)

举例

控制端

指定规则匹配目的mac00:00:00:00:00:11

POX>msg.match.dl_dst=EthAddr(“00:00:00:00:00:11”)

msg.match.dl_type=x

命令msg.match.dl_type=x

功能:匹配以太类型

参数

缺省情况:无。

命令模式:交互模式,pox>

使用指南msg.match.dl_type=

举例

控制端

指定规则匹配ip类型报文

POX>msg.match.dl_type=0x800

msg.match.dl_vlan=x

命令msg.match.dl_vlan=x

功能:匹配vlanid

参数

缺省情况:无。

命令模式:交互模式,pox>

使用指南msg.match.dl_vlan=

举例

控制端

指定规则匹配vlanid

POX>msg.match.dl_vlan=3

说明:dl_vlan必须为ofvlan

msg.match.dl_vlan_pcp=x

命令msg.match.dl_vlan_pcp=x

功能:匹配tos

参数

缺省情况:无。

命令模式:交互模式,pox>

使用指南msg.match.dl_vlan_pcp=

举例

控制端

指定规则匹配cos

POX>msg.match.dl_vlan_pcp=3

说明:dl_vlan_pcp必须在0-7之内。

msg.match.nw_src=

命令msg.match.nw_src=

功能:匹配源ip地址

参数

缺省情况:无。

命令模式:交互模式,pox>

使用指南msg.match.nw_src=

举例

控制端

指定规则匹配源IP

POX>msg.match.dl_type=0x800

POX>msg.match.nw_src=“192.168.2.133/24”

说明:必须指定匹配的以太类型,ip的掩码指定可以以/的形式表示

msg.match.nw_dst=

命令msg.match.nw_dst=

功能:匹配目的ip地址

参数

缺省情况:无。

命令模式:交互模式,pox>

使用指南msg.match.nw_dst=

举例

控制端

指定规则匹配目的IP地址

POX>msg.match.dl_type=0x800

POX>msg.match.nw_dst=“192.168.2.133/24”

说明:必须指定匹配的以太类型,ip的掩码指定可以以/的形式表示

msg.match.nw_proto=x

命令msg.match.nw_proto=x

功能:匹配协议类型

参数

缺省情况:无。

命令模式:交互模式,pox>

使用指南msg.match.nw_proto=

举例

控制端

指定规则匹配IP类型报文

POX>msg.match.dl_type=0x800

POX>msg.match.nw_proto=6

说明:必须指定匹配的以太网类型,再匹配ip协议类型。

msg.match.nw_tos=x

命令msg.match.nw_tos=x

功能:匹配tos

参数

缺省情况:无。

命令模式:交互模式,pox>

使用指南msg.match.nw_tos=

举例

控制端

指定规则匹配IP类型报文

POX>msg.match.dl_type=0x800

POX>msg.match.nw_tos=64

说明:必须指定匹配的以太网类型,再匹配tos值。

msg.match.tp_src=x

命令msg.match.tp_src=

功能:匹配tcp源端口

参数

缺省情况:无。

命令模式:交互模式,pox>

使用指南msg.match.tp_src=

举例

控制端

指定规则匹配源tcp端口

POX>msg.match.dl_type=0x800

POX>msg.match.nw_proto=6

POX>msg.match.tp_src=179

说明:必须指定匹配的以太网类型,再匹配ip协议类型,最后匹配tcpport

msg.match.tp_dst=x

命令msg.match.tp_dst=

功能:匹配tcp目的端口

参数

缺省情况:无。

命令模式:交互模式,pox>

使用指南msg.match.tp_dst=

举例

控制端

指定规则匹配目的tcp端口

POX>msg.match.dl_type=0x800

POX>msg.match.nw_proto=6

POX>msg.match.tp_dst=179

说明:必须指定匹配的以太网类型,再匹配ip协议类型,最后匹配tcpport

msg.idle_timeout=x

命令msg.idle_timeout=

功能:在idle时间内,如果没有报文触发此动作,该条规则将删除

参数

缺省情况:无。

命令模式:交互模式,pox>

使用指南msg.idle_timeout=30

举例

控制端

指定规则的idle时间为30

POX>msg.idle_timeout=30

说明:无

msg.hard_timeout=x

命令msg.hard_timeout=

功能:在到达hard时间时,无论如何,该条规则将删除

参数

缺省情况:无。

命令模式:交互模式,pox>

使用指南msg.hard_timeout=30

举例

控制端

指定规则的hard时间为30

POX>msg.hard_timeout=30

说明:无

2OPENFLOW操作(action

    1. 说明:若规则无动作则默认为丢弃;规则中没有显示的设置出端口的需要在相应动作之后添加出端口。

msg.actions.append(of.ofp_action_output(port=x))

命令msg.actions.append(of.ofp_action_output(port=))

功能:指定出端口动作

参数

缺省情况:无。

命令模式:交互模式,pox>

使用指南msg.actions.append(of.ofp_action_output(port=))

举例

控制端:指定报文出端口

POX>msg.actions.append(of.ofp_action_output(port=20))

说明:port号是ofvlan内的端口

msg.actions.append(of.ofp_action_output(port=x))

命令msg.actions.append(of.ofp_action_output(port=))

功能:转发指定的端口类型

参数IN_PORT= 0xfff8:从入端口将报文发出。FLOOD=0xfffb:除了入端口和stp不允许的端口的所有端口。ALL= 0xfffc:除了入端口的其余端口。CONTROLLER= 0xfffd:发送给控制器。NONE= 0xffff:和物理端口无关

缺省情况:无。

命令模式:交互模式,pox>

使用指南msg.actions.append(of.ofp_action_output(port=))

举例

控制端:

POX>msg.actions.append(of.ofp_action_output(port=all))

说明:向所有端口发送一份报文除了入端口

msg.actions.append(of.ofp_action_enqueue(port=xqueue_id=y))

命令msg.actions.append(of.ofp_action_enqueue(port=x,queue_id=y))

功能:转发指定的端口和队列

参数portqueue_id(队列号)

缺省情况:无。

命令模式:交互模式,pox>

使用指南msg.actions.append(of.ofp_action_enqueue(port=xenqueue_id=y))

举例

控制端:

POX>msg.actions.append(of.ofp_action_enqueue(port=13queue_id=4))

msg.actions.append(of.ofp_action_dl_addr.set_dst(“mac”))

命令msg.actions.append(of.ofp_action_dl_addr.set_dst(“”))

功能:改变目的mac为指定mac

参数dstmac

缺省情况:无。

命令模式:交互模式,pox>

使用指南msg.actions.append(of.ofp_action_dl_addr.set_dst(“11:11:11:11:11:11”))

举例

控制端:

POX>msg.actions.append(of.ofp_action_dl_addr.set_dst(“11:11:11:11:11:11”))

msg.actions.append(of.ofp_action_dl_addr.set_src(“mac”))

命令msg.actions.append(of.ofp_action_dl_addr.set_src(“”))

功能:改变源mac为指定mac

参数srcmac

缺省情况:无。

命令模式:交互模式,pox>

使用指南msg.actions.append(of.ofp_action_dl_addr.set_src(“00:03:11:11:11:11”))

举例

控制端:

POX>msg.actions.append(of.ofp_action_dl_addr.set_src(“00:03:11:11:11:11”))


msg.actions.append(of.ofp_action_nw_tos(nw_tos=x))

命令msg.actions.append(of.ofp_action_nw_tos(nw_tos=))

功能:设定tos

参数nw_tos

缺省情况:无。

命令模式:交互模式,pox>

使用指南msg.actions.append(of.ofp_action_nw_tos(nw_tos=56))

举例

控制端:

POX>msg.actions.append(of.ofp_action_nw_tos(nw_tos=56))



msg.actions.append(of.ofp_action_vlan_vid(vlan_vid=x))

命令msg.actions.append(of.ofp_action_vlan_vid(vlan_vid=))

功能:设定vlan

参数vlan_vid

缺省情况:无。

命令模式:交互模式,pox>

使用指南msg.actions.append(of.ofp_action_vlan_vid(vlan_vid=3))

举例

控制端:

POX>msg.actions.append(of.ofp_action_vlan_vid(vlan_vid=3))

msg.actions.append(of.ofp_action_vlan_pcp(vlan_pcp=x))

命令msg.actions.append(of.ofp_action_vlan_pcp(vlan_pcp=))

功能:设定vlancos

参数vlancos

缺省情况:无。

命令模式:交互模式,pox>

使用指南msg.actions.append(of.ofp_action_vlan_pcp(vlan_pcp=3))

举例

控制端:

POX>msg.actions.append(of.ofp_action_vlan_vid(vlan_vid=3))

POX>msg.actions.append(of.ofp_action_vlan_pcp(vlan_pcp=4))

说明:设置cos值时必须先设置vlanid

3OPENFLOW操作(examples

add flow-匹配入端口,动作为出端口

POX>importpox.openflow.libopenflow_01 as of

POX>msg2=of.ofp_flow_mod()

POX>msg2.priority=3

POX>msg2.match.in_port=193

POX>msg2.actions.append(of.ofp_action_output(port=194))

POX>core.openflow.connections[13136560386L].send(msg2)

add flow-匹配目的mac,动作为出端口

POX>importpox.openflow.libopenflow_01 as of

POX>msg2=of.ofp_flow_mod()

POX>msg2.priority=3

POX>msg2.match.dl_src=EthAddr("ff:ff:ff:ff:ff:ff")

POX>msg2.actions.append(of.ofp_action_output(port=194))

POX>core.openflow.connections[13136560386L].send(msg2)

addflow-匹配以太类型,动作为出端口和队列

POX>msg=of.ofp_flow_mod()

POX>msg.priority=5

POX>msg.match.dl_type=0x800

POX>msg.actions.append(of.ofp_action_enqueue(queue_id=5,port=194))

POX>core.openflow.connections[13136560386L].send(msg)

addflow-匹配源mac,动作为设置vlan并指定出端口

POX>msg=of.ofp_flow_mod()

POX>msg.priority=5

POX>msg.match.dl_src=EthAddr(“00:03:0f:01:12:43”)

POX>msg.actions.append(of.ofp_action_vlan_vid(vlan_vid=3))

POX>msg.actions.append(of.ofp_action_output(port=194))

POX>core.openflow.connections[13136560386L].send(msg)

addflow-匹配入端口,动作为设置vlancos,并指定出端口

POX>msg=of.ofp_flow_mod()

POX>msg.priority=5

POX>msg.match.in_port=193

POX>msg.actions.append(of.ofp_action_vlan_vid(vlan_vid=4))

POX>msg.actions.append(of.ofp_action_vlan_pcp(vlan_pcp=5))

POX>msg.actions.append(of.ofp_action_output(port=194))

POX>core.openflow.connections[13136560386L].send(msg)

del flow

POX>msg=of.ofp_flow_mod(command=3)

POX>core.openflow.connections[13136560386L].send(msg)

del flow-strict

POX>msg=of.ofp_flow_mod(command=4)

POX>msg.wildcards=4194302

POX>msg.priority=5

POX>core.openflow.connections[13136560386L].send(msg)



0 0
原创粉丝点击