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>
-
mentioned in commit eb273bb8
-
mentioned in commit ee98e615
-
mentioned in commit dd18c700
-
mentioned in commit c07b71b6
-
mentioned in commit a86eb074
-
mentioned in commit 85a45e23
-
mentioned in commit 96ce4520
-
mentioned in commit 2ad8246c
-
mentioned in commit 4a2136e5
-
mentioned in commit 3bd77efc
-
mentioned in commit 25efdbe5
-
mentioned in commit bffcdade
-
mentioned in commit e2b46cd5
-
mentioned in commit ab4a7338
-
mentioned in commit 8d06006c
-
mentioned in commit 346e94aa
-
mentioned in commit 90cbed52
-
mentioned in commit 8747ec63
-
mentioned in commit 8a9922e7
-
mentioned in commit c373feaf
-
mentioned in commit af50165c
-
mentioned in commit 4f7f8506
-
mentioned in commit cb53706a
-
mentioned in commit 54213c09
-
mentioned in commit 13c4543d
-
mentioned in commit 0049a623
-
mentioned in commit 1abbf079
-
mentioned in commit 183c4b41
-
mentioned in commit 54768bac