[ovs-discuss] Forwarding between Multiple interfaces Openflow

Aaron Rosen arosen at clemson.edu
Tue Mar 1 05:38:45 UTC 2011

Thanks Ben for all your explaining.

Is there anyway to prevent this from happening if I want to send the
packet to I tried removing the ip address at dp0 (which
was and then adding a route for this subnetwork out dev
dp0 but packets don't seem to follow this route. An ICMP message of
host unreachable is just sent back.

Thanks again,


---------- Forwarded message ----------
From: Ben Pfaff <blp at nicira.com>
Date: Tue, Mar 1, 2011 at 12:26 AM
Subject: Re: [ovs-discuss] Forwarding between Multiple interfaces Openflow
To: Aaron Rosen <arosen at clemson.edu>
Cc: discuss at openvswitch.org

On Mon, Feb 28, 2011 at 9:10 PM, Aaron Rosen <arosen at clemson.edu> wrote:
> Is there any chance you could explain to me why this works?
> dp1( interface on computer
> dp0( card       <---- attached is a wireless
> client (
> If I send an IPIP packet with ip destination address to
> that comes in on dp1 and then I leave the ip as and send
> the packet out on port OFPP_LOCAL (on dp1). The packet is actually be
> seen on dp0 as a packet_in event (and i can remove the extra L3
> header). Though, if i modify the packet to have the destination
> address of (dp0). The packet is never actually seen at the
> dp0 interface.

OK, a packet with destination to arrives on a wired
Ethernet interface on the same bridge as dp1.  The OpenFlow flow table
directs that packet to be sent on dp1 (presumably the OFPP_LOCAL
port).  So then the kernel processes the packet through its IP stack.
It's not a local IP address, so if the kernel doesn't have forwarding
(routing) enabled, then the packet should get dropped.  You're not
seeing that, so I assume that forwarding is enabled.  The route chosen
to get to would normally be dp0, since it's on the network.  That means that the kernel sends that packet out
dp0 and you see a packet_in event there.

If you change the packet to have destination then it makes
sense that it wouldn't show up on dp0.  The kernel's IP stack will
process it as soon as it shows up on dp1.  This is because the Linux
kernel doesn't assign IP addresses to interfaces, it assigns them to
the whole machine.  It will respond on any interface for any of its IP

"I don't normally do acked-by's.  I think it's my way of avoiding
getting blamed when it all blows up."               Andrew Morton

Aaron O. Rosen
Masters Student - Network Communication
306B Fluor Daniel

More information about the discuss mailing list