<div dir="ltr">Thank you I was able to solve in this way:<div>My testing network is made up of router server (as1), router2(as2), router3 (as3).</div><div>The goal: as2's routes don't have to be announced to as3</div><div>route server conf:</div><div>function bgp_out(int peerID)</div><div>{</div><div>   if(0,peerID) <span style="font-family:arial,sans-serif;font-size:16px">~ bgp_community then return false;</span></div><div><span style="font-family:arial,sans-serif;font-size:16px">  return true;</span></div><div><span style="font-family:arial,sans-serif;font-size:16px">}</span></div><div><span style="font-family:arial,sans-serif;font-size:16px">protocol pipe as2 {</span></div><div><span style="font-family:arial,sans-serif;font-size:16px">   import something;</span></div><div><span style="font-family:arial,sans-serif;font-size:16px">   export where bgp_out(2);</span></div><div><span style="font-family:arial,sans-serif;font-size:16px">}</span></div><div><span style="font-family:arial,sans-serif;font-size:16px">protocol bgp { </span><span style="font-family:arial,sans-serif;font-size:16px">ipv4  {import/export all;}}</span></div><div><span style="font-family:arial,sans-serif;font-size:16px"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:16px">router2 config:</span></div><div><span style="font-family:arial,sans-serif;font-size:16px">protocol bgp {</span></div><div><span style="font-family:arial,sans-serif;font-size:16px">   ipv4  {</span></div><div><span style="font-family:arial,sans-serif;font-size:16px">          import all;</span></div><div><span style="font-family:arial,sans-serif;font-size:16px">          export filter {bgp_community.add((0,3)); };</span></div><div><span style="font-family:arial,sans-serif;font-size:16px">   }</span></div><div><span style="font-family:arial,sans-serif;font-size:16px">}</span></div><div><span style="font-family:arial,sans-serif;font-size:16px"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:16px">With this configuration AS3 doesn't receive AS2's routes anymore. But I have a question, why the if condition is true? It should be if (0,2) </span><span style="font-family:arial,sans-serif;font-size:16px">~ (is inside) [(0,3),..], isn't it?</span></div><div><span style="font-family:arial,sans-serif;font-size:16px"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:16px">Thanks,</span></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Il giorno lun 6 apr 2020 alle ore 21:06 Alexander Zubkov <<a href="mailto:green@qrator.net" target="_blank">green@qrator.net</a>> ha scritto:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">You have to configure export filter with something like:<br>
bgp_community.add((x,y));<br>
This is for community written as x:y on most hardware routers.<br>
<br>
On Mon, Apr 6, 2020 at 8:57 PM Fabiano D'Agostino<br>
<<a href="mailto:fabiano.dagostino96@gmail.com" target="_blank">fabiano.dagostino96@gmail.com</a>> wrote:<br>
><br>
> Thanks for your helping,<br>
> How do I set in my router (AS2) the community to the exported routes? I don't understand this.<br>
><br>
><br>
><br>
> Il giorno lun 6 apr 2020 alle ore 20:26 Alexander Zubkov <<a href="mailto:green@qrator.net" target="_blank">green@qrator.net</a>> ha scritto:<br>
>><br>
>> OK. So you have some route x.x.x.x/y that you receive from AS2 by<br>
>> protocol bgp pb_0002_as2?<br>
>><br>
>> 1) it is received via bgp pb_0002_as2 into table t_0002_as2<br>
>> 2) it is piped from table t_0002_as2 to master4 with filter<br>
>> f_export_to_master (missing in your config)<br>
>> 3) it is piped from table master4 to t_0005_as3 with filter where<br>
>> ixp_community_filter(3) (ixp_community_filter is also missing)<br>
>> 4) it is exported to bgp pb_0005_as3<br>
>><br>
>> At which point do you think it should be filtered and why?<br>
>> As I see, your routers (AS2) do not set any communities to the<br>
>> exported routes, so if you do not set them in any of those missing<br>
>> filters, then your check for the presence of the community will not<br>
>> fire.<br>
>><br>
>> On Mon, Apr 6, 2020 at 7:03 PM Fabiano D'Agostino<br>
>> <<a href="mailto:fabiano.dagostino96@gmail.com" target="_blank">fabiano.dagostino96@gmail.com</a>> wrote:<br>
>> ><br>
>> > This is the bird.conf of the route server:<br>
>> > <a href="https://pastebin.com/qwp6nBtz" rel="noreferrer" target="_blank">https://pastebin.com/qwp6nBtz</a><br>
>> > This is the bird.conf of one router:<br>
>> > <a href="https://pastebin.com/trwgKG92" rel="noreferrer" target="_blank">https://pastebin.com/trwgKG92</a><br>
>> ><br>
>> > Why does AS3 still receive routes from AS2? What am I missing?<br>
>> ><br>
>> > Thanks,<br>
>> ><br>
>> > Il giorno lun 6 apr 2020 alle ore 18:13 Alexander Zubkov <<a href="mailto:green@qrator.net" target="_blank">green@qrator.net</a>> ha scritto:<br>
>> >><br>
>> >> It is really hard to guess what routes you have actually in your<br>
>> >> bird's table and how your bird is configured.<br>
>> >><br>
>> >> > I just edited the bird.conf of the route server, should I also edit the bird.conf of the routers which are peering with the route server?<br>
>> >><br>
>> >> Filters on peers can affect only communities you are sending and other<br>
>> >> attributes, but they do not affect directly the logic of your route<br>
>> >> server's filters, there is no magic here.<br>
>> >><br>
>> >> On Mon, Apr 6, 2020 at 6:08 PM Fabiano D'Agostino<br>
>> >> <<a href="mailto:fabiano.dagostino96@gmail.com" target="_blank">fabiano.dagostino96@gmail.com</a>> wrote:<br>
>> >> ><br>
>> >> > Does 'show route where' exist as command? Because I have syntax error.<br>
>> >> > Anyway I set up my route server as here:<br>
>> >> > <a href="https://www.slideshare.net/apnic/bird-routing-daemon" rel="noreferrer" target="_blank">https://www.slideshare.net/apnic/bird-routing-daemon</a><br>
>> >> > But I am having the problem described here:<br>
>> >> > <a href="https://bird.network.cz/pipermail/bird-users/2010-September/001620.html" rel="noreferrer" target="_blank">https://bird.network.cz/pipermail/bird-users/2010-September/001620.html</a><br>
>> >> ><br>
>> >> > I just edited the bird.conf of the route server, should I also edit the bird.conf of the routers which are peering with the route server?<br>
>> >> ><br>
>> >> > Thanks,<br>
>> >> ><br>
>> >> > Il giorno lun 6 apr 2020 alle ore 17:50 Alexander Zubkov <<a href="mailto:green@qrator.net" target="_blank">green@qrator.net</a>> ha scritto:<br>
>> >> >><br>
>> >> >> Have you tried to check that in cli like:<br>
>> >> >> show route where bgp_out(...)<br>
>> >> >> And check that required route has all needed communities:<br>
>> >> >> show route all x.x.x.x/y<br>
>> >> >><br>
>> >> >> On Mon, Apr 6, 2020 at 5:35 PM Fabiano D'Agostino<br>
>> >> >> <<a href="mailto:fabiano.dagostino96@gmail.com" target="_blank">fabiano.dagostino96@gmail.com</a>> wrote:<br>
>> >> >> ><br>
>> >> >> > Hey,<br>
>> >> >> > thank you! I think I am having the same problem they had here:<br>
>> >> >> > <a href="https://bird.network.cz/pipermail/bird-users/2010-September/001620.html" rel="noreferrer" target="_blank">https://bird.network.cz/pipermail/bird-users/2010-September/001620.html</a><br>
>> >> >> ><br>
>> >> >> > But I didn't understand how they solved.<br>
>> >> >> ><br>
>> >> >> > Regards,<br>
>> >> >> > Fabiano<br>
>> >> >> ><br>
>> >> >> > Il giorno lun 6 apr 2020 alle ore 17:16 Cybertinus <<a href="mailto:bird@cybertinus.nl" target="_blank">bird@cybertinus.nl</a>> ha scritto:<br>
>> >> >> >><br>
>> >> >> >> Hello Fabiano,<br>
>> >> >> >><br>
>> >> >> >><br>
>> >> >> >> BGP Communities are basically tags you add to a prefix that is received from, or send to, a peer. And in Bird you can do whatever you want with these communities. A community by itself has no meaning and has no influence on the routing decision whatsoever. It is the meaning you add to it in your configuration what makes them work.<br>
>> >> >> >><br>
>> >> >> >> More information about communities: <a href="https://en.wikipedia.org/wiki/Border_Gateway_Protocol#Communities" rel="noreferrer" target="_blank">https://en.wikipedia.org/wiki/Border_Gateway_Protocol#Communities</a><br>
>> >> >> >><br>
>> >> >> >><br>
>> >> >> >> Kind regards,<br>
>> >> >> >> Cybertinus<br>
>> >> >> >><br>
>> >> >> >><br>
>> >> >> >> On 2020-04-06 17:03, Fabiano D'Agostino wrote:<br>
>> >> >> >><br>
>> >> >> >> and how these kind of checks are handled?<br>
>> >> >> >> if (myas,peeras) ~ bgp_community  what is bgp_community?<br>
>> >> >> >><br>
>> >> >> >> Thanks,<br>
>> >> >> >><br>
>> >> >> >> Il giorno lun 6 apr 2020 alle ore 15:32 Fabiano D'Agostino <<a href="mailto:fabiano.dagostino96@gmail.com" target="_blank">fabiano.dagostino96@gmail.com</a>> ha scritto:<br>
>> >> >> >><br>
>> >> >> >> Thank you, but "if the route does not come from BGP then false"<br>
>> >> >> >> here I have:<br>
>> >> >> >> protocol pipe a {<br>
>> >> >> >>     table master;<br>
>> >> >> >>     mode transparent;<br>
>> >> >> >>     peer table a;<br>
>> >> >> >>     import all;<br>
>> >> >> >>     export where bgp_out(x); => this becomes false, what does this mean?<br>
>> >> >> >>     #export all;<br>
>> >> >> >> }<br>
>> >> >> >><br>
>> >> >> >> Thanks,<br>
>> >> >> >><br>
>> >> >> >> Il giorno lun 6 apr 2020 alle ore 10:50 Bernd Naumann <<a href="mailto:bena@spreadshirt.net" target="_blank">bena@spreadshirt.net</a>> ha scritto:<br>
>> >> >> >><br>
>> >> >> >> On 05.04.20 23:08, Fabiano D'Agostino wrote:<br>
>> >> >> >> > Good evening,<br>
>> >> >> >> > could someone explain me the meaning of these lines?<br>
>> >> >> >> ><br>
>> >> >> >> > function bgp_out(int peeras)<br>
>> >> >> >> > {<br>
>> >> >> >> > if ! (source = RTS_BGP ) then return false;<br>
>> >> >> >> > if peeras > 65535 then return true; ### communities do not support AS32<br>
>> >> >> >> > if (0,peeras) ~ bgp_community then return false;<br>
>> >> >> >> > if (myas,peeras) ~ bgp_community then return true;<br>
>> >> >> >> > if (0, myas) ~ bgp_community then return false;<br>
>> >> >> >> > return true;<br>
>> >> >> >> > }<br>
>> >> >> >> ><br>
>> >> >> >> > Thanks,<br>
>> >> >> >> ><br>
>> >> >> >> > Fabiano<br>
>> >> >> >> ><br>
>> >> >> >><br>
>> >> >> >> Morning,<br>
>> >> >> >><br>
>> >> >> >> I can not cover the whole section but as a start...<br>
>> >> >> >><br>
>> >> >> >> * if the route does not come from BGP then false (routing table source?)<br>
>> >> >> >> * if the remote AS Number is greater 65535 (16 Bit) then "just" return<br>
>> >> >> >> true (see AS 32 Bit Numbers, and the non-support of older<br>
>> >> >> >> devices/implementations)<br>
>> >> >> >> * For the next 3 I'm not 100% sure how to read but I found<br>
>> >> >> >> <a href="https://bird-users.network.narkive.com/3uDbo6H9/any-ix-willing-to-share-their-config" rel="noreferrer" target="_blank">https://bird-users.network.narkive.com/3uDbo6H9/any-ix-willing-to-share-their-config</a><br>
>> >> >> >><br>
>> >> >> >> ```<br>
>> >> >> >> 0:XXXXX - Do not announce route to peer XXXXX<br>
>> >> >> >> 0:MyASN - Do not announce route to all peers<br>
>> >> >> >> MyASN:XXXXX - Announce route to peer XXXXX only<br>
>> >> >> >> MyASN:MyASN - Announce routes to all peers. This community is<br>
>> >> >> >> automatically added to all routes that are not<br>
>> >> >> >> tagged with any of MyASN:XXXXX communities.<br>
>> >> >> >> ```<br>
>> >> >> >><br>
>> >> >> >> Maybe this helps a little bit.<br>
>> >> >> >><br>
>> >> >> >> Bernd<br>
</blockquote></div>