如何在pox控制器中检查数据包类型是tcp-syn还是rst



这是代码

import pox.lib.packet as pkt
from pox.lib.packet import *
def _handle_PacketIn(self,event):
  packet=event.parsed
  if packet.type == pkt.IP_TYPE:
    ip_packet = packet.payload
    if ip_packet.protocol == pkt.TCP_PROTOCOL:
      tcp_packet = ip_packet.payload
    if <condition to check packet is TCP SYN or ACK or RST>: 
  1. 如果要检查TCP数据包是否为SYN/ACK/RST,则其中的表达式应该是什么

为了找到SYN、ACK等,您必须使用packet.find方法。以下只是POX(鲤鱼)的forwarding.l2_pairs库存组件的一个小修改

假设我们已经启动并运行了迷你网

sudo mn --controller remote

在库存组件转发处添加几行代码。在package=event之后的第41行添加l2_pairs。解析后,我们将修改

packet = event.parsed
tcp_found = packet.find('tcp')
if tcp_found:
  if tcp_found.SYN:
    print "SYN found"

在不同的终端运行,而不是mininet像一样的痘组件

python pox.py forwarding.l2_pairs host_tracker openflow.discovery

现在,为了获得一些SYN标志,让我们在mininet终端中设置一个默认的python http服务器

h1 python -m SimpleHTTPServer 80 &

并从主机2 中获取伪服务器的内容

h2 wget -O - h1

在我们运行pox l2_pairs组件的终端,我们检查输出

INFO:forwarding.l2_pairs:Pair-Learning switch running.
INFO:host_tracker:host_tracker ready
INFO:core:POX 0.2.0 (carp) is up.
INFO:openflow.of_01:[00-00-00-00-00-01 1] connected
INFO:host_tracker:Learned 1 2 6e:6e:ca:c9:2b:93
INFO:host_tracker:Learned 1 2 6e:6e:ca:c9:2b:93 got IP 10.0.0.2
SYN found
INFO:host_tracker:Learned 1 1 52:3b:b2:ff:ff:b7
INFO:host_tracker:Learned 1 1 52:3b:b2:ff:ff:b7 got IP 10.0.0.1
SYN found

这里的问题是,正如POX文档中所述,SYN、ACK等都是tcp属性

TCP属性:。。。。。。FIN(bool)-设置FIN标志时为TrueSYN(bool)-设置SYN标志时为True……

为了获得这些属性,我们使用find方法将数据包的tcp部分分配给一个变量,然后使用点(.)ex.访问这些属性

variable.attribute

我们很乐意去(如果找到的话)。

相关内容

  • 没有找到相关文章

最新更新