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 >>> >>> >> >> >
