我正在使用ryu controller(3.22)来监控交换机(Open vSwitch 2.0.2,支持Open Flow 1.3),这是使用mininet(2.1.0)创建的虚拟网络的一部分。它是一个树形拓扑,深度= 2,扇出= 5.我正在使用switch_monitor.py
在控制器的帮助下,我可以使用EventOFPPortStatsReply
装饰器获取端口统计信息。我可以获得rx_packets
,rx_bytes
,rx_errors
,tx_packets
,tx_bytes
,tx_errors
,rx_dropped
,{{1等等。
但tx_dropped
,rx_dropped
的值始终是零,即使交换机实际丢弃数据包也是如此,正如qdisc(linux命令)所报告的那样。
如何从Open Flow交换机获取数据包丢失统计信息?
一个。如何获得非零值?
湾还有其他方法吗?
答案 0 :(得分:0)
qdisc报告内核正在丢弃的内容,而不是网络正在丢弃的内容。你得到零,因为交换机没有丢帧。
(我不知道您的虚拟网络系统是否支持模拟帧丢弃。)
答案 1 :(得分:0)
我认为dropped
只关心因实际drop
规则或缓冲区溢出而丢弃的数据包。
计算数据包丢失的另一种方法是比较链路边缘上两个交换机的数据包计数。假设您有A <--> B
并且想要计算从A到B的丢包率。然后您采取:
plr(A,B) = (tx_packets(A) - rx_packets(B)) / tx_packets(A))
请注意,有时会重置计数器,导致rx_packets
高于tx_packets
。我在SDN软件中遇到这种情况,如果有奇怪的组合,往往会使结果无效。