[music]
Okay, so for this next section we're going to take a look
at MPLS and a technology called 6PE which basically means that
we're going to be running IPv6 between-- in this example we're
going to use switch 1 and router 1, and then IPv6 between
switch 2 and router 4. And again, we're just going to
do the top site again for this one. I'm not even going
to bring in router 4 here - we don't really need to. But
we're going to be running IPv6 there and in order
to do this we have to fire up some things in the core,
and for some of this I have already done it. So let
me switch over here to a diagram that I can draw on a little
bit easier here, and we're going to be running BGP in the corner,
I already have this part set up. So I have BGP set up from
R1 to R4 and from our R5 to R1. In this case, router
1 is acting like a route reflector for iBGP. This
multiprotocol BGP session is actually running address
families IPv6. That's what we're going to use for this first part
and then when we get into 6VPE in the next lesson,
we're going to be taking advantage of the fact that it's
also running VPNv6 address family. So we're going to
be using one of those to start with just the IPv6.
The whole thing with 6PE is we're going to get IPv6 through
an IPv4 cord, just like we've been doing with these
other technologies, but the big difference between this
and 6VPE is with 6VPE we're actually going to be using
VRFs and we'll be able to separate customer A
from customer B traffic for example. And we may not
go so far as to actually configure customer B,
I don't think we really need to, but we will run IPv6 through a
VRF on the PE routers. Now, for 6PE, that's the piece
we're not doing. We're not going to use VRFs, we're
going to run regular - in fact it's already up and
running from our previous lesson - OSPF between switch 1
and router 1, OSPF between switch 2 and router 4,
I've already turned on MPLS in the core, and I'm going
to show you some of this stuff. Then we're just going
to take a look at how we actually get 6PE across this.
There's honestly one command that's really sort of the magic
here. So if we switched over to the command line,
and we take a look at router 1. Let me show you the BGP stuff
first. So do show run section BGP. I just want to show
you that he has neighborship. I use the peer group here
just to sort of shorten it up a little bit. It doesn't help
a whole ton when you start dealing with address
families. Because as you can see, you still have to activate
each neighbor separately per address family even
with peer groups. Now what it does shorten a little
bit is the whole send community extended under the VPNv4
and VPNv6 address families, as well as
having the router reflector client for the IPv6 end both
VPN address families. So what we're going to be
starting with is the address family IPv6. Like I
said, the VPN address families are for later.
They're just already there, already built, already
established, and the neighborships are up.
If we go to 4 and 5 they're going to look very similar.
Okay, so on these guys we have the address families, the
neighbors, and that's pretty much it just to send communities
because they're not route deflectors. So, the multi
protocol IBGP is already set up, and running and if
I said do show IPv6 route OSPF we should already have--
in this case we have switch 2's routes here already, and
if we were to go to router 1, do show IPv6 route OSPF we
have the routes from switch 1. So for the most part, so far
everything is just basic routing so we have an IPv6 BGP
connection and again notice that with my IPV6 address
family I'm doing IPv4 peers so we talked about this in the
BGP section about running IPv6 routes over
an IPv4 neighbor ship. Okay? The other thing we've already
done is do show MPLS interface and you can
see and we can go to every device in the middle.
I'm not going to show you every single one. We're going to
say there's one do show MPLS interface on router 3
is running on three interfaces. Do show MPLS LEP neighbor.
You can see the neighbor ships are up so two ways you can do
this part. Of course, you can go to the interface
and you can say, mpls ip, or the way I did it if you say,
do show run section ospf. You can actually just turn it on
with the MPLS LDP autoconfig command, which just turns
on MPLS on all interfaces running that instance of OSPF.
And since I'm using that instance of OSPF for the
core, then that's all the interfaces in the core.
So just for a little bit of a set up here, just turned on
MPLS on all the interfaces inside the cloud in our
diagram. So just for the sake of letting you know here,
where we turned it on is basically we're running MPLS
here, and here, and here, here. This is actually
two interfaces on Router 3 on the drawing,
I just have them coming together there and of course on router 4
and router 5. So those are all running MPLS, nothing more
than MPLS IP. Well, I actually did autoconfig
but the same thing, just enabling MPLS and
then our BGP session is set up. That's it,
and of course running OSPF out at the edges for IPv6.
And the cool thing is, with all of that set up, you're actually
95% of the way to 6PE, we're almost there, all we have to
do is switch back over here to the command line and
let's go to router 1 and there's really two things we have to do.
We have to say IPv6 router OSPF1, and we have to say to
redistribute BGP 100. I don't really have to do anything
else. We have to do the same thing on router 4.
There we go. And then, of course, under router BGP 100,
you say address-family ipv6 unicast redistribute ospf 1.
Now you don't have to do this part but I usually do to say,
match internal external NSSA. The default behavior - and this
applies to IPv4 and IPv6 - the default behavior
when you redistribute OSPF into BGP is it only gets OSPF
internal routes Well, you know, if this is our enterprise,
and we have control over all of this, and we're controlling that
they're all internal, then that's fine. But in
the case of maybe this is a service provider,
which I don't think they would be doing 6PE. They would
probably be doing 6VPE. But we'll do the same thing
when we get there. When I do the redistribution, I just
include everything. If it's coming in, I should pass it
through BGP. That's sort of what I'm-- sort of
the way I'm looking at it here. So we hit enter there.
We go over to router 1. We say router BGP 100.
Address family IPv6 unicast. We say redistribute OSPF 1.
Match internal external NSSA. Now if we've done this
correctly, we should be able to say do show BGP IPv6 unicast.
We should have some routes coming from the other side.
And we do. Here they are. There's the seven that we're
getting from our local connection. Now we have
not selected these as best yet, it should go. Give it
a second here. Yeah, it's not going to yet.
That's right. I was trying to show you that this isn't quite
right yet and that I'm expecting him to show up as best.
They're not going to because it's not quite right yet.
Here's the problem is if I ask to see that prefix,
what I don't have for this one available, no best path,
inaccessible. This is the exact same thing that we saw
when we were doing this before. At this point,
there is no knowledge, no tie between BGP and MPLS.
So, oh yes, wonderful, we're running MPLS under all of this.
In fact, if I were to say do trace to 4.4.4.4, it's actually
going to show labels being passed through our environment.
So it's using label 18, which is a little hard to tell here
because I didn't change label space or label range or
anything, so it's actually swapping label 18 for label 18,
that's technically a label swap, but the point is it is label
switching through the core. The problem that we have right
now is he's using that mapped IPv4 address that we
saw in the previous lesson but he's still
saying it's inaccessible just like he did before and
the reason for this is very simple: there's no label.
We're not doing 6PE yet. Right now all we're doing is
literally sending IPv6 routes across an IPv4 BGP connection.
Okay, we've done that before, and we saw before that this said
inaccessible, what makes this 6PE. So if you want to
call this the magic, the super command, the part
that makes it all work, is we have to say,
neighbor 10-- not 10. Sorry. I'm on Router 1. Neighbor 4444 send
label, and that's because it's a peer group. So actually
you just say, neighbor-- I forget what I called it.
Peers, I think, send label. And it's saying the update
source is not loopback0, which I thought it was.
So we'll go ahead and change that as well, up loopback 0
and then hop over to Router 4 neighbor 1.1.1 send label. Okay,
capability changes, neighbor comes back up and now let's
go back and look at that route on Router 1 again.
Notice now, it has an outgoing label of 23. So now
it understands that when you're sending to this route,
you're putting a label on it. So now that he knows he's no
longer actually forwarding to this guy, he's going to
actually put a label on it of 23 as it goes out.
It also means of course that when-- that the-- it's now got
[best?] as 1. So now it's using the route.
Do show IPv6 route from BGP, and you're going to see that we have
two labels, two routes, to get to the other side which means
just like that-- just by saying send label we're doing 6PE.
There's labels for this to go the whole way through.
If I said do show IPv6 seff for one of these prefixes - and I'll
pick on the 88 here - you can see here that he's imposing two
labels. 18, which is the forwarding label, and we
already knew that 18 was the forwarding label from when
we did our trace up here. There it is, label 18. So you
can call that-- let's see, oh goodness, can I think of all
the names I've heard for it? Left label, top label,
forwarding label, LDP label, that's all I'm getting off
the top of my head, but that's all label 18.
Then then VPN label is label 23. So, even though this
is not using VRFs it's not separating the routing
tables on the PE routers. It's still using labels because this
is still a VPN so-- or again, a form of a tunnel because
we're encapsulating our IPv6 in the labels. You can see
right there it's going to put those two labels on.
And you know what? I said I wasn't going to bring
router 6 into this but I think I am. Let's go to router
5 because it'll really only take a minute anyway.
And on router 5 we will do IPv6 router, OSPF 1, redistribute BGP
100, router BGP 100 address family IPv6 unicast neighbor
1.1.1.1 send label and redistribute OSPF 1 match
internal/external NSSA, and if we've done everything right 6
should now have the routes to say 1. So there we go.
The reason I did this is I actually want to show you a
trace from a router. Took it a couple of seconds to
stabilize there, let's do it again just so we get a nice
clean trace, so the main thing I want you to see is as
this passes through it goes to router 5, that's the first
one here of course, router 5 sends it to 3 and it's showing
you those mapped IPv4 addresses, that's fine, but
look what it's showing you for the labels. It gets
a 16 and a 23 then that gets to 23 where it gets a 16
and a 23 again. For those of you familiar with MPLS, if you're
not then this is going to be a little bit beyond the scope
of this course, but for those of you who are familiar with MPLS
already, router 1 is doing PHP or Penultimate
Hop Popping for his directory-connected
loopback which is the next hop, therefore you lose the label 16,
you deliver it to router 1 with just label 23 on it,
and that's how he knows which IPv6 route this goes to and then
he delivers it to the IPv6 destination. So it's pretty
cool it's using label switching through the core.
Now again it's not really exciting in here because of my
labels are 16 and 16, and 18 and 18. You'll see this
a lot if you turn on MPLS after your core routing
protocol is stabilized, because every router has the same routes
in the routing table and MPLS just starts at label 16 and goes
up. So in this case, if I were to say do show ip route,
it's pretty clear-- and I'm on router 6, so I didn't
want that because 6 is barely running IP.
I wanted to look at it on router 5 PE router. Do show ip route.
If you look at this routing table, router 1's loopback is
the first route that it hits. So it gets label 16 and you can
see this. Do show mpls ldp bindings.
This is what's referred to as the LIB or the label
information base and this is all the labels that's
going to be using for next hops. So you can
see it literally. It just starts at one and gives a label of
16, 17, 18, 19. It's really exciting. It just walks the
table. Since everybody pretty much has the same routes,
they're all pretty much going to generate the same labels for the
same destination. So it's a little bit tricky to see
label 16 is swapping with label 16, but label 23
stays end to end, but that is in fact what's happening.
By the way, if we go to say router 1 and see how this all
ends, you can also look at the LFIB which is do show
mpls forwarding table. And you can see he's
got the IPv6 entries, and right there
you can see where he ties that label 23 to the
destination that we trace to. That means that if
we went to the actual loopback, then we should
see label 24. So if we go back to 6, and instead of
tracing to that client network, if we trace to his loopback,
it should be label 24. See. There you go, 24,
24, 24 the whole way through. So as it comes
in on Router 5, Router 5 is imposing or pushing two
labels unto it, 16 and 24. The 16 is to get to the next hop
or Router 1's loopback. 24, is to ultimately tell us
once it gets to Router 1, to actually tell us which route to
follow and out which egress interface and next hop. So
all of this put together all you're really doing is
enabling MPLS in the core, so that's a given, and then the
real trick is two-fold. Well, really it's sort of just
one-fold honestly, two-fold because you're redistributing
two ways but really it's just do show run section router.
The real magic to this whole thing, of course, the really
really big piece, is this one right here,
the send label. If you don't send that label
then he doesn't generate the label, he doesn't send the
label to the other side, and then it's going to
be trying to forward IPv6 packets across IPv4
and that's not going to work. So this is how we do it for an
MPLS-enabled network if we don't want to use VRFs. This
is going to be very very very similar to 6VPE,
the only real difference is we're going to be doing VRFs
rather than, in this case, it's just straight routing table,
straight BGP, no VRFs. So 6VPE is simply bringing VRF to
this equation. So that's what we're going to hit in
our next lesson and I'm going to clean up a
little bit of what we have here before we jump into
that so we'll see 6VPE coming up next.
[music]