[ovs-dev] [PATCH 1/4] datapath: Kernel support for provider VLANs

Thomas F Herbert thomasfherbert at gmail.com
Thu Jun 12 14:37:14 UTC 2014


On 6/11/2014 10:26 AM, Avinash wrote:
>
> Combining parse_remaining_vlans() with the parse_vlan() might not skip
> the inner VLANs present in the packet when the execution enters the
> condition vlan_tx_tag_present().
>
> For example, if an ARP packet having mulitpl VLANs (say double VLANs)
> is received as shown below
>
> ARP Request
>
> |  ETHER ADDR   |  88A8  |  15  |  8100  |  10  |   806   |
>
> During the formation of flowkey, the execution initially enters the condition
> if (vlan_tx_tag_present)
>        key->eth.tci =  htons(vlan_get_tci(skb));       // 15;
>
> but the remaining VLANs are still present as part of skb->data.
>
>   |  8100  |  10  |   806   |
>
> In this case, the function parse_ethertype() return 0x8100 instead of
> actual ARP type as the remaining VLANs are not skipped.
>
Andrew,

My original patch for 802.1ad didn't work in testing. The flow structure 
needs to have the 802.1ad fields for the C-Vlan tag added to the layer2 
part of the flow structure  added in order for push and pop vlans to 
work as specified in 802.1ad.

Even with the patch, currently pushing a provider vlan over a customer 
vlan does not work, only the tci and vid get replaced. I have been 
working on a new patch to add the fields to the flow structure and hope 
to have it tested and submitted soon.

--Tom






More information about the dev mailing list