在运行 POX 控制器时带上 --verbose
可以看到更多的提示信息,方便定位故障点。
处理 PACKET_IN 消息时程序崩溃
ERROR:openflow.sfc:[00-00-00-00-00-01 1]: Exception while handling OpenFlow message:
[00-00-00-00-00-01 1] ofp_packet_in
[00-00-00-00-00-01 1] header:
[00-00-00-00-00-01 1] version: 1
[00-00-00-00-00-01 1] type: 10 (OFPT_PACKET_IN)
[00-00-00-00-00-01 1] length: 116
[00-00-00-00-00-01 1] xid: 0
[00-00-00-00-00-01 1] buffer_id: 256
[00-00-00-00-00-01 1] total_len: 98
[00-00-00-00-00-01 1] in_port: 1
[00-00-00-00-00-01 1] reason: 0
[00-00-00-00-00-01 1] data: ��e��KrxET��@@F
如报错所提示的那样,在处理 opf 包时,对其属性或方法的使用上出了错。紧接着 ERROR 后面的 message 就是这个 opf 消息的类别与格式,可以直接从中取用属性,寻找对应的解析方法。
数据路径连接断开
ERROR:openflow.sfc:[00-00-00-00-00-01 1]: disconnected
控制器并不是发现数据路径后就一直保持对它的连接,而是需要相互通过心跳包来确认连接。断开连接的原因有很多,最可能的情况是交换机断线,我遇到这个错误是因为程序在不恰当的地方加入了循环,控制器不能处理心跳这部分的逻辑,导致断开连接。如果一定要用到 while(true)
这种结构,务必新开一个线程。
网友评论