Message ID | cover.1576896417.git.martin.varghese@nokia.com |
---|---|
Headers | show |
Series | New openvswitch MPLS actions for layer 2 tunnelling | expand |
From: Martin Varghese <martinvarghesenokia@gmail.com> Date: Sat, 21 Dec 2019 08:49:36 +0530 > The existing PUSH MPLS action inserts MPLS header between ethernet header > and the IP header. Though this behaviour is fine for L3 VPN where an IP > packet is encapsulated inside a MPLS tunnel, it does not suffice the L2 > VPN (l2 tunnelling) requirements. In L2 VPN the MPLS header should > encapsulate the ethernet packet. > > The new mpls action ADD_MPLS inserts MPLS header at the start of the > packet or at the start of the l3 header depending on the value of l3 tunnel > flag in the ADD_MPLS arguments. > > POP_MPLS action is extended to support ethertype 0x6558 ... Series applied, thanks.
From: Martin Varghese <martin.varghese@nokia.com> The existing PUSH MPLS action inserts MPLS header between ethernet header and the IP header. Though this behaviour is fine for L3 VPN where an IP packet is encapsulated inside a MPLS tunnel, it does not suffice the L2 VPN (l2 tunnelling) requirements. In L2 VPN the MPLS header should encapsulate the ethernet packet. The new mpls action ADD_MPLS inserts MPLS header at the start of the packet or at the start of the l3 header depending on the value of l3 tunnel flag in the ADD_MPLS arguments. POP_MPLS action is extended to support ethertype 0x6558 OVS userspace changes - --------------------- Encap & Decap ovs actions are extended to support MPLS packet type. The encap & decap adds and removes MPLS header at the start of packet as depicted below. Actions - encap(mpls(ether_type=0x8847)),encap(ethernet) Incoming packet -> | ETH | IP | Payload | 1 Actions - encap(mpls(ether_type=0x8847)) [Kernel action - add_mpls:0x8847] Outgoing packet -> | MPLS | ETH | Payload| 2 Actions - encap(ethernet) [ Kernel action - push_eth ] Outgoing packet -> | ETH | MPLS | ETH | Payload| Decapsulation: Incoming packet -> | ETH | MPLS | ETH | IP | Payload | Actions - decap(),decap(packet_type(ns=0,type=0) 1 Actions - decap() [Kernel action - pop_eth) Outgoing packet -> | MPLS | ETH | IP | Payload| 2 Actions - decap(packet_type(ns=0,type=0) [Kernel action - pop_mpls:0x6558] Outgoing packet -> | ETH | IP | Payload Martin Varghese (3): net: skb_mpls_push() modified to allow MPLS header push at start of packet. net: Rephrased comments section of skb_mpls_pop() openvswitch: New MPLS actions for layer 2 tunnelling include/uapi/linux/openvswitch.h | 31 +++++++++++++++++++++++++++++++ net/core/skbuff.c | 10 +++++++--- net/openvswitch/actions.c | 30 ++++++++++++++++++++++++------ net/openvswitch/flow_netlink.c | 34 ++++++++++++++++++++++++++++++++++ 4 files changed, 96 insertions(+), 9 deletions(-)