Кропка абмену трафікам: ад вытокаў да стварэння ўласнай IX

Кропка абмену трафікам: ад вытокаў да стварэння ўласнай IX

«Вы далучыце да тэлефоннай сувязі паміж нашымі і хлопцамі на SRI…», Kleinrock… said in an interview:
"Вы тыпаваныя L і будуць абраныя на тэлефоне,"
"Yes, we see the L," came the response.
"Вы тыпаваны О, і мы абраныя,"
"Yes, we see the O."
"Then we typed the G, і the system crashed"…

Yet a revolution had begun…

The beginning of the internet.


Усім прывітанне!

Мяне клічуць Аляксандр, я сеткавы інжынер у кампаніі Linxdatacenter. У сённяшнім артыкуле прамова пайдзе пра кропкі абмену трафікам (Internet Exchange Point, IXP): аб тым, што папярэднічала іх з'яўленню, якія задачы яны вырашаюць і як будуюцца. Таксама ў дадзеным артыкуле я прадэманструю прынцып працы IXP з дапамогай платформы EVE-NG і праграмнага маршрутызатара BIRD, каб было разуменне, як гэта працуе пад капотам .

Трохі гісторыі

Калі паглядзець сюды, то можна заўважыць, што бурны рост колькасці кропак абмену трафікам пачаўся ў 1993 годзе. Гэта звязана з тым, што большасць трафіку аператараў сувязі, якія існавалі на той момант, праходзіла праз backbone-сетку ЗША. Так, напрыклад, калі трафік ішоў ад аператара ў Францыі да аператара ў Нямеччыне, ён з Францыі спачатку пападаў у ЗША, і толькі потым з ЗША у Нямеччыну. Backbone-сетка ў дадзеным выпадку выступала транзітам паміж Францыяй і Нямеччынай. Нават трафік унутры адной краіны часта праходзіў не наўпрост, а праз апорныя сеткі амерыканскіх аператараў.

Такі стан рэчаў адбіваўся не толькі на кошце дастаўкі транзітнага трафіку, але і на якасці каналаў і затрымцы. Колькасць карыстальнікаў сеткі Інтэрнет павялічвалася, з'яўляліся новыя аператары, аб'ём трафіку ўзрастаў, інтэрнэт сталеў. Аператары па ўсім свеце пачалі разумець, што патрэбен больш рацыянальны падыход да арганізацыі міжаператарскага ўзаемадзеяння. "Навошта мне, аператару А, плаціць за транзіт праз іншую краіну, каб даставіць трафік аператару Б, які размяшчаецца на суседняй вуліцы?". Прыкладна такое пытанне задавалі сабе аператары сувязі ў той час. Так, у розных частках свету ў пунктах канцэнтрацыі аператараў пачалі з'яўляцца пункты абмену трафікам:

  • 1994 - LINX у Лондане,
  • 1995 – DE-CIX у Франкфурце,
  • 1995 - MSK-IX, у Маскве і г.д.

Інтэрнэт і нашы дні

Канцэптуальна архітэктура сучаснага інтэрнэту ўяўляе сабою мноства аўтаномных сістэм (autonomous system, AS) і мноства сувязяў паміж імі, як фізічных, так і лагічных, якія вызначаюць шлях мінання трафіку ад адной AS да іншай.

У якасці AS звычайна выступаюць аператары сувязі, інтэрнэт-правайдэры, CDN, дата-цэнтры, кампаніі энтэрпрайз сегмента. AS арганізуюць лагічныя сувязі (peering) паміж сабой, як правіла, сродкамі пратакола BGP.

Тое, як аўтаномныя сістэмы арганізуюць гэтыя сувязі, вызначаецца шэрагам фактараў:

  • геаграфічнымі,
  • эканамічнымі,
  • палітычнымі,
  • дамоўленасцямі і агульнымі інтарэсамі паміж уладальнікамі AS,
  • і г.д.

Вядома, у дадзенай схеме ёсць пэўная структура і іерархія. Так, аператары дзеляцца на tier-1, tier-2 і tier-3, і калі кліентамі для мясцовага інтэрнэт-правайдэра (tier-3) з'яўляюцца, як правіла, звычайныя карыстачы, то, напрыклад, для аператараў узроўня tier-1 кліентамі з'яўляюцца іншыя аператары. Аператары tier-3 агрэгуюць на сабе трафік сваіх абанентаў, аператары сувязі tier-2, у сваю чаргу, агрэгуюць трафік tier-3 аператараў, а tier-1 - увесь інтэрнэт-трафік.

