openflow协议的工作原理及流表的基本操作
1、openflow协议的工作原理
首先看一下python文件中的拓扑图,主机h1如果要与h3进行通信,h1向网络发送数据包,这里数据包发送给交换机s1,由于刚开始时,交换机s1的流表中没有匹配项,也就是说s1没有in_port=2(h1所在端口)的流表项,s1会发送packed_in消息给控制器,控制器收到packed_in消息后回复pack_out消息给s1,下发流表,s1根据收到的流表转发数据包给s2,s2收到数据包后由于也没有匹配项,于是s2发送packed_in给控制器,控制器收到packed_in消息后回复packed_out,并下发流表给s2,s2根据流表转发数据包给h3。
h3收到数据包后想发送消息给h1,数据包到达s2之后,由于没有in_port=2(h3所在端口)的流表项,s2还是得发送packed_in给控制器,控制器回复pack_out下发流表,s2根据收到的流表项转发数据包给s1,s1收到数据包后根据流表项转发数据包给h1。
OpenFlow流表常用配置命令:
(1) 查看流表:dpctl dump-flows
(2) 添加流表:dpctl add-flow in_port=2,actions=output:3
(3) 添加丢弃数据包流表:dpctl add-flow in_port=2,action=drop
(4) 删除所有交换机的所有流表:dpctl del-flows
(5) 删除所有交换机的特定流表:dpctl del-flows in_port=3
(6) 删除某个交换机的流表:sh ovs-ofctl del-flows s1 in_port=3
2、打开RYU控制器,运行网络拓扑的Python文件。
ryu-manager simple_switch.py
python 001.py