Building a case study from the ARCH FLG book; BGP communities.
The idea is to use BGP communities to influence the routing between Autonomous Systems with the following goals in mind:
- Configure communities to tag the routes per building on each AS.
- Configure communities as no-export so the routes of AS65001.building2 and AS65002.building2 are not exported through AS65000.
- The routes will be tagged on R6 and R9 with community 65000:99 and processed on the AS boundry.
- The routes of AS65001.building1 and AS65002.building1 are allowed to be exported.
- Configure communities so that R7 and R8 can set their local preference on the AS65000 side.
- The routes will be tagged on R7 will be tagged with 65000:200 resulting in a local-preference of 200.
- The routes will be tagged on R8 will be tagged with 65000:300 resulting in a local-preference of 300.
AS | Building | Subnet | Community | Description |
---|---|---|---|---|
AS65000 | Building 1 ( Router 1 ) | 10.0.1.0/24 | 65000:5001 | |
AS65000 | Building 2 ( Router 2 ) | 10.0.2.0/24 | 65000:5002 | Single uplink to AS65001 |
AS65000 | Building 3 ( Router 3 ) | 10.0.3.0/24 | 65000:5003 | Double uplink to AS65002 |
AS65000 | Building 3 ( Router 4 ) | 10.0.3.0/24 | 65000:5003 | Double uplink to AS65002 |
AS65001 | Building 1 ( Router 5 ) | 10.0.111.0/24 | 65001:5102 | |
AS65001 | Building 2 ( Router 6 ) | 10.0.112.0/24 | 65001:5102 65000:99 | Community 65000:99 is used for no-export |
AS65002 | Building 1 ( Router 7 ) | 10.0.221.0/24 | 65002:5202 65000:200 | 65000:200 is used for local preference 200 in AS65000 |
AS65002 | Building 1 ( Router 8 ) | 10.0.221.0/24 | 65002:5201 65000:300 | 65000:300 is used for local preference 300 in AS65000 |
AS65002 | Building 3 ( Router 9 ) | 10.0.222.0/24 | 65002:5202 65000:99 | Community 65000:99 is used for no-export |
LAB:
LAYER3:
BGP Configuration:
AS65000 :
R1# (Change the network and neighbor addresses where needed for the other routers) router bgp 65000 bgp log-neighbor-changes network 10.0.1.0 mask 255.255.255.0 neighbor ibgp peer-group neighbor ibgp remote-as 65000 neighbor ibgp next-hop-self neighbor ibgp send-community neighbor ibgp soft-reconfiguration inbound neighbor 10.255.65.2 peer-group ibgp neighbor 10.255.65.3 peer-group ibgp neighbor 10.255.65.4 peer-group ibgp
AS65001 :
R5# (Change the network and neighbor addresses where needed for the other routers) router bgp 65001 bgp log-neighbor-changes network 10.0.111.0 mask 255.255.255.0 neighbor ibgp peer-group neighbor ibgp remote-as 65001 neighbor ibgp next-hop-self neighbor ibgp send-community neighbor ibgp soft-reconfiguration inbound neighbor 10.255.1.1 remote-as 65000 neighbor 10.255.1.1 send-community neighbor 10.255.66.2 peer-group ibgp
AS65002 :
R7# (Change the network and neighbor addresses where needed for the other routers) router bgp 65002 bgp log-neighbor-changes network 10.0.221.0 mask 255.255.255.0 neighbor ibgp peer-group neighbor ibgp remote-as 65002 neighbor ibgp next-hop-self neighbor ibgp send-community neighbor ibgp soft-reconfiguration inbound neighbor 10.255.2.1 remote-as 65000 neighbor 10.255.2.1 send-community neighbor 10.255.2.1 route-map EBGP-MAP out neighbor 10.255.67.2 peer-group ibgp neighbor 10.255.67.3 peer-group ibgp
Tagging routes on R6 and R9 (no export)
R9#: access-list 101 permit ip host 10.0.222.0 host 255.255.255.0 ! route-map TAGROUTE permit 10 match ip address 101 # MATCH THE ROUTES YOU WANT TO TAG set community 65000:99 65002:5202 # SET COMMUNITIES 65000:99 (no export) and 65000:5202 ( site ID) Router bgp 65002 - snip - neighbor ibgp route-map TAGROUTE out # APPLY ROUTEMAP ON OUTGOING ROUTES TOWARDS R7 + R8 - snap -
Verify on R7 and R8:
R7#sh ip bgp 10.0.222.0
BGP routing table entry for 10.0.222.0/24, version 3
Paths: (1 available, best #1, table default)
Advertised to update-groups:
9
Refresh Epoch 1
Local, (received & used)
10.255.67.3 from 10.255.67.3 (10.0.222.1)
Origin IGP, metric 0, localpref 100, valid, internal, best
Community: 65000:99 65002:5202
rx pathid: 0, tx pathid: 0x0
Confuring communities on R7 and R8 ( Site-ID’s and Local pref community )
R7: access-list 101 permit ip host 10.0.221.0 host 255.255.255.0 ! route-map EBGP-MAP permit 10 match ip address 101 set community 65000:200 65002:5101 ! route-map EBGP-MAP permit 20 ! Router bgp 65002: neighbor 10.255.2.1 route-map EBGP-MAP out R8: access-list 101 permit ip host 10.0.221.0 host 255.255.255.0 ! route-map EBGP-MAP permit 10 match ip address 101 set community 65000:300 65002:5101 ! route-map EBGP-MAP permit 20 ! Router bgp 65002: neighbor 10.255.3.1 route-map EBGP-MAP out
What this will accomplish is that a local pref community is send to AS65000 with resulting values of 200 for R7 and 300 for R8 for the 10.0.221.0/24 route.
Confuring the community settings on R3 and R4 ( No export and Local pref )
R3# and R4#: ip community-list 1 permit 65000:99 # The no-export community from R6 and R9 ip community-list 2 permit 65000:200 # The localpref community for value 200 ip community-list 3 permit 65000:300 # The localpref community for value 300 ! route-map TAG-IN permit 10 match community 1 set community no-export ! route-map TAG-IN permit 20 match community 2 set local-preference 200 ! route-map TAG-IN permit 30 match community 3 set local-preference 300 ! route-map TAG-IN permit 40 # This to allow all other routes if there were any. router bgp 65000 neighbor 10.255.3.2 route-map TAG-IN in
This will give R4 a higher local pref (300) for route 10.0.221.0/24 towards R8. Resulting in the following result from R3’s prespective:
R3#sh ip route 10.0.221.1 Routing entry for 10.0.221.0/24 Known via "bgp 65000", distance 200, metric 0 Tag 65002, type internal Last update from 10.255.65.4 03:51:18 ago Routing Descriptor Blocks: * 10.255.65.4, from 10.255.65.4, 03:51:18 ago # R4 is the next hop Route metric is 0, traffic share count is 1 AS Hops 1 Route tag 65002 MPLS label: none R3#sh ip bgp 10.0.221.0 BGP routing table entry for 10.0.221.0/24, version 7 Paths: (2 available, best #1, table default) Advertised to update-groups: 9 Refresh Epoch 1 65002, (received & used) 10.255.65.4 from 10.255.65.4 (10.255.65.4) Origin IGP, metric 0, localpref 300, valid, internal, best Community: 65000:300 65002:5101 rx pathid: 0, tx pathid: 0x0 Refresh Epoch 1 65002 10.255.2.2 from 10.255.2.2 (10.255.67.1) Origin IGP, metric 0, localpref 200, valid, external Community: 65000:200 65002:5101 rx pathid: 0, tx pathid: 0
Verifying the no-export community
If all goes well we shouldn’t see the 10.0.112.0/24 and 10.0.222.0/24 routes exported through AS65000 ( And we don’t );
R1#sh ip route - 10.0.0.0/8 is variably subnetted, 10 subnets, 2 masks C 10.0.1.0/24 is directly connected, Loopback0 L 10.0.1.1/32 is directly connected, Loopback0 B 10.0.2.0/24 [200/0] via 10.255.65.2, 03:36:08 B 10.0.3.0/24 [200/0] via 10.255.65.3, 03:36:07 B 10.0.111.0/24 [200/0] via 10.255.65.2, 03:36:08 B 10.0.112.0/24 [200/0] via 10.255.65.2, 03:36:08 #AS6500 Sees the AS65001 route B 10.0.221.0/24 [200/0] via 10.255.65.4, 03:36:07 B 10.0.222.0/24 [200/0] via 10.255.65.3, 03:36:07 #AS6500 Sees the AS65002 route C 10.255.65.0/24 is directly connected, FastEthernet0/0 L 10.255.65.1/32 is directly connected, FastEthernet0/0 R6#sh ip route 10.0.0.0/8 is variably subnetted, 9 subnets, 2 masks B 10.0.1.0/24 [200/0] via 10.255.66.1, 03:37:08 B 10.0.2.0/24 [200/0] via 10.255.66.1, 03:37:08 B 10.0.3.0/24 [200/0] via 10.255.66.1, 03:36:39 B 10.0.111.0/24 [200/0] via 10.255.66.1, 00:00:03 C 10.0.112.0/24 is directly connected, Loopback0 L 10.0.112.1/32 is directly connected, Loopback0 B 10.0.221.0/24 [200/0] via 10.255.66.1, 03:36:39 C 10.255.66.0/24 is directly connected, FastEthernet0/0 L 10.255.66.2/32 is directly connected, FastEthernet0/0 #AS65001 is missing the 10.0.222.0/24 route R9#sh ip route 10.0.0.0/8 is variably subnetted, 9 subnets, 2 masks B 10.0.1.0/24 [200/0] via 10.255.67.1, 03:34:29 B 10.0.2.0/24 [200/0] via 10.255.67.1, 03:34:29 B 10.0.3.0/24 [200/0] via 10.255.67.1, 03:34:29 B 10.0.111.0/24 [200/0] via 10.255.67.1, 03:34:29 B 10.0.221.0/24 [200/0] via 10.255.67.1, 03:41:11 C 10.0.222.0/24 is directly connected, Loopback0 L 10.0.222.1/32 is directly connected, Loopback0 C 10.255.67.0/24 is directly connected, FastEthernet0/0 L 10.255.67.3/32 is directly connected, FastEthernet0/0 #AS65002 is missing the 10.0.112.0/24 route