Схематычна гэта можна ўявіць так:

Кропка абмену трафікам: ад вытокаў да стварэння ўласнай IX
На дадзеным малюнку відаць, што трафік агрэгуецца знізу ўверх, г.зн. ад канчатковых карыстальнікаў да tier-1 аператарам. Таксама мае месца гарызантальны абмен трафікам паміж прыкладна раўназначнымі паміж сабой AS.

Неад'емнай часткай і адначасова недахопам дадзенай схемы з'яўляецца нейкая бязладнасць сувязяў паміж аўтаномнымі сістэмамі, якія размяшчаюцца бліжэй да канчатковага карыстача, у межах геаграфічнай зоны. Разгледзім карцінку ніжэй:

Кропка абмену трафікам: ад вытокаў да стварэння ўласнай IX

Выкажам здагадку, што ў буйным горадзе прысутнічае 5 аператараў сувязі, пірынг паміж якімі, па тых ці іншых чынніках, арганізаваны, як паказана вышэй.

Калі карыстач Пеця, падлучаны да інтэрнэт-правайдэра Go, захоча атрымаць доступ да сервера, падлучанаму да правайдэра ASM, то трафік паміж імі будзе змушаны праходзіць праз 5 аўтаномных сістэм. Такім чынам павялічваецца затрымка, т.я. павялічваецца колькасць сеткавых прылад, праз якія пайдзе трафік, а таксама аб'ём транзітнага трафіку на аўтаномных сістэмах паміж Go і ASM.

Як скараціць колькасць транзітных AS, якія вымушаны праходзіць трафік? Правільна - кропка абмену трафікам.

У нашы дні з'яўленне новых IXP абумоўлена ўсё тымі ж запатрабаваннямі, што і ў пачатку 90-х-2000-х, толькі ў драбнейшым маштабе, у адказ на якая павялічваецца колькасць аператараў сувязі, карыстачоў і трафіку, якая расце колькасць кантэнту, генераванага CDN-сеткамі і дата-цэнтрамі.

Што такое кропка абмену трафікам?

Кропка абмену трафікам - гэта месца са спецыяльнай сеткавай інфраструктурай, дзе зацікаўленыя ва ўзаемным абмене трафікам ўдзельнікі, арганізуюць узаемны пірынг. Асноўныя ўдзельнікі пунктаў абмену трафікам: аператары сувязі, інтэрнэт-правайдэры, правайдэры кантэнту і дата-цэнтры. У кропках абмену трафікам удзельнікі злучаюцца паміж сабой напрамую. Гэта дазваляе вырашыць наступныя задачы:

  • паменшыць затрымку,
  • скараціць колькасць транзітнага трафіку,
  • аптымізаваць маршрутызацыю паміж AS.

Улічваючы, што IXP прысутнічаюць у многіх буйных гарадах свету, то гэта ўсё спрыяльна адбіваецца і на сетцы Інтэрнэт у цэлым.

Калі вышэйапісаную сітуацыю з Пецяй вырашаць з дапамогай IXP, то атрымаецца прыкладна так:

Кропка абмену трафікам: ад вытокаў да стварэння ўласнай IX

Як уладкованая кропка абмену трафікам?

Як правіла, IXP - гэта асобная AS са сваім блокам публічных IPv4/IPv6 адрасоў.

Сетка IXP часцей за ўсё ўяўляе з сябе суцэльны L2 дамен. Часам гэта проста VLAN, у якім размяшчаюцца ўсе кліенты IXP. Калі ж гаворка ідзе пра буйнейшыя, геаграфічна размеркаваных IXP, то для арганізацыі L2 дамена могуць выкарыстоўвацца такія тэхналогіі, як MPLS, VXLAN і т.д.

