2016-05-10 5 views
1

であるTCPパケットがSYN/ACK/RSTであるかどうかを確認するかの内式でshoud何コードはここで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. のですか?

答えて

1

SYN、ACKなどを見つけるには、packet.findメソッドを使用する必要があります。 次は在庫部品でコードの行のカップルを追加します。我々は、最大mininetしているとしましょうと

sudo mn --controller remote 

を実行しているPOXのforwarding.l2_pairsストックコンポーネント(鯉)

でほんの少しの修正であります我々は

0等mininetポックス成分とは異なる端末にそう

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

実行のよう修正するevent.parsedパケットの後にライン41でforwarding.l2_pairs =

python pox.py forwarding.l2_pairs host_tracker openflow.discovery 

さて、取得するために、いくつかのSYNフラグがのがmininet端子とセットアップデフォルトのPythonのhttpサーバ

h1 python -m SimpleHTTPServer 80 & 

に行くと、ホストからダミーサーバーの内容を取得してみましょう2

h2 wget -O - h1 
我々は、出力

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 
を調べるポックスl2_pairsコンポーネントを実行し、端末で

ここ

キャッチは、ACKなどPOXドキュメントSYNに述べたようにTCPが

TCP(TCP) 属性属性であるということです。...... FIN(ブール値)を - FINフラグが を設定するときはTrue SYN(ブール値) - 真のSYNフラグが を設定......

我々はfindメソッドを使用して、変数へのパケットのTCP部分を割り当て、それらの属性を取得するには、我々は使用して属性にアクセスドット(。)ex。

variable.attribute 

(見つかった場合)。

関連する問題