[ovs-dev] MPLS important comments (was: Re: Patch for MPLS)
R.Kerur at telekom.com
R.Kerur at telekom.com
Fri Mar 23 10:31:34 PDT 2012
From: Ben Pfaff [mailto:blp at nicira.com]
Sent: Friday, March 23, 2012 9:44 AM
To: Kerur, Ravi
Cc: dev at openvswitch.org; bdavie at nicira.com
Subject: Re: MPLS important comments (was: Re: [ovs-dev] Patch for MPLS)
On Thu, Mar 22, 2012 at 11:03:10AM -0700, Ben Pfaff wrote:
> On Tue, Mar 13, 2012 at 08:13:11PM +0100, Ravi.Kerur at telekom.com wrote:
> > > It appears that push_mpls() refuses to add an MPLS header if there is
> > > a VLAN tag and the inner Ethertype is not IPv4. Why?
> > >
> > > <rk> I didn't think any other L3 protocol would fit into the
> > > use-case. For IPV6, it has its own label and I am not sure there
> > > would be a case for <VLAN/IPV6> packet to push a new MPLS
> > > label. Make sense? Or are you referring to other L3 protocol aka
> > > IPX...?
> > Do you mean that there is a different Ethertype for IPv6-in-MPLS? Or
> > do you mean something different?
> > <rk> I meant to say I don't know of any use case where MPLS shim
> > header would be pushed on an IPv6 packet since IPv6 has its own flow
> > label. Ethtype is the same for all layer-3 protocols. I will add
> > IPv6 support with the assumption that there might be a use case
> > which requires MPLS shim header for IPv6 packets. Please let me know
> > if I have misunderstood your question.
> I'm not sure. I'm going to separately take this up with Bruce
> Davie. I bet that he can help me figure it out. Thanks.
I spoke to Bruce (added on CC so he can correct me if I say anything
wrong). He explained it to me this way: MPLS headers do not say what
protocol is encapsulated, so the sender and receiver must agree on
what it is. They can agree that the encapsulated protocol is IPv4 or
IPv6 or something else. We could not figure out why the presence of a
VLAN header would rule out encapsulating IPv6 in MPLS. Can you
<rk> Typically in a SP mpls network you have customer-edge, provider-edge and provider nodes. IPv4 addresses is converted to vpnv4 address and routing is handled via mp-bgp protocol.
Coming back to IPv6 question it was more to do with ipv6 only tunnels than vlan/ipv6. Since you asked the question why if vlan header is present, non-ipv4 packets are not handled? I replied I haven't seen a use case where in the network you have vlan/ipv6 packets and it requires to push a mpls label. Infact, if you look at push_mpls case(first patch) it doesn't handle ipv6 at all. Since ipv6 has its own flow label, pure ipv6 tunnels can be setup without requiring a mpls shim header. If ipv6 packets are tunneled via ipv4 and later traverse mpls tunnels in a service provider network then it's handled by pushing new mpls header. If ipv6 traffic has to traverse mpls tunnels (i.e pure ipv6 islands go through a service provider mpls network), I mentioned that I haven't see such a use-case. With the assumption it's a possibility, I handled pushing mpls shim header onto ipv6 packet as well.
More information about the dev