Hey Guys I have one more question: I'm receiving IPIP packets and I want to unencapsulate them. I'm receiving these packets as packet_ins and I have the follow code to handle this:
if packet.next.protocol == 0x4: print "UNENCAPED1 " packet.next = packet.next.next self.send_openflow_packet(dpid, packet.tostring(), openflow.OFPP_FLOOD) print "UNENCAPED2 " return CONTINUE In NOX I see: UNENCAPED1 UNENCAPED2 But in wireshark a packet_out event is never generated. Any idea whats going wrong here? (attached is one of the packet_in events that I'm receiving I'm not sure it will be helpful). I've also changed the follow code so that my controller receives the full packet from a packet_in event.) diff --git a/src/lib/openflow.cc b/src/lib/openflow.cc index e23cb20..9b5a023 100644 --- a/src/lib/openflow.cc +++ b/src/lib/openflow.cc @@ -598,7 +598,7 @@ int Openflow_connection::send_ switch_config() { osc.header.length = htons(sizeof osc); osc.header.xid = openflow_pack::get_xid(); osc.flags = 0; - osc.miss_send_len = htons(OFP_DEFAULT_MISS_SEND_LEN); + osc.miss_send_len = htons(UINT16_MAX); return send_openflow(&osc.header, false); Thanks, Aaron On Tue, Mar 1, 2011 at 7:50 PM, James "Murphy" McCauley <jam...@nau.edu>wrote: > You CAN change how much of the packet gets forwarded from a miss, but > this is done in the switch negotiation and there's no really clean way > to change it (it's a macro in one of the openflow headers). You're > better off installing a flow. > > In that case, if you're not manipulating the packets at all (it doesn't > seem like you are), you can also then generally send them back out by > buffer id, and not actually have to send the full packet both ways > to/from the controller. Also, if you just want to spy on traffic and > not alter it, you could set an action to flood the packet as well as the > action to send it to the controller. > > -- Murphy > > On Tue, 2011-03-01 at 19:36 -0500, Aaron Rosen wrote: > > These packets are from non-matches. So I guess I'm only getting > > 128Bytes of the packet from this? I guess I should install a rule that > > sends this packets to the controller if I want the full packet. > > > > Thanks, > > > > Aaron > > > > On Tue, Mar 1, 2011 at 7:28 PM, James "Murphy" McCauley > > <jam...@nau.edu> wrote: > > I didn't just add the "+ str(self.type)". I also switched it > > to a print > > from a call to self.msg() (which doesn't exist because the TCP > > option > > class isn't a subclass of the main packet class). You should > > do this. > > > > BUT... now I am suspicious. How are you getting these > > packets? Are > > they from non-matches, or did you install a flow with a > > send-to-controller action? In the former case, the packet is > > almost > > surely truncated because only 128 bytes of a packet from a > > miss are sent > > by default. In the latter, are you sure you specified a large > > enough > > size when installing the flow? > > > > -- Murphy > > > > > > On Tue, 2011-03-01 at 19:18 -0500, Aaron Rosen wrote: > > > If I pass packet.arr that still doesn't work. I don't get an > > Error > > > message but tcpdump says: > > > > > > 19:16:26.829891 IP truncated-ip - 730 bytes missing! > > > 130.127.39.173.58832 > 130.127.39.235.ssh: P > > > 2569410772:2569411564(792) ack 3106665167 win 12 > > <nop,nop,timestamp > > > 10172901 47037426> > > > > > > Also adding that +str(self.type) their doesn't seem to print > > out the > > > type at that point. > > > > > > > > > 00132|pyrt|ERR:unable to invoke a Python event handler: > > > Traceback (most recent call last): > > > File "./nox/lib/util.py", line 113, in f > > > event.total_len, buffer_id, packet) > > > File "./nox/coreapps/examples/aaronswitch.py", line 182, > > in packet_in_callback > > > self.forward(dpid, inport, packet, packet.arr, bufid) > > > File "./nox/coreapps/examples/aaronswitch.py", line 67, in > > forward > > > self.send_openflow_packet(dpid, > > > packet.tostring(),openflow.OFPP_FLOOD , inport) > > > File "./nox/lib/packet/packet_base.py", line 114, in > > tostring > > > return ''.join((buf, self.next.tostring())) > > > File "./nox/lib/packet/packet_base.py", line 114, in > > tostring > > > return ''.join((buf, self.next.tostring())) > > > File "./nox/lib/packet/packet_base.py", line 109, in > > tostring > > > buf = self.hdr() > > > File "./nox/lib/packet/tcp.py", line 215, in hdr > > > packet += option.to_bytes() > > > File "./nox/lib/packet/tcp.py", line 78, in to_bytes > > > self.msg('(tcp_opt to_bytes) warning, unknown option') + > > str(self.type) > > > AttributeError: tcp_opt instance has no attribute 'msg' > > > > > > > > > > > > On Tue, Mar 1, 2011 at 6:48 PM, James "Murphy" McCauley > > <jam...@nau.edu> wrote: > > > > Yeah, that's a bug too. > > > > > > > > Change line 78 in tcp.py to like... > > > > print '(tcp_opt to_bytes) warning, unknown option type ' + > > > > str(self.type) > > > > > > > > .. I'd actually be interested in knowing which option it > > is, because > > > > maybe we should be handling it. > > > > > > > > You could also probably pass packet.arr instead of > > packet.tostring() > > > > which would get around the fact that the parsing library > > has not been > > > > extensively tested for packet assembly (mostly it's used > > for parsing). > > > > > > > > -- Murphy > > > > > > > > On Tue, 2011-03-01 at 18:21 -0500, Aaron Rosen wrote: > > > >> Oh Nox is also telling me this: > > > >> > > > >> Traceback (most recent call last): > > > >> File "./nox/lib/util.py", line 113, in f > > > >> event.total_len, buffer_id, packet) > > > >> File "./nox/coreapps/examples/aaronswitch.py", line > > 182, in > > > >> packet_in_callback > > > >> self.forward(dpid, inport, packet, packet.arr, bufid) > > > >> File "./nox/coreapps/examples/aaronswitch.py", line 67, > > in forward > > > >> self.send_openflow_packet(dpid, > > > >> packet.tostring(),openflow.OFPP_FLOOD , inport) > > > >> File "./nox/lib/packet/packet_base.py", line 114, in > > tostring > > > >> return ''.join((buf, self.next.tostring())) > > > >> File "./nox/lib/packet/packet_base.py", line 114, in > > tostring > > > >> return ''.join((buf, self.next.tostring())) > > > >> File "./nox/lib/packet/packet_base.py", line 109, in > > tostring > > > >> buf = self.hdr() > > > >> File "./nox/lib/packet/tcp.py", line 215, in hdr > > > >> packet += option.to_bytes() > > > >> File "./nox/lib/packet/tcp.py", line 78, in to_bytes > > > >> self.msg('(tcp_opt to_bytes) warning, unknown > > option') > > > >> AttributeError: tcp_opt instance has no attribute 'msg' > > > >> > > > >> > > > >> > > > >> > > > >> On Tue, Mar 1, 2011 at 6:18 PM, Aaron Rosen > > <aro...@clemson.edu> > > > >> wrote: > > > >> Thanks Murphy that fixes the typeerror but I'm > > still not sure > > > >> if the packets are correct because I'm not able > > to make a > > > >> connection. In Wireshark for this ssh packet_in's > > it's saying > > > >> "This frame is a suspected retransmission" and in > > tcpdump at > > > >> the host that is getting these packets its > > saying: > > > >> > > > >> > > > >> 18:13:48.227362 IP truncated-ip - 730 bytes > > missing! > > > >> 130.127.39.173.59276 > 130.127.39.235.ssh: P > > 40:832(792) ack > > > >> 33 win 12 <nop,nop,timestamp 9797038 46103242> > > > >> > > > >> > > > >> Thanks, > > > >> > > > >> Aaron > > > >> > > > >> > > > >> > > > >> > > > >> On Tue, Mar 1, 2011 at 5:39 PM, James "Murphy" > > McCauley > > > >> <jam...@nau.edu> wrote: > > > >> Looks like the problem is in the > > parsing. Here's a > > > >> patch: > > > >> > > > >> --- a/src/nox/lib/packet/tcp.py > > > >> +++ b/src/nox/lib/packet/tcp.py > > > >> @@ -150,7 +150,7 @@ class > > tcp(packet_base): > > > >> elif arr[i] == tcp_opt.MSS: > > > >> if arr[i+1] != 4: > > > >> raise Exception() > > > >> - val = struct.unpack('! > > H',arr[i+2:i > > > >> +4]) > > > >> + val = struct.unpack('! > > H',arr[i+2:i > > > >> +4])[0] > > > >> > > > >> > > self.options.append(tcp_opt(tcp_opt.MSS,val)) > > > >> elif arr[i] == tcp_opt.WSOPT: > > > >> if arr[i+1] != 3: > > > >> > > > >> -- Murphy > > > >> > > > >> > > > >> On Tue, 2011-03-01 at 17:29 -0500, Aaron > > Rosen wrote: > > > >> > Hi Murphy, > > > >> > > > > >> > I'm just trying to connect to a > > computer using ssh > > > >> so when I do ssh > > > >> > 130.127.39.235 I see these typeerror > > messages. I do > > > >> not to anything > > > >> > with the packet when it gets to the > > controller > > > >> except tell it to > > > >> > flood. > > > >> > > > > >> > The MSS of these packets are 1460 in > > the packet_in > > > >> event. > > > >> > > > > >> > Any idea? > > > >> > > > > >> > Thanks, > > > >> > > > > >> > Aaron > > > >> > > > > >> > > > > >> > On Tue, Mar 1, 2011 at 3:51 PM, James > > "Murphy" > > > >> McCauley > > > >> > <jam...@nau.edu> wrote: > > > >> > You're not doing anything wrong > > here. You > > > >> seem to be doing > > > >> > something > > > >> > wrong elsewhere. Specifically, > > you seem to > > > >> have constructed > > > >> > an MSS TCP > > > >> > option with a tuple as its > > value, when the > > > >> value should be > > > >> > some sort of > > > >> > integer. > > > >> > > > > >> > -- Murphy > > > >> > > > > >> > > > > >> > On Tue, 2011-03-01 at 15:22 > > -0500, Aaron > > > >> Rosen wrote: > > > >> > > Hello I was wondering if > > someone could > > > >> explain where I'm > > > >> > going wrong > > > >> > > here: > > > >> > > I'm receiving a packet and > > then trying to > > > >> send it back out > > > >> > with > > > >> > > > > > >> > > > > self.send_openflow_packet(dpid, > > > >> > > > > packet.tostring(),openflow.OFPP_FLOOD , > > > >> inport) > > > >> > > > > > >> > > When I do this I'm getting > > the following > > > >> exception: > > > >> > > > > > >> > > 00290|pyrt|ERR:unable to > > invoke a Python > > > >> event handler: > > > >> > > Traceback (most recent call > > last): > > > >> > > File "./nox/lib/util.py", > > line 113, in f > > > >> > > event.total_len, > > buffer_id, packet) > > > >> > > File > > > >> "./nox/coreapps/examples/aaronswitch.py", > > line 177, > > > >> > in > > > >> > > packet_in_callback > > > >> > > self.forward(dpid, > > inport, packet, > > > >> packet.arr, bufid) > > > >> > > File > > > >> "./nox/coreapps/examples/aaronswitch.py", > > line 96, in > > > >> > forward > > > >> > > > > self.send_openflow_packet(dpid, > > > >> > > > > packet.tostring(),openflow.OFPP_FLOOD , > > > >> inport) > > > >> > > File > > "./nox/lib/packet/packet_base.py", > > > >> line 114, in > > > >> > tostring > > > >> > > return ''.join((buf, > > > >> self.next.tostring())) > > > >> > > File > > "./nox/lib/packet/packet_base.py", > > > >> line 114, in > > > >> > tostring > > > >> > > return ''.join((buf, > > > >> self.next.tostring())) > > > >> > > File > > "./nox/lib/packet/packet_base.py", > > > >> line 109, in > > > >> > tostring > > > >> > > buf = self.hdr() > > > >> > > File > > "./nox/lib/packet/tcp.py", line > > > >> 215, in hdr > > > >> > > packet += > > option.to_bytes() > > > >> > > File > > "./nox/lib/packet/tcp.py", line 70, > > > >> in to_bytes > > > >> > > return struct.pack('! > > > >> BBH',self.type,4,self.val) > > > >> > > TypeError: unsupported > > operand type(s) for > > > >> &: 'tuple' and > > > >> > 'long' > > > >> > > > > > >> > > Thanks, > > > >> > > > > > >> > > Aaron > > > >> > > > > > >> > > > > > >> > > -- > > > >> > > Aaron O. Rosen > > > >> > > Masters Student - Network > > Communication > > > >> > > 306B Fluor Daniel > > > >> > > 843.425.9777 > > > >> > > > > > >> > > > > >> > > > > > >> > > _______________________________________________ > > > >> > > nox-dev mailing list > > > >> > > nox-dev@noxrepo.org > > > >> > > > > > >> > > http://noxrepo.org/mailman/listinfo/nox-dev_noxrepo.org > > > >> > > > > >> > > > > >> > > > > >> > > > > >> > > > > >> > -- > > > >> > Aaron O. Rosen > > > >> > Masters Student - Network Communication > > > >> > 306B Fluor Daniel > > > >> > 843.425.9777 > > > >> > > > > >> > > > >> > > > >> > > > >> > > > >> > > > >> > > > >> > > > >> -- > > > >> > > > >> Aaron O. Rosen > > > >> Masters Student - Network Communication > > > >> 306B Fluor Daniel > > > >> 843.425.9777 > > > >> > > > >> > > > >> > > > >> > > > >> > > > >> -- > > > >> Aaron O. Rosen > > > >> Masters Student - Network Communication > > > >> 306B Fluor Daniel > > > >> 843.425.9777 > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > Aaron O. Rosen > > Masters Student - Network Communication > > 306B Fluor Daniel > > 843.425.9777 > > > > > -- Aaron O. Rosen Masters Student - Network Communication 306B Fluor Daniel 843.425.9777
err.pcap
Description: application/cap
_______________________________________________ nox-dev mailing list nox-dev@noxrepo.org http://noxrepo.org/mailman/listinfo/nox-dev