Я получаю статистику потока, используя _flow_stats_reply_handler, как показано в примере Ryu Traffic Monitor.
Я печатаю с использованием следующего:
file.write("\n{},{},{},{},{},{},{},{},{}"
.format(ev.msg.datapath.id,
stat.match['in_port'], stat.match['eth_src'], stat.match['eth_dst'],
stat.instructions[0].actions[0].port,
stat.packet_count, stat.byte_count,
stat.duration_sec, stat.duration_nsec))
Обратите внимание на stat.packet_count
.
Как я могу изменить это для подсчета пакетов TCP? Я понимаю, что есть поле ip_proto
и поле tcp_flags
, но я не знаю, как закодировать совпадение / счет.
Edit:
Я дополнительно исследовал это и добавил соответствие потока моей функции статистики потока запросов:
def _request_stats(self, datapath):
self.logger.debug('send stats request: %016x', datapath.id)
ofp = datapath.ofproto
parser = datapath.ofproto_parser
cookie = cookie_mask = 0
match = parser.OFPMatch(eth_type=0x0800)
req = parser.OFPFlowStatsRequest(datapath, 0, ofp.OFPTT_ALL, ofp.OFPP_ANY, ofp.OFPG_ANY,
cookie, cookie_mask, match)
datapath.send_msg(req)
Это, к сожалению, до сих пор не работает, любые идеи о том, почему бы не быть, будет принята с благодарностью.