我需要使用Ryu SDN控制器模拟网络延迟。我首先尝试在装饰器之后添加一个休眠时间,每当控制器在消息中接收到一个数据包时调用一个函数,但问题是这个函数在当前完成之前无法处理下一个数据包。有没有办法让这个功能成为多线程?
@set_ev_cls(ofp_event.EventOFPPacketIn, MAIN_DISPATCHER)
def _packet_in_handler(self, ev):
time.sleep(LATENCY)
...
答案 0 :(得分:1)
如果您想模拟网络延迟,则应该尝试将延迟应用于链接而不是应用程序。
如果您使用的是网络模拟器,可以在其API中完成(例如mininet:mininet.link.TCLink)
如果您使用的是虚拟机,则可以设置netem来模拟正在使用的接口的延迟。