Understanding BGP Communities, Extended Communities, and Large Communities as Routing Policy Match Conditions
A BGP community is a group of destinations that share a common property. Community information is included as a path attribute in BGP update messages. This information identifies community members and enables you to perform actions on a group without having to elaborate upon each member. You can use community and extended communities attributes to trigger routing decisions, such as acceptance, rejection, preference, or redistribution.
You can assign community tags to non-BGP routes through configuration (for static, aggregate, or generated routes) or an import routing policy. These tags can then be matched when BGP exports the routes.
A community value is a 32-bit field that is divided into two
main sections. The first 16 bits of the value encode the AS number
of the network that originated the community, while the last 16 bits
carry a unique number assigned by the AS. This system attempts to
guarantee a globally unique set of community values for each AS in
the Internet. Junos OS uses a notation of as-number:community-value
, where each value is
a decimal number. The AS values of 0 and 65,535 are reserved, as are
all of the community values within those AS numbers. Each community,
or set of communities, is given a name within the [edit policy-options]
configuration hierarchy. The name of the community uniquely identifies
it to the routing device and serves as the method by which routes
are categorized. For example, a route with a community value of 64510:1111
might belong to the community named AS64510-routes
. The
community name is also used within a routing policy as a match criterion
or as an action. The command syntax for creating a community is: policy-options community name members [community-ids]
. The community-ids
are either
a single community value or multiple community values. When more than
one value is assigned to a community name, the routing device interprets
this as a logical AND of the community values. In other words, a route
must have all of the configured values before being assigned the community
name.
The regular community attribute is four octets. Networking enhancements, such as VPNs, have functionality requirements that can be satisfied by an attribute such as a community. However, the 4-octet community value does not provide enough expansion and flexibility to accommodate VPN requirements. This leads to the creation of extended communities. An extended community is an 8-octet value that is also divided into two main sections. The first 2 octets of the community encode a type field while the last 6 octets carry a unique set of data in a format defined by the type field. Extended communities provide a larger range for grouping or categorizing communities.
The BGP extended communities attribute format has three fields: type:administrator:assigned-number
. The routing device expects you
to use the words target
or origin
to represent
the type field. The administrator field uses a decimal number for
the AS or an IPv4 address, while the assigned number field expects
a decimal number no larger than the size of the field (65,535 for
2 octets or 4,294,967,295 for 4 octets).
When specifying community IDs for standard and extended community
attributes, you can use UNIX-style regular expressions. The only exception
is for VPN import policies (vrf-import
), which do not support
regular expressions for the extended communities attribute.
Regular BGP communities attributes are a variable length attribute
consisting of a set of one or more 4-byte values that was split into
16 bit values. The most significant word is interpreted as an AS number
and least significant word is a locally defined value assigned by
the operator of the AS. Since the adoption of 4-byte ASNs, the 4-byte
BGP regular community and 6-byte BGP extended community can no longer
support BGP community attributes. Operators often encode AS number
in the local portion of the BGP community that means that sometimes
the format of the community is ASN:ASN. With the 4-byte ASN , you
need 8-bytes to encode it. Although BGP extended community permits
a 4-byte AS to be encoded as the global administrator field, the local
administrator field has only 2-byte of available space. Thus, 6-byte
extended community attribute is also unsuitable. To overcome this,
Junos OS allows you to configure optional transitive path attribute
- a 12-byte BGP large community that provides the most significant
4-byte value to encode autonomous system number as the global administrator
and the remaining two 4-byte assigned numbers to encode the local
values as defined in RFC 8092. You can configure BGP large community
at the [edit policy-options community community-name members]
and [edit routing-options static route ip-address community]
hierarchy levels. The BGP
large community attributes format has four fields: large
:global administrator:assigned
number:assigned number
.
The BGP IPv6 unicast address specific extended community are encoded as a set of 20-bytes value. The 20-byte value gets interpreted in the following format:
-
Most significant 2-bytes encodes the Type and Sub-Type value (high value (most significant byte) and Low value (second most significant byte)).
-
Next 16-bytes encodes the IPv6 unicast address. It is the global administrator in the IETF RFC.
-
Last 2-bytes encodes the operator defined local values. It is local administrator in the IETF RFC.
The IPv6 unicast address specific BGP extended community attributes are represented by a
keyword ipv6-target
, ipv6-origin
, or
ipv6-extended
followed by IPv6 and local administrator separated by
<, >, and :.
The length of the BGP large communities attribute value should be a non-zero multiple of 12.