Hello, I was just merging my local changes with whats in the git and noticed this change never made it in.
In ipv4.py self.id = int(time.time()) but this should be self.id = int(time.time)) &0xffff (since the field is only 2bytes) Aaron On Mon, Aug 8, 2011 at 6:31 PM, Murphy McCauley <jam...@nau.edu> wrote: > It's the identification field of the IPv4 header. Mostly this is used to > match up fragments (which should all retain the same value). So time.time() > isn't really a very good value for it anyway, as it should be relatively > unique, but int(time.time()) is only unique for packets sent in different > seconds which seems like a fairly unsafe assumption. We should probably > just use a counter. Which, looking at the code... it looks like may have > been done in the past (ip_id field) and then changed. It should probably be > changed back. :) I think that's what I did when I fixed it before; it must > just have not made it out of some experimental branch. Sorry it got you! > > -- Murphy > > On Aug 8, 2011, at 3:18 PM, Aaron Rosen wrote: > > Thanks that did the trick. > > Yea I thought this was strange too since this used to work a while ago. > > Out of curiosity what is id in ipv4.py I see that it holds the time but why > is that needed? > > Thanks again, > > Aaron > > On Mon, Aug 8, 2011 at 6:13 PM, Murphy McCauley <jam...@nau.edu> wrote: >> >> Strange, I am positive that I have fixed this. Maybe it just hasn't >> gotten pushed yet. >> >> In ipv4.py around line 76, try something like... >> self.id = int(time.time()) & 0xffff >> >> -- Murphy >> >> On Aug 8, 2011, at 3:08 PM, Aaron Rosen wrote: >> >> Thanks, >> >> I hate to bug you again but this looks fine to me? >> >> iplen = 39 len("hello world")(11) + udp header(8) + 20 (ip_header) >> 17 = UDP_PROTOCOL >> >> bad packet [69, 0, 39, 1312840938, 0, 64, 17, 0, 167837954, 167837953] >> 00019|pyrt|ERR:unable to invoke a Python event handler: >> Traceback (most recent call last): >> File "./nox/lib/util.py", line 114, in f >> event.total_len, buffer_id, packet) >> File "./nox/coreapps/examples/sos.py", line 644, in packet_in_callback >> learn(dpid, inport, packet, packet.arr, bufid) >> File "./nox/coreapps/examples/sos.py", line 212, in learn >> forward(dpid, inport, packet, packet.arr, bufid, TRUNK_PORT) >> File "./nox/coreapps/examples/sos.py", line 333, in forward >> ret = install_agent_flows(dpid, inport, packet, buf, bufid, >> TRUNK_PORT); >> File "./nox/coreapps/examples/sos.py", line 594, in install_agent_flows >> inst.send_openflow_packet(dp_near, inform_dest.tostring(), >> inst.Agents[dp_near]['inport'], inport) >> File "./nox/lib/packet/packet_base.py", line 118, in tostring >> return ''.join((buf, self.next.tostring())) >> File "./nox/lib/packet/packet_base.py", line 113, in tostring >> buf = self.hdr() >> File "./nox/lib/packet/ipv4.py", line 179, in hdr >> self.dstip) >> error: 'H' format requires 0 <= number <= 65535 >> >> >> On Mon, Aug 8, 2011 at 5:32 PM, Murphy McCauley <jam...@nau.edu> wrote: >>> >>> I think you just have a field with a bad value. >>> >>> Try replacing the checksum function with something like this to help you >>> spot it: >>> >>> def checksum(self): >>> try: >>> data = struct.pack('!BBHHBBHII', (self.v << 4) + self.hl, self.tos, >>> self.iplen, self.id, >>> (self.flags << 13) | self.frag, self.ttl, >>> self.protocol, 0, self.srcip, >>> self.dstip) >>> return checksum(data, 0) >>> except: >>> print "bad packet",[(self.v << 4) + self.hl, >>> self.tos, >>> self.iplen, self.id, >>> (self.flags << 13) | self.frag, self.ttl, >>> self.protocol, 0, self.srcip, >>> self.dstip] >>> >>> -- Murphy >>> >>> On Aug 8, 2011, at 1:50 PM, Aaron Rosen wrote: >>> >>> Hello, >>> >>> I emailed the mailing list about this before but it seems like maybe >>> something changed or maybe I'm blind. Anyways, the following code generates >>> the following execption. Any ideas what's going wrong? >>> >>> >>> def send_udp(mac, dstip, srcip, port, payload): >>> l4 = udp() >>> l4.srcport = 1999 >>> l4.dstport = 1998 >>> l4.len = udp.MIN_LEN + len("hello world") >>> l4.set_payload("hello world") >>> l4.arr = l4.tostring() >>> >>> l3 = ipv4() >>> l3.iplen = ipv4.MIN_LEN + l4.len >>> l3.protocol = ipv4.UDP_PROTOCOL >>> l3.dstip = ipstr_to_int("10.1.1.1") >>> l3.srcip = ipstr_to_int("10.1.1.2") >>> l3.set_payload(l4) >>> >>> l2 = ethernet() >>> l2.set_payload(l3) >>> l2.dst = octstr_to_array("00:00:00:00:00:01") >>> l2.src = octstr_to_array("00:00:00:00:00:09") >>> l2.type = ethernet.IP_TYPE >>> l3.checksum() >>> l4.csum = l4.checksum() >>> return l2 >>> >>> >>> 00019|pyrt|ERR:unable to invoke a Python event handler: >>> Traceback (most recent call last): >>> File "./nox/lib/util.py", line 114, in f >>> event.total_len, buffer_id, packet) >>> File "./nox/coreapps/examples/sos.py", line 626, in packet_in_callback >>> learn(dpid, inport, packet, packet.arr, bufid) >>> File "./nox/coreapps/examples/sos.py", line 194, in learn >>> forward(dpid, inport, packet, packet.arr, bufid, TRUNK_PORT) >>> File "./nox/coreapps/examples/sos.py", line 315, in forward >>> ret = install_agent_flows(dpid, inport, packet, buf, bufid, >>> TRUNK_PORT); >>> File "./nox/coreapps/examples/sos.py", line 575, in install_agent_flows >>> inform_dest = send_udp(mac, dstip, srcip, port, payload) >>> File "./nox/coreapps/examples/sos.py", line 89, in send_udp >>> l3.checksum() >>> File "./nox/lib/packet/ipv4.py", line 162, in checksum >>> self.dstip) >>> error: 'H' format requires 0 <= number <= 65535 >>> >>> >>> On Mon, Jun 20, 2011 at 1:59 PM, Aaron Rosen <aro...@clemson.edu> wrote: >>>> >>>> Thanks Murphy! >>>> >>>> You're right, that did the trick. >>>> >>>> Aaron >>>> >>>> On Mon, Jun 20, 2011 at 1:55 PM, Murphy McCauley <jam...@nau.edu> wrote: >>>> > So I think the call to l3.checksum() is extraneous, but the real issue >>>> > is >>>> > probably that l3.iplen should be ipv4.MIN_LEN + l4.len. >>>> > >>>> > -- Murphy >>>> > >>>> > On Monday, June 20, 2011 09:42:07 AM Aaron Rosen wrote: >>>> >> Hi Murphy, >>>> >> >>>> >> wow... Opps... >>>> >> >>>> >> I'm trying the following: This doesn't return any errors but in >>>> >> wireshark the packet_outs say Malformed UDP packets. >>>> >> >>>> >> def send_udp_message(): >>>> >> >>>> >> l4 = udp() >>>> >> l4.srcport = 1999 >>>> >> l4.dstport = 1888 >>>> >> l4.len = udp.MIN_LEN + len("hello_world") >>>> >> l4.set_payload("Hello_world") >>>> >> l4.arr = l4.tostring() >>>> >> >>>> >> l3 = ipv4() >>>> >> l3.iplen = ipv4.MIN_LEN >>>> >> l3.protocol = ipv4.UDP_PROTOCOL >>>> >> l3.dstip = ipstr_to_int("130.127.39.7"); >>>> >> l3.srcip = ipstr_to_int("1.1.1.1"); >>>> >> l3.set_payload(l4) >>>> >> >>>> >> l2 = ethernet() >>>> >> l2.set_payload(l3) >>>> >> l2.dst = octstr_to_array("00:00:00:00:00:02") >>>> >> l2.dst = octstr_to_array("a1:00:04:00:0a:04") >>>> >> l2.type = ethernet.IP_TYPE >>>> >> l3.checksum() >>>> >> l4.csum = l4.checksum() >>>> >> >>>> >> return l2 >>>> >> >>>> >> .... >>>> >> inst.send_openflow_packet(dpid, send_udp_message().tostring(), >>>> >> openflow.OFPP_FLOOD, inport) >>>> >> source = mac_to_str(packet.src) >>>> >> >>>> >> On Mon, Jun 20, 2011 at 12:29 PM, Murphy McCauley <jam...@nau.edu> >>>> >> wrote: >>>> >> > Unfortunately, your tweak breaks the logic of the assert. >>>> >> > >>>> >> > The assert is asserting that self.next is a packet_base of some >>>> >> > sort OR a >>>> >> > string. You've set it to a string, so... it should be a string. >>>> >> > So it >>>> >> > should definitely not be a packet_base. So the first of your >>>> >> > asserts >>>> >> > will always fail. >>>> >> > >>>> >> > For the sake of testing, would you please comment out the first of >>>> >> > your >>>> >> > two asserts (leaving only the one against type('')), and let me >>>> >> > know the >>>> >> > result? >>>> >> > >>>> >> > -- Murphy >>>> >> > >>>> >> > On Monday, June 20, 2011 09:22:23 AM Aaron Rosen wrote: >>>> >> >> Hi Murphy, >>>> >> >> >>>> >> >> I'm using zaku but the one in destiny looked the same to be. >>>> >> >> >>>> >> >> I changed to assert to be on two lines so I could see which one >>>> >> >> was >>>> >> >> firing. >>>> >> >> >>>> >> >> def checksum(self): >>>> >> >> #assert(isinstance(self.next, packet_base) or >>>> >> >> type(self.next) >>>> >> >> == type('')) >>>> >> >> assert(isinstance(self.next, packet_base)) >>>> >> >> assert(type(self.next) == type('')) >>>> >> >> >>>> >> >> >>>> >> >> Thanks, >>>> >> >> >>>> >> >> Aaron >>>> >> >> >>>> >> >> On Mon, Jun 20, 2011 at 12:19 PM, Murphy McCauley <jam...@nau.edu> >>>> >> >> wrote: >>>> >> >> > What NOX are you using? Your udp.py does not seem to be the one >>>> >> >> > in >>>> >> >> > zaku or destiny... >>>> >> >> > >>>> >> >> > -- Murphy >>>> >> >> > >>>> >> >> > On Sunday, June 19, 2011 03:34:20 PM Aaron Rosen wrote: >>>> >> >> >> Hello, >>>> >> >> >> >>>> >> >> >> I'm trying to send udp packets from my controller but I'm >>>> >> >> >> getting the >>>> >> >> >> following assertion when I call udp().checksum(). I was hoping >>>> >> >> >> someone could point out where I'm going wrong. >>>> >> >> >> >>>> >> >> >> Thanks, >>>> >> >> >> >>>> >> >> >> Aaron >>>> >> >> >> >>>> >> >> >> Traceback (most recent call last): >>>> >> >> >> File "./nox/lib/util.py", line 116, in f >>>> >> >> >> event.total_len, buffer_id, packet) >>>> >> >> >> File "./nox/coreapps/examples/sos.py", line 299, in >>>> >> >> >> packet_in_callback learn(dpid, inport, packet) >>>> >> >> >> File "./nox/coreapps/examples/sos.py", line 56, in learn >>>> >> >> >> send_packet = send_udp_message() >>>> >> >> >> File "./nox/coreapps/examples/sos.py", line 48, in >>>> >> >> >> send_udp_message >>>> >> >> >> l4.csum = l4.checksum() >>>> >> >> >> File "./nox/lib/packet/udp.py", line 111, in checksum >>>> >> >> >> assert(isinstance(self.next, packet_base)) >>>> >> >> >> AssertionError >>>> >> >> >> >>>> >> >> >> >>>> >> >> >> def send_udp_message(): >>>> >> >> >> >>>> >> >> >> l4 = udp() >>>> >> >> >> l4.srcport = 1999 >>>> >> >> >> l4.dstport = 1888 >>>> >> >> >> l4.len = udp.MIN_LEN + len("hello_world") >>>> >> >> >> l4.set_payload("Hello_world") >>>> >> >> >> >>>> >> >> >> l3 = ipv4() >>>> >> >> >> l3.iplen = ipv4.MIN_LEN >>>> >> >> >> l3.protocol = ipv4.UDP_PROTOCOL >>>> >> >> >> l3.dstip = ipstr_to_int("130.127.39.7"); >>>> >> >> >> l3.srcip = ipstr_to_int("1.1.1.1"); >>>> >> >> >> l3.set_payload(l4) >>>> >> >> >> >>>> >> >> >> l2 = ethernet() >>>> >> >> >> l2.set_payload(l3) >>>> >> >> >> l2.dst = octstr_to_array("00:00:00:00:00:02") >>>> >> >> >> l2.dst = octstr_to_array("a1:00:04:00:0a:04") >>>> >> >> >> l2.type = ethernet.IP_TYPE >>>> >> >> >> l3.checksum() >>>> >> >> >> l4.csum = l4.checksum() >>>> >> >> >> >>>> >> >> >> return l2 >>>> >> >> >> >>>> >> >> >> >>>> >> >> >> .... >>>> >> >> >> send_packet = send_udp_message() >>>> >> >> >> inst.send_openflow_packet(dpid, send_packet.tostring(), >>>> >> >> >> openflow.OFPP_FLOOD, inport) >>>> > >>>> >>>> >>>> >>>> -- >>>> Aaron O. Rosen >>>> Masters Student - Network Communication >>>> 306B Fluor Daniel >>> >>> >>> >>> >>> -- >>> Aaron O. Rosen >>> Masters Student - Network Communication >>> 306B Fluor Daniel >>> >>> >>> >> >> >> >> -- >> Aaron O. Rosen >> Masters Student - Network Communication >> 306B Fluor Daniel >> >> >> > > > > -- > Aaron O. Rosen > Masters Student - Network Communication > 306B Fluor Daniel > > > -- Aaron O. Rosen Masters Student - Network Communication 306B Fluor Daniel _______________________________________________ nox-dev mailing list nox-dev@noxrepo.org http://noxrepo.org/mailman/listinfo/nox-dev