<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Bgp - Павел Васильев. Блог.</title>
    <link>https://pavel.su/bgp/</link>
    <description>Bgp</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>ru-RU</language>
    <lastBuildDate>Fri, 30 Oct 2026 18:25:53 &#43;0000</lastBuildDate>
    <atom:link href="https://pavel.su/bgp/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>BGP: диагностика анонсируемых маршрутов</title>
      <link>https://pavel.su/bgp/bgp-announcements-diagnostics/</link>
      <pubDate>Wed, 08 Mar 2023 00:00:00 &#43;0000</pubDate>
      <guid>https://pavel.su/bgp/bgp-announcements-diagnostics/</guid>
      <description>Трафик в сторону вашей автономной системы возможен только в случае, когда вы анонсируете в мир свои сети по протоколу BGP. Есть анонс от вас - есть трафик к вам, нет от вас анонса - трафик к вам не приходит.
То же верно для маршрутов других операторов связи в вашей таблице: есть внешний маршрут - трафик уходит, нет - нет. В последнем случае есть исключение - маршрут 0.0.0.0/0, он же default route, он же маршрут по умолчанию. В общем случае, defaul route - маршрут для всего трафика, для которого нет отдельных записей в таблице маршрутизации.
</description>
      <content:encoded><![CDATA[<p>Трафик в сторону вашей автономной системы возможен только в случае, когда вы анонсируете в мир свои сети по протоколу BGP. Есть анонс от вас - есть трафик к вам, нет от вас анонса - трафик к вам не приходит.</p>
<p>То же верно для маршрутов других операторов связи в вашей таблице: есть внешний маршрут - трафик уходит, нет - нет. В последнем случае есть исключение - маршрут 0.0.0.0/0, он же <strong>default route</strong>, он же маршрут по умолчанию. В общем случае, defaul route - маршрут для всего трафика, для которого нет отдельных записей в таблице маршрутизации.</p>
<p><em><strong>Что делать, когда, вроде бы, BGP работают, анонсы уходят, а трафика нет? Здесь - про диагностику исходящих маршрутов по BGP протоколу.</strong></em> <strong><em>По шагам.</em></strong></p>
<h2 id="записи-в-бд-ripe">Записи в БД RIPE</h2>
<p>Как ни странно, настройка BGP начинается ещё до того, как вы открыли консоль на бордер.</p>
<p>При BGP-взаимодействии операторы связи строят фильтры принимаемых от вас маршрутов. В первую очередь держим в голове то, что аплинк фильтрует от вас маршруты.</p>
<p>Какие именно записи нужны в БД RIPE (или другой региональной регистратуре) читайте в статье <a href="https://pavel.su/internet/db-ripe-objects-for-bgp-announces/">RIPE: Набор записей для BGP анонсов</a>.</p>
<p>Отсутствие корректного набора записей в БД RIPE может дать весьма странные результаты. Например: маршрут у ваших аплинков есть, у некоторых соседей есть, а магистральные операторы анонс сети не видят или пользуются маршрутом 0.0.0.0/0 для отправки трафика к вашей сети.</p>
<p><strong>Проверьте записи!</strong></p>
<h2 id="диагностика-bgp-сессии">Диагностика BGP сессии</h2>
<h3 id="bgp-state-established">BGP state: Established</h3>
<p>Первое: проверяем в каком состоянии BGP-сессия - должна быть в Established. Все остальные состояния (Active, OpenSent, OpenConfirm, Down, Never, AdminDown и другие) - не являются рабочим состоянием, маршруты не передаются.</p>
<p>Проверка: show ip bgp summ, команда показывает состояния всех настроенных сессий:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">Cisco#sh ip bgp summary 
</span></span><span class="line"><span class="cl">BGP router identifier 195.209.62.233, local AS number 12722
</span></span><span class="line"><span class="cl">....
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Neighbor        V           AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
</span></span><span class="line"><span class="cl">10.4.1.253      4       209030   13220   13950 183080937    0    0 4d10h           0
</span></span><span class="line"><span class="cl">10.20.15.32     4        12722       0       0        1    0    0 never    Idle
</span></span><span class="line"><span class="cl">195.209.44.241  4       202764  269463 18916699 183080937    0    0 11w4d           2
</span></span><span class="line"><span class="cl">195.209.45.236  4        12722 34737931  263735 183081185    0    0 11w6d      542769
</span></span><span class="line"><span class="cl">195.209.45.240  4        12722 17862348  263739 183081185    0    0 11w6d      443071
</span></span><span class="line"><span class="cl">M9-F0-ASR3_h3649#
</span></span></code></pre></div><p>Выделен сосед, сессия с которым никогда не устанавливалась (по крайней мере, после последней перезагрузки). Во всех остальных случая будет обозначено время с последнего изменения сессии</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">Juniper&gt; show bgp summary 
</span></span><span class="line"><span class="cl">195.209.34.170        49598      29298    5403742       0      10 1w2d 7:47:58 4/5/4/0              0/0/0/0
</span></span><span class="line"><span class="cl">195.209.34.227       205824      84203      81865       0       6 3w5d 19:20:43 1/1/1/0              0/0/0/0
</span></span><span class="line"><span class="cl">195.209.34.241        13238     537237     572825       0       2 4w1d 22:53:11 34/34/34/0           0/0/0/0
</span></span><span class="line"><span class="cl">195.209.37.42         51916          0          0       0       0 18w0d 1:18:23 Idle  
</span></span><span class="line"><span class="cl">195.209.37.138        51916          0          0       0       0 18w0d 1:18:23 Connect
</span></span><span class="line"><span class="cl">195.209.42.139       198770     406525   63214068       0       0 18w0d 1:18:11 12/12/12/0           0/0/0/0
</span></span><span class="line"><span class="cl">195.209.42.140       198770      71268   10959622       0       0 3w1d 2:25:37 0/0/0/0              0/0/0/0
</span></span><span class="line"><span class="cl">195.209.44.58         61293     569271   17057775       0       3 4w5d 17:37:52 1/1/1/0              0/0/0/0
</span></span></code></pre></div><h3 id="анонсы-маршрутов-по-bgp-сессии">Анонсы маршрутов по BGP сессии</h3>
<p>Далее - что именно вы анонсируете со своего оборудования конкретному BGP-соседу.</p>
<p><strong>ВАЖНО: анонсируемые сети должны быть /24 и крупнее!</strong></p>
<p>Исключение: маршруты /32 для blackhole, которые должны быть отмечены специальными community или оформлены по другим правилам, предоставляемым вашим аплинком.</p>
<p>То есть /24, /23&hellip;. /19&hellip; /8&hellip; - подходят.</p>
<p>Теоретически можно анонсировать аплинку /25, /26 и ещё более мелкие. Через некоторых аплинков такие сети могут попасть в глобальные магистрали. Но их работа может быть нестабильной. Обычно операторы не принимают анонсы с маской /25 и длиннее.</p>
<h4 id="команды-проверки-bgp-анонсов-на-cisco">Команды проверки BGP анонсов на Cisco</h4>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">h3649#show ip bgp neighbors 195.209.45.240 advertised-routes 
</span></span><span class="line"><span class="cl">BGP table version is 170689245, local router ID is 195.209.62.233
</span></span><span class="line"><span class="cl">Status codes: s suppressed, d damped, h history, * valid, &gt; best, i - internal, 
</span></span><span class="line"><span class="cl">              r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, 
</span></span><span class="line"><span class="cl">              x best-external, a additional-path, c RIB-compressed, 
</span></span><span class="line"><span class="cl">              t secondary path, L long-lived-stale,
</span></span><span class="line"><span class="cl">Origin codes: i - IGP, e - EGP, ? - incomplete
</span></span><span class="line"><span class="cl">RPKI validation codes: V valid, I invalid, N Not found
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">     Network          Next Hop            Metric LocPrf Weight Path
</span></span><span class="line"><span class="cl"> *&gt;   5.45.80.240/32   172.31.255.1            20         32768 ?
</span></span><span class="line"><span class="cl"> *&gt;   5.45.83.119/32   172.31.255.1            20         32768 ?
</span></span><span class="line"><span class="cl"> *&gt;   37.252.1.115/32  172.31.255.1            20         32768 ?
</span></span><span class="line"><span class="cl"> *&gt;   91.105.232.6/32  172.31.255.1            20         32768 ?
</span></span><span class="line"><span class="cl"> *&gt;   95.181.161.66/32 172.31.255.1            20         32768 ?
</span></span><span class="line"><span class="cl"> *&gt;   109.248.224.0/24 195.209.44.241                180      0 202764 i
</span></span><span class="line"><span class="cl"> *&gt;   188.64.168.110/32
</span></span><span class="line"><span class="cl">                      172.31.255.1            20         32768 ?
</span></span><span class="line"><span class="cl"> *&gt;   188.64.168.242/32
</span></span><span class="line"><span class="cl">                      172.31.255.1            20         32768 ?
</span></span><span class="line"><span class="cl"> *&gt;   188.64.168.243/32
</span></span><span class="line"><span class="cl">                      172.31.255.1            20         32768 ?
</span></span><span class="line"><span class="cl"> *&gt;   188.64.168.244/32
</span></span><span class="line"><span class="cl">                      172.31.255.1            20         32768 ?
</span></span><span class="line"><span class="cl"> *&gt;   188.130.222.0/24 195.209.44.241                180      0 202764 i
</span></span><span class="line"><span class="cl"> *&gt;   195.209.40.3/32  172.31.255.1            20         32768 ?
</span></span><span class="line"><span class="cl"> *&gt;   195.209.50.190/32
</span></span><span class="line"><span class="cl">                      172.31.255.1             0         32768 ?
</span></span><span class="line"><span class="cl"> *&gt;   195.209.52.47/32 172.31.255.1            20         32768 ?
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Total number of prefixes 14 
</span></span><span class="line"><span class="cl">h3649#
</span></span></code></pre></div><p>Здесь - анонсы маршрутизируемых сетей /24 плюс анонсы нескольких маршрутов /32 для blackhole.</p>
<p><strong>NB</strong>: в целях мониторинга можно хоть график строить по Total:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">h3649#sh ip bgp neighbors 195.209.45.240 advertised-routes | include Total
</span></span><span class="line"><span class="cl">Total number of prefixes 14 
</span></span></code></pre></div><h4 id="команда-проверки-bgp-анонсов-для-juniper">Команда проверки BGP анонсов для Juniper</h4>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">pvasiliev@J1-M9-F0&gt; show route advertising-protocol bgp 185.1.153.0 
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">inet.0: 949835 destinations, 5057153 routes (949834 active, 83 holddown, 6 hidden)
</span></span><span class="line"><span class="cl">  Prefix		  Nexthop	       MED     Lclpref    AS path
</span></span><span class="line"><span class="cl">  2.59.48.0/24            Self                                    I
</span></span><span class="line"><span class="cl">  5.182.116.0/24          Self                                    I
</span></span><span class="line"><span class="cl">* 5.183.153.0/24          Self                                    49598 ?
</span></span><span class="line"><span class="cl">  31.222.240.0/24         Self                                    212667 I
</span></span><span class="line"><span class="cl">... &lt;cut&gt; ...
</span></span><span class="line"><span class="cl">  45.15.255.0/24          Self                                    I
</span></span><span class="line"><span class="cl">  45.80.120.0/22          Self                                    I
</span></span><span class="line"><span class="cl">* 45.82.216.0/24          Self                                    208274 I
</span></span><span class="line"><span class="cl">  45.85.64.0/24           Self                                    I
</span></span><span class="line"><span class="cl">  45.85.67.0/24           Self                                    I
</span></span></code></pre></div><p>Тут, кстати, Total нету, но можно погрепать по слешику и посчитать количество строчек:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">pvasiliev@J1-M9-F0&gt; show route advertising-protocol bgp 185.1.153.0 | match / | count 
</span></span><span class="line"><span class="cl">Count: 155 lines
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">pvasiliev@J1-M9-F0&gt; 
</span></span></code></pre></div><h4 id="команды-проверки-bgp-анонсов-на-huawei">Команды проверки BGP анонсов на Huawei</h4>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">&lt;Huawei&gt;display bgp routing-table peer 195.209.44.225 advertised-routes
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> BGP Local router ID is 195.209.50.0
</span></span><span class="line"><span class="cl"> Status codes: * - valid, &gt; - best, d - damped,
</span></span><span class="line"><span class="cl">               h - history,  i - internal, s - suppressed, S - Stale
</span></span><span class="line"><span class="cl">               Origin : i - IGP, e - EGP, ? - incomplete
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> Total Number of Routes: 11
</span></span><span class="line"><span class="cl">      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> *&gt;   46.22.55.0/26      195.209.44.229  0                     0      3.7198i
</span></span><span class="line"><span class="cl"> *&gt;   46.22.55.64/27     195.209.44.229  0                     0      3.7198i
</span></span><span class="line"><span class="cl"> *&gt;   195.209.48.0       195.209.44.229  0                     0      3.7198i
</span></span><span class="line"><span class="cl"> *&gt;   195.209.50.0/25    195.209.44.229  11                    0      3.7198i
</span></span><span class="line"><span class="cl"> *&gt;   195.209.50.128/27  195.209.44.229  0                     0      3.7198i
</span></span></code></pre></div><p><em>* В случае Huawei приведен реальный пример анонсов сетей /25 и более мелких. Именно в данном случае - это нормально, так как на стороне аплинка производится суммаризация маршрутов в один большой. Это НЕ является стандартным поведением, настраивается по согласованию с аплинком.</em></p>
<h2 id="bgp-looking-glass-проверка-анонсов-в-глобальной-сети">BGP Looking Glass: проверка анонсов в глобальной Сети</h2>
<h3 id="bgp-looking-glass-у-вашего-аплинка">BGP Looking Glass у вашего аплинка</h3>
<p>Попросите у вашего аплинка ссылку на его страницу BGP Looking Glass. Если такой ресурс в сети оператора есть - пользуйтесь. Часто это сильно ускоряет процесс решения проблем.</p>
<p>У некоторых операторов Looking Glass закрыт паролем, ACL-ями или доступ регулируется каким-то ещё образом. Поэтому лучший вариант - спросить есть ли у оператора LG-сервис и как получить к нему доступ.</p>
<h3 id="мировые-looking-glass">Мировые Looking Glass</h3>
<p>В сети достаточно много общедоступных ресурсов BGP Looking Glass. Найти LG нужного оператора, магистрального оператора, регионального оператора в конкретной стране и тд можно:</p>
<ol>
<li>
<p>Попытаться найти через поисковик, например: &ldquo;bgp Looking Glass Telia&rdquo;</p>
</li>
<li>
<p>в списках BGP Looking Glass, например:<br>
- <a href="https://lookinglass.org">LookinGlass.org</a><br>
- <a href="http://www.bgplookingglass.com">www.bgplookingglass.com</a><br>
- <a href="https://www.bgp4.as/looking-glasses">bgp4.as</a><br>
&hellip;</p>
</li>
<li>
<p>В базе <a href="https://PeeringDB.com">PeeringDB.com</a>: в описании автономной системы есть отдельное поле &ldquo;Looking Glass URL&rdquo;</p>
</li>
</ol>
<p>Выбрав случайным образом сторонний Looking Glass в Сети вы можете проверить проходит ли ваш анонс какому-то третьему оператору, не связанному с вами или вашим аплинком. Другими словами, есть ли ваш маршрут в глобальной таблице маршрутизации, правильная ли у него маска, AS и тд.</p>
<p>Например, проверка маршрута 195.209.32.0/19 в сети AS6453 TATA Telecom:</p>
<p><figure class="article-image">
    <a class="article-image__link" href="images/tata-req-1024x529.png" data-lightbox-image>
        <img
            src="images/tata-req-1024x529.png"
            alt=""
            loading="lazy"
            decoding="async"
            
            
            
            
            
        >
    </a>
    
</figure>
</p>
<p><figure class="article-image">
    <a class="article-image__link" href="images/tata-answ-1024x601.png" data-lightbox-image>
        <img
            src="images/tata-answ-1024x601.png"
            alt=""
            loading="lazy"
            decoding="async"
            
            
            
            
            
        >
    </a>
    
</figure>
</p>
<p>В данном случае - да, сеть видна в таблице, маска правильная, анонсирует AS12722.</p>
<p>Таким образом можно:</p>
<ul>
<li>
<p>достоверно проверить работу своего оборудования</p>
</li>
<li>
<p>достоверно узнать как работают анонсы у вашего аплинка (через общение с NOC)</p>
</li>
<li>
<p>с высокой долей вероятности узнать как распространяются ваши маршруты в сети Интернет</p>
</li>
</ul>
<p>Причем последний пункт <strong>более показательный</strong> - так как на сторонних ресурсах можно проверить как ваши маршруты выглядят у не-аффилированных операторов, то есть - в стандартной таблице маршуртизации, без &ldquo;ручных подкручиваний&rdquo;. Что есть наиболее достоверный вариант.</p>
<p><strong>Важно</strong>: обратите внимание на специфику анонсов через IX (Internet eXchange, точки обмена трафиком). Особенно если вы не понимаете откуда у вас взялись &ldquo;лишние&rdquo; аплинки.</p>
<p>Подробнее - в статье про IX-ы.</p>
]]></content:encoded>
    </item>
    <item>
      <title>RIPE: Набор записей для BGP анонсов</title>
      <link>https://pavel.su/bgp/db-ripe-objects-for-bgp-announces/</link>
      <pubDate>Sun, 19 Feb 2023 00:00:00 &#43;0000</pubDate>
      <guid>https://pavel.su/bgp/db-ripe-objects-for-bgp-announces/</guid>
      <description>Вы хотите быть максимально независимым участником сетевого обмена в Интернет. У вас есть номер автономной системы и блок IP-адресов. Это прекрасно. До самой настройки первой сессии по протоколу BGP вам нужно создать набор записей в БД RIPE, которые вам обеспечат успешную работу.