Элементы IXP

  • СКС. Тут нічога незвычайнага: стойкі, аптычныя кросы, патч-панэлі.
  • Камутатары - аснова IXP. Порт камутатара - кропка ўваходу ў сетку IXP. Таксама камутатары выконваюць частку функцый па бяспецы - фільтруюць смеццевы трафік, які не павінен прысутнічаць на сетцы IXP. Як правіла, камутатары падбіраюцца зыходзячы з патрабаванняў да функцыяналу - надзейнасць, якая падтрымліваецца хуткасць партоў, функцыі бяспекі, падтрымка sFlow і г.д.
  • Route server (RS) – неад'емная і неабходная частка любой сучаснай кропкі абмену трафікам. Па прынцыпе працы вельмі моцна нагадвае route reflector у iBGP ці designated router у OSPF і вырашае тыя ж праблемы. Па меры росту колькасці ўдзельнікаў кропкі абмену трафікам, павялічваецца колькасць BGP сесій, якую неабходна падтрымліваць кожнаму з удзельнікаў, г.зн. гэта нагадвае класічную full-mesh тапалогію ў iBGP. RS вырашае праблему наступным чынам: усталёўвае BGP-сесію з кожным зацікаўленым удзельнікам IXP, і той становіцца кліентам RS. Прымаючы BGP update ад аднаго са сваіх кліентаў, RS рассылае дадзены update усім астатнім сваім кліентам, зразумела, за выключэннем таго, ад якога дадзены update быў атрыманы. Такім чынам, RS пазбаўляе ад неабходнасці ўсталёўваць full-mesh паміж усімі ўдзельнікамі IXP і элегантна вырашае праблему маштабаванасці. Варта адзначыць, што сервер маршрутаў празрыста перадае маршруты ад адной AS да іншай, не ўносячы змены ў перадаюцца BGP атрыбуты, напрыклад не дадае нумар у сваёй AS у AS-path. Таксама на RS адбываецца базавая фільтрацыя маршрутаў: напрыклад, RS не прымае martians networks і прэфіксы самай IXP.

    У якасці рашэння route server часта выкарыстоўваецца праграмны маршрутызатар з адчыненым зыходным кодам - ​​BIRD (bird internet routing daemon). Ён добры тым, што ён бясплатны, хутка разгортваецца на большасці linux дыстрыбутываў, мае гнуткі механізм налады палітык маршрутызацыі/фільтрацыі, не патрабавальны да вылічальных рэсурсаў. Таксама, у якасці RS можа быць абраны і апаратны/віртуальны маршрутызатар Cisco, Juniper і т.д.

  • Бяспеку. Паколькі сетка IXP - гэта канцэнтрацыя вялікай колькасці AS, то і палітыка бяспекі, якой павінны прытрымлівацца ўсе ўдзельнікі, павінна быць добра прапісана. Як правіла, усё тыя ж механізмы, якія прымяняюцца пры ўстанаўленні BGP-суседства паміж двума асобнымі BGP-пірамі па-за IXP, прымяняюцца і тут, а таксама выкарыстоўваюцца некаторыя дадатковыя сродкі абароны.

    Напрыклад, добрай практыкай з'яўляецца пропуск трафіку толькі з вызначанага mac-адрасы ўдзельніка IXP, які абгаворваецца загадзя. Забарона трафіку з палямі ethertype, адрознымі ад 0x0800(IPv4), 0x08dd(IPv6), 0x0806(ARP); гэта робіцца для таго, каб адфільтраваць трафік, якому няма месца пры BGP-пірынгу. Таксама могуць прымяняцца такія механізмы як GTSM, RPKI і г.д.

Мабыць, вышэйпералічанае - гэта асноўныя складнікі любой IXP па-за залежнасці ад маштабу. Вядома, у буйных IXP могуць прымяняцца дадатковыя тэхналогіі і рашэнні.
Бывае, што IXP таксама дае сваім удзельнікам дадатковыя сэрвісы:

  • размяшчаюць на IXP TLD DNS-сервера,
  • усталёўваюць апаратныя NTP-сервера, даючы магчымасць удзельнікам сапраўды сінхранізаваць час,
  • падаюць абарону ад DDoS-нападаў і г.д.

Прынцып працы

Разбяром прынцып працы кропкі абмену трафікам на прыкладзе найпростай IXP, змадэляванай сродкамі EVE-NG, а пасля разгледзім базавую наладу праграмнага маршрутызатара BIRD. Для спрашчэння схемы мы апусцім такія важныя рэчы, як рэзерваванне і адмоваўстойлівасць.

Тапалогія сеткі прадстаўлена на малюнку ніжэй.

Кропка абмену трафікам: ад вытокаў да стварэння ўласнай IX

Выкажам здагадку, што мы адмініструем невялікі пункт абмену трафікам і падаем наступныя варыянты пірынгу:

  • публічны пірынг,
  • прыватны пірынг,
  • пірынг праз route server.

Нумар нашай AS - 555, мы валодаем блокам IPv4 адрасоў - 50.50.50.0/24, з якога выдаем IP-адрасы, для жадаючых падключыцца да нашай сеткі.

50.50.50.254 – IP-адрас, наладжаны на інтэрфейс route server'а, з дадзеным IP кліенты будуць усталёўваць BGP-сесію ў выпадку пірынгу праз RS.

Таксама для пірынгу праз RS мы распрацавалі найпростую палітыку маршрутызацыі на аснове BGP community, якая дае магчымасць удзельнікам IXP рэгуляваць каму і якія маршруты адпраўляць:

BGP community
Апісанне

LOCAL_AS:PEER_AS
Перадаць прэфіксы толькі PEER_AS

LOCAL_AS:IXP_AS
Перадаць прэфіксы ўсім удзельнікам IXP

Да нашай IXP жадаюць далучыцца і абмяняцца трафікам 3 кліента; дапусцім, гэта інтэрнэт-правайдэры. Усе яны жадаюць арганізаваць пірынг праз route server. Ніжэй прадстаўлены схема з параметрамі падключэння кліентаў:

Кліент
Нумар AS кліента
Анансуемыя кліентам прэфіксы
ip адрас выдадзены кліенту для падлучэння да IXP

ISP #1
AS 100
1.1.0.0/16
50.50.50.10/24

ISP #2
AS 200
2.2.0.0/16
50.50.50.20/24

ISP #3
AS 300
3.3.0.0/16
50.50.50.30/24

Базавая настройка BGP на маршрутызатары кліента:

router bgp 100
 no bgp enforce-first-as
 bgp log-neighbor-changes
 neighbor 50.50.50.254 remote-as 555
address-family ipv4
  network 1.1.0.0 mask 255.255.0.0
  neighbor 50.50.50.254 activate
  neighbor 50.50.50.254 send-community both
  neighbor 50.50.50.254 soft-reconfiguration inbound
  neighbor 50.50.50.254 route-map ixp-out out
 exit-address-family

ip prefix-list as100-prefixes seq 5 permit 1.1.0.0/16
route-map bgp-out permit 10
 match ip address prefix-list as100-prefixes
 set community 555:555

Тут варта адзначыць настройку no bgp enforce-first-as. Па змаўчанні, BGP патрабуе, каб у as-path прымаемага BGP апдэйта, прысутнічаў нумар as bgp балю, ад якога дадзены апдэйт быў атрыманы. Але паколькі route server не ўносіць змены ў as-path, яго нумар будзе адсутнічаць у as-path і апдэйт будзе адкінуты. Дадзеная настройка прымяняецца, каб маршрутызатар пачаў ігнараваць дадзенае правіла.

Таксама мы бачым, што кліент устанавіў bgp community 555:555 на дадзены прэфікс, што згодна з нашай палітыкай азначае, што кліент хоча анансаваць дадзены прэфікс усім астатнім удзельнікам.

Для маршрутызатараў астатніх кліентаў настройка будзе аналагічная, за выключэннем іх унікальных параметраў.

Прыклад канфігурацыі BIRD:

define ixp_as = 555;
define ixp_prefixes = [ 50.50.50.0/24+ ];

template bgp RS_CLIENT {
  local as ixp_as;
  rs client;
}

Далей апісваецца фільтр, які не прымае martians прэфіксы, а таксама прэфіксы самой IXP:

function catch_martians_and_ixp()
prefix set martians;
prefix set ixp_prefixes;
{
  martians = [ 
  0.0.0.0/8+,
  10.0.0.0/8+,
  100.64.0.0/10+,
  127.0.0.0/8+,
  169.254.0.0/16+,
  172.16.0.0/12+,
  192.0.0.0/24+,
  192.0.2.0/24+,
  192.168.0.0/16+,
  198.18.0.0/15+,
  198.51.100.0/24+,
  203.0.113.0/24+,
  224.0.0.0/4+,
  240.0.0.0/4+ ];

  if net ~ martians || net ~ ixp_prefixes then return false;

  return true;
}

Дадзеная функцыя рэалізуе палітыку маршрутызацыі, якую мы апісалі раней.

function bgp_ixp_policy(int peer_as)
{
  if (ixp_as, ixp_as) ~ bgp_community then return true;
  if (ixp_as, peer_as) ~ bgp_community then return true;

  return false;
}

filter reject_martians_and_ixp
{
  if catch_martians_and_ixp() then reject;
  if ( net ~ [0.0.0.0/0{25,32} ] ) then {
    reject;
  }
  accept;


}

Наладжваем пірынг, ужывальны адпаведныя фільтры і палітыкі.

protocol as_100 from RS_CLIENT {
  neighbor 50.50.50.10 as 100;
  ipv4 {
    export where bgp_ixp_policy(100);
    import filter reject_martians_and_ixp;
  }
}

protocol as_200 from RS_CLIENT {
  neighbor 50.50.50.20 as 200;
  ipv4 {
    export where bgp_ixp_policy(200);
    import filter reject_martians_and_ixp;
  }
}

protocol as_300 from RS_CLIENT {
  neighbor 50.50.50.30 as 300;
  ipv4 {
    export where bgp_ixp_policy(300);
    import filter reject_martians_and_ixp;
  }
}

Варта адзначыць, што на route server'e з'яўляецца добрым тонам складаць маршруты ад розных баляў у розныя RIB. BIRD дазваляе гэта рабіць. У нашым жа прыкладзе для прастаты ўсе апдэйты, прынятыя ад усіх кліентаў, складаюцца ў адну агульную RIB.

Дык вось, праверым, што ў нас атрымалася.

На route server'e бачым, што з усімі трыма кліентамі ўсталявана BGP-сесія:

Кропка абмену трафікам: ад вытокаў да стварэння ўласнай IX

Бачым, што мы атрымліваем прэфіксы ад усіх кліентаў:

Кропка абмену трафікам: ад вытокаў да стварэння ўласнай IX

На маршрутызатары as 100 бачым, што пры наяўнасці ўсяго адной BGP-сесіі з серверам маршрутаў мы атрымліваем прэфіксы і ад as 200 і ад as 300, пры гэтым BGP-атрыбуты не памяняліся, як калі б пірынг паміж кліентамі ажыццяўляўся напрамую:

Кропка абмену трафікам: ад вытокаў да стварэння ўласнай IX

Такім чынам мы бачым, што наяўнасць сервера маршрутаў значна спрашчае арганізацыю пірынгу на IXP.

Спадзяюся, што дадзеная дэманстрацыя дапамагла вам лепш зразумець, як уладкованыя кропкі абмену трафікам і як рэалізуецца праца сервера маршрутаў на IXP.

Linxdatacenter IX

У Linxdatacenter мы пабудавалі ўласную IXP на базе адмоваўстойлівай інфраструктуры з 2-х камутатараў і 2-х route-сервераў. Цяпер наша IXP запушчана ў тэставым рэжыме, і мы запрашаем усіх жадаючых падключыцца да Linxdatacenter IX і прыняць удзел у тэсціраванні. Пры падлучэнні вам будзе прадстаўлены порт з прапускной здольнасцю 1 Gbit/s, магчымасць пірынгу праз нашы route-сервера, а таксама доступ у асабісты кабінет IX-партала, даступнага па адрасе. ix.linxdatacenter.com.

Пішыце ў каментары ці асабістыя паведамленні для атрымання доступу да тэсціравання.

Выснова

Пункты абмену трафікам узніклі на світанку інтэрнэту як інструмент вырашэння пытання неаптымальнага праходжання трафіку паміж аператарамі сувязі. Цяпер са з'яўленнем новых глабальных сэрвісаў і павелічэннем колькасці CDN трафіку кропкі абмену ўсё таксама працягваюць аптымізаваць працу глабальнай сеткі. Павелічэнне колькасці IXP у свеце нясе карысць як для канчатковага карыстальніка сэрвісу, так і для аператараў сувязі, аператараў кантэнту і г.д. Для ўдзельнікаў IXP выгада выяўляецца ў скарачэнні выдаткаў на арганізацыю знешніх пірынгаў, скарачэнні колькасці трафіку, за які даводзіцца плаціць вышэйстаячым аператарам, аптымізацыі маршрутызацыі, магчымасці мець прамы стык з аператарамі кантэнту.

Карысныя спасылкі

  • Паглядзець карту размяшчэння кропак абмену трафікам: www.internetexchangemap.com
  • Паглядзець падрабязную статыстыку па BGP пірынгу, у тым ліку і прысутнасць на IXP: www.peeringdb.com

Крыніца: habr.com

Дадаць каментар