【SDN】OpenDaylight下发OpenFlow流表实现Mininet主机通信

目录

方式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']

方式1:通过OpenFlow保留端口(NORMAL),实现传统交换机的模式。

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成功

方式2:通过match中in-port字段匹配端口,然后,实现instruction字段指定动作,将数据包通过端口转发出去,实现主机之间的通信。

(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成功

方式3:通过match中ethernet-match -> ethernet-destination (目标的MAC地址)字段匹配端口,然后,实现instruction字段动作,将数据包通过指定端口转发出去,实现主机之间的通信。

(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成功

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值