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 <jam...@nau.edu> 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 > > nox-dev@noxrepo.org > > http://noxrepo.org/mailman/listinfo/nox-dev > >
_______________________________________________ nox-dev mailing list nox-dev@noxrepo.org http://noxrepo.org/mailman/listinfo/nox-dev