2016-05-10 1 views
1

Hier ist der Codewie Pakettyp ist tcp syn oder rst in Pocken-Controller

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. , was der Ausdruck seines shoud innerhalb wenn zu prüfen, ob das TCP-Paket ist SYN/ACK/RST zu überprüfen?

Antwort

1

Um SYN, ACK usw. zu finden, müssen Sie die packet.find-Methode verwenden. Das folgende ist nur eine kleine Änderung an der forwarding.l2_pairs Aktienkomponente von POX (Karpfen)

Sagen wir, wir haben MININET und

sudo mn --controller remote 

ein paar Zeilen Code an der Lagerkomponente running forwarding.l2_pairs in Zeile 41 nach dem Paket = event.parsed wir wie so

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

Run in einem anderen Endgerät als MININET pOX Komponente wie so

0 ändern werden
python pox.py forwarding.l2_pairs host_tracker openflow.discovery 

Um nun einige SYN-Flags zu erhalten gehen wir in der MININET Terminal und das Einrichten eines Standard-Python HTTP-Server

h1 python -m SimpleHTTPServer 80 & 

und den Inhalt des Dummy-Server von Host erhalten 2

h2 wget -O - h1 

am Terminal, dass wir die pox l2_pairs Komponente laufen untersuchen wir die Ausgabe

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 

Der Haken dabei ist, dass in der POX Dokumentation SYN, ACK etc wie angegeben sind tcp

TCP (TCP) Attribute Attribute: ...... FIN (bool) - Wahr, wenn FIN-Flag gesetzt SYN (bool) - Wahr, wenn SYN-Flag gesetzt ......

um diese Attribute zu erhalten wir den tcp Teil des Pakets auf eine Variable mit der find-Methode zuweisen, dann greifen wir auf die Attribute ein mit Punkt (.)

variable.attribute 

und wir sind gut zu gehen (wenn gefunden).