ON THIS PAGE
Example: Configuring Communities in a Routing Policy
A community is a route attribute used by BGP to administratively group routes with similar properties.
Requirements
No special configuration beyond device initialization is required before configuring this example.
- Updated and revalidated using vMX on Junos OS Release 21.1R1.
Overview
One main role of the community attribute is to be an administrative tag value used to associate routes together. Generally, these routes share some common properties, but that is not required. Communities are a flexible tool within BGP. An individual community value can be assigned to a single route or multiple routes. A route can be assigned a single community value or multiple values. Networks use the community attribute to assist in implementing administrative routing policies. A route’s assigned value can allow it to be accepted into the network, or rejected from the network, or allow it to modify attributes.
Figure 1 shows device R1, device R2, and device R3 as internal BGP (IBGP) peers in autonomous system (AS) 64510. Device R4 is advertising the 172.16.0.0/21 address space from AS 64511.
Topology
The specific routes received by device R1 from device R4 are as follows:
user@R1> show route receive-protocol bgp 10.0.0.13
inet.0: 24 destinations, 28 routes (24 active, 0 holddown, 0 hidden)
Prefix Nexthop MED Lclpref AS path
* 172.16.0.0/24 10.0.0.13 64511 I
* 172.16.1.0/24 10.0.0.13 64511 I
* 172.16.2.0/24 10.0.0.13 64511 I
* 172.16.3.0/24 10.0.0.13 64511 I
172.16.4.0/24 10.0.0.13 64511 I
172.16.5.0/24 10.0.0.13 64511 I
172.16.6.0/24 10.0.0.13 64511 I
172.16.7.0/24 10.0.0.13 64511 I
The administrators of AS 64511 want to receive certain user traffic from device R1, and other user traffic from device R3. To accomplish this administrative goal, device R4 attaches the community value of 64511:1 to some routes that it sends and attaches the community value 64511:3 to other routes that it sends. Routing policies within AS 64510 are configured using a community match criterion to change the local preference of the received routes to new values that alter the BGP route selection algorithm. The route with the highest local preference value is preferred.
On device R1, routes with the 64511:1 community value are assigned a local preference of 200, and routes with the 64511:3 community value are assigned a local preference of 50. On device R3, the reverse is done so that routes with the 64511:3 community value are assigned a local preference of 200, and routes with the 64511:1 community value are assigned a local preference of 50. This information is then communicated through IBGP by both device R1 and device R3 to device R2.
CLI Quick Configuration shows the configuration for all of the devices in Figure 1.
The section Step By Step Configuration describes the configuration steps on devices R1 and R4.
Configuration
CLI Quick Configuration
To quickly configure this example, copy the following commands, paste them into a
text file, remove any line breaks, change any details necessary to match your
network configuration, and then copy and paste the commands into the CLI at the
[edit]
hierarchy level.
Device R1
set interfaces ge-0/0/0 unit 0 family inet address 10.0.0.1/30 set interfaces ge-0/0/1 unit 0 family inet address 10.1.0.5/30 set interfaces ge-0/0/2 unit 0 family inet address 10.0.0.14/30 set interfaces lo0 unit 0 family inet address 192.168.0.1/32 set policy-options policy-statement change-local-preference term find-R1-routes from community R1_PREFERRED set policy-options policy-statement change-local-preference term find-R1-routes then local-preference 200 set policy-options policy-statement change-local-preference term find-R3-routes from community R3_PREFERRED set policy-options policy-statement change-local-preference term find-R3-routes then local-preference 50 set policy-options policy-statement send-direct term 1 from protocol direct set policy-options policy-statement send-direct term 1 from route-filter 10.0.0.12/30 exact set policy-options policy-statement send-direct term 1 then accept set policy-options community R3_PREFERRED members 64511:3 set policy-options community R1_PREFERRED members 64511:1 set protocols bgp group int type internal set protocols bgp group int local-address 192.168.0.1 set protocols bgp group int export send-direct set protocols bgp group int neighbor 192.168.0.2 set protocols bgp group int neighbor 192.168.0.3 set protocols bgp group ext type external set protocols bgp group ext import change-local-preference set protocols bgp group ext peer-as 64511 set protocols bgp group ext neighbor 10.0.0.13 set protocols ospf area 0.0.0.0 interface ge-0/0/0.0 set protocols ospf area 0.0.0.0 interface ge-0/0/1.0 set protocols ospf area 0.0.0.0 interface lo0.0 passive set routing-options router-id 192.168.0.1 set routing-options autonomous-system 64510
Device R2
set interfaces ge-0/0/0 unit 0 family inet address 10.0.0.2/30 set interfaces ge-0/0/1 unit 0 family inet address 10.1.0.1/30 set interfaces lo0 unit 0 family inet address 192.168.0.2/32 set protocols bgp group int type internal set protocols bgp group int local-address 192.168.0.2 set protocols bgp group int neighbor 192.168.0.1 set protocols bgp group int neighbor 192.168.0.3 set protocols ospf area 0.0.0.0 interface ge-0/0/0.0 set protocols ospf area 0.0.0.0 interface ge-0/0/1.0 set protocols ospf area 0.0.0.0 interface lo0.0 passive set routing-options router-id 192.168.0.2 set routing-options autonomous-system 64510
Device R3
set interfaces ge-0/0/0 unit 0 family inet address 10.1.0.6/30 set interfaces ge-0/0/1 unit 0 family inet address 10.1.0.2/30 set interfaces ge-0/0/2 unit 0 family inet address 10.0.0.10/30 set interfaces lo0 unit 0 family inet address 192.168.0.3/32 set policy-options policy-statement change-local-preference term find-R3-routes from community R3_PREFERRED set policy-options policy-statement change-local-preference term find-R3-routes then local-preference 200 set policy-options policy-statement change-local-preference term find-R1-routes from community R1_PREFERRED set policy-options policy-statement change-local-preference term find-R1-routes then local-preference 50 set policy-options policy-statement send-direct term 1 from protocol direct set policy-options policy-statement send-direct term 1 from route-filter 10.0.0.8/30 exact set policy-options policy-statement send-direct term 1 then accept set policy-options community R1_PREFERRED members 64511:1 set policy-options community R3_PREFERRED members 64511:3 set protocols bgp group int type internal set protocols bgp group int local-address 192.168.0.3 set protocols bgp group int export send-direct set protocols bgp group int neighbor 192.168.0.1 set protocols bgp group int neighbor 192.168.0.2 set protocols bgp group ext type external set protocols bgp group ext import change-local-preference set protocols bgp group ext peer-as 64511 set protocols bgp group ext neighbor 10.0.0.9 set protocols ospf area 0.0.0.0 interface ge-0/0/1.0 set protocols ospf area 0.0.0.0 interface ge-0/0/0.0 set protocols ospf area 0.0.0.0 interface lo0.0 passive set routing-options router-id 192.168.0.3 set routing-options autonomous-system 64510
Device R4
set interfaces ge-0/0/0 unit 0 family inet address 10.0.0.13/30 set interfaces ge-0/0/1 unit 0 family inet address 10.0.0.9/30 set interfaces lo0 unit 0 family inet address 192.168.0.4/32 set policy-options policy-statement send-static term 1 from protocol static set policy-options policy-statement send-static term 1 from route-filter 172.16.0.0/24 exact set policy-options policy-statement send-static term 1 from route-filter 172.16.1.0/24 exact set policy-options policy-statement send-static term 1 from route-filter 172.16.2.0/24 exact set policy-options policy-statement send-static term 1 from route-filter 172.16.3.0/24 exact set policy-options policy-statement send-static term 1 then community add R1_PREFERRED set policy-options policy-statement send-static term 1 then accept set policy-options policy-statement send-static term 2 from protocol static set policy-options policy-statement send-static term 2 from route-filter 172.16.4.0/24 exact set policy-options policy-statement send-static term 2 from route-filter 172.16.5.0/24 exact set policy-options policy-statement send-static term 2 from route-filter 172.16.6.0/24 exact set policy-options policy-statement send-static term 2 from route-filter 172.16.7.0/24 exact set policy-options policy-statement send-static term 2 then community add R3_PREFERRED set policy-options policy-statement send-static term 2 then accept set policy-options policy-statement send-static term 3 then reject set policy-options community R3_PREFERRED members 64511:3 set policy-options community R1_PREFERRED members 64511:1 set protocols bgp group to-R1 type external set protocols bgp group to-R1 export send-static set protocols bgp group to-R1 peer-as 64510 set protocols bgp group to-R1 neighbor 10.0.0.14 set protocols bgp group to-R3 type external set protocols bgp group to-R3 export send-static set protocols bgp group to-R3 peer-as 64510 set protocols bgp group to-R3 neighbor 10.0.0.10 set routing-options router-id 192.168.0.4 set routing-options autonomous-system 64511 set routing-options static route 172.16.0.0/24 reject set routing-options static route 172.16.1.0/24 reject set routing-options static route 172.16.2.0/24 reject set routing-options static route 172.16.3.0/24 reject set routing-options static route 172.16.4.0/24 reject set routing-options static route 172.16.5.0/24 reject set routing-options static route 172.16.6.0/24 reject set routing-options static route 172.16.7.0/24 reject
Step-by-Step Procedure
The following example requires that you navigate various levels in the configuration hierarchy. For information about navigating the CLI, see Use the CLI Editor in Configuration Mode in the Junos OS CLI User Guide.
To configure device R1:
-
Configure the interfaces.
[edit interfaces] user@R1# set ge-0/0/0 unit 0 family inet address 10.0.0.1/30 user@R1# set ge-0/0/1 unit 0 family inet address 10.1.0.5/30 user@R1# set ge-0/0/2 unit 0 family inet address 10.0.0.14/30 user@R1# set lo0 unit 0 family inet address 192.168.0.1/32
-
Configure internal gateway protocol (IGP) connections to devices R2 and R3.
[edit protocols ospf area 0.0.0.0] user@R1# set interface ge-0/0/0.0 user@R1# set interface ge-0/0/1.0 user@R1# set interface lo0.0 passive
-
Configure the IBGP connections to devices R2 and R3.
[edit protocols bgp group int] user@R1# set type internal user@R1# set local-address 192.168.0.1 user@R1# set export send-direct user@R1# set neighbor 192.168.0.2 user@R1# set neighbor 192.168.0.3
-
Configure the EBGP connection to device R4.
[edit protocols bgp group ext] user@R1# set type external user@R1# set import change-local-preference user@R1# set peer-as 64511 user@R1# set neighbor 10.0.0.13
-
Configure the policy
send-direct
.This policy is referenced in the IBGP configuration and enables device R2 to have external reachability. An alternative is to configure a
next-hop self
policy on device R1 and device R3.[edit policy-options policy-statement send-direct term 1] user@R1# set from protocol direct user@R1# set from route-filter 10.0.0.12/30 exact user@R1# set then accept
-
Configure the policy that changes the local preference for routes with specified community tags.
[edit policy-options ] user@R1# set policy-statement change-local-preference term find-R1-routes from community R1_PREFERRED user@R1# set policy-statement change-local-preference term find-R1-routes then local-preference 200 user@R1# set policy-statement change-local-preference term find-R3-routes from community R3_PREFERRED user@R1# set policy-statement change-local-preference term find-R3-routes then local-preference 50 user@R1# set community R3_PREFERRED members 64511:3 user@R1# set community R1_PREFERRED members 64511:1
-
Configure the autonomous system (AS) number and router ID.
[edit routing-options] user@R1# set router-id 192.168.0.1 user@R1# set autonomous-system 64510
To configure device R4:
-
Configure the interfaces.
[edit interfaces] user@R4# set ge-0/0/0 unit 0 family inet address 10.0.0.13/30 user@R4# set ge-0/0/1 unit 0 family inet address 10.0.0.9/30 user@R4# set lo0 unit 0 family inet address 192.168.0.4/32
-
Configure the EBGP connection to device R1 and device R3.
[edit protocols bgp] user@R4# set group to-R1 type external user@R4# set group to-R1 export send-static user@R4# set group to-R1 peer-as 64510 user@R4# set group to-R1 neighbor 10.0.0.14 user@R4# set group to-R3 type external user@R4# set group to-R3 export send-static user@R4# set group to-R3 peer-as 64510 user@R4# set group to-R3 neighbor 10.0.0.10
-
Configure the community tags.
[edit policy-options ] user@R4# set community R3_PREFERRED members 64511:3 user@R4# set community R1_PREFERRED members 64511:1
-
Configure the policy
send-static
.This policy is referenced in the EBGP connections to device R1 and device R3. The policy attaches the 64511:1 (PREFERRED) community to some routes and the 64511:3 (NOT_PREFERRED) community to other routes.
[edit policy-options] user@R4# set policy-statement send-static term 1 from protocol static user@R4# set policy-statement send-static term 1 from route-filter 172.16.0.0/24 exact user@R4# set policy-statement send-static term 1 from route-filter 172.16.1.0/24 exact user@R4# set policy-statement send-static term 1 from route-filter 172.16.2.0/24 exact user@R4# set policy-statement send-static term 1 from route-filter 172.16.3.0/24 exact user@R4# set policy-statement send-static term 1 then community add R1_PREFERRED user@R4# set policy-statement send-static term 1 then accept user@R4# set policy-statement send-static term 2 from protocol static user@R4# set policy-statement send-static term 2 from route-filter 172.16.4.0/24 exact user@R4# set policy-statement send-static term 2 from route-filter 172.16.5.0/24 exact user@R4# set policy-statement send-static term 2 from route-filter 172.16.6.0/24 exact user@R4# set policy-statement send-static term 2 from route-filter 172.16.7.0/24 exact user@R4# set policy-statement send-static term 2 then community add R3_PREFERRED user@R4# set policy-statement send-static term 2 then accept user@R4# set policy-statement send-static term 3 then reject
-
Configure the static routes.
[edit routing-options static] user@R4# set route 172.16.0.0/24 reject user@R4# set route 172.16.1.0/24 reject user@R4# set route 172.16.2.0/24 reject user@R4# set route 172.16.3.0/24 reject user@R4# set route 172.16.4.0/24 reject user@R4# set route 172.16.5.0/24 reject user@R4# set route 172.16.6.0/24 reject user@R4# set route 172.16.7.0/24 reject
-
Configure the autonomous system (AS) number and router ID.
[edit routing-options] user@R4# set router-id 192.168.0.4 user@R4# set autonomous-system 64511
Results
From configuration mode, confirm your configuration by entering the
show interfaces
, show protocols
,
show policy-options
, and show
routing-options
commands. If the output does not display the
intended configuration, repeat the instructions in this example to correct
the configuration.
Device R1
user@R1# show interfaces ge-0/0/0 { unit 0 { family inet { address 10.0.0.1/30; } } } ge-0/0/1 { unit 0 { family inet { address 10.1.0.5/30; } } } ge-0/0/2 { unit 0 { family inet { address 10.0.0.14/30; } } } lo0 { unit 0 { family inet { address 192.168.0.1/32; } } }
user@R1# show protocols bgp { group int { type internal; local-address 192.168.0.1; export send-direct; neighbor 192.168.0.2; neighbor 192.168.0.3; } group ext { type external; import change-local-preference; peer-as 64511; neighbor 10.0.0.13; } } ospf { area 0.0.0.0 { interface ge-0/0/0.0; interface ge-0/0/1.0; interface lo0.0 { passive; } } }
user@R1# show policy-options policy-statement change-local-preference { term find-R1-routes { from community R1_PREFERRED; then { local-preference 200; } } term find-R3-routes { from community R3_PREFERRED; then { local-preference 50; } } } policy-statement send-direct { term 1 { from { protocol direct; route-filter 10.0.0.12/30 exact; } then accept; } } community R3_PREFERRED members 64511:3; community R1_PREFERRED members 64511:1;
user@R1# show routing-options router-id 192.168.0.1; autonomous-system 64510;
Device R4
user@R4# show interfaces ge-0/0/0 { unit 0 { family inet { address 10.0.0.13/30; } } } ge-0/0/1 { unit 0 { family inet { address 10.0.0.9/30; } } } lo0 { unit 0 { family inet { address 192.168.0.4/32; } } }
user@R4# show protocols bgp { group to-R1 { type external; export send-static; peer-as 64510; neighbor 10.0.0.14; } group to-R3 { type external; export send-static; peer-as 64510; neighbor 10.0.0.10; } }
user@R4# show policy-options policy-statement send-static { term 1 { from { protocol static; route-filter 172.16.0.0/24 exact; route-filter 172.16.1.0/24 exact; route-filter 172.16.2.0/24 exact; route-filter 172.16.3.0/24 exact; } then { community add R1_PREFERRED; accept; } } term 2 { from { protocol static; route-filter 172.16.4.0/24 exact; route-filter 172.16.5.0/24 exact; route-filter 172.16.6.0/24 exact; route-filter 172.16.7.0/24 exact; } then { community add R3_PREFERRED; accept; } } term 3 { then reject; } } community R3_PREFERRED members 64511:3; community R1_PREFERRED members 64511:1;
user@R4# show routing-options router-id 192.168.0.4; autonomous-system 64511; static { route 172.16.0.0/24 reject; route 172.16.1.0/24 reject; route 172.16.2.0/24 reject; route 172.16.3.0/24 reject; route 172.16.4.0/24 reject; route 172.16.5.0/24 reject; route 172.16.6.0/24 reject; route 172.16.7.0/24 reject; }
If you are done configuring the devices, enter commit
from
configuration mode.
Verification
Confirm that the configuration is working properly.
Verifying the Routes Sent on Device R4
Purpose
On device R4, check the routes sent to device R1 and device R3.
Action
user@R4> show route advertising-protocol bgp 10.0.0.14 extensive inet.0: 13 destinations, 13 routes (13 active, 0 holddown, 0 hidden) * 172.16.0.0/24 (1 entry, 1 announced) BGP group to-R1 type External Nexthop: Self AS path: [64511] I Communities: 64511:1 * 172.16.1.0/24 (1 entry, 1 announced) BGP group to-R1 type External Nexthop: Self AS path: [64511] I Communities: 64511:1 * 172.16.2.0/24 (1 entry, 1 announced) BGP group to-R1 type External Nexthop: Self AS path: [64511] I Communities: 64511:1 * 172.16.3.0/24 (1 entry, 1 announced) BGP group to-R1 type External Nexthop: Self AS path: [64511] I Communities: 64511:1 * 172.16.4.0/24 (1 entry, 1 announced) BGP group to-R1 type External Nexthop: Self AS path: [64511] I Communities: 64511:3 * 172.16.5.0/24 (1 entry, 1 announced) BGP group to-R1 type External Nexthop: Self AS path: [64511] I Communities: 64511:3 * 172.16.6.0/24 (1 entry, 1 announced) BGP group to-R1 type External Nexthop: Self AS path: [64511] I Communities: 64511:3 * 172.16.7.0/24 (1 entry, 1 announced) BGP group to-R1 type External Nexthop: Self AS path: [64511] I Communities: 64511:3
user@R4> show route advertising-protocol bgp 10.0.0.10 extensive inet.0: 13 destinations, 13 routes (13 active, 0 holddown, 0 hidden) * 172.16.0.0/24 (1 entry, 1 announced) BGP group to-R3 type External Nexthop: Self AS path: [64511] I Communities: 64511:1 * 172.16.1.0/24 (1 entry, 1 announced) BGP group to-R3 type External Nexthop: Self AS path: [64511] I Communities: 64511:1 * 172.16.2.0/24 (1 entry, 1 announced) BGP group to-R3 type External Nexthop: Self AS path: [64511] I Communities: 64511:1 * 172.16.3.0/24 (1 entry, 1 announced) BGP group to-R3 type External Nexthop: Self AS path: [64511] I Communities: 64511:1 * 172.16.4.0/24 (1 entry, 1 announced) BGP group to-R3 type External Nexthop: Self AS path: [64511] I Communities: 64511:3 * 172.16.5.0/24 (1 entry, 1 announced) BGP group to-R3 type External Nexthop: Self AS path: [64511] I Communities: 64511:3 * 172.16.6.0/24 (1 entry, 1 announced) BGP group to-R3 type External Nexthop: Self AS path: [64511] I Communities: 64511:3 * 172.16.7.0/24 (1 entry, 1 announced) BGP group to-R3 type External Nexthop: Self AS path: [64511] I Communities: 64511:3
Meaning
Device R4 has tagged the routes with the communities 64511:1 and 64511:3 and sent them to device R1 and R3.
Verifying the Routes Received on Device R2
Purpose
On device R2, check the routes received from device R1 and device R3.
Action
user@R2> show route receive-protocol bgp 192.168.0.1 inet.0: 25 destinations, 25 routes (25 active, 0 holddown, 0 hidden) Prefix Nexthop MED Lclpref AS path * 10.0.0.12/30 192.168.0.1 100 I * 172.16.0.0/24 10.0.0.13 200 64511 I * 172.16.1.0/24 10.0.0.13 200 64511 I * 172.16.2.0/24 10.0.0.13 200 64511 I * 172.16.3.0/24 10.0.0.13 200 64511 I
user@R2> show route receive-protocol bgp 192.168.0.3 inet.0: 25 destinations, 25 routes (25 active, 0 holddown, 0 hidden) Prefix Nexthop MED Lclpref AS path * 10.0.0.8/30 192.168.0.3 100 I * 172.16.4.0/24 10.0.0.9 200 64511 I * 172.16.5.0/24 10.0.0.9 200 64511 I * 172.16.6.0/24 10.0.0.9 200 64511 I * 172.16.7.0/24 10.0.0.9 200 64511 I
user@R2> show route match-prefix 172.16.* inet.0: 25 destinations, 25 routes (25 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 172.16.0.0/24 *[BGP/170] 1w3d 00:02:11, localpref 200, from 192.168.0.1 AS path: 64511 I, validation-state: unverified > to 10.0.0.1 via ge-0/0/0.0 172.16.1.0/24 *[BGP/170] 1w3d 00:02:11, localpref 200, from 192.168.0.1 AS path: 64511 I, validation-state: unverified > to 10.0.0.1 via ge-0/0/0.0 172.16.2.0/24 *[BGP/170] 1w3d 00:02:11, localpref 200, from 192.168.0.1 AS path: 64511 I, validation-state: unverified > to 10.0.0.1 via ge-0/0/0.0 172.16.3.0/24 *[BGP/170] 1w3d 00:02:11, localpref 200, from 192.168.0.1 AS path: 64511 I, validation-state: unverified > to 10.0.0.1 via ge-0/0/0.0 172.16.4.0/24 *[BGP/170] 1w3d 00:01:50, localpref 200, from 192.168.0.3 AS path: 64511 I, validation-state: unverified > to 10.1.0.2 via ge-0/0/1.0 172.16.5.0/24 *[BGP/170] 1w3d 00:01:50, localpref 200, from 192.168.0.3 AS path: 64511 I, validation-state: unverified > to 10.1.0.2 via ge-0/0/1.0 172.16.6.0/24 *[BGP/170] 1w3d 00:01:50, localpref 200, from 192.168.0.3 AS path: 64511 I, validation-state: unverified > to 10.1.0.2 via ge-0/0/1.0 172.16.7.0/24 *[BGP/170] 1w3d 00:01:50, localpref 200, from 192.168.0.3 AS path: 64511 I, validation-state: unverified > to 10.1.0.2 via ge-0/0/1.0
Meaning
Device R2 has the routes with the expected local preferences and the expected active routes, as designated by the asterisks (*).