Skip to content
  • Eli Cohen's avatar
    f828ca6a
    net/mlx5e: Add support for hw encapsulation of MPLS over UDP · f828ca6a
    Eli Cohen authored
    
    
    MPLS over UDP is supported by adding a rule on a representor net device
    which does tunnel_key set, push mpls and forward to a baredup device. At
    the hardware level we use a packet_reformat_context object to do the
    encapsulation of the packet.
    
    The resulting packet looks as follows (left side transmitted first):
    outer L2 | outer IP | UDP | MPLS | inner L3 and data |
    
    Example usage:
      tc filter add dev $rep0 protocol ip prio 1 root flower skip_sw  \
         action tunnel_key set src_ip 8.8.8.21 dst_ip 8.8.8.24 id 555 \
         dst_port 6635 tos 4 ttl 6 csum action mpls push protocol 0x8847 \
         label 555 tc 3 action mirred egress redirect dev bareudp0
    
    This is how the filter is shown with tc filter show:
    tc filter show dev enp59s0f0_0 ingress
    filter protocol ip pref 1 flower chain 0
    filter protocol ip pref 1 flower chain 0 handle 0x1
      eth_type ipv4
      skip_sw
      in_hw in_hw_count 1
            action order 1: tunnel_key  set
            src_ip 8.8.8.21
            dst_ip 8.8.8.24
            key_id 555
            dst_port 6635
            csum
            tos 0x4
            ttl 6 pipe
             index 1 ref 1 bind 1
    
            action order 2: mpls  push protocol mpls_uc label 555 tc 3 ttl 255 pipe
             index 1 ref 1 bind 1
    
            action order 3: mirred (Egress Redirect to device bareudp0) stolen
            index 1 ref 1 bind 1
    
    Signed-off-by: default avatarEli Cohen <eli@mellanox.com>
    Reviewed-by: default avatarRoi Dayan <roid@mellanox.com>
    Reviewed-by: default avatarEli Britstein <elibr@mellanox.com>
    Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
    f828ca6a
    net/mlx5e: Add support for hw encapsulation of MPLS over UDP
    Eli Cohen authored
    
    
    MPLS over UDP is supported by adding a rule on a representor net device
    which does tunnel_key set, push mpls and forward to a baredup device. At
    the hardware level we use a packet_reformat_context object to do the
    encapsulation of the packet.
    
    The resulting packet looks as follows (left side transmitted first):
    outer L2 | outer IP | UDP | MPLS | inner L3 and data |
    
    Example usage:
      tc filter add dev $rep0 protocol ip prio 1 root flower skip_sw  \
         action tunnel_key set src_ip 8.8.8.21 dst_ip 8.8.8.24 id 555 \
         dst_port 6635 tos 4 ttl 6 csum action mpls push protocol 0x8847 \
         label 555 tc 3 action mirred egress redirect dev bareudp0
    
    This is how the filter is shown with tc filter show:
    tc filter show dev enp59s0f0_0 ingress
    filter protocol ip pref 1 flower chain 0
    filter protocol ip pref 1 flower chain 0 handle 0x1
      eth_type ipv4
      skip_sw
      in_hw in_hw_count 1
            action order 1: tunnel_key  set
            src_ip 8.8.8.21
            dst_ip 8.8.8.24
            key_id 555
            dst_port 6635
            csum
            tos 0x4
            ttl 6 pipe
             index 1 ref 1 bind 1
    
            action order 2: mpls  push protocol mpls_uc label 555 tc 3 ttl 255 pipe
             index 1 ref 1 bind 1
    
            action order 3: mirred (Egress Redirect to device bareudp0) stolen
            index 1 ref 1 bind 1
    
    Signed-off-by: default avatarEli Cohen <eli@mellanox.com>
    Reviewed-by: default avatarRoi Dayan <roid@mellanox.com>
    Reviewed-by: default avatarEli Britstein <elibr@mellanox.com>
    Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
Loading