brandonheller / riplpox

RipL-POX (Ripcord-Lite for POX): A simple network controller for OpenFlow-based data centers
GNU General Public License v2.0
25 stars 28 forks source link

Bug in install function #3

Closed bocon13 closed 11 years ago

bocon13 commented 11 years ago

In riplpox.py: def install(self, port, match, buf = -1, idle_timeout = 0, hard_timeout = 0): msg = of.ofp_flow_mod() msg.match = match msg.idle_timeout = idle_timeout msg.hard_timeout = hard_timeout msg.actions.append(of.ofp_action_output(port = port)) msg.buffer_id = buf self.connection.send(msg)

buffer_id is expected to be an unsigned long, and neither the proactive nor reactive functions set this value.

FIX: This will work if we change: buf = -1 to: buf = None

diff --git a/riplpox/riplpox.py b/riplpox/riplpox.py index 2fef84e..70daa6f 100644 --- a/riplpox/riplpox.py +++ b/riplpox/riplpox.py @@ -68,7 +68,7 @@ class Switch (EventMixin): msg.buffer_id = buffer_id self.connection.send(msg)

ERROR:core:Exception while handling OpenFlowNexus!PacketIn... Traceback (most recent call last): File "/home/ubuntu/pox/pox/lib/revent/revent.py", line 234, in raiseEventNoErrors return self.raiseEvent(event, _args, _kw) File "/home/ubuntu/pox/pox/lib/revent/revent.py", line 281, in raiseEvent rv = event._invoke(handler, _args, _kw) File "/home/ubuntu/pox/pox/lib/revent/revent.py", line 159, in _invoke return handler(self, _args, *_kw) File "/home/ubuntu/riplpox/riplpox/riplpox.py", line 241, in _handle_PacketIn self._handle_packet_reactive(event) File "/home/ubuntu/riplpox/riplpox/riplpox.py", line 213, in _handle_packet_reactive self._install_reactive_path(event, out_dpid, out_port, packet) File "/home/ubuntu/riplpox/riplpox/riplpox.py", line 133, in _install_reactive_path self.switches[node_dpid].install(out_port, match, idle_timeout = 10) File "/home/ubuntu/riplpox/riplpox/riplpox.py", line 78, in install self.connection.send(msg) File "/home/ubuntu/pox/pox/openflow/of_01.py", line 687, in send data = data.pack() File "/home/ubuntu/pox/pox/openflow/libopenflow_01.py", line 2247, in pack self.flags) error: integer out of range for 'L' format code

brandonheller commented 11 years ago

I can't replicate this bug on the most recent POX master as of today, or on the version I used with most RipL testing previously (8fab5f5c, from May 6 2012).

I also can't match the line numbers in your exception printout to either of these versions, which would help me verify a fix as well as trace the code path POX uses w/buffer id's.

Can you let me know the specific POX commit you're using (with git log -1), along with an example of steps that would trigger the bug for you?

bocon13 commented 11 years ago

Here were the steps:

Run RipL-POX in reactive mode w/random routing

~/pox/pox.py riplpox.riplpox --topo=ft,4 --routing=hashed --mode=reactive

Running Mininet w/a Fat Tree topology, in a second window:

sudo mn --custom ~/ripl/ripl/mn.py --topo ft,4 --controller=remote --mac

It turns out that the default branch on github for pox is: betta This was the branch that I was using; I switched to master and it works like a charm.

Here's where I'm at now for the record: commit 0a1bbb8128ed84c3bfb1d2b985dcc41ae4be7425 Author: Murphy McCauley murphy.mccauley@gmail.com Date: Sat Nov 24 01:52:07 2012 -0800

You should be able to reproduce by just checking out the lastest from betta branch if you want. But, I will close the issue for now. Thanks!

brandonheller commented 11 years ago

OK. I noted the version against which RipL was tested, 0a1bbb8, in the INSTALL file and put it at the top to make sure people notice. Thanks for the bug report.

HelloChristie commented 7 years ago

Hi I'm facing exactly the same problem and the message shows when I pingpair on mininet : ERROR:core:Exception while handling OpenFlowNexus!PacketIn... Traceback (most recent call last): File "/home/shuping/pox/pox/lib/revent/revent.py", line 234, in raiseEventNoErrors return self.raiseEvent(event, *args, kw) File "/home/shuping/pox/pox/lib/revent/revent.py", line 281, in raiseEvent rv = event._invoke(handler, *args, *kw) File "/home/shuping/pox/pox/lib/revent/revent.py", line 159, in _invoke return handler(self, args, kw) File "/home/shuping/riplpox/riplpox/riplpox.py", line 350, in _handle_PacketIn self._handle_packet_reactive(event) File "/home/shuping/riplpox/riplpox/riplpox.py", line 252, in _handle_packet_reactive self._flood(event) File "/home/shuping/riplpox/riplpox/riplpox.py", line 212, in _flood for sw in self._raw_dpids(t.layer_nodes(t.LAYER_EDGE)): File "/home/shuping/ripl/ripl/dctopo.py", line 136, in layer_nodes nodes = [n for n in self.g.nodes() if is_layer(n)] File "/home/shuping/ripl/ripl/dctopo.py", line 134, in is_layer return self.layer(n) == layer File "/home/shuping/ripl/ripl/dctopo.py", line 115, in layer return self.node_info[name]['layer'] AttributeError: 'FatTreeTopo' object has no attribute 'node_info'

I don't know how to slove this problem,were you able to slove it? Thanks!

humikahout commented 7 years ago

hello after adding the flow in pox controller i found error in core: exception while handling discovery link event. i am also attaching the screen shot in description. b0f1ca01-fa05-4ca3-b9c6-e5ffa6123572