On Tue, Nov 13, 2012 at 2:19 PM, Kyle Mestery <[email protected]> wrote:
> Add support for VXLAN tunnels to Open vSwitch. Add support
> for setting the destination UDP port on a per-port basis.
> This is done by adding a "dst_port" parameter to the port
> configuration. This is only applicable currently to VXLAN
> tunnels.
>
> Specifically, I'd like some comments on the hashing for the source
> port selection. Currently it's using the flow-hash to generate a
> source port. I think what we could replace it with is this:
>
> return (__force __be16)skb_get_rxhash(skb) | htons(32768);
I haven't looked at the whole thing yet but as far as this specific point,
here's the way that it is done upstream:
/* Compute source port for outgoing packet
* first choice to use L4 flow hash since it will spread
* better and maybe available from hardware
* secondary choice is to use jhash on the Ethernet header
*/
static u16 vxlan_src_port(const struct vxlan_dev *vxlan, struct sk_buff
*skb)
{
unsigned int range = (vxlan->port_max - vxlan->port_min) + 1;
u32 hash;
hash = skb_get_rxhash(skb);
if (!hash)
hash = jhash(skb->data, 2 * ETH_ALEN,
(__force u32) skb->protocol);
return (((u64) hash * range) >> 32) + vxlan->port_min;
}
where port_min and max are determined using inet_get_local_port_range().
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev