On 16-08-15 04:36 AM, Amir Vadai wrote: > On Mon, Aug 15, 2016 at 06:41:14AM -0400, Jamal Hadi Salim wrote: >> On 16-08-15 06:24 AM, Shmulik Ladkani wrote: >>> On Mon, 15 Aug 2016 06:08:10 -0400, j...@mojatatu.com wrote: >> >>>> Assuming $VXLAN is actually not a linux netdev of type vxlan? >>>> then the action does vxlan encap redirect sends it to the $VXLAN >>>> dev with encapsulation in place. >>> >>> I assume Amir refers to vxlan netdev in VXLAN_F_COLLECT_METADATA mode, >>> using the tun_info metadata found in skb_metadata_dst. >>> The action is supposed to assign the tun metadata. >>> >> >> I see - so you let the vxlan netdev do the encap? >> Would it still scale to a _very large_ number of tunnels? >> How many netdevs are you going to use? I am assuming you will hit >> a nasty lock somewhere(qdisc?) if you use only one. > Having a netdev per tunnel is problematic in its memory use [1]. > User can take each of the approaches. Can have a shared netdev, but will > have some contention on the qdisc lock, or create a vxlan dev per VNI > and increase memory use. > When offloading will be added, shared netdev will enjoy all worlds - low > memory use and no lock contention. >
vxlan devices are lockless if your worried about many netdevs using shared netdev with metadata is a good approach. static void vxlan_setup(struct net_device *dev) { struct vxlan_dev *vxlan = netdev_priv(dev); unsigned int h; eth_hw_addr_random(dev); ether_setup(dev); dev->destructor = free_netdev; SET_NETDEV_DEVTYPE(dev, &vxlan_type); dev->features |= NETIF_F_LLTX; <--- ;) here dev->features |= NETIF_F_SG | NETIF_F_HW_CSUM; dev->features |= NETIF_F_RXCSUM; dev->features |= NETIF_F_GSO_SOFTWARE; > > [1] - > http://www.netdevconf.org/1.1/proceedings/slides/ahern-aleksandrov-prabhu-scaling-network-cumulus.pdf > >> >> cheers, >> jamal