gpt4 book ai didi

python - 如何获取TCP数据包的数据包数量?

转载 作者:太空宇宙 更新时间:2023-11-03 21:23:07 25 4
gpt4 key购买 nike

我正在使用 _flow_stats_reply_handler 检索流统计信息,如 Ryu 流量监视器示例中所示。

我使用以下方式打印:

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 字段,但我不知道如何对匹配/计数进行编码。

编辑:我进一步研究了这一点,并向我的请求流统计函数添加了流匹配:

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)

不幸的是,这仍然不起作用,任何关于为什么不起作用的想法将不胜感激。

最佳答案

您应该在匹配中添加更多数据,例如 ip_proto 以便与 tcp 匹配,您可能知道,TCP 的 IP 协议(protocol)编号为 6,有关 IP 协议(protocol)编号的更多信息请检查 Wikipedia .

请使用下面的代码,在这种情况下您不需要设置tcp_flags

match = parser.OFPMatch(
eth_type=0x0800,
ip_proto=6,
)

关于python - 如何获取TCP数据包的数据包数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54078523/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com