SDN第五次上机作业
SDN第五次上机作业
任务
h1 ping h2
hub:
l2_learning:
h1 ping h3
hub:
l2_learning:
显然,hub情况下两台host都会有收到数据包,而l2_learning情况下只有ping的那台才有
L2_learning流程图:
进阶任务
from pox.core import core
import pox.openflow.libopenflow_01 as of
from pox.lib.addresses import IPAddr
from pox.lib.addresses import EthAddr
log = core.getLogger()
class SendFlowInSingle3 (object):
def __init__ (self,ignore = None):
core.openflow.addListeners(self)
self.ignore = set(ignore) if ignore else ()
def _handle_ConnectionUp (self, event):
msg=of.ofp_flow_mod()
msg.idle_timeout=0
msg.hard_timeout=0
msg.priority=1
msg.match.in_port = 1
msg.actions.append(of.ofp_action_output(port=0xfffb))
event.connection.send(msg)
msg.match.in_port = 2
msg.actions.append(of.ofp_action_output(port=0xfffb))
event.connection.send(msg)
msg.match.in_port = 3
msg.actions.append(of.ofp_action_output(port=0xfffb))
event.connection.send(msg)
if event.dpid in self.ignore:
log.debug("Ignoring connection %s" % (event.connection,))
return
log.debug("Connection %s" % (event.connection,))
def launch (ignore = None):
if ignore:
ignore = ignore.replace(',', ' ').split()
ignore = set(str_to_dpid(dpid) for dpid in ignore)
core.registerNew(SendFlowInSingle3)
个人总结
这次实验主要还是开始学习Pox的使用。一开始不熟悉Pox的使用出了一些问题,例如Pox报错端口被占用什么的,也是熟悉一会Pox的命令才做出结果。也只是对l2_learning代码粗略的理解了一下,流程图画的挺粗糙的,有些关系可能没有搞懂,有些流程可能也没有画上去。进阶一开始就完全是一头雾水,Github的文档基本上看不懂,看来我还是需要多学习。找资料找到本部的学生那去了,也是挺离谱的,不过通过他的文档,我勉强了解了实现代码这块要从哪里开始。进阶任务主要代码就是对l2_learning.py代码的class里面的内容进行修改,去掉一些不需要的变量,实际代码内容大多都是模块的内容的修修改改。改着改着,貌似就能用了······
参考资料:
https://www.cnblogs.com/linzhifengshinidie/p/15374740.html
http://www.360doc.cn/article/10339652_338691748.html