The configs are pretty simple (R3's config wont be displayed until the end but it can be inferred as we go along)
R1
hostname R1interface Serial0/0
no ip address
encapsulation frame-relay
no frame-relay inverse-arp
interface Serial0/0.12 point-to-point
ip address 10.1.12.1 255.255.255.0
frame-relay interface-dlci 102
router bgp 1
no synchronization
neighbor 10.1.12.2 remote-as 2
no auto-summary
R2
hostname R2interface Serial0/0
no ip address
encapsulation frame-relay
no frame-relay inverse-arp
interface Serial0/0.21 point-to-point
ip address 10.1.12.2 255.255.255.0
frame-relay interface-dlci 201
interface Serial0/0.23 point-to-point
ip address 10.1.23.2 255.255.255.0
frame-relay interface-dlci 203
router bgp 2
no synchronization
neighbor 10.1.12.1 remote-as 1
neighbor 10.1.23.3 remote-as 3
no auto-summary
So let's start off with with R2 sees from R3
R2#sh ip bgp | b Network
Network Next Hop Metric LocPrf Weight Path
*> 172.168.0.0/24 10.1.23.3 0 0 3 ?
*> 172.168.1.0/24 10.1.23.3 0 0 3 ?
*> 172.168.2.0/24 10.1.23.3 0 0 3 ?
*> 172.168.3.0/24 10.1.23.3 0 0 3 ?
*> 172.199.0.0/24 10.1.23.3 0 0 3 ?
*> 172.199.1.0/24 10.1.23.3 0 0 3 ?
*> 172.199.2.0/24 10.1.23.3 0 0 3 ?
*> 172.199.3.0/24 10.1.23.3 0 0 3 ?
So let's aggregate these for R1 so it only sees the summary routes
R2#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R2(config)#router bgp 2
R2(config-router)#aggregate-address 172.199.0.0 255.255.252.0 summary-only
R2(config-router)#aggregate-address 172.168.0.0 255.255.252.0 summary-only
R2(config-router)#end
Let's see what R1 now sees
R1>sh ip bgp | b Network
Network Next Hop Metric LocPrf Weight Path
*> 172.168.0.0/22 10.1.12.2 0 0 2 i
*> 172.199.0.0/22 10.1.12.2 0 0 2 i
Alright, we can see the two aggregate routes, however we see that the AS-PATH shows R2 as the originator. What if we wanted to see that these originated from R3?
Within the aggregate-address command, we can include the AS-SET option, which will show us the Autonomous Systems in the path which contribute to this route
R2#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R2(config)#router bgp 2
R2(config-router)#aggregate-address 172.168.0.0 255.255.252.0 summary-only as-set
R2(config-router)#aggregate-address 172.199.0.0 255.255.252.0 summary-only as-set
R2(config-router)#end
So now let's see what R1 sees:
Network Next Hop Metric LocPrf Weight Path
*> 172.199.0.0/22 10.1.12.2 0 0 2 3 ?
Now this is a little odd, we can see that the route that is present does now indeed include the full AS-Path, however we have lost the route for 172.168.0.0/22 even though we previously had it. Maybe R2 is doing something wrong?
BGP table version is 21, local router ID is 10.1.23.2
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> 172.199.0.0/22 0.0.0.0 100 32768 3 ?
Hello 172.168.0.0/22? Have we lost it?
R2#sh ip bgp | b Network
Network Next Hop Metric LocPrf Weight Path
s> 172.168.0.0/24 10.1.23.3 0 0 3 ?
*> 172.168.0.0/22 0.0.0.0 100 32768 3 ?
s> 172.168.1.0/24 10.1.23.3 0 0 3 ?
s> 172.168.2.0/24 10.1.23.3 0 0 3 ?
s> 172.168.3.0/24 10.1.23.3 0 0 3 ?
s> 172.199.0.0/24 10.1.23.3 0 0 3 ?
*> 172.199.0.0/22 0.0.0.0 100 32768 3 ?
s> 172.199.1.0/24 10.1.23.3 0 0 3 ?
s> 172.199.2.0/24 10.1.23.3 0 0 3 ?
s> 172.199.3.0/24 10.1.23.3 0 0 3 ?
No, something must have happened to stop us sending things it on to R1 though.
R2#show ip bgp 172.168.0.0/22
BGP routing table entry for 172.168.0.0/22, version 20
Paths: (1 available, best #1, table Default-IP-Routing-Table, not advertised to EBGP peer)
Not advertised to any peer
3, (aggregated by 2 10.1.23.2)
0.0.0.0 from 0.0.0.0 (10.1.23.2)
Origin incomplete, localpref 100, weight 32768, valid, aggregated, local, best
Community: no-export
When the AS-SET parameter is used, the communities of the contributing routes are also attached to the aggregate, at least one of these contributing routes must have had the no-export community attached to it.
R2#show ip bgp community no-export
BGP table version is 21, local router ID is 10.1.23.2
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
s> 172.168.0.0/24 10.1.23.3 0 0 3 ?
*> 172.168.0.0/22 0.0.0.0 100 32768 3 ?
s> 172.168.2.0/24 10.1.23.3 0 0 3 ?
So if we would like to ignore R3's instruction of no-export to R1 while maintaining the AS-Path, we have to use our favourite IOS swiss-army knife also known as the route-map which in this form will be used as an attribute map to remove any communities on the aggregate which would normally be inherited from contributing routes:
R2#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R2(config)#route-map NoAttributes
R2(config-route-map)#set community none
R2(config-route-map)#router bgp 2
R2(config-router)#aggregate-address 172.168.0.0 255.255.252.0 summary-only as-set attribute-map NoAttributes
R2(config-router)#end
Enter configuration commands, one per line. End with CNTL/Z.
R2(config)#route-map NoAttributes
R2(config-route-map)#set community none
R2(config-route-map)#router bgp 2
R2(config-router)#aggregate-address 172.168.0.0 255.255.252.0 summary-only as-set attribute-map NoAttributes
R2(config-router)#end
So let's check that this now works
R2#show ip bgp community no-export
BGP table version is 22, local router ID is 10.1.23.2
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
s> 172.168.0.0/24 10.1.23.3 0 0 3 ?
s> 172.168.2.0/24 10.1.23.3 0 0 3 ?
172.168.0.0/22 is no longer in this list, so it appears that this should be resolved:
R2#sh ip bgp nei 10.1.12.1 advertised-routes
BGP table version is 22, local router ID is 10.1.23.2
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> 172.168.0.0/22 0.0.0.0 100 32768 3 ?
*> 172.199.0.0/22 0.0.0.0 100 32768 3 ?
Total number of prefixes 2
R1>sh ip bgp | b Network
Network Next Hop Metric LocPrf Weight Path
*> 172.168.0.0/22 10.1.12.2 0 0 2 3 ?
*> 172.199.0.0/22 10.1.12.2 0 0 2 3 ?
Success!
R3 Config for reference:
hostname R3interface Serial0/0
no ip address
encapsulation frame-relay
no frame-relay inverse-arp
interface Serial0/0.32 point-to-point
ip address 10.1.23.3 255.255.255.0
frame-relay interface-dlci 302
router bgp 3
no synchronization
redistribute static
neighbor 10.1.23.2 remote-as 2
neighbor 10.1.23.2 send-community
neighbor 10.1.23.2 route-map R2-OUT out
no auto-summary
route-map R2-OUT permit 10
match ip address 1
set community no-export
route-map R2-OUT permit 20
access-list 1 permit 172.168.0.0 0.0.254.255