On Feb 26, 2014, at 12:18 PM, Naman Muley <naman.g.mu...@gmail.com> wrote:
> Hi Murphy, > > Thanks for the quick reply, which seemed to skip my attention for the last > two days. > I've replied inline.. > > > On Tue, Feb 25, 2014 at 3:46 AM, Murphy McCauley <murphy.mccau...@gmail.com> > wrote: > > On Feb 24, 2014, at 10:08 PM, Naman Muley <naman.g.mu...@gmail.com> wrote: > >> Hello, >> >> I was working with pox and a vendor open-flow switch (hardware). When I >> connect my configured switch to the pox controller, I get the following >> error message >> >> I did some looking around and found that type 4520, code 0 is not standard >> openflow but a ovs extension. but this is not possible in my case as my >> vendor is no where related to nicira / ovs / vmware. > > Are you sure? I believe a number of hardware vendors have based their > implementations on OVS. Or is it possible that the switch that's connecting > isn't the one that you think it is (e.g., it's a random OVS instance > somewhere)? You could try running info.switch_info and see what it says. > > hmm.. I wouldn't know if they are using OVS internally. I'd have to talk to > their support guys. > A random instanace of OVS somewhere wouldn't connect to exactly 192.168.2.1 > for the controller. I doubt it but I'll still check for any leftover ovs > instances somewhere. > > Even if it's not actually a Nicira switch, it still could use the Nicira > extension in order to report extended error information. > > BUT... this certainly looks like an OVS switch. Examining the error hexdump > you can see that the first byte is a 0, and the next bytes are 00-23-20. > Following the extended error format, the 0 means the next three bytes should > be an OUI, and... 00-23-20 is Nicira's OUI. > > > whoa I didn't know this. Can you point me to somewhere I can read up on this > ? is this mentioned in the Openflow specs ? Not in the OpenFlow specs since it's an extension. It's documented in the context of OVS. Mostly I think this is in the form of comments in the OVS code; I'm not sure if there's manual-type documentation of it somewhere. It'd be nice if POX parsed it all out for you, but it hasn't happened yet. > The next four bytes are two 16 bit fields: the "inner" type and code. > > Again, is this given in the openflow specs? or this is something that I > should read up on the switch specs ? > > In this case, it's 1,514. OVS's ofp-errors.h has this to say: > /* NX1.0(1,514), NX1.1(1,514), OF1.2+(1,11). Invalid port. > * [ A non-standard error (1,514), formerly > * OFPERR_NXBRC_BAD_IN_PORT is used for OpenFlow 1.0 and 1.1 as there > * seems to be no appropriste error code defined the specifications. ] > */ > OFPERR_OFPBRC_BAD_PORT, > > This seems to indicate that an in_port is set to something the switch doesn't > like. > > ^ I didn't quite understand the above sentence. *set to something* ? am I > missing something here ? The in_port field of an ofp_match, e.g., as part of a flow_mod or packet_out. In your case, judging by the log, this is likely to be the one set by the call to ofp_match.from_packet() on line 169 of l2_learning (in dart). Again, this seems a bit weird, since it's using the port number from the incoming packet (event.port). Maybe your switch can't match on the in_port or something? You could try removing the second parameter to from_packet() which will probably still work and will just wildcard the in_port. You also might try running a different forwarding component which works differently and what happens (e.g., l2_pairs). > This seems a bit strange, since I think l2_learning always uses one from a > packet_in, so you'd think it would be valid. > Looking further at the data, we can see it's an OpenFlow 1.0 message (0x01), > type 0x0e (which I think is a flow_mod). Unfortunately, it's truncated in > the error message. If we had the OpenFlow traffic we could find the original > message which caused the error via its XID (9) and take a look. > >> I can send the whole pox.log file if anyone wants. > > The control (OpenFlow) traffic is probably more immediately useful. > >> here are the components on pox I was running - >> $./pox.py openflow.of_01 --port=6633 --address=192.168.2.1 log >> --file=pox.log,w log.level --DEBUG forwarding.l2_learning > > With no modifications? > > with no modifications. >> I saw the same error message on dart as well as betta forks. >> >> I have attached the detailed pox.log file. >> >> I am afraid I don't have the capture as yet. But I am working on getting a >> capture of the traffic. > > A simulated capture of the control traffic can be gathered with the > openflow.debug component. > > i'll get you that. >> I was wondering if someone could shed more light on what could be causing >> this ? a version mismatch or is there something wrong with the vendor >> implementation of the openflow ? >> >> -------- ERROR message : --------------------------------- >> >> DEBUG:core:POX 0.3.0 (dart) going up... >> DEBUG:core:Running on CPython (2.7.3/Sep 26 2013 20:03:06) >> DEBUG:core:Platform is >> Linux-3.2.0-29-generic-x86_64-with-Ubuntu-12.04-precise >> INFO:core:POX 0.3.0 (dart) is up. >> DEBUG:openflow.of_01:Listening on 192.168.2.1:6633 >> INFO:openflow.of_01:[xx-xx-xx-xx-xx-xx 1] connected >> DEBUG:forwarding.l2_learning:Connection [xx-xx-xx-xx-xx-xx 1] >> DEBUG:forwarding.l2_learning:Port for 00:e0:2b:00:00:00 unknown -- flooding >> DEBUG:forwarding.l2_learning:Port for 00:e0:2b:00:00:00 unknown -- flooding >> DEBUG:forwarding.l2_learning:installing flow for 00:16:41:ef:46:47.11 -> >> 00:16:41:ef:5f:70.15 >> ERROR:openflow.of_01:[xx-xx-xx-xx-xx-xx 1] OpenFlow Error: >> [xx-xx-xx-xx-xx-xx 1] Error: header: >> [xx-xx-xx-xx-xx-xx 1] Error: version: 1 >> [xx-xx-xx-xx-xx-xx 1] Error: type: 1 (OFPT_ERROR) >> [xx-xx-xx-xx-xx-xx 1] Error: length: 84 >> [xx-xx-xx-xx-xx-xx 1] Error: xid: 9 >> [xx-xx-xx-xx-xx-xx 1] Error: type: 45250 >> [xx-xx-xx-xx-xx-xx 1] Error: code: 0 >> [xx-xx-xx-xx-xx-xx 1] Error: datalen: 72 >> [xx-xx-xx-xx-xx-xx 1] Error: 0000: 00 00 23 20 00 01 02 02 01 0e 00 50 00 >> 00 00 09 |..# .......P....| >> [xx-xx-xx-xx-xx-xx 1] Error: 0010: 00 00 00 00 00 0b 00 16 41 ef 46 47 00 >> 16 41 ef |........A.FG..A.| >> [xx-xx-xx-xx-xx-xx 1] Error: 0020: 5f 70 ff ff 00 00 08 06 00 02 00 00 0a >> 0a 01 0a |_p..............| >> [xx-xx-xx-xx-xx-xx 1] Error: 0030: 0a 0a 01 0c 00 00 00 00 00 00 00 00 00 >> 00 00 00 |................| >> [xx-xx-xx-xx-xx-xx 1] Error: 0040: 00 00 00 0a 00 1e 80 00 >> |........ | >> >> -------------- ERROR message -------------------------------------- >> >> Naman >> <pox.log> > > Naman