• Ido Schimmel's avatar
    mlxsw: spectrum_switchdev: Add support for VxLAN encapsulation · 1231e04f
    Ido Schimmel authored
    In the device, VxLAN encapsulation takes place in the FDB table where
    certain {MAC, FID} entries are programmed with an underlay unicast IP.
    MAC addresses that are not programmed in the FDB are flooded to the
    relevant local ports and also to a list of underlay unicast IPs that are
    programmed using the all zeros MAC address in the VxLAN driver.
    
    One difference between the hardware and software data paths is the fact
    that in the software data path there are two FDB lookups prior to the
    encapsulation of the packet. First in the bridge's FDB table using {MAC,
    VID} and another in the VxLAN's FDB table using {MAC, VNI}.
    
    Therefore, when a new VxLAN FDB entry is notified, it is only programmed
    to the device if there is a corresponding entry in the bridge's FDB
    table. Similarly, when a new bridge FDB entry pointing to the VxLAN
    device is notified, it is only programmed to the device if there is a
    corresponding entry in the VxLAN's FDB table.
    
    Note that the above scheme will result in a discrepancy between both
    data paths if only one FDB table is populated in the software data path.
    For example, if only the bridge's FDB is populated with an entry
    pointing to a VxLAN device, then a packet hitting the entry will only be
    flooded by the kernel to remote VTEPs whereas the device will also flood
    the packets to other local ports member in the VLAN.
    Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
    Reviewed-by: default avatarPetr Machata <petrm@mellanox.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    1231e04f
spectrum_switchdev.c 80.8 KB