Thanks for your advise:) I will transefer to POX after ending of this
project.

Thanks a lot

Weiyang




2012/4/26 Murphy McCauley <[email protected]>

> Just a note that the packet library in POX is a considerable improvement
> over the one in NOX.  If you're writing code in Python, you might consider
> using POX instead.
>
> -- Murphy
>
> On Apr 26, 2012, at 10:01 AM, Weiyang Mo wrote:
>
> Hi, Aaron,
>
> I tried my code on real network today. From wireshark, I see that the new
> packets are sent to all hosts. However they are multicast which all hosts
> receive these IP packets.
>
> But I set    eth_packet.dst = packet.dst (ff:ff:ff:ff:ff:ff:ff)  ,
> eth_packet.src = packet.src
> I think that means that the new packet shouldn't find the destination
> since it is ff:ff:...   Then why my hosts can get the new packets?
>
> If I want to manually set the MAC address(For instance,
> 00:00:00:00:00:02), what should I do with eth_packet.dst
>
> eth_packet.dst = mac_to_int("00:00:00:00:00:02") makes an error.
>
> Thanks very much.
>
> Weiyang
>
> 2012/4/25 Aaron Rosen <[email protected]>
>
>> Can you make the following change to ipv4.py and see if this fixes it?
>>
>>
>> ~line 76
>> -        self.id    = int(time.time())
>> +        self.id    = int(time.time()) & 0xffff
>>
>>
>> On Wed, Apr 25, 2012 at 9:40 PM, Weiyang Mo <[email protected]>
>> wrote:
>> > I am sorry it still doesn't work. I checked the code and I think the
>> > problems happen in the first few lines where I set IP packet attributes.
>> >
>> > Here is the complete error message: (It seems there's a problem in
>> > ipv4_packet.csum = ipv4_packet.checksum(), even I delete this line, same
>> > errors)
>> >
>> > Traceback (most recent call last):
>> >   File "./nox/lib/util.py", line 114, in f
>> >     event.total_len, buffer_id, packet)
>> >   File "./nox/coreapps/examples/sendIPV4.py", line 89, in
>> packet_in_callback
>> >     self.learn_and_forward(dpid, inport, packet, packet.arr, bufid)
>> >   File "./nox/coreapps/examples/sendIPV4.py", line 53, in
>> learn_and_forward
>> >     ipv4_packet.csum = ipv4_packet.checksum()
>> >   File "./nox/lib/packet/ipv4.py", line 162, in checksum
>> >     self.dstip)
>> > error: 'H' format requires 0 <= number <= 65535
>> > Thanks
>> >
>> > Weiyang
>> > 2012/4/25 Aaron Rosen <[email protected]>
>> >>
>> >> I believe if you do ipstr_to_int("10.0.0.3") it should work.
>> >>
>> >> Aaron
>> >>
>> >>
>> >> On Wed, Apr 25, 2012 at 6:37 PM, Weiyang Mo <[email protected]>
>> >> wrote:
>> >> > Hi,
>> >> >
>> >> > I tested the code and view the packets in Wireshark.  For ETH
>> packets,
>> >> > it
>> >> > works. For IPV4, some errors when I complie it.
>> >> >
>> >> > (1) I tried ETH packets and the host can receive the packets.
>> >> >         eth_packet= ethernet()
>> >> >         eth_packet.set_payload(str("hello"))
>> >> >         eth_packet.dst = packet.dst
>> >> >         eth_packet.src = packet.src
>> >> >         eth_packet.type = ethenet.IP_TYPE
>> >> >
>> >> >         self.send_openflow_packet(dpid,eth_packet.tostring(),inport)
>> >> >
>> >> > (2) I tried IPV4 and this time an error "  "H" format requires
>> >> > <=number<=65535 " , here's the following code
>> >> >
>> >> >         ipv4_packet = ipv4()
>> >> >         payload = str("hello")
>> >> >         ipv4_packet.iplen = ipv4.MIN_LEN + len(payload)
>> >> >         ipv4_packet.set_payload(payload)
>> >> >         ipv4_packet.dstip = str("10.0.0.3")
>> >> >         ipv4_packet.srcip = str("192.168.56.102")
>> >> >
>> >> >         eth_packet= ethernet()
>> >> >         eth_packet.set_payload(ipv4_packet)
>> >> >         packet.dst = packet.dst
>> >> >        eth_packet.src = packet.src
>> >> >         eth_packet.type = ethenet.IP_TYPE
>> >> >         ipv4_packet.csum = ipv4_packet.checksum()
>> >> >
>> >> >         self.send_openflow_packet(dpid,ipv4_packet.tostring(),inport)
>> >> >
>> >> > I guess why it is failed maybe due to such line ipv4_packet.dstip
>> >> > = str("10.0.0.3") is not acceptable. Or other reasons?
>> >> >
>> >> > Thanks very much.
>> >> >
>> >> > Weiyang
>> >> >
>> >> >
>> >> >
>> >> >
>> >> > 2012/4/25 Aaron Rosen <[email protected]>
>> >> >>
>> >> >> Hi Weiyang,
>> >> >>
>> >> >> You can inject packets from the controller into the switch like
>> this.
>> >> >> Here is some code that I've used to send UDP packets from the
>> >> >> controller to hosts.
>> >> >>
>> >> >> Aaron
>> >> >>
>> >> >> def send_udp(mac, dstip, srcip, port, payload):
>> >> >>    l4 = udp()
>> >> >>    l4.srcport = port
>> >> >>    l4.dstport = AGENT_MESSAGE_PORT
>> >> >>    l4.len = udp.MIN_LEN + len(payload)
>> >> >>    l4.set_payload(payload)
>> >> >>    l4.arr = l4.tostring()
>> >> >>    l3 = ipv4()
>> >> >>    l3.iplen = ipv4.MIN_LEN + l4.len
>> >> >>    l3.protocol = ipv4.UDP_PROTOCOL
>> >> >>    l3.dstip = dstip
>> >> >>    l3.srcip = srcip
>> >> >>    l3.set_payload(l4)
>> >> >>    l2 = ethernet()
>> >> >>    l2.set_payload(l3)
>> >> >>    l2.dst = mac
>> >> >>    l2.src = octstr_to_array(CONTROLLER_MAC)
>> >> >>    l2.type = ethernet.IP_TYPE
>> >> >>    l4.csum = l4.checksum()
>> >> >>    return l2
>> >> >>
>> >> >>
>> >> >> inform_dest = send_udp(mac, dstip, srcip, port, payload)
>> >> >> inst.send_openflow_packet(HA, inform_dest.tostring(),
>> >> >> inst.Agent[HA]['inport'], openflow.OFPP_NONE)
>> >> >>
>> >> >>
>> >> >> On Wed, Apr 25, 2012 at 3:02 PM, Weiyang Mo <
>> [email protected]>
>> >> >> wrote:
>> >> >> > Thanks very much for your quick reply.
>> >> >> >
>> >> >> > But I am still confused. do you mean that "the controller
>> instruct a
>> >> >> > switch
>> >> >> > to send a packet" is not an OpenFlow feature? Or I misunderstand
>> what
>> >> >> > you
>> >> >> > mean.
>> >> >> >
>> >> >> > I am sending packets from a client to a server through multiple
>> >> >> > OpenFlow
>> >> >> > switches. I already have this functionality that the controller
>> >> >> > inserts
>> >> >> > flow-entries and then the packets can be sent to the server.
>> >> >> >
>> >> >> > Now, I want to have another action that  " when the controller
>> >> >> > receives
>> >> >> > the
>> >> >> > first packet-in message, it can instruct a switch to send a packet
>> >> >> > which
>> >> >> > contains some data(e.g, hello). And this new packet can be sent to
>> >> >> > another
>> >> >> > host. If so, the host can run other applications automatically
>> upon
>> >> >> > receving
>> >> >> > the packet "hello".
>> >> >> >
>> >> >> > Is it possible?( Packet in->controller       controller->
>> instrucrt
>> >> >> > the
>> >> >> > switch to create a new packet     new packet(Hello) ->host). How
>> >> >> > should
>> >> >> > I
>> >> >> > write the pseudo code.
>> >> >> >
>> >> >> > Thanks
>> >> >> >
>> >> >> > Weiyang
>> >> >> >
>> >> >> > 2012/4/25 Murphy McCauley <[email protected]>
>> >> >> >>
>> >> >> >> There are no examples of this because this is not an OpenFlow
>> >> >> >> feature
>> >> >> >> --
>> >> >> >> only the controller can instruct a switch to send a packet.
>> >> >> >>
>> >> >> >> Unless maybe there is some vendor extension for some switches…
>> >> >> >>
>> >> >> >> -- Murphy
>> >> >> >>
>> >> >> >> On Apr 25, 2012, at 11:28 AM, Weiyang Mo wrote:
>> >> >> >>
>> >> >> >> BTW,any example code for this? For instance, the controller
>> wishes
>> >> >> >> to
>> >> >> >> send
>> >> >> >> a packet which contains the data "Hello" through the switch to
>> the
>> >> >> >> Output.
>> >> >> >>
>> >> >> >> How should I write the code? Is it like
>> >> >> >> "actions=[openflow.ofp_packet_out,
>> >> >> >> ...]" ?
>> >> >> >>
>> >> >> >> I am not clear because I don't find sample codes.  Could anyone
>> >> >> >> provides a
>> >> >> >> simple sample code?
>> >> >> >>
>> >> >> >> Regards
>> >> >> >>
>> >> >> >> Weiyang
>> >> >> >> ---------- Forwarded message ----------
>> >> >> >> From: Weiyang Mo <[email protected]>
>> >> >> >> Date: 2012/4/25
>> >> >> >> Subject: instruct the swtich to create a new packet.
>> >> >> >> To: [email protected]
>> >> >> >>
>> >> >> >>
>> >> >> >> Hi,all,
>> >> >> >>
>> >> >> >> I want to insert an action in to flow entry. The action can tell
>> the
>> >> >> >> switch to create a new arbitary packet. What command should I
>> use?
>> >> >> >>
>> >> >> >> Thanks a lot
>> >> >> >>
>> >> >> >> Weiyang
>> >> >> >>
>> >> >> >>
>> >> >> >
>> >> >>
>> >> >>
>> >> >>
>> >> >> --
>> >> >> 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
>>
>
>
>

Reply via email to