You may have noticed up to till point I haven't issued the show
run command once during the series,
and that's been on purpose.
There is a lot more going on under the hood
than you may have been aware of.
And that's because BGP uses address families that
made some of these decisions for you behind the scenes.
When we jump into the virtual lab,
you'll see pretty quickly what those were.
But let's talk about address families for a second.
What are address families after all?
BGP-- when BGP is running--
runs with one process--
one BGP process for the autonomous system.
But under the hood, it actually handles different address WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
But under the hood, it actually handles different address
types.
There's IPv4.
There's IPv6.
There's even something called VPNv4,
which you're going to learn about when
we get into MPLS layer 3 VPNs.
Super cool.
I've watched it.
Some of the best stuff you'll ever see.
Beyond that, there's something called sub address families,
too.
There's IPv4 unicast, and IPv4 multicast.
There's IPv6 unicast and IPv6 multicast.
Now, you'll notice when we were working with BGP,
we haven't really specified any of that. WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
we haven't really specified any of that.
That's because BGP made some assumptions for us.
Let's jump in the virtual lab, and let me show you.
I'm on R2 right now.
And my challenge to you as you fire up the virtual lab
is to rebuild the connection between R1 and R2
as an iBGP relationship, using loopback addresses.
And then build the eBGP relationship between R2 and R4.
At this point, I have a couple neighbor relationships fired WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
At this point, I have a couple neighbor relationships fired
up.
I can see my neighbor with 1.1.1.1 came up,
and my neighbor with R4 came up, as well.
If I give it a show IP BGP, I can
see a couple routes have been advertised and installed.
The 2.2.2.2-- that's R2's loopback--
shows the next hop of this machine right here.
And the R4 loopback--
4.4.4.4-- there we go.
It's advertised right there.
So if I look at the history of commands that I've run here,
I went into router BGP.
I issued a neighbor statement-- a couple neighbor
statements here. WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
statements here.
And I issued one network command.
If I actually do show run, and I'll say section BGP--
I see those commands.
That's not what actually happens on newer versions of iOS.
Newer versions of iOS automatically
move these statements into address family categories.
Here, let me jump into config mode.
And I'll delete out this entire config.
And I'll show you how this now works.
No router BGP 100.
I see all of the neighbor relationships come down. WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
I see all of the neighbor relationships come down.
I'll go into router BGP 100.
And the first thing I'm going to tell this BGP instance is,
don't default everything into IPv4.
You see, by default, all of our network
statements-- all of our neighbor statements--
they're defaulting into the address family of IPv4.
We don't have to explicitly say, use IPv4 for this connection,
use IPv4 for these policies.
So the command that we run is no BGP default IPv4 unicast. WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
So the command that we run is no BGP default IPv4 unicast.
Now I can build my neighbor to R1, specifying 1.1.1.1--
the remote AS of 100.
And I'll specify that I want my source to come from loopback 1.
But interestingly, the neighbor relationship
doesn't come alive now.
If I jump over to R1--
let's give it a show IP BGP neighbors.
And we see that the state is still idle.
We don't have any neighbors sessions yet. WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
We don't have any neighbors sessions yet.
And therefore, we don't know what our neighbors'
capabilities are.
But if you recall way back when, one of the very first times we
ran this command, one of the capabilities
was address family IPv4.
We need to activate this capability for our neighbor
in order for this neighbor relationship to come to life.
So jumping back to R2, we can now
specify which address families we want to work with.
So if I do a question mark, you can see what kind
of address families we have.
We have IPv4, IPv6, and again, VPNv4. WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
We have IPv4, IPv6, and again, VPNv4.
I think that's an interesting one to work with.
Let's take a look at IPv4.
And then question mark one more time.
We have to specify the sub address family of unicast.
You can see the terminal's now moved into address family
configuration mode.
And now I have to explicitly say, for neighbor 1.1.1.1,
activate the IPv4 address family.
And boom.
The neighbor relationship comes to life.
Beyond that, any networks that I want to advertise-- WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
Beyond that, any networks that I want to advertise--
I have to advertise them from the address family command.
So if I want to advertise 2 2 2 2,
I have to advertise it from here.
This address family section is also
where you would perform other actions like redistribution.
So if I wanted to redistribute, say, IPv4 learned routes
from OSPF into my BGP instance, this
is where I would redistribute them into BGP.
So now, similarly, let me exit out of address family mode.
Let me bring up my neighbor relationship, again, with R4. WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
Let me bring up my neighbor relationship, again, with R4.
Recall that I do have to go into the address
family of IPv4 unicast in order to activate this.
Specify activate.
And in just a moment, that neighbor relationship
will come to life.
There it is.
Let me exit out of this address family mode,
and also point out one more thing that
will play a critical factor in your success as a BGP engineer,
is that when you go into IPv4 unicast,
this is specifying the global route table.
Remember this diagram right here? WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
Remember this diagram right here?
Once routes have been received from the local RIB--
either the network statement or from peers--
the next process is a next hop validity check.
Well, why would that run an issue to you?
If I were to issue a network statement in address family
IPv4 unicast, but that network didn't
exist in the global RIB--
it existed in a VRF--
we would have a problem.
It would not exist.
It would fail the RIB check right there. WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
It would fail the RIB check right there.
So if I wanted to say, share routes that I've learned,
or redistribute routes that I've learned from a VRF--
jumping back to the virtual lab--
I would have to specify address family IPv4 unicast.
Then, you can specify the specific VRF here.
I'll just put my VRF.
Now, I don't have a VRF there.
It tells you my VRF doesn't exist.
But that's how you would go and configure addresses and BGP
handling with relation to VRFs.
Beyond that, we can go into address family IPv6, WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
Beyond that, we can go into address family IPv6,
as long as IPv6 is enabled on the router.
Let me fix that real quick.
IPv6 unicast routing.
Now we can go back into router BGP 100.
And for real, we can go into address family IPv6,
and you could activate IPv6 addresses
in IPv6 advertisements from within this address family
here.
The commands-- the behavior-- the BGP process
for IPv6 and IPv4 is identical.
So now, if I end this-- go back to privilege mode.
Do a show run section BGP. WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
Do a show run section BGP.
It looks a little bit different, doesn't it?
Now we've disabled the default IPv4 unicast section.
We specify our neighbor relationships.
Then we move into IPv4, where we activate those neighbor
relationships and specify our IPv4 networks that we're
going to advertise.
Keeping in mind, that this address family
is tied to the global RIB, so when
we advertise network addresses or receive networks
from these peers, that's where we're checking it against. WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
from these peers, that's where we're checking it against.
Also keep in mind that starting with later versions of iOS--
this behavior is the default. So if you jump in here,
specify a neighbor, then a network command,
then run show run-- it will show up with the address family
and activate already populated for you.
So that's been address families in BGP.
I hope has been informative for you.
And I'd like to thank you for viewing.