我知道我们可以使用scapy来创建数据包但是如何在mininet的控制器中检测这个数据包(它可以是任何控制器,如POX,Pyretic,Frenetic,RYU等)。任何人都可以用适当的代码解释这个在mininet环境中运行吗?
答案 0 :(得分:0)
您可以使用的是在控制器中添加侦听器并捕获数据包:
core.openflow.addListenerByName("FlowStatsReceived", self._handle_flowstats_received)
core.openflow.addListenerByName("PortStatsReceived", self._handle_portstats_received)
core.openflow.addListenerByName("QueueStatsReceived", self._handle_qeuestats_received)
And in some class methods later
有关完整示例,请检查https://github.com/tsartsaris/pythess-SDN/blob/master/pythess.py
或者您可以在一个主机中执行shell代码,并使用iperf将流量发送到mininet中的另一个主机,然后尝试使用tcpprobe捕获它。这种方式会容易得多。这是伪代码:
sudo cat /proc/net/tcpprobe > tcprobe.dat &
#get the cat process ID to later kill it
pid=$!
iperf -c [Host1 ip] -t 10 -Z reno > Raw_Goodput.dat
#kill the logger
kill $pid