{"id":242,"date":"2017-04-20T12:24:02","date_gmt":"2017-04-20T17:24:02","guid":{"rendered":"https:\/\/adamkuj.net\/blog\/?p=242"},"modified":"2021-05-11T08:59:16","modified_gmt":"2021-05-11T13:59:16","slug":"level3s-filtergen-tips-and-tricks","status":"publish","type":"post","link":"https:\/\/adamkuj.net\/blog\/2017\/04\/20\/level3s-filtergen-tips-and-tricks\/","title":{"rendered":"Level3&#8217;s Filtergen &#8211; Tips and Tricks"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-medium wp-image-254\" src=\"https:\/\/adamkuj.net\/blog\/wp-content\/uploads\/2017\/04\/centurylink-level-3-300x177.jpg\" alt=\"\" width=\"300\" height=\"177\" srcset=\"https:\/\/adamkuj.net\/blog\/wp-content\/uploads\/2017\/04\/centurylink-level-3-300x177.jpg 300w, https:\/\/adamkuj.net\/blog\/wp-content\/uploads\/2017\/04\/centurylink-level-3-624x368.jpg 624w, https:\/\/adamkuj.net\/blog\/wp-content\/uploads\/2017\/04\/centurylink-level-3.jpg 640w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/>BGP customers of Level3 (AS3356) would do well to learn the intricacies of their filtergen system. Level3 uses filtergen to build route filters toward customer BGP sessions. You can accidentally affect what traffic gets exchanged over your AS3356 transit if you don&#8217;t manager your IRR records carefully.<\/p>\n<p>Many other large networks operate their own customer-centric IRR&#8217;s too. However, I always recommend going with a 3rd party IRR. While Level3 customers are free to register their objects in&nbsp;Level3&#8217;s IRR, they may also use&nbsp;the IRR of their choice. RADB, RIPE, and ARIN are popular choices (The free ALTDB isn&#8217;t very well maintained&nbsp;anymore).<\/p>\n<p>By default, Level 3 builds filters based on entries in their own LEVEL3 IRR. However<!--more-->, power-user customers don&#8217;t necessarily want to register all their objects in LEVEL3&#8217;s IRR (or worse yet &#8211; have Level3 proxy-register objects for them). If you wish for Level3 to use your records from another IRR (such as RIPE, RADB or ARIN), you can specify that. You need to let Level3 know. But you can also test the results yourself, using Level3&#8217;s WHOIS inteface.<\/p>\n<p>i.e. the following queries can all produce different results (except for the the&nbsp;first two &#8212; which are the same thing).<\/p>\n<p><code>whois -h filtergen.level3.net AS20205<br \/>\nwhois -h filtergen.level3.net LEVEL3::AS20205<br \/>\nwhois -h filtergen.level3.net RADB::AS20205<br \/>\nwhois -h filtergen.level3.net ARIN::AS20205<br \/>\nwhois -h filtergen.level3.net ALTDB::AS20205<\/code><\/p>\n<p>By default, you will only get IPv4 results. If you want IPv6, you have to specify as follows:<\/p>\n<p><code>whois -h filtergen.level3.net \"AS20205 -v6\"<br \/>\nwhois -h filtergen.level3.net \"RADB::AS20205 -v6\"<\/code><\/p>\n<p>I prefer using an AS-SET to group my own AS&#8217;s prefixes, plus all customer AS prefixes together. However, that gets tricky if I use a different IRR than my customers use. For example, if tell Level3 to use an AS-SET of&nbsp;ARIN::AS-AMPLEX, but a customer within AS-AMPLEX (say AS65000) uses RADB, then Level3&#8217;s filtergen may miss AS65000&#8217;s objects. AS65000 could re-register their objects in ARIN &#8211; but that is not a practical workaround.<\/p>\n<p>Rather, I can use &#8220;remark&#8221; comments in the AS-AMPLEX AS-SET object to direct Level3 to the proper source of member objects.<\/p>\n<p>i.e.<\/p>\n<p><code>as-set: AS-AMPLEX<br \/>\ndescr: Amplex Transit Customers<br \/>\nmembers: AS20205<br \/>\nmembers: AS65000<br \/>\nremarks: Level3 members: ARIN::AS20205<br \/>\nremarks: Level3 members: RADB::AS65000<\/code><\/p>\n<p>You can achieve similar results with specialized filtergen queries, where you specify which IRR&#8217;s to fetch objects from &#8212; but it&#8217;s not as granular as using remarks in the AS-SET object.<\/p>\n<p>i.e.<\/p>\n<p><code>whois -h filtergen.level3.net \"ARIN::AS-AMPLEX -searchpath=ARIN;RADB -recurseok -warnonly\"<\/code><\/p>\n<p>Besides Level3&#8217;s filtergen whois interface,&nbsp;<a href=\"https:\/\/www.dan.me.uk\/filtergen\">Dan Austin<\/a>&nbsp;and <a href=\"http:\/\/irrexplorer.nlnog.net\/\">NLNOG<\/a> have useful resources for troubleshooting IRR entries.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>BGP customers of Level3 (AS3356) would do well to learn the intricacies of their filtergen system. Level3 uses filtergen to build route filters toward customer BGP sessions. You can accidentally affect what traffic gets exchanged over your AS3356 transit if you don&#8217;t manager your IRR records carefully. Many other large networks operate their own customer-centric [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[51,49,44,43,46,45,47,42,48,50],"class_list":["post-242","post","type-post","status-publish","format-standard","hentry","category-networking-tools","tag-altdb","tag-arin","tag-as3356","tag-centurylink","tag-filtergen","tag-irr","tag-irrtoolset","tag-level3","tag-radb","tag-ripe"],"_links":{"self":[{"href":"https:\/\/adamkuj.net\/blog\/wp-json\/wp\/v2\/posts\/242","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/adamkuj.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/adamkuj.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/adamkuj.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/adamkuj.net\/blog\/wp-json\/wp\/v2\/comments?post=242"}],"version-history":[{"count":20,"href":"https:\/\/adamkuj.net\/blog\/wp-json\/wp\/v2\/posts\/242\/revisions"}],"predecessor-version":[{"id":310,"href":"https:\/\/adamkuj.net\/blog\/wp-json\/wp\/v2\/posts\/242\/revisions\/310"}],"wp:attachment":[{"href":"https:\/\/adamkuj.net\/blog\/wp-json\/wp\/v2\/media?parent=242"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/adamkuj.net\/blog\/wp-json\/wp\/v2\/categories?post=242"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/adamkuj.net\/blog\/wp-json\/wp\/v2\/tags?post=242"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}