BGP jest bardzo elastycznym protokołem, za pomocą którego urządzenia między sobą mogą wymieniać informacje o prefiksach.  Do każdego prefiksu może być „doklejona” dodatkowa informacja, która zostanie wykorzystana przez router w procesie wyboru najlepszej ścieżki. Taką informacją są między innymi communities

Atrybut BGP community to wartość liczbowa, którą można przypisać do określonego prefiksu i rozgłaszać innym sąsiadom. Gdy sąsiad otrzyma prefiks, sprawdzi wartość community i podejmie odpowiednie działania, niezależnie od tego, czy filtruje, czy modyfikuje inne atrybuty. Communities mogą służyć do oznaczania prefiksów, które mają być przetwarzane w określony sposób. Dostawcy internetowi mogą używać tych znaczników do kreowania określonych zasad routingu, takich jak filtrowanie lub przypisywanie wartości innym atrybutom powiązanych z prefiksem, na przykład LOC_PREF czy MED. 

Jak wygląda communities 

Community to 32-bitowa (4 bajty) wartość liczbowa. Jest to jeden z atrybutów, które mogą być powiązane z rozgłaszanym do sąsiada prefiksem – ma przydzielony kod typu 8. Zakresy wartości communities od 0x0000000 do 0x0000FFFF oraz od 0xFFFF0000 do 0xFFFFFFFF są zarezerwowane. Communities w zapisie nie są jednak tak straszne, nie posługujemy się wartościami w formacie heksadecymalnym. Twórcy przyjęli podejście, w którym pierwsze 16 bitów zawiera numer ASN, z którego pochodzi community, a ostatnie 16 bitów reprezentuje unikalny numer przypisany przez administratorów danego ASN. Ponieważ w Internecie każdy numer ASN jest unikalny (dbają o to regionalne organizacje zarządzające przestrzenią adresacji IP – w Europie jest to RIPE), każde community jest również unikalne w Internecie. Przykładowo – dawna sieć Telekomunikacji Polskiej, obecnie Orange, ma przydzielony ASN 5617. Oznacza to, że zakres community jakie mogą wykorzystać to liczby od 0x15F10000 do 0x15F1FFFF. Wartość 0x15F1 to szesnastkowy zapis liczby 5617. Jak już wcześniej wspomniałem takiego zapisu się jednak nie stosuje. Obie części tworzące community zwyczajowo zapisuje się w notacji dziesiętnej i rozdziela dwukropkiem. Zatem zakres wartości to 5617:0 do 5617:65535. 

Skąd jednak mamy wiedzieć jakie wartości communities operatorzy w swojej sieci wprowadzili i jakie jest zastosowanie każdego z nich? Informacje te nie są na szczęście tajne. Operatorzy publikują je w opisie (remarks) swojego numeru ASN w rejestrach. Jeżeli chcemy odczytać wszystkie wartości communities, które Orange wprowadził w swoim ASN 5617, musimy wejść na stronę https://ripe.net i w polu wyszukiwarki wpisać „AS5617”. W wyniku znajdziemy między innymi taką sekcję: 

remarks:         ================================================ 
remarks:         Communities used in AS5617 
remarks:         ================================================ 
remarks:          
remarks:         5617:103 - prefix is not announced to foreign peers 
remarks:          
remarks:         We do not accept all RFC1997 communities (no-export etc.) 
remarks:          
remarks:         communities for specific link are 5617:ab0x : 
remarks:         x=0 for "do not advertise"; x=1,2,3 for "prepend 1,2,3 times" 
remarks:          
remarks:         for AS1299 Telia 5617:110x 
remarks:         for AS5511 OpenTransit 5617:120x 
remarks:         for AS16283 Lodman 5617:220x 
remarks:         for AS8664 ICM 5617:240x 
remarks:         for AS8501 Pionier 5617:250x 
remarks:         for AS8890 Kampus Ochota 5617:260x 
remarks:         for AS12464 Politechnika W-wska 5617:270x 
remarks:         for AS8508 Silweb 5617:280x 
remarks:         for AS5550 TASK 5617:290x 

Każdy z operatorów może wystosować własny schemat tworzenia communities, wielu z nich jednak stosuje podobną formułę, w której ostatnia cyfra wskazuje na czynność jaką chcemy wykonać. Zazwyczaj jest to zablokowanie rozgłaszania naszych prefiksów do wskazanego ASN, z którym nasz operator ma styk telekomunikacyjny lub obniżenie atrakcyjności rozgłaszane go prefixu przez prepending wykonany w atrybucie AS_PATH. Przykładowo, jeżeli nie chcemy, aby nasz prefiks Orange rozgłaszał z jakiegoś powodu do sieci Telii, musimy go do sieci Orange rozgłosić z community 5617:1100. Do każdego prefixu możemy dołączyć całą listę communities, a nie tylko jedno pojedyncze. Zatem lista naszych communities może wyglądać następująco: 5617:1100 5617:1200 5617:2403 5617:2903. 

Pamiętajmy, aby rozgłaszane prefiksy były oznaczone jedynie communities, które są zdefiniowane w sieci operatora, z którym mamy zestawiony punkt styku. Nieznane wartości będą ignorowane. 

Administratorzy sieci, w których wykorzystywany jest protokół BGP, sami definiują wartość communities, które zaimplementują w swojej sieci. Istnieje jednak też zestaw wartości, które nazywamy Well-Known Communities, czyli w wolnym tłumaczeniu „dobrze znane communities”. Warto znać kilka z nich. 

Community NO_EXPORT to informacja dla routera sąsiedniego systemu autonomicznego, że nie chcemy, aby nasz prefiks był rozgłaszany poza ten system. Routery powinny zatem nie przesyłać go do swoich sąsiadów eBGP. Community NO_ADVERTISE wprowadza jeszcze większe ograniczenie, gdyż jest informacją dla sąsiedniego routera, że nie chcemy by nasz prefiks był rozgłaszany do jakiegokolwiek jego sąsiada, także wewnątrz systemu autonomicznego. Graceful_SHUTDOWN (65535:0) community służy do płynnego wygaszania ścieżek, z których może korzystać router, gdy jego router sąsiedni ma zostać celowo wyłączony (mechanizm ten nazywa się Graceful Shutdown). 

Wartości 4-bajtowe nazywamy Standard Community. Z czasem okazało się, że są one niewystarczające do wszystkich zastosowań. Dlatego wprowadzono Extended Community. Mają one długość 8 bajtów i wykorzystywane są w sieciach MPLS VPN. Large Community to 12-bajtowa wartość, która została stworzona, gdy zaczęto przydzielać 4-bajtowy AS.