frenetic-lang / frenetic

The Frenetic Programming Language and Runtime System

Home Page:http://www.frenetic-lang.org/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Two flow_mod instructions

sushiljain1989 opened this issue · comments

Hi,

I am using frenetic as controller and running a simple application and capturing the packets using tshark. As per my application, there should be one flow rule in the switch and when I execute dpctl dump-flows, it also returns only one rule.
But when I look at the output generated by tshark, there are two flow_mod instructions(line 18 and 22, see below), could anyone explain to me why it's the case?

tshark output :

`1 0.000000000 127.0.0.1 ?FR 127.0.0.1 TCP 74 47418?FR6633 [SYN] Seq=0 Win=43690 Len=0 MSS=65495 SACK_PERM=1 TSval=7474071 TSecr=0 WS=512

2 0.000012872 127.0.0.1 ?FR 127.0.0.1 TCP 74 6633?FR47418 [SYN, ACK] Seq=0 Ack=1 Win=43690 Len=0 MSS=65495 SACK_PERM=1 TSval=7474071 TSecr=7474071 WS=512

3 0.000024780 127.0.0.1 ?FR 127.0.0.1 TCP 66 47418?FR6633 [ACK] Seq=1 Ack=1 Win=44032 Len=0 TSval=7474071 TSecr=7474071

4 0.002099696 127.0.0.1 ?FR 127.0.0.1 TCP 74 6633?FR47418 [PSH, ACK] Seq=1 Ack=1 Win=44032 Len=8 TSval=7474072 TSecr=7474071

5 0.002123409 127.0.0.1 ?FR 127.0.0.1 TCP 66 47418?FR6633 [ACK] Seq=1 Ack=9 Win=44032 Len=0 TSval=7474072 TSecr=7474072

6 0.007420721 127.0.0.1 ?FR 127.0.0.1 OpenFlow 74 Type: OFPT_HELLO

7 0.007442474 127.0.0.1 ?FR 127.0.0.1 TCP 66 6633?FR47418 [ACK] Seq=9 Ack=9 Win=44032 Len=0 TSval=7474073 TSecr=7474073

8 0.007680840 :: ?FR ff02::16 OpenFlow 174 Type: OFPT_PACKET_IN

9 0.007689056 127.0.0.1 ?FR 127.0.0.1 TCP 66 6633?FR47418 [ACK] Seq=9 Ack=117 Win=44032 Len=0 TSval=7474073 TSecr=7474073

10 0.012062290 127.0.0.1 ?FR 127.0.0.1 OpenFlow 74 Type: OFPT_FEATURES_REQUEST

11 0.012318360 127.0.0.1 ?FR 127.0.0.1 OpenFlow 290 Type: OFPT_FEATURES_REPLY

12 0.013528244 127.0.0.1 ?FR 127.0.0.1 TCP 128 8984?FR56293 [PSH, ACK] Seq=1 Ack=1 Win=86 Len=62 TSval=7474075 TSecr=7471659

13 0.013557654 127.0.0.1 ?FR 127.0.0.1 TCP 66 56293?FR8984 [ACK] Seq=1 Ack=63 Win=86 Len=0 TSval=7474075 TSecr=7474075

14 0.013783094 127.0.0.1 ?FR 127.0.0.1 HTTP 179 HTTP/1.1 200 OK

15 0.013796438 127.0.0.1 ?FR 127.0.0.1 TCP 66 45240?FR9000 [ACK] Seq=1 Ack=114 Win=86 Len=0 TSval=7474075 TSecr=7474075

16 0.013807281 127.0.0.1 ?FR 127.0.0.1 TCP 151 56292?FR8984 [PSH, ACK] Seq=1 Ack=1 Win=86 Len=85 TSval=7474075 TSecr=7473990

17 0.026616596 127.0.0.1 ?FR 127.0.0.1 HTTP 213 GET /quick_start/event HTTP/1.1

18 0.029550379 127.0.0.1 ?FR 127.0.0.1 OpenFlow 138 Type: OFPT_FLOW_MOD

19 0.031562043 127.0.0.1 ?FR 127.0.0.1 TCP 88 8984?FR56292 [PSH, ACK] Seq=1 Ack=86 Win=86 Len=22 TSval=7474079 TSecr=7474075

20 0.031591119 127.0.0.1 ?FR 127.0.0.1 TCP 66 56292?FR8984 [ACK] Seq=86 Ack=23 Win=86 Len=0 TSval=7474079 TSecr=7474079

21 0.031786109 127.0.0.1 ?FR 127.0.0.1 TCP 163 56292?FR8984 [PSH, ACK] Seq=86 Ack=23 Win=86 Len=97 TSval=7474079 TSecr=7474079

22 0.031958834 127.0.0.1 ?FR 127.0.0.1 OpenFlow 146 Type: OFPT_FLOW_MOD

23 0.032035439 127.0.0.1 ?FR 127.0.0.1 TCP 66 47418?FR6633 [ACK] Seq=341 Ack=169 Win=44032 Len=0 TSval=7474079 TSecr=7474079

24 0.032732179 127.0.0.1 ?FR 127.0.0.1 TCP 88 8984?FR56292 [PSH, ACK] Seq=23 Ack=183 Win=86 Len=22 TSval=7474080 TSecr=7474079

25 0.038687398 36:68:ff:8e:d1:9c ?FR Broadcast OpenFlow 126 Type: OFPT_PACKET_IN

26 0.038966518 127.0.0.1 ?FR 127.0.0.1 TCP 190 8984?FR56293 [PSH, ACK] Seq=63 Ack=1 Win=86 Len=124 TSval=7474081 TSecr=7474075

27 0.038979534 127.0.0.1 ?FR 127.0.0.1 TCP 66 56293?FR8984 [ACK] Seq=1 Ack=187 Win=86 Len=0 TSval=7474081 TSecr=7474081`

application code :
`
import frenetic
from frenetic.syntax import *

class RepeaterApp(frenetic.App):

client_id = "quick_start"

def connected(self):
self.update( id >> SendToController("repeater_app") )

def packet_in(self, dpid, port_id, payload):
out_port_id = 2 if port_id == 1 else 1
self.pkt_out(dpid, payload, SetPort(out_port_id), port_id )

app = RepeaterApp()
app.start_event_loop()
`