There was a discussion at the Cisco Learning Network (CLN) about OSPF as PE to CE
protocol. I wanted to provide some pointers on using OSPF as PE to CE protocol.
RFC 4577 describes how to use OSPF as PE to CE protocol. When using BGP to carry the
OSPF routes the MPLS backbone is seen as a super backbone. This adds another level of
hierarchy making OSPF three levels compared to the usual two when using plain OSPF.
Because the the MPLS backbone is seen as a super area 0, that means that OSPF routes
going across the MPLS backbone can never be better than type 3 summary LSA. Even if
the same area is used on both sides of the backbone and the input is a type 1 or type 2
LSA it will be advertised as a summary LSA on the other side.
The only way to keep the type 1 or type 2 LSAs as they are is to use a sham link.
Sham links sets up a control plane mechanism acting as a tunnel for the LSAs passing
over the MPLS backbone. Sham links are outside the scope of this article.
A LSA can never be “better” than it originally was input as. This means that if the input
to the PE isa type 3 LSA this can never be converted to a type 1 or type 2 LSA on the other
side. If the LSA was type 5 external to begin it will be sent as type 5 on the other side
as well.
To understand how the LSAs are sent over the backbone, look at this picture.
OSPF LSA is sent to PE which is running OSPF in a VRF with the CPE. The PE installs
the LSA as a route in the OSPF RIB. If the route is the best one known to the router
it can install it to the global RIB.
The PE redistributes from OSPF into BGP. Only routes that are installed as OSPF in
the RIB will be redistributed. To be able to carry OSPF specific information the PE
has to add extended communities. To make the IPv4 route a VPNv4 route the PE has
to add the RD and RT values. The OSPF specific communities consist of:
Domain-ID
The domain ID can either be hard coded or derived from the OSPF process running.
It is used to identify if LSAs are sent into the same domain as they originated
from. If the domain ID matches then type 3 summary LSAs can be sent for routes
that were internal or inter area. If the domain ID does not match then all routes
must be sent as external.
Domain ID match
Domain ID non match
OSPF Route Type
The route type consists of area number, route type and options.
If we look at a MPBGP update we can see the route type encoded.
R4#sh bgp vpnv4 uni rd 1:1 1.1.1.1/32 BGP routing table entry for 1:1:1.1.1.1/32, version 5 Paths: (1 available, best #1, table cust) Flag: 0x820 Not advertised to any peer Local 2.2.2.2 (metric 21) from 2.2.2.2 (2.2.2.2) Origin incomplete, metric 11, localpref 100, valid, internal, best Extended Community: RT:1:1 OSPF DOMAIN ID:0x0005:0x000000020200 OSPF RT:0.0.0.0:2:0 OSPF ROUTER ID:22.22.22.22:0 mpls labels in/out nolabel/18
Something that is a bit peculiar is that this update has a route type of 2 even though
it originated from a type 1 LSA. In the end it doesn’t make a difference because it will
be advertised as type 3 LSA to the CPE.
OSPF Router ID
The router ID of the router that originated the LSA (PE) is also carried as an extended
community.
R4#sh bgp vpnv4 uni rd 1:1 1.1.1.1/32 BGP routing table entry for 1:1:1.1.1.1/32, version 5 Paths: (1 available, best #1, table cust) Flag: 0x820 Not advertised to any peer Local 2.2.2.2 (metric 21) from 2.2.2.2 (2.2.2.2) Origin incomplete, metric 11, localpref 100, valid, internal, best Extended Community: RT:1:1 OSPF DOMAIN ID:0x0005:0x000000020200 OSPF RT:0.0.0.0:2:0 OSPF ROUTER ID:22.22.22.22:0 mpls labels in/out nolabel/18
MED
The MED is set to the OSPF metric + 1 as defined by the RFC.
R4#sh bgp vpnv4 uni rd 1:1 1.1.1.1/32 BGP routing table entry for 1:1:1.1.1.1/32, version 5 Paths: (1 available, best #1, table cust) Flag: 0x820 Not advertised to any peer Local 2.2.2.2 (metric 21) from 2.2.2.2 (2.2.2.2) Origin incomplete, metric 11, localpref 100, valid, internal, best Extended Community: RT:1:1 OSPF DOMAIN ID:0x0005:0x000000020200 OSPF RT:0.0.0.0:2:0 OSPF ROUTER ID:22.22.22.22:0 mpls labels in/out nolabel/18
The goal of these extended communities is to extend BGP so that OSPF LSAs can be
carried transparently as if BGP hadn’t been involved at all. LSAs are translated
to BGP updates and then translated back to LSAs.
If we look at a packet capture we can see the extended communities attached.
This BGP Update originated from a type 5 external LSA with metric-type 1.
When using OSPF as the PE to CE protocol it is important to remember the design
rules of OSPF. Because of that you should avoid designs like this:
In this design area 1 is used on both sides but the CPE is then connected to area 0
which makes it an ABR. The rules of OSPF dictate that summary LSAs must only be
received over area 0 if it is an ABR. This means this topology is broken and would
require changing area or using a virtual link.
OSPF as PE to CE protocol has some complexity but must of it is still plain OSPF
which is in itself a complicated protocol. Combine that with BGP and MPLS and
it is easy to get confused which protocol is responsible for what. That is also
one of the reasons that I recommend to use eBGP or static when customers connect
to their ISP.
Thanks Daniel, very well explained.
Regards,
Nate
Another point as well as the complexity of the protocol is ospf does not scale as the PE CE due to the limited amount of processes you can run
It’s one of that piece which plays not only important role in CCIE but also CCDE which is a design exam and knowing that most provider in real world don’t offer OSPF as PE-CE protocol makes things even ODD.
Just like RIP which should be only used on Papers. Nothing more 🙂
HTH…
Deepak Arora
Evil CCIE
http://deepakarora1984.blogspot.com
Great article man, but the only pointer “I have for OSPF as PE-CE protocol” is don’t use it. Far too man “gotchas” to really make it feasible. But thanks for taking the time to write about it, you’ve been putting up some great articles.
Thanks, that’s great to hear coming from you.
I agree, the only choices should be BGP or static. Customer can run whatever they want downstream but there needs to be a layer of BGP in between customer and SP.