History

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 ]

Mahesh Bandewar committed 11 years ago

Commit 2ad7bf31 parent 2bbea0a9 files · +1678 −0Browse files

Showing the changes to include/uapi/linux (1 of 9 files). Show all

Unified · Split

include/uapi/linux/if_link.h+15−0
@@ -330,6 +330,21 @@ enum macvlan_macaddr_mode { · 329 unmodified lines
330330
331331 #define MACVLAN_FLAG_NOPROMISC 1
332332
333+/* IPVLAN section */
334+enum {
335+ IFLA_IPVLAN_UNSPEC,
336+ IFLA_IPVLAN_MODE,
337+ __IFLA_IPVLAN_MAX
338+};
339+
340+#define IFLA_IPVLAN_MAX (__IFLA_IPVLAN_MAX - 1)
341+
342+enum ipvlan_mode {
343+ IPVLAN_MODE_L2 = 0,
344+ IPVLAN_MODE_L3,
345+ IPVLAN_MODE_MAX
346+};
347+
333348 /* VXLAN section */
334349 enum {
335350 IFLA_VXLAN_UNSPEC,