Since I don't have a switch which is capable of timestamping, I would simply loop the packet back to the sender on a different interface:
eth0 -> ingress switch ... egress switch -> eth1 This is a common approach - you don't need NOX or OpenFlow to do this, and no time synchronization is required since there is a single clock. On Dec 19, 2011, at 1:59 PM, Walid van Boetzelaer wrote: > Hello, and thank you for your answer. > > I got this working and using send_stats_request was the way to go. I now have > something similar to an available bandwith (assuming speed is the > max_bandwidth, i do speed-link_utilization) > > I would like now to get the latency between two switches. I would be curious > to know what the best way to do this is. > My idea, though i can't figure out which commands to use, is the following: > have a switch send a packet to the neighbor switch, have it timestamp it, > send it back to the first switch, have it timestamp it, return it to the > controller, and from that, get the latency. > > If someone has thought of this already, could you point me to the functions i > should be using to get this working? > > Thank you in advance, > > Walid van Boetzelaer > > > > > > 2011/12/18 Murphy McCauley <jam...@nau.edu> > On Dec 18, 2011, at 11:52 AM, Walid van Boetzelaer wrote: > > > Openflow does maintain counters for each flow table, and these counters > > have the number of received packets per port, etc... How can I retrieve > > these? > > At the OpenFlow level, you do this by sending an ofp_port_stats_request > asking for stats of type OFPST_PORT. You'll get back a response of > ofp_port_stats which contains byte and packet counters for the port. > > The easiest way to do this from Python in NOX is using component's > register_for_port_stats_in() to set a callback for port stats messages, and > then using pycontext's send_port_stats_request() to send an actual request. > (From inside your component, I think these are > self.register_for_port_stats_in() and self.ctxt.send_port_stats_request().) > > Alternatively, the switchstats or monitoring components may do what you need. > > Hope that helps. > > -- Murphy > > > Walid wrote: > Hi all! > I need to calculate the bandwidth and latency between two switches. To > achieve this, I plan to: > C > ___|___ > / \ > / \ > h1------p1:s1:p2-----p1:s2:p2--------h2 > -bandwidth: > stat0 = number of packets that went through s1_p1 and s2_port1 at time t1 > generate traffic from s1 to s2 > stat1 = number of packets that went through s1_p1 and s2_port1 at time t2 > bandwidth = (stat1-stat0)*size_of_packet/(t2-t1) > -latency: > latency = send a packet from s1 to s2, check the timestamp at s1, s2, > subtract them > > However, I am having trouble as to generating traffic. I checked the stats > variable passed to the datapath_join events, and i get the following: > I've been looking into these stats (and switchstats as well) for a while, > because I believe they can help me retrieve the information I need. However, > I am unsure as to what 'speed' here means. Also, I can't see where the number > of packets that traverse a port is. > Openflow does maintain counters for each flow table, and these counters have > the number of received packets per port, etc... How can I retrieve these? > Thank you in advance! > Best regards > {'ports': [ > {'hw_addr': 'b\x9e\x04\xb9h,', 'curr': 192, 'name': 's1-eth2', 'speed': > 10000, 'supported': 0, 'enabled': True, 'flood': True, 'state': 0, 'link': > True, 'advertised': 0, 'peer': 0, 'config': 0, 'port_no': 2}, {'hw_addr': > '\x00# \xba\xc0\x97', 'curr': 0, 'name': 'dp0', 'speed': 0, 'supported': 0, > 'enabled': False, 'flood': True, 'state': 1, 'link': False, 'advertised': 0, > 'peer': 0, 'config': 1, 'port_no': 65534}, {'hw_addr': > '\x9e\xe7\xf1\xcb\xdd\x17', 'curr': 192, 'name': 's1-eth1', 'speed': 10000, > 'supported': 0, 'enabled': True, 'flood': True, 'state': 0, 'link': True, > 'advertised': 0, 'peer': 0, 'config': 0, 'port_no': 1}], 'n_tables': 2, > 'n_bufs': 256L, 'actions': 4095L, 'caps': 135L} > _______________________________________________ > 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