Здесь и далее пойдёт речь про базу данных RIPE. Но это же верно и для других RIR: ARIN, APNIC, AFRINIC, LACNIC.
Зачем это нужно? При внешнем сетевом взаимодействии нужно учитывать некоторые особенности:
</description>
      <content:encoded><![CDATA[<p>Вы хотите быть максимально независимым участником сетевого обмена в Интернет. У вас есть номер автономной системы и блок IP-адресов. Это прекрасно. До самой настройки первой сессии по протоколу BGP вам нужно создать набор записей в БД RIPE, которые вам обеспечат успешную работу.</p>
<hr>
<p><em>Здесь и далее пойдёт речь про базу данных RIPE. Но это же верно и для других RIR: ARIN, APNIC, AFRINIC, LACNIC.</em></p>
<hr>
<h2 id="зачем-это-нужно">Зачем это нужно?</h2>
<p>При внешнем сетевом взаимодействии нужно учитывать некоторые особенности:</p>
<ol>
<li>
<p>Принято, что операторы принимают друг от друга блоки адресов с маской /24 и короче (короче маска - больше размер сети).</p>
</li>
<li>
<p>Операторы строят фильтры принимаемых сетей от других операторов.</p>
</li>
<li>
<p>Фильтры строятся автоматически - скриптами, поэтому данные о сетях всегда должны быть актуальны.</p>
</li>
<li>
<p>Скрипты берут информацию из общедоступных баз данных (в России - БД RIPE).</p>
</li>
</ol>
<p>Другими словами, ДО начала настройки BGP-сессии с другим оператором связи у вас должны быть:</p>
<ol>
<li>
<p>Номер автономной системы</p>
</li>
<li>
<p>Блок IP-адресов</p>
</li>
<li>
<p>Блок должен быть /24 (256 адресов) или крупнее.</p>
</li>
<li>
<p>В БД RIPE должны быть созданы необходимые объекты.</p>
</li>
</ol>
<h2 id="объекты-в-бд-ripe">Объекты в БД RIPE</h2>
<h3 id="inetnum">inetnum</h3>
<p>Этот объект описывает ваш диапазон адресов. Например:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">inetnum:         195.209.32.0 - 195.209.63.255
</span></span><span class="line"><span class="cl">netname:         RU-RCN-19960719
</span></span><span class="line"><span class="cl">country:         RU
</span></span><span class="line"><span class="cl">org:             ORG-RL441-RIPE
</span></span><span class="line"><span class="cl">admin-c:         RA10008-RIPE
</span></span><span class="line"><span class="cl">tech-c:          REC-RIPE
</span></span><span class="line"><span class="cl">status:          ALLOCATED PA
</span></span><span class="line"><span class="cl">mnt-by:          RECONN-MNT
</span></span><span class="line"><span class="cl">mnt-by:          RIPE-NCC-HM-MNT
</span></span><span class="line"><span class="cl">created:         2020-03-11T10:37:10Z
</span></span><span class="line"><span class="cl">last-modified:   2020-05-04T09:06:03Z
</span></span><span class="line"><span class="cl">source:          RIPE
</span></span></code></pre></div><p>Объект описывает диапазон адресов 195.209.32.0 - 195.209.63.255, принадлежащий компании ORG-RL441-RIPE.</p>
<p>Это полный диапазон адресов, сеть /19. Эта сеть может быть анонсирована как единым блоком, так и разделена на несколько более мелких блоков, вплоть до /24.</p>
<h3 id="aut-num">aut-num</h3>
<p>Номер автономной системы. Этот объект не только показывает какой именно номер вам выделен, но описывает взаимодействие этой ASn с другими операторами. Кстати, RIPE при выделении номера автономной системы сразу просит указать номера AS не менее чем двух других операторов (ведь при подключении только к одному оператору фактически не требуется отдельный ASn - можно использовать номер вашего единственного апстрима).</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gdscript3" data-lang="gdscript3"><span class="line"><span class="cl"><span class="n">aut</span><span class="o">-</span><span class="n">num</span><span class="p">:</span>         <span class="n">AS12722</span>
</span></span><span class="line"><span class="cl"><span class="n">as</span><span class="o">-</span><span class="n">name</span><span class="p">:</span>         <span class="n">RECONN</span>
</span></span><span class="line"><span class="cl"><span class="n">org</span><span class="p">:</span>             <span class="n">ORG</span><span class="o">-</span><span class="n">RL441</span><span class="o">-</span><span class="n">RIPE</span>
</span></span><span class="line"><span class="cl"><span class="n">import</span><span class="p">:</span>          <span class="n">from</span> <span class="n">AS31500</span> <span class="n">accept</span> <span class="n">ANY</span>
</span></span><span class="line"><span class="cl"><span class="k">export</span><span class="p">:</span>          <span class="n">to</span> <span class="n">AS31500</span> <span class="n">announce</span> <span class="n">AS12722</span>
</span></span><span class="line"><span class="cl"><span class="n">import</span><span class="p">:</span>          <span class="n">from</span> <span class="n">AS210359</span> <span class="n">accept</span> <span class="n">ANY</span>
</span></span><span class="line"><span class="cl"><span class="k">export</span><span class="p">:</span>          <span class="n">to</span> <span class="n">AS210359</span> <span class="n">announce</span> <span class="n">AS12722</span>
</span></span><span class="line"><span class="cl"><span class="n">admin</span><span class="o">-</span><span class="n">c</span><span class="p">:</span>         <span class="n">RA10008</span><span class="o">-</span><span class="n">RIPE</span>
</span></span><span class="line"><span class="cl"><span class="n">tech</span><span class="o">-</span><span class="n">c</span><span class="p">:</span>          <span class="n">REC</span><span class="o">-</span><span class="n">RIPE</span>
</span></span><span class="line"><span class="cl"><span class="n">status</span><span class="p">:</span>          <span class="n">ASSIGNED</span>
</span></span><span class="line"><span class="cl"><span class="n">mnt</span><span class="o">-</span><span class="n">by</span><span class="p">:</span>          <span class="n">RIPE</span><span class="o">-</span><span class="n">NCC</span><span class="o">-</span><span class="n">END</span><span class="o">-</span><span class="n">MNT</span>
</span></span><span class="line"><span class="cl"><span class="n">mnt</span><span class="o">-</span><span class="n">by</span><span class="p">:</span>          <span class="n">RECONN</span><span class="o">-</span><span class="n">MNT</span>
</span></span><span class="line"><span class="cl"><span class="n">created</span><span class="p">:</span>         <span class="mi">2011</span><span class="o">-</span><span class="mi">02</span><span class="o">-</span><span class="mi">14</span><span class="n">T11</span><span class="p">:</span><span class="mi">14</span><span class="p">:</span><span class="mi">43</span><span class="n">Z</span>
</span></span><span class="line"><span class="cl"><span class="n">last</span><span class="o">-</span><span class="n">modified</span><span class="p">:</span>   <span class="mi">2022</span><span class="o">-</span><span class="mi">11</span><span class="o">-</span><span class="mi">01</span><span class="n">T08</span><span class="p">:</span><span class="mi">16</span><span class="p">:</span><span class="mi">57</span><span class="n">Z</span>
</span></span><span class="line"><span class="cl"><span class="n">source</span><span class="p">:</span>          <span class="n">RIPE</span><span class="c1"># Filtered</span>
</span></span></code></pre></div><p>Этот объект описывает номер автономной системы 12722 и двух апстримов - 31500 и 210359, от которых принимается полная таблица маршрутизации и анонсируются только маршруты AS12722.</p>
<h3 id="route">route</h3>
<p>Объект route, который связывает диапазон IP-адресов и номер автономной системы.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">route:           195.209.32.0/19
</span></span><span class="line"><span class="cl">descr:           RECONN network
</span></span><span class="line"><span class="cl">origin:          AS12722
</span></span><span class="line"><span class="cl">mnt-by:          RECONN-MNT
</span></span><span class="line"><span class="cl">created:         2015-05-11T13:18:34Z
</span></span><span class="line"><span class="cl">last-modified:   2015-05-11T13:18:34Z
</span></span><span class="line"><span class="cl">source:          RIPE
</span></span></code></pre></div><p>В данном случае - весь диапазон IP-адресов будет анонсироваться одним блоком /19 от автономной системы 12722.</p>
<p>Пожалуй, это ключевой объект - именно он показывает какой именно маршрут будет анонсироваться автономной системой.</p>
<h3 id="as-set">as-set</h3>
<p>Не всегда нужны, но важный объект.</p>
<p>Используется в тех случаях, когда к вам подключены другие операторы связи со своими автономными системами. В этом случае все номера анонсируемых вами автономных систем объединяются в одну группу - AS-SET. В неё включается номер вашей AS и номера автономных систем ваших клиентов либо их группы AS-SET:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">as-set:          AS-RECONN
</span></span><span class="line"><span class="cl">descr:           RECONN Group Network
</span></span><span class="line"><span class="cl">members:         AS6870  # номера AS ваших клиентов
</span></span><span class="line"><span class="cl">members:         AS8441
</span></span><span class="line"><span class="cl">members:         AS12722   # свой номер AS
</span></span><span class="line"><span class="cl">members:         AS29634
</span></span><span class="line"><span class="cl">members:         AS35594
</span></span><span class="line"><span class="cl">members:         AS39678
</span></span><span class="line"><span class="cl">members:         AS49598
</span></span><span class="line"><span class="cl">members:         AS51916
</span></span><span class="line"><span class="cl">members:         AS56425
</span></span><span class="line"><span class="cl">members:         AS59459
</span></span><span class="line"><span class="cl">members:         AS61269
</span></span><span class="line"><span class="cl">members:         AS61293
</span></span><span class="line"><span class="cl">members:         AS198770
</span></span><span class="line"><span class="cl">members:         AS199278
</span></span><span class="line"><span class="cl">members:         AS202764
</span></span><span class="line"><span class="cl">members:         AS203806
</span></span><span class="line"><span class="cl">members:         AS205824
</span></span><span class="line"><span class="cl">members:         AS208274
</span></span><span class="line"><span class="cl">members:         AS210359
</span></span><span class="line"><span class="cl">members:         AS212667
</span></span><span class="line"><span class="cl">members:         AS-FENIX    #группы AS других операторов
</span></span><span class="line"><span class="cl">members:         AS-ATSCOM
</span></span><span class="line"><span class="cl">tech-c:          REC-RIPE
</span></span><span class="line"><span class="cl">admin-c:         REC-RIPE
</span></span><span class="line"><span class="cl">mnt-by:          RECONN-MNT
</span></span><span class="line"><span class="cl">created:         2015-04-16T14:46:15Z
</span></span><span class="line"><span class="cl">last-modified:   2022-11-01T08:04:36Z
</span></span><span class="line"><span class="cl">source:          RIPE
</span></span></code></pre></div><p>В случае использования AS-SET-ов необходимо несколько иначе описывать объект <strong>as-num</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gdscript3" data-lang="gdscript3"><span class="line"><span class="cl"><span class="n">aut</span><span class="o">-</span><span class="n">num</span><span class="p">:</span>         <span class="n">AS12722</span>
</span></span><span class="line"><span class="cl"><span class="n">as</span><span class="o">-</span><span class="n">name</span><span class="p">:</span>         <span class="n">RECONN</span>
</span></span><span class="line"><span class="cl"><span class="n">org</span><span class="p">:</span>             <span class="n">ORG</span><span class="o">-</span><span class="n">RL441</span><span class="o">-</span><span class="n">RIPE</span>
</span></span><span class="line"><span class="cl"><span class="n">import</span><span class="p">:</span>          <span class="n">from</span> <span class="n">AS31500</span> <span class="n">accept</span> <span class="n">ANY</span>
</span></span><span class="line"><span class="cl"><span class="k">export</span><span class="p">:</span>          <span class="n">to</span> <span class="n">AS31500</span> <span class="n">announce</span> <span class="n">AS</span><span class="o">-</span><span class="n">RECONN</span>
</span></span><span class="line"><span class="cl"><span class="n">import</span><span class="p">:</span>          <span class="n">from</span> <span class="n">AS210359</span> <span class="n">accept</span> <span class="n">ANY</span>
</span></span><span class="line"><span class="cl"><span class="k">export</span><span class="p">:</span>          <span class="n">to</span> <span class="n">AS210359</span> <span class="n">announce</span> <span class="n">AS</span><span class="o">-</span><span class="n">RECONN</span>
</span></span><span class="line"><span class="cl"><span class="n">admin</span><span class="o">-</span><span class="n">c</span><span class="p">:</span>         <span class="n">RA10008</span><span class="o">-</span><span class="n">RIPE</span>
</span></span><span class="line"><span class="cl"><span class="n">tech</span><span class="o">-</span><span class="n">c</span><span class="p">:</span>          <span class="n">REC</span><span class="o">-</span><span class="n">RIPE</span>
</span></span><span class="line"><span class="cl"><span class="n">status</span><span class="p">:</span>          <span class="n">ASSIGNED</span>
</span></span><span class="line"><span class="cl"><span class="n">mnt</span><span class="o">-</span><span class="n">by</span><span class="p">:</span>          <span class="n">RIPE</span><span class="o">-</span><span class="n">NCC</span><span class="o">-</span><span class="n">END</span><span class="o">-</span><span class="n">MNT</span>
</span></span><span class="line"><span class="cl"><span class="n">mnt</span><span class="o">-</span><span class="n">by</span><span class="p">:</span>          <span class="n">RECONN</span><span class="o">-</span><span class="n">MNT</span>
</span></span><span class="line"><span class="cl"><span class="n">created</span><span class="p">:</span>         <span class="mi">2011</span><span class="o">-</span><span class="mi">02</span><span class="o">-</span><span class="mi">14</span><span class="n">T11</span><span class="p">:</span><span class="mi">14</span><span class="p">:</span><span class="mi">43</span><span class="n">Z</span>
</span></span><span class="line"><span class="cl"><span class="n">last</span><span class="o">-</span><span class="n">modified</span><span class="p">:</span>   <span class="mi">2022</span><span class="o">-</span><span class="mi">11</span><span class="o">-</span><span class="mi">01</span><span class="n">T08</span><span class="p">:</span><span class="mi">16</span><span class="p">:</span><span class="mi">57</span><span class="n">Z</span>
</span></span><span class="line"><span class="cl"><span class="n">source</span><span class="p">:</span>          <span class="n">RIPE</span><span class="c1"># Filtered</span>
</span></span></code></pre></div><p>В этом случае, при взаимодействии с аплинками мы анонсируем все маршруты, включенные в группу AS-RECONN (as-set).</p>
<h2 id="как-строятся-bgp-фильтры">Как строятся BGP фильтры</h2>
<p>При настройке BGP-сессии с другим оператором связи ваш аплинк, скорее всего, будет выполнять настройку фильтров маршрутов, которые от вас принимает. Построение фильтров - процесс автоматический, он может выполняться различными скриптами (bgpq, ratoolset, rtconfig&hellip;). В любом случае, эти скрипты откуда-то должны взять исходную информацию. Именно эта информация описывается перечисленными объектами.</p>
<p>Фильтры могут быть как по AS-номерам, так и по списку префиксов.</p>
<p>Пример фильтра по AS-номерам:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">ip as-path access-list LISTNAME permit ^12722(_12722)*$
</span></span><span class="line"><span class="cl">ip as-path access-list LISTNAME permit ^12722(_[0-9]+)*_(6870|8441|23456|29634)$
</span></span><span class="line"><span class="cl">ip as-path access-list LISTNAME permit ^12722(_[0-9]+)*_(35594|39678|49598|51538)$
</span></span><span class="line"><span class="cl">ip as-path access-list LISTNAME permit ^12722(_[0-9]+)*_(51916|56425|58095|59459)$
</span></span><span class="line"><span class="cl">ip as-path access-list LISTNAME permit ^12722(_[0-9]+)*_(60904|61269|61293)$
</span></span></code></pre></div><p>Пример фильтра по префиксам:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">ip prefix-list LISTNAME permit 2.59.48.0/24
</span></span><span class="line"><span class="cl">ip prefix-list LISTNAME permit 5.45.80.0/22
</span></span><span class="line"><span class="cl">ip prefix-list LISTNAME permit 5.182.116.0/24
</span></span><span class="line"><span class="cl">ip prefix-list LISTNAME permit 5.183.153.0/24
</span></span><span class="line"><span class="cl">...
</span></span><span class="line"><span class="cl">ip prefix-list LISTNAME permit 195.209.32.0/19
</span></span><span class="line"><span class="cl">...
</span></span></code></pre></div><p>Или даже каким-то комбинированным вариантом.</p>
<p>Как именно будет строиться фильтр - определяет владелец AS.</p>
<p>В качестве исходных данных для построения фильтра задаётся номер автономной системы ASn, as-set и формат фильтра.</p>
<h2 id="итог-набор-необходимых-объектов-и-данных">Итог: набор необходимых объектов и данных</h2>
<p>Итого, перечислим необходимый набор объектов в БД RIPE для описания межпровайдероского взаимодействия:</p>
<ol>
<li>
<p><strong>inetnum</strong> - блок ваших IP-адресов (не менее /24 или 256 адресов одним блоком)</p>
</li>
<li>
<p><strong>aut-num</strong> - объект, описывающий номер вашей автономной системы ASn и её взаимодействия с вашими аплинками (обязательно указать номера AS ваших аплинков)</p>
</li>
<li>
<p><strong>route</strong> - объект, описывающий каким / какими блоками вы будете анонсировать ваши адреса. Блок должен быть привязан к номеру вашей AS.</p>
</li>
<li>
<p>(опционально) <strong>as-set</strong> - если вы анонсируете не только свою автономку, но и ещё кого-то транзитом.</p>
</li>
</ol>
<h2 id="что-будет-если-не-все-объекты-есть-в-бд-ripe">Что будет если не все объекты есть в БД RIPE?</h2>
<p>В случае отсутствия информации, отсутствия объектов, неактуальной информации и тд - построение фильтров вашими аплинками будет некорректным.</p>
<p>Учитывая то, что каждый оператор строит фильтры такие, которые считает нужными и этот процесс не стандартизирован, можно сказать, что у всех фильтры разные.</p>
<p>Мало того, есть операторы, которые вообще не выполняют фильтрацию. Обычно это весьма смелые, крупные транзитные операторы.</p>
<p>Получается, что несмотря на то, что вы честно анонсируете все необходимые маршруты и диагностика BGP-сессии на маршрутизаторе показывает, что всё хорошо, вы получаете потенциальную возможность непрохождения анонсов в произвольном месте сети - как на прямой сессии с вашим аплинком, так и где-то дальше, при взаимодействии с другими операторами.</p>
<blockquote>
<p>Настроили бордер, подняли BGP-сессии с двумя разными операторами. По обеим сессиям анонсируем одинаковый набор префиксов. Интернет работает, Looking Glass-ы показывают, что маршрут есть, всё хорошо.</p>
<p>При проведении технических работ отключаем одного из операторов, считая что второй оператор возьмёт на себя всю нагрузку и проблем не возникнет.</p>
<p>Однако, сеть тут же встаёт полностью - <strong>нет вообще никакой связи!</strong></p>
<p>Разобрались. Оказалось, что из-за некорректного описания взаимодействия в aut-num-объекте второй оператор построил фильтр, который просто запрещал приём всех префиксов. Нам полную таблицу анонсировал, а от нас префиксы не принимал.</p>
<p>Случай из жизни.</p>
</blockquote>
]]></content:encoded>
    </item>
  </channel>
</rss>
