如何在mininet中添加scapy流量?

时间:2016-03-06 08:35:14

标签: python networking scapy mininet sdn

我知道我们可以使用scapy来创建数据包但是如何在mininet的控制器中检测这个数据包(它可以是任何控制器,如POX,Pyretic,Frenetic,RYU等)。任何人都可以用适当的代码解释这个在mininet环境中运行吗?

1 个答案:

答案 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