目录
方式1:通过OpenFlow保留端口(NORMAL),实现传统交换机的模式。
方式2:通过match中in-port字段匹配端口,然后,实现instruction字段指定动作,将数据包通过端口转发出去,实现主机之间的通信。
方式3:通过match中ethernet-match -> ethernet-destination (目标的MAC地址)字段匹配端口,然后,实现instruction字段动作,将数据包通过指定端口转发出去,实现主机之间的通信。
(0)首先,确定OpenFlow交换机的ID:
依次点击:Yangman - network-topology - operational - network-topology - send - JSON
得到node id :/opendaylight-inventory:nodes/opendaylight-inventory:node[opendaylight-inventory:id='openflow:1']
NORMAL:保留端口,转到非OpenFlow处理流程,即通过传统交换机模式进行从、转发。
(1)依次点击:sal-flow rev.2013-08-19 - operational - (add-flow ) - FORM(表单模式)
(2)必填字段:
priority(优先级):1 只有一条流表1已经是最高优先级
idle-timeout(超时时间):0 0代表永不超时
hard-timeout(超时时间):0
table_id(流表ID):0
node(交换机id):/opendaylight-inventory:nodes/opendaylight-inventory:node[opendaylight-inventory:id='openflow:1']
(3)填写Instruction字段,用于执行匹配成功之后的动作:
添加instruction,类型:apply-actions-case
order = 0
在instruction中添加action动作,类型:output-action-case
order = 0
其中:output-action(输出动作)
output-node-connector = NORMAL
max-length = 64
(4)点击send下发流表
(5)在mininet,查看流表是否下发成功
dpctl dump-flows
(6)验证主机之间是否ping成功
(1)依次点击:
sal-flow rev.2013-08-19 - operational - (add-flow ) - FORM(表单模式)
(2)必填字段:
priority(优先级):1 只有一条流表1已经是最高优先级
idle-timeout(超时时间):0 0代表永不超时
hard-timeout(超时时间):0
table_id(流表ID):0
node(交换机id):/opendaylight-inventory:nodes/opendaylight-inventory:node[opendaylight-inventory:id='openflow:1']
(3)填写match匹配字段
in-port(输入端口) : 1
(4)填写Instruction字段,用于执行匹配成功之后的动作,指定出方向端口:
添加instruction,类型:apply-actions-case
order = 0
在instruction中添加action动作,类型:output-action-case
order = 0
其中:output-action(输出动作)
output-node-connector = 2
max-length = 64
(5)互换端口号
in-port = 2
output-node-connector = 1
(5)在mininet,查看流表是否下发成功
dpctl dump-flows
两条流表
(6)验证主机之间是否ping成功
(1)依次点击:
sal-flow rev.2013-08-19 - operational - (add-flow ) - FORM(表单模式)
(2)必填字段:
priority(优先级):1 只有一条流表1已经是最高优先级
idle-timeout(超时时间):0 0代表永不超时
hard-timeout(超时时间):0
table_id(流表ID):0
node(交换机id):/opendaylight-inventory:nodes/opendaylight-inventory:node[opendaylight-inventory:id='openflow:1']
(3)查看主机的网卡信息
h1 ifconfig :b6:f6:25:51:83:79
h2 ifconfig :46:64:40:5f:94:07
(3)填写match匹配字段:ethernet-match -> ethernet-destination
address : b6:f6:25:51:83:79 (host1)
即:到达host1主机的数据包通过port1转发出去。
(4)填写Instruction字段,用于执行匹配成功之后的动作,指定出方向端口:
添加instruction,类型:apply-actions-case
order = 0
在instruction中添加action动作,类型:output-action-case
order = 0
其中:output-action(输出动作)
output-node-connector = 1
max-length = 64
(5)按照同样的操作模式
到达host2主机的数据包通过port2转发出去。
address : 46:64:40:5f:94:07 (host2)
output-node-connector = 2
(6)主机通信的第一条信令是arp协议指令,所以第一条指令需要广播,因此需要配置arp报文的端口,才能实现通信。
填写match匹配字段:ethernet-match -> ethernet-type
type = 2054 (arp报文)
arp报文需要洪泛:
output-node-connector = FLOOD
(7)在mininet,查看流表是否下发成功
dpctl dump-flows
三条流表
(8)验证主机之间是否ping成功