How to advertise routes in BGP – 5 Simple Techniques

Welcome to the world of BGP routing. BGP or Border Gateway Protocol is a routing protocol used to exchange routing information between routers in an autonomous system (AS) on the Internet. It plays a crucial role in directing internet traffic to its intended destination. In this guide, we will discuss the different ways of advertising routes in BGP.

As a network professional or someone interested in learning about network technologies, you may be interested in understanding the process of advertising routes in BGP. We will cover different methods of originating routes like:-

  1. Using the “network” statement,
  2. Redistributing from other protocols,
  3. Originating a default route,
  4. Using the “aggregate-address” command
  5. Using BGP conditional route injection

By the end of this guide, you will have a better understanding of how to advertise routes in BGP.

Before we dive in, make sure you have read through my previous BGP posts.

  1. What is BGP in Networking
  2. BGP Message Types
  3. BGP States

1. Network Statement: The Key to Originating Routes in BGP

Originating routes in BGP can be done by using the “network” statement. This statement allows you to specify which networks you want to advertise to your BGP peers. But before we dive into the details of how to use this command, let’s talk about a few important things you need to keep in mind.

Auto-Summary

First, it’s important to understand the role of auto-summary in BGP. Auto-summary is a feature that allows BGP to automatically summarize a group of routes into a single route, which can save a lot of memory and processing power. However, it can also have an impact on how routes are originated.

  • If auto-summary is ENABLED, at least one subnet of the major network is required in the RIB for a route to be originated in BGP. This means that if you want to advertise the network 10.0.0.0/8, you’ll need to have at least one subnet of that network in your routing table.
  • If auto-summary is DISABLED, an exact route match is required in the RIB before the route is originated in BGP. This means that if you want to advertise the network 10.0.0.0/8, you’ll need to have that exact network in your routing table.

Classful Subnet

Another thing to keep in mind is that if no mask option is specified in the “network” statement, a classful subnet will be assumed. This means that if you specify the network 10.0.0.0 without a mask, BGP will assume you want to advertise the entire 10.0.0.0/8 network.

Origin Code

BGP routes originated through the “network” statement have an origin code of ‘i’ for IGP. This means that the route was learned from an Interior Gateway Protocol (IGP) like OSPF or EIGRP.

Route-map

Optionally, you can reference a route-map when using the “network” statement. A route-map allows you to modify the parameters of the route before it’s entered into the BGP table. This can be useful if you want to change the attributes of the route or set up some kind of filtering.

Default Route

It is also possible to originate a default route in BGP by using “network 0.0.0.0 0.0.0.0” with the same requirements as above. This can be useful if you want to advertise a default route to your BGP peers.

Real World Example

Here’s an example of how you might use the “network” statement in a BGP configuration:

router bgp 65000
  network 10.0.0.0 mask 255.0.0.0

In this example, the router is configured with an AS number of 65000 and is advertising the 10.0.0.0/8 network to its BGP peers.

Now that you understand the basics of how to use the “network” statement to originate routes in BGP, you’re well on your way to becoming a BGP routing pro!

As always, it’s important to test your configurations in a lab environment before implementing them in production. And don’t hesitate to reach out if you have any questions or need help along the way.

2. Redistributing Routes: Another Way to Originate in BGP

In addition to using the “network” statement, you can also originate routes in BGP by redistributing routes that were learned using another routing protocol. This can be a powerful way to get routes from other parts of your network into BGP, but it’s important to understand a few key things before you start.

Originating Routes

When you redistribute a route into BGP, you’re essentially telling BGP to take a route that it learned from another protocol and start advertising it to your BGP peers. This can be useful if you want to share routes between different parts of your network that are using different protocols.

Origin Code

One important thing to keep in mind is that routes redistributed into BGP will have an origin code of ‘?’, signifying incomplete. This is because BGP does not know exactly where the route was created. This can be important to remember if you’re troubleshooting BGP issues and trying to figure out where a particular route came from.

Real World Example

Here’s an example of how you might redistribute routes from OSPF into BGP:

router bgp 65000
  redistribute ospf 1

In this example, the router is configured with an AS number of 65000 and is redistributing routes learned from OSPF process 1 into BGP.

It’s also important to note that it is a best practice to use a route-map when redistributing routes to filter unwanted routes.

3. Originating a Default Route: The “default-information originate” command and Neighbor Default Originate.

In addition to using the “network” statement and redistributing routes, another way to originate routes in BGP is by configuring a BGP routing process to advertise a default route (0.0.0.0/0). There are two different ways to accomplish this: using the “default-information originate” command and enabling Neighbor Default Originate.

“default-information originate” command.

If you want to advertise a default route (0.0.0.0/0) in BGP, you need to use the “default-information originate” command and configure a redistribution statement with it; otherwise, the default route will not be advertised.

Real World Example

Here’s an example of how you might configure BGP to advertise a default route:

router bgp 65000
  redistribute connected
  default-information originate

In this example, the router is configured with an AS number of 65000 and is redistributing connected routes and originating a default route.

It is worth noting that this command should be used with caution as it may cause routing loops if not properly configured.

Neighbor Default Originate

BGP can advertise a default route to a neighbor without having one present in the BGP table. This advertisement can be made conditional by using a route-map. The outbound BGP filters (prefix-list, route-maps, or filter-list) do not affect the advertisement of the default route.

Real World Example

Here’s an example of how you might configure BGP to advertise a default route to a specific neighbor:

router bgp 65000
  neighbor 10.0.0.1 default-originate

In this example, the router is configured with an AS number of 65000 and is advertising a default route to the neighbor 10.0.0.1.

4. Summarizing Routes: The Power of BGP Aggregation

In addition to using the “network” statement, redistributing routes, and originating a default route, BGP also allows you to summarize routes in the BGP table using the “aggregate-address” command. This is known as BGP aggregation, and it can be a powerful tool for controlling how routes are advertised in BGP.

When you use the “aggregate-address” command, you’re telling BGP to summarize a group of routes into a single aggregate route. The aggregate will be announced ONLY if at least one of the routes in the specified range is in the BGP table (not the IGP table). This means that if you want to advertise the aggregate, you’ll need to have at least one route in the specified range in your BGP table.

By default, BGP will advertise both the aggregate and the more specific routes. This means that if you have routes for 10.0.0.0/16 and 10.0.1.0/24, and you summarize them into the aggregate 10.0.0.0/8, BGP will advertise both the aggregate and the more specific routes. This behavior can be disabled with the ‘summary-only’ keyword.

Origin Code

BGP routes originated

through the “aggregate-address” command have an origin code of ‘i’ for IGP, similar to routes originated through the “network” statement. This means that the route was learned from an Interior Gateway Protocol (IGP) like OSPF or EIGRP.

Suppressing routes

Optionally, a route-map can be used to suppress only certain routes of the aggregate using the “suppress-map” option. This can be useful if you want to control which routes are included in the aggregate. Additionally, certain suppressed routes can be unsuppressed on a per-neighbor basis using the “unsuppress-map” option.

Real World Example

Here’s an example of how you might use the “aggregate-address” command in a BGP configuration:

router bgp 65000
  aggregate-address 10.0.0.0 255.0.0.0 summary-only
!
router bgp 65000  
aggregate-address 10.0.0.0 255.0.0.0 suppress-map suppress_private

In this example, the router is configured with an AS number of 65000 and is summarizing routes in the BGP table for the 10.0.0.0/8 network into a single aggregate route. The “summary-only” keyword is used to prevent the advertising of more specific routes, and the “suppress-map” option is used to suppress certain routes of the aggregate.

5. Using Conditional Route Injection to Control BGP Routes Advertisement

In addition to using the “network” statement, redistributing routes, originating a default route, and summarizing routes using BGP aggregation, there is one more method for controlling how routes are advertised in BGP: conditional route injection or advertisement. This method allows you to be very specific about which routes are advertised and to which neighbors.

Conditional Route Injection

Conditional route injection is the process of injecting routes into BGP only if certain conditions are met. This is done by creating a prefix-list, route-map, and referencing them in the BGP configuration.

Real World Example

Here’s an example of how you might use conditional route injection in a BGP configuration:

ip prefix-list PL-DEFAULT seq 10 permit 0.0.0.0/0 - Create a Prefix-list and Match the default route
!
route-map RM-DEFAULT permit 10
 match ip address prefix-list PL-DEFAULT - Reference the prefix-list in Route-map.
 !
router bgp 65000
 neighbor 192.168.1.2 remote-as 65001
 neighbor 192.168.1.2 default-orig route-map RM-DEFAULT - Because of the route-map, a default route will only be sent to 192.168.1.2 if a default route exists in the BGP table.

In this example, a prefix-list called PL-DEFAULT is created and is set to match the default route. The route-map RM-DEFAULT is then created and references the prefix-list PL-DEFAULT. The BGP configuration is then updated to include the “default-orig route-map RM-DEFAULT” command, which tells BGP to only send a default route to the neighbor 192.168.1.2 if a default route exists in the BGP table.

Conclusion

And there you have it, folks! We’ve covered all the different ways you can originate routes in BGP – using the “network” statement, redistributing from another protocol, originating a default route, using the “aggregate-address” command, and using conditional route injection.

Each method has its own set of advantages and limitations, so it’s important to understand when to use each one. But the most important thing to remember is that these are all just tools in your toolbox, and the most important thing is to understand how to use them properly.

It’s always a good idea to test your configurations in a lab environment before implementing them in production, and if you ever have any questions or need help along the way, don’t hesitate to reach out to the community or your colleagues.

Being able to control how routes are advertised in BGP is a powerful skill to have as a network engineer, and by understanding these different methods, you now have the power to make your networks run more efficiently and effectively. So go forth and conquer, my friends! Happy routing!

Leave a Reply

Your email address will not be published. Required fields are marked *