ipvlan: Initial check-in of the IPVLAN driver.
authorMahesh Bandewar <maheshb@google.com>
Mon, 24 Nov 2014 07:07:46 +0000 (23:07 -0800)
committerDavid S. Miller <davem@davemloft.net>
Mon, 24 Nov 2014 20:29:18 +0000 (15:29 -0500)
commit2ad7bf3638411cb547f2823df08166c13ab04269
tree2d31c5a7f0278318d7f6aae805ca4c1296c50afb
parent2bbea0a885079a095c252a927a174a0bfec9e3e9
ipvlan: Initial check-in of the IPVLAN driver.

This driver is very similar to the macvlan driver except that it
uses L3 on the frame to determine the logical interface while
functioning as packet dispatcher. It inherits L2 of the master
device hence the packets on wire will have the same L2 for all
the packets originating from all virtual devices off of the same
master device.

This driver was developed keeping the namespace use-case in
mind. Hence most of the examples given here take that as the
base setup where main-device belongs to the default-ns and
virtual devices are assigned to the additional namespaces.

The device operates in two different modes and the difference
in these two modes in primarily in the TX side.

(a) L2 mode : In this mode, the device behaves as a L2 device.
TX processing upto L2 happens on the stack of the virtual device
associated with (namespace). Packets are switched after that
into the main device (default-ns) and queued for xmit.

RX processing is simple and all multicast, broadcast (if
applicable), and unicast belonging to the address(es) are
delivered to the virtual devices.

(b) L3 mode : In this mode, the device behaves like a L3 device.
TX processing upto L3 happens on the stack of the virtual device
associated with (namespace). Packets are switched to the
main-device (default-ns) for the L2 processing. Hence the routing
table of the default-ns will be used in this mode.

RX processins is somewhat similar to the L2 mode except that in
this mode only Unicast packets are delivered to the virtual device
while main-dev will handle all other packets.

The devices can be added using the "ip" command from the iproute2
package -

ip link add link <master> <virtual> type ipvlan mode [ l2 | l3 ]

Signed-off-by: Mahesh Bandewar <maheshb@google.com>
Cc: Eric Dumazet <edumazet@google.com>
Cc: Maciej Żenczykowski <maze@google.com>
Cc: Laurent Chavey <chavey@google.com>
Cc: Tim Hockin <thockin@google.com>
Cc: Brandon Philips <brandon.philips@coreos.com>
Cc: Pavel Emelianov <xemul@parallels.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Documentation/networking/ipvlan.txt [new file with mode: 0644]
drivers/net/Kconfig
drivers/net/Makefile
drivers/net/ipvlan/Makefile [new file with mode: 0644]
drivers/net/ipvlan/ipvlan.h [new file with mode: 0644]
drivers/net/ipvlan/ipvlan_core.c [new file with mode: 0644]
drivers/net/ipvlan/ipvlan_main.c [new file with mode: 0644]
include/linux/netdevice.h
include/uapi/linux/if_link.h