在OpenDaylight SR3中,如何利用java代码让控制器知道它收到了一个来自交换机的包?
我的交换机s4中有一个流表如下:
n_packet=0,priority=5,dlvlan=999,action=controller:65535
在我发送完含有一个vlanid为999的数据包后,交换机s4的流表如下:
n_packet=1,priority=5,dlvlan=999,action=controller:65535
所以我认为这个vlanid为999的数据包应该被发送给控制器了。
那么问题来了:我要怎么样控制器知道它收到了这个包?有一种方法是读取控制器中的datastore中相应交换机的流表的信息,但是我觉得这样延时比较厉害。我希望控制器能够更快地知道它收到了这个包,并且进行一定的处理。
有大神告诉我要看LLDP部分的代码,可是我没怎么看懂,java渣,很多java的基本概念看不懂(如果有大神看到可以顺便给我些学习写java代码的建议吗?Notification机制好像和监听很相关,但是我又不理解监听上实际要怎么写,监听器放在哪?实现又放在哪?)。
我也看了l2switch中关于packet handler的部分。它好像自己是Notification provider又是Notification consumer。但我猜测我应该需要的只是Notification consumer。因为我猜测ODL中应该有某个模块会提供获取到的数据包的消息。然后我应该注册一个listener在这个模块? 不懂啊
有大神能给点建议吗?好烦啊!
1 个回复
林潇 - 90后,为什么可以如此的菜
赞同来自:
onPacketReceive