Thanks a lot! That has been useful :)

On Thu, Mar 8, 2012 at 5:58 AM, Murphy McCauley <[email protected]> wrote:

> Just as a note, the wiki has moved, and the doxygen is available online.
>  The URLs are:
> http://www.github.com/noxrepo/nox-classic/wiki/
> http://www.noxrepo.org/_/nox-classic-doxygen/
>
> -- Murphy
>
> On Mar 7, 2012, at 2:39 PM, Murphy McCauley wrote:
>
> What you're doing looks about right.
>
> A note here is that you have to be doing "reactive" flow installations for
> this to work -- something like what sprouting and pyswitch do.  Since these
> install exact matches on demand, you'll be likely to see the first packet
> of each flow at the controller, which you'll need if what you're looking
> for is the sequence of TCP/UDP port usage.
>
> As well as the wiki documentation on noxrepo, you can also build doxygen
> documentation from the source code.
>
> -- Murphy
>
> On Mar 7, 2012, at 11:12 AM, Diana Marosin wrote:
>
> Hello,
>
> Can you please be more explicit on how is this done from the flows?
>
> I tried using the packet in callback, like this:
>         flow=extract_flow(packet)
>         if not self.port_stat.has_key(dpid):
>                 self.port_stat[dpid] = []
>         self.port_stat[dpid].append(int(flow['tp_dst']))
>
> I would like to know if there is another way for extracting the tcp/udp
> ports. The final goal is to retrieve all the ports sequences from a switch
> in order to check later for patterns.
>
> Also, can you point me to a good documentation? I am currently using the
> one on noxrepo.
>
> Thanks a lot!
> Diana
> On Sat, Feb 18, 2012 at 11:25 AM, Murphy McCauley <[email protected]> wrote:
>
>> Ah, I begin to see the problem here. :)
>>
>> The ports that the port stats are referring to are *switch ports*.  Like
>> the ethernet and wifi interfaces.  Not TCP/UDP ports.
>>
>> If you want to gather statistics on TCP/UDP ports, you do that by
>> installing flows that match on those TCP/UDP ports and then monitoring the
>> flow stats.
>>
>> -- Murphy
>>
>> On Feb 18, 2012, at 1:53 AM, Diana Marosin wrote:
>>
>> Hello,
>>
>> I use a Linksys wrt54gl, v1.1.
>>
>> With Wireshark I can identify ports 46245 for ACK controller -> switch
>> and 22 for the SSH PC -> switch, in nox the output is totally different.
>>
>> In nox, if I use the monitoring.py I receive empty stats and ports 1 and
>> 65534, but if I use the packet_in_callback I can extract the port from the
>> packet (here the 22 for the ssh)
>>
>> Maybe I misunderstood what those stats should show, but please point me
>> in the right direction.
>>
>> My output is in this form :
>> Aggregate stats in from datapath 58:6d:87:62:f8:b1
>>     {'packet_count': 0L, 'byte_count': 0L, 'flow_count': 0L}
>> packet_in_callback:  58:6d:87:62:f8:b1
>> ssh packet received on port 22
>> Table stats in from datapath 58:6d:87:62:f8:b1
>>     hash2 : 0
>>     linear : 0
>> Port stats in from datapath 58:6d:87:62:f8:b1
>>     1 : 4162
>>     65534 : 0
>>
>> My code is bellow:
>>     def aggregate_timer(self, dpid):
>>         flow = ofp_match()
>>         flow.wildcards = 0xffffffff
>>         self.ctxt.send_aggregate_stats_request(dpid, flow,  0xff)
>>         self.post_callback(MONITOR_TABLE_PERIOD, lambda :
>> self.aggregate_timer(dpid))
>>
>>     def table_timer(self, dpid):
>>         self.ctxt.send_table_stats_request(dpid)
>>         self.post_callback(MONITOR_TABLE_PERIOD, lambda :
>> self.table_timer(dpid))
>>
>>     def port_timer(self, dpid):
>>         self.ctxt.send_port_stats_request(dpid, OFPP_NONE)
>>         self.post_callback(MONITOR_PORT_PERIOD, lambda :
>> self.port_timer(dpid))
>>
>>     # For each new datapath that joins, create a timer loop that monitors
>>     # the statistics for that switch
>>     def datapath_join_callback(self, dpid, stats):
>>         print "datapath_join_callback: ", longlong_to_octstr(dpid)[6:]
>>         self.post_callback(MONITOR_TABLE_PERIOD, lambda :
>> self.table_timer(dpid))
>>         self.post_callback(MONITOR_PORT_PERIOD + 1, lambda :
>> self.port_timer(dpid))
>>         self.post_callback(MONITOR_AGGREGATE_PERIOD + 2, lambda :
>> self.aggregate_timer(dpid))
>>
>>     def aggregate_stats_in_handler(self, dpid, stats):
>>         print "Aggregate stats in from datapath",
>> longlong_to_octstr(dpid)[6:]
>>         print '\t',stats
>>
>>     def table_stats_in_handler(self, dpid, tables):
>>         print "Table stats in from datapath", longlong_to_octstr(dpid)[6:]
>>         for item in tables:
>>             print '\t',item['name'],':',item['active_count']
>>
>>     def port_stats_in_handler(self, dpid, ports):
>>         print "Port stats in from datapath", longlong_to_octstr(dpid)[6:]
>>         for item in ports:
>>             print '\t',item['port_no'],':',item['rx_packets']
>>
>>     def packet_in_callback(self, dpid, inport, reason, len, bufid,
>> packet):
>>         flow=extract_flow(packet)
>>         if flow['tp_dst'] == 22:
>>             print "packet_in_callback: ", longlong_to_octstr(dpid)[6:]
>>             print "ssh packet received on port 22"
>>
>>     def install(self):
>>         self.register_for_packet_in(self.packet_in_callback)
>>         self.register_for_datapath_join(lambda dpid, stats :
>> self.datapath_join_callback(dpid,stats))
>>         self.register_for_table_stats_in(self.table_stats_in_handler)
>>         self.register_for_port_stats_in(self.port_stats_in_handler)
>>
>> self.register_for_aggregate_stats_in(self.aggregate_stats_in_handler)
>>
>>
>> Thank you!
>> Diana
>>
>>
>> On Fri, Feb 17, 2012 at 2:14 PM, Murphy McCauley <[email protected]> wrote:
>>
>>> What type of switch are you using, and are you sure that it's reporting
>>> the ports correctly?  I assume your ssh traffic should be going through
>>> multiple ports...
>>>
>>> The first thing I'd suggest is that you check the control traffic with
>>> Wireshark and the OpenFlow dissector to see if what's coming across the
>>> wire is consistent with what you see in NOX.
>>>
>>> -- Murphy
>>>
>>> On Feb 17, 2012, at 5:02 AM, Diana Marosin wrote:
>>>
>>> > Hello,
>>> >
>>> > I am trying to retrieve the ports statistics from an openflow switch
>>> using nox. I tried to use the coreapp/ examples /monitoring.py script, but
>>> no matter what I do (for example a ssh) I retrive only ports 1 (rx_packets
>>> values are always increasing) and 65534 (rx_packets = 0). If I use the
>>> packet_in_callback then from the packet I can extract the port number, but
>>> the parameter inport is 1 (not as I would expect).
>>> >
>>> > Any idea on what is happening and why the stats don't work?
>>> >
>>> > I mention I use NOX 0.9.1-full-beta compiled with OpenFlow 0x01.
>>> >
>>> > Thank you,
>>> > Diana _______________________________________________
>>> > nox-dev mailing list
>>> > [email protected]
>>> > http://noxrepo.org/mailman/listinfo/nox-dev
>>>
>>>
>>
>>
>
>
>

Reply via email to