Community for small IX - problem with 4B ASN

Chris Caputo ccaputo at alt.net
Mon Jan 22 14:25:42 CET 2018


> 1. Is it possible to enable 4B ASn for communities in Bird? Will it work
> with other rouers?
> 2. Can we use instead private ASn just for community filters? Are they
> processed corretly by other Internet routers of our peers?

1. Yes.

2. I don't recommend it.

To see the communities supported by the SIX route servers, refer to:

  https://www.seattleix.net/route-servers#communities

Below is how we do it with bird 1.6.3.  Not sure about 2.0+.

I hope this helps and feedback from the community is welcome.

Chris

---

define myas = SET TO IXP ASN;
define peerPrepend1 = 65001;
define peerPrepend2 = 65002;
define peerPrepend3 = 65003;

# BGP output filter (based on communities)
# Returning false means don't propagate route to peeras.
# Returning true means do propagate route to peeras.
function bgp_out_comm(int peeras)
{
  if ! (source = RTS_BGP ) then return false;

  if (myas,0,peeras) ~ bgp_large_community then return false;
  if (myas,1,peeras) ~ bgp_large_community then return true;
  if (myas,0,0) ~ bgp_large_community then return false;

  if peeras > 65535 then
  {
    if (ro,0,peeras) ~ bgp_ext_community then return false;
    if (ro,myas,peeras) ~ bgp_ext_community then return true;
    if ((ro,0,myas) ~ bgp_ext_community) then return false;
  } else {
    if ((0,peeras) ~ bgp_community) || ((ro,0,peeras) ~ bgp_ext_community) then return false;
    if ((myas,peeras) ~ bgp_community) || ((ro,myas,peeras) ~ bgp_ext_community) then return true;
    if ((0,myas) ~ bgp_community) || ((ro,0,myas) ~ bgp_ext_community) then return false;
  }
  return true;
}

function bgp_out(int peeras)
{
  if !bgp_out_comm(peeras) then return false;

  # Prepends
  if peeras > 65535 then
  {
    if ((ro,peerPrepend1,peeras) ~ bgp_ext_community) || ((myas,peerPrepend1,peeras) ~ bgp_large_community) then {
      bgp_path.prepend(bgp_path.first);
    }
    if ((ro,peerPrepend2,peeras) ~ bgp_ext_community) || ((myas,peerPrepend2,peeras) ~ bgp_large_community) then {
      bgp_path.prepend(bgp_path.first);
      bgp_path.prepend(bgp_path.first);
    } 
    if ((ro,peerPrepend3,peeras) ~ bgp_ext_community) || ((myas,peerPrepend3,peeras) ~ bgp_large_community) then {
      bgp_path.prepend(bgp_path.first);
      bgp_path.prepend(bgp_path.first);
      bgp_path.prepend(bgp_path.first);
    } 
  } else {
    if ((peerPrepend1,peeras) ~ bgp_community) || ((ro,peerPrepend1,peeras) ~ bgp_ext_community) || ((myas,peerPrepend1,peeras) ~ bgp_large_community) then {
      bgp_path.prepend(bgp_path.first);
    } 
    if ((peerPrepend2,peeras) ~ bgp_community) || ((ro,peerPrepend2,peeras) ~ bgp_ext_community) || ((myas,peerPrepend2,peeras) ~ bgp_large_community) then {
      bgp_path.prepend(bgp_path.first);
      bgp_path.prepend(bgp_path.first);
    } 
    if ((peerPrepend3,peeras) ~ bgp_community) || ((ro,peerPrepend3,peeras) ~ bgp_ext_community) || ((myas,peerPrepend3,peeras) ~ bgp_large_community) then {
      bgp_path.prepend(bgp_path.first);
      bgp_path.prepend(bgp_path.first);
     bgp_path.prepend(bgp_path.first);
    }
  }

  # Remove IXP related communities
  bgp_community.delete([(0,*)]);
  bgp_community.delete([(myas,*)]);
  bgp_community.delete([(peerPrepend1,*)]);
  bgp_community.delete([(peerPrepend2,*)]);
  bgp_community.delete([(peerPrepend3,*)]);
  bgp_ext_community.delete([(ro,0,*)]);
  bgp_ext_community.delete([(ro,myas,*)]);
  bgp_ext_community.delete([(ro,peerPrepend1,*)]);
  bgp_ext_community.delete([(ro,peerPrepend2,*)]);
  bgp_ext_community.delete([(ro,peerPrepend2,*)]);
  bgp_large_community.delete([(myas,*,*)]);

  return true;
}

On Mon, 22 Jan 2018, Piotr Marciniak wrote:
> Dear Advisors ;],
> 
> Thank you for all posts. But still I do not know how to make Bird working with
> 4B communities and if I may do this - whether it will be accepted for our
> peers? In short - I do not know how to adapt to 4B communities following
> examples:
> 
> https://gitlab.labs.nic.cz/labs/bird/wikis/Route_server_with_community_based_filtering_and_multiple_RIBs
> https://gitlab.labs.nic.cz/labs/bird/wikis/Route_server_with_community_based_filtering_and_single_RIB
> 
> Is there any way to enable 4B communities in bird.conf?
> 
> I do not have any problem with 4B ASn. I set bgp peering sessions from Bird
> with 4B ASn. Even our IX has AS205082.
> 
> This is why I put 2 questions:
> 
> 1. Is it possible to enable 4B ASn for communities in Bird? Will it work
> with other rouers?
> 2. Can we use instead private ASn just for community filters? Are they
> processed corretly by other Internet routers of our peers?
> 
> Please - do not explain me theoretical difference between 16 and 32 bits.
> Question is simple - can I use 4B communities for filters? If not - what 16bit
> "fake ASn" I can use instead safely?
> 
> Best wishes,
> 
> Piotr Marciniak
> 
> 
> -----Oryginalna wiadomość----- From: Paweł Nastachowski
> Sent: Monday, January 22, 2018 1:12 PM
> To: Piotr Marciniak
> Cc: bird-users at network.cz
> Subject: Re: Community for small IX - problem with 4B ASN
> 
> Hi Piotr,
> 
> I should use extended community for 4B ASN, because normal community is too
> small “Encodes a 32-bit value displayed as “16-bit ASN:16-bit value”.
> 
> Regards,
> Pawel
> 
> -----Wiadomość oryginalna-----
> Od: Bird-users <bird-users-bounces at network.cz> w imieniu użytkownika Piotr
> Marciniak <zboj at mnc.pl>
> Data: poniedziałek, 22 stycznia 2018 11:15
> Do: "bird-users at network.cz" <bird-users at network.cz>
> Temat: Community for small IX - problem with 4B ASN
> 
>    Hello,
> 
>    I've spent a while on below docs and faced a problem with 4B ASN we use.
>    Bird reports an error 'when 'myas' is 4B => so above 65535.
>    See some testing example below:
> 
>    bird> configure
>    Reading configuration from /etc/bird/bird.conf
>    /etc/bird/bird.conf, line 81: Value 165250 out of range (0-65535)
> 
>    The only way this config reports no error is to set here private ASn - fe.
>    65250. But it will never match our real ASn.
> 
>    Two questions:
> 
>    1. Is it possible to enable 4B ASn for communities in Bird? Will it work
>    with other rouers?
>    2. Can we use instead private ASn just for community filters? Are they
>    processed corretly by other Internet routers of our peers?
> 
>    Or maybe there is another work around?
> 
>    Best wishes,
> 
>    Peter
> 
> 
>    -----Oryginalna wiadomość-----
>    From: Piotr Marciniak
>    Sent: Friday, December 29, 2017 5:01 PM
>    To: Ondrej Zajicek
>    Cc: bird-users at network.cz
>    Subject: Re: Community for small IX
> 
> 
>    There are some examples in BIRD wiki, mainly:
> 
>    https://urldefense.proofpoint.com/v2/url?u=https-3A__gitlab.labs.nic.cz_labs_bird_wikis_Route-5Fserver-5Fwith-5Fcommunity-5Fbased-5Ffiltering-5Fand-5Fmultiple-5FRIBs&d=DwIDaQ&c=gxW9PgscCAGwFImBgfkGkoANogu61GVPNv0sglxAtik&r=5Q01PsGCLGh5Iipn2_EFz2pKmXKRl5oJ_tHzyrwTUhrj4D27CXd9SGXgnGWoH5Yy&m=b6e1rT2mu_bWkZiOT-71FnOGwrXSx-xnpaRwbI3-BFI&s=2UgZOD_Fkqt6ZgVqlXm_vXRiY1LP_MTlkWo-TGVqAtE&e=
>    https://urldefense.proofpoint.com/v2/url?u=https-3A__gitlab.labs.nic.cz_labs_bird_wikis_Route-5Fserver-5Fwith-5Fcommunity-5Fbased-5Ffiltering-5Fand-5Fsingle-5FRIB&d=DwIDaQ&c=gxW9PgscCAGwFImBgfkGkoANogu61GVPNv0sglxAtik&r=5Q01PsGCLGh5Iipn2_EFz2pKmXKRl5oJ_tHzyrwTUhrj4D27CXd9SGXgnGWoH5Yy&m=b6e1rT2mu_bWkZiOT-71FnOGwrXSx-xnpaRwbI3-BFI&s=KjVYea-iJRNl8BxFQFgkEeHLWFK8qwenAm_GRJDH4Q4&e=
> 
>    --
>    Elen sila lumenn' omentielvo
> 
>    Ondrej 'Santiago' Zajicek (email: santiago at crfreenet.org)
>    OpenPGP encrypted e-mails preferred (KeyID 0x11DEADC3, wwwkeys.pgp.net)
>    "To err is human -- to blame it on a computer is even more so."
> 
> 
> 
> This email is from Equinix (EMEA) B.V. or one of its associated companies in
> the territory from where this email has been sent. This email, and any files
> transmitted with it, contains information which is confidential, is solely for
> the use of the intended recipient and may be legally privileged. If you have
> received this email in error, please notify the sender and delete this email
> immediately. Equinix (EMEA) B.V.. Registered Office: Amstelplein 1, 1096 HA
> Amsterdam, The Netherlands. Registered in The Netherlands No. 57577889. 


More information about the Bird-users mailing list