首页 > 其他分享 >实验5:开源控制器实践——POX

实验5:开源控制器实践——POX

时间:2022-10-13 15:23:36浏览次数:54  
标签:控制器 POX 开源 actions ofp msg output port append

建立拓扑

hub验证

h1 ping h2

都能收到

h1 ping h3

都能收到

switch验证

h1 ping h2

仅h2收到

h1 ping h3

仅h3收到

流程图

进阶

重新建立拓扑,无流表,编写POX模块SendFlowInSingle3

  • SendFlowInSingle3
from pox.core import core
import pox.openflow.libopenflow_01 as of

class SendFlowInSingle3(object):
    def __init__ (self):
        core.openflow.addListeners(self)
    def _handle_ConnectionUp(self, event):
        msg = of.ofp_flow_mod()  
        msg.priority = 1
        msg.match.in_port = 1
        msg.actions.append(of.ofp_action_output(port=2)) 
        msg.actions.append(of.ofp_action_output(port=3))
        event.connection.send(msg)
        msg = of.ofp_flow_mod()  
        msg.priority = 1
        msg.match.in_port = 2  
        msg.actions.append(of.ofp_action_output(port=1)) 
        msg.actions.append(of.ofp_action_output(port=3))  
        event.connection.send(msg)
        msg = of.ofp_flow_mod()  
        msg.priority = 1
        msg.match.in_port = 3  
        msg.actions.append(of.ofp_action_output(port=1)) 
        msg.actions.append(of.ofp_action_output(port=2))  
        event.connection.send(msg)
def launch():
    core.registerNew(SendFlowInSingle3)
  • SendHardTimeOut
from pox.core import core
import pox.openflow.libopenflow_01 as of
 
class SendFlowInSingle3(object):
    def __init__(self):
        core.openflow.addListeners(self)
    def _handle_ConnectionUp(self, event):
        msg = of.ofp_flow_mod() 
        msg.priority = 1
        msg.match.in_port = 1  
        msg.actions.append(of.ofp_action_output(port=2))  
       # msg.actions.append(of.ofp_action_output(port=3)) 
        event.connection.send(msg)
 
        msg = of.ofp_flow_mod() 
        msg.priority = 1
        msg.match.in_port = 2  
        msg.actions.append(of.ofp_action_output(port=1))  
        msg.actions.append(of.ofp_action_output(port=3))  
        event.connection.send(msg)
 
        msg = of.ofp_flow_mod()  
        msg.priority = 1
        msg.match.in_port = 3  
       # msg.actions.append(of.ofp_action_output(port=1))  
        msg.actions.append(of.ofp_action_output(port=2))  
        event.connection.send(msg)
 
def launch():
    core.registerNew(SendFlowInSingle3)

运行后

硬超时

个人总结

本次实验难点在于pox的使用及SendFlowInSingle3、SendHardTimeOut的编写。进阶要求比较困难,需要根据官方的文档进行API的调用。
遇到的问题:

  • 开启pox时显示6633端口被占用,开启pox失败。学习后发现可以查看占用端口的进程并使用kill消灭该进程,即可解决该问题。

标签:控制器,POX,开源,actions,ofp,msg,output,port,append
From: https://www.cnblogs.com/navio/p/16784657.html

相关文章