Software Defined Networking

SetField actions are not being applied to PacketOut messages

 
Roobre
Occasional Visitor

SetField actions are not being applied to PacketOut messages

Hello,

 

I'm currently running the HP SDN VAN controller v2.5.15.1175 connected to an HP 3800 switch with two VLANs, one for the openflow traffic and another one for the controller. Both VLANs are, however, connected to each other. Both are using Openflow 1.3.

 

The software we're currently developing consist on the following:

  • One flow which captures ARP traffic directed to a non-used IP address (let's say 10.250, for example), and sends it to the controller. There, the controller forges an ARP reply packet with a random MAC Adress and routes it to the input port.
  • One flow which captures IP traffic directed to the same IP address mentioned above, 10.250, and sends it to the controller. There, the controller grabs a MAC-IP pair from a config file (say, 10.11 and aa:bb:cc:dd:ee:ff), both belonging to a machine up & running and connected to the openflow VLAN, and creates another flow which redirects all traffic directed to 10.250 from the src ip of the captured packet to this machine (say, 10.2). Then, it applies this actions to the packet and calls send() on it.
    Also, a flow for the reverse translation is also created (capture packets from 10.11 directed to 10.2 and change the source address to 10.250.
    All these flows have their output action set to Port.FLOOD, as well the output action of the packetOut sent by the controller.

With this setup, I'm basically executing an IP forwarding, changing 10.250 by 10.11.

 

However, this works only for the second and following packets, the first one (which was captured by the controller and then altered) is not changed in anyway (checked it with a machine running wireshark on the same VLAN).

 

I've double and triple checked the documentation, and afaik this SHOULD work, but it does not.

 

I'm pretty clueless here, to be honest. Any help would be greatly appreciated.

 

Here are the key parts of the code I'm running: http://pastebin.com/1cZkGkPc

 

Best regards, Roberto.

3 REPLIES 3
Joetel
Frequent Advisor

Re: SetField actions are not being applied to PacketOut messages

Hi Roberto,

 

If you do a capture on the controller, can you see it send the openflow messages to the switch with the packets (both for the forged ARP reply and the altered first packet)? Could you create a capture file (make sure the full frame is captured: tcpdump -s 1500 -w filename.pcap) and post it? Thanks!

 

Best Regards,

 

Wouter

HP SDN CoE Team

Roobre
Occasional Visitor

Re: SetField actions are not being applied to PacketOut messages

Hello,

 

First of all, thanks for the quick response. I leave the .pcap file here (the forum does not allow me to upload pcap files).

 

Please note that some of the openflow matches might be slighly different from the example I posted above (the actions are the same), as I simplified them in order to make the message shorter. The issue, however, is the same: The same actions are used to set the flows (which work) and applied to the packetOut() message (which doesnt).

 

Best regards, Roberto.

Joetel
Frequent Advisor

Re: SetField actions are not being applied to PacketOut messages

Hi Roberto,

 

Thanks for the capture file! I had a look at it, but I would like to understand your environment better before drawing any conclusions. It's probably easier to do this off-line. I'll send you a PM with my contact details.

 

Best regards,

 

Wouter

HP SDN CoE team