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

posted @ 2021-10-08 17:21  Katra丶  阅读(65)  评论(0编辑  收藏  举报