BGP Route Aggregation: Summary-Only Mode

Introduction

In my previous post on BGP Route Aggregation, I demonstrated how the aggregate-address command creates a summary route while continuing to advertise the more-specific component routes alongside it. I also showed how to use prefix lists to selectively control which neighbors see the aggregate versus the specifics.

But there’s a simpler, more direct approach when you want only the summary route advertised to everyone: the summary-only keyword.

This post focuses specifically on this option, what it does under the hood, and how it compares to IGP summarization behavior.

Default BGP Aggregation vs IGP Summarization

This is a key concept worth understanding before diving into the lab.

In IGP protocols like OSPF and EIGRP, when you configure route summarization at a boundary (area border router or distribution point), the summarization is exclusive by default: only the summary route is advertised outward, and the more-specific routes are suppressed. This is the behavior most engineers intuitively expect from summarization.

BGP behaves differently by default. When you configure aggregate-address, BGP:

  1. Creates and advertises the aggregate route
  2. Continues advertising all the more-specific component routes as well

This means both the summary AND the specifics are advertised to all neighbors simultaneously, which is not always desirable and can actually increase routing table size at the receiving end.

The summary-only keyword restores the IGP-like behavior: only the aggregate is advertised, and all component routes are suppressed.

Lab Topology

Same multi-AS topology used throughout this BGP series:

  • AS 100: R-1
  • AS 200: R-2, R-3, R-4 (iBGP full mesh)
  • AS 500: R-5 (eBGP peer with R-3)
  • AS 600: R-6 (eBGP peer with R-4)
Topology

In this scenario, R-3 in AS 200 has four loopback interfaces simulating networks in the 103.1.20.0/22 range:

R-3#sh ip int brief
Loopback101  103.1.20.1  255.255.255.0
Loopback102  103.1.21.1  255.255.255.0
Loopback103  103.1.22.1  255.255.255.0
Loopback104  103.1.23.1  255.255.255.0

These four contiguous /24 networks aggregate cleanly into a single /22:

103.1.20.0/24  ┐
103.1.21.0/24  ├──► 103.1.20.0/22
103.1.22.0/24  │
103.1.23.0/24  ┘

Configuration

Step 1: Advertise the Component Networks

First, advertise the four specific /24 networks into BGP using network statements:

R-3(config)#router bgp 200
R-3(config-router)#network 103.1.20.0 mask 255.255.255.0
R-3(config-router)#network 103.1.21.0 mask 255.255.255.0
R-3(config-router)#network 103.1.22.0 mask 255.255.255.0
R-3(config-router)#network 103.1.23.0 mask 255.255.255.0

Step 2: Configure Aggregation with summary-only

Add the aggregate address with the summary-only keyword:

R-3(config-router)#aggregate-address 103.1.20.0 255.255.252.0 summary-only

That single line does all the work:

  • Creates the 103.1.20.0/22 aggregate in the BGP table
  • Suppresses advertisement of all four /24 component routes
  • Advertises only the /22 summary to all neighbors (both iBGP and eBGP)

Understanding the Output: The “s” Flag

After applying the configuration, check R-3’s BGP table:

R-3#sh ip bgp | i 103.1.
 s>   103.1.20.0/24    0.0.0.0                  0         32768 i
 *>   103.1.20.0/22    0.0.0.0                            32768 i
 s>   103.1.21.0/24    0.0.0.0                  0         32768 i
 s>   103.1.22.0/24    0.0.0.0                  0         32768 i
 s>   103.1.23.0/24    0.0.0.0                  0         32768 i

The s flag in the status column is the key here. Looking at the BGP status codes:

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal
  • s> on the /24 routes = suppressed and best path. The routes exist locally in the BGP table (R-3 still knows about them for its own forwarding), but they are not advertised to any neighbor.
  • *> on the /22 = valid and best. This is the only route being advertised outward.

This is an important distinction: summary-only does not delete the component routes from R-3’s own BGP table. They remain locally for R-3’s use, but are withheld from all BGP advertisements.

Verification on Neighbors

eBGP Neighbor (R-5 in AS 500)

R-5#sh ip bgp | i 103.1.
 *>   103.1.20.0/22    192.1.35.3               0             0 200 i

R-5 receives only the /22 aggregate. None of the four /24 specifics appear. The AS-Path shows 200, confirming it arrived via eBGP from AS 200.

iBGP Neighbor (R-2 in AS 200)

R-2#sh ip bgp | i 103.1.
 *>i  103.1.20.0/22    10.3.3.3                 0    100      0 i

R-2 also receives only the /22 aggregate via iBGP (note the i flag indicating iBGP, with next-hop 10.3.3.3 which is R-3’s loopback). No /24 routes are present.

This is a critical point: summary-only suppresses the component routes to ALL neighbors equally – both iBGP and eBGP peers. There is no distinction made between neighbor types.

If you need different behavior for iBGP versus eBGP (e.g., send specifics internally but only the aggregate externally), you need the prefix-list approach covered in the previous post.

summary-only vs Default Aggregation: A Visual Comparison

Default aggregate-address (no summary-only)

R-3 BGP Table:                  Advertised to neighbors:
  *> 103.1.20.0/22               *> 103.1.20.0/22
  *> 103.1.20.0/24               *> 103.1.20.0/24
  *> 103.1.21.0/24               *> 103.1.21.0/24
  *> 103.1.22.0/24               *> 103.1.22.0/24
  *> 103.1.23.0/24               *> 103.1.23.0/24
                                 ← 5 routes advertised

aggregate-address ... summary-only

R-3 BGP Table:                  Advertised to neighbors:
  *> 103.1.20.0/22               *> 103.1.20.0/22
  s> 103.1.20.0/24
  s> 103.1.21.0/24               ← 1 route advertised
  s> 103.1.22.0/24
  s> 103.1.23.0/24

The reduction is clear: from 5 routes down to 1 for every neighbor.

my DevOps Odyssey

“Σα βγεις στον πηγαιμό για την Ιθάκη, να εύχεσαι να ‘ναι μακρύς ο δρόμος, γεμάτος περιπέτειες, γεμάτος γνώσεις.” - Kavafis’ Ithaka.