Den danske internettrafik og BGP

Henrik Moltke @moltke spurgte mig på Twitter:

@kramse ved du hvor meget af dansk internettraffik der går gennem De-Cix? I går gennem Dix til De-Cix, eller hur?

og det er jo et glimrende spørgsmål, og slet ikke nemt at besvare. Alle tiders.

Hvad er BGP

Border Gateway Protocol er en netværksprotokol som bruges mellem routere for at udveksle information om netværk. Mere specifikt bruges denne protokol til at annoncere hvilke netværk man kender til og gerne vil route pakkerne for. Specielt bruges BGP (version 4) idag som en central del af det verdensomspændende internet - det globale internet.

Eksempelvis har jeg fra RIPE (www.ripe.net) ansøgt om adresser og fået lov til at bruge 94.126.176.0/21 (94.126.176.0 - 94.126.183.255 med subnet maske /21 = 255.255.248.0). Disse adresser bestyrer jeg og har via Whois systemet fortalt at jeg vil annoncere dem fra ASN 59469 med et route object der binder disse sammen.

route:          94.126.176.0/21
descr:          Solido Networks ApS
origin:         AS59469
mnt-by:         MNT-SOLIDO

Dette netværk lægger jeg således ind i min router konfiguration og via BGP kan jeg fortælle omverdenen at 94.126.176.0/21 kan nås gennem AS59469 - som i BGP terminologi bliver til AS-path, altså en sti gennem internet der går via diverse uafhængige Autonomous System, typisk er et AS (el ASN) et firma, en entitet, en organisation - et netværk. Der er dog eksempler hvor der bruges flere ASN, eksempelvis Telia Danmark (AS3308) og TeliaSonera International Carrier (ASN1299).

Jeg har også valgt RPKI Resource Certification http://www.ripe.net/lir-services/resource-management/certification - men mere om det en anden dag.

Jeg er nu klar til at fortælle omverdenen hvor disse adresser bruges, og det gør jeg med BGP fra min(e) routere og via de internetforbindelser jeg har.

Transit eller peering

Jeg får nok tæsk men jeg vil nu aligevel prøve at beskrive dette fænomen. Peering er når vi aftaler at jeg vil modtage pakkerne fra dig og dine netværk med løfte om at sende dem videre, og du gør det samme. Dette kan være til stor fordel for os, idet vejen fra mine netværk til dine bliver kortere - mere direkte. Dog kan det være at jeg har en større fordel og vi kan derfor aftale at jeg skal betale dig for peering, en betalt peering.

Kort fortalt er en peering dog, dig og dine netværk, mig og mine netværk. Jeg vil således annoncere mit prefix 94.126.176.0/21 og mine direkte kunder, mens du vil annoncere dine kunder og dig selv - NORDUnet (AS2603) annoncerer pt. over 1000 sådanne prefixes til os over en peering.

Stop, prefix WTH?! Et prefix er adresser og skrives som netværk og subnetmaske, idag i CIDR notation - fordi vi ikke gider skrive 255. resten af livet! Ud fra mit prefix skærer jeg så linknet (/30 eller /31), kundenetværk (/28), store klumper (/24) og andre subnets ud. Et eksempel på et subnet er således 94.126.178.0/29 (94.126.178.0 - 94.126.178.7) som er skåret ud til TOR exit node(s) men ligger indenfor de routes jeg annoncerer kan nås gennem mig - mine prefixes.

Hvis vi skal lave en peering skal vi blot oprette en forbindelse mellem routere hos dig og mig med BGP og vi er igang. Desværre skal jeg således lave en forbindelse til alle dem jeg vil peere med, selvom det måske ikke er allesammen jeg skal udveksle ret meget trafik med ... velkommen internet exchange!

En internet exchange er hvor internet udveksles - basalt set er det oftest en simpel Layer 2 struktur som gør at vi har et enkelt sted vi kan placere et router ben og nå flere samtidigt, simpelt, nemt smart - internet. I praksis er det ofte større infrastrukturer og AMS-IX er på vej til at ramme 1024 adresser brugt i deres peering LAN!

Et typisk eksempel på topologi er London Internet Exchange (LINX) som har 440 members fra 50 lande og tilbyder peering på et Juniper LAN og et Extreme LAN - altså to forskellige hardware producenter Juniper Networks og Extreme Networks.

Et andet eksempel er multi-location hvor vores lokale danske Danish Internet Exchange Point (DIX) har flere lokationer. DIX er blevet mere aktiv på det seneste med en udvidelse til Interxion i Ballerup og snak om åbning i Aarhus! Det betyder at der er placeret to switche (Arista Networks) på Interxion lokationen og det er nemt for mig at lave en 10Gbit fiberforbindelse ind til dem. Det koster mig få kr pr måned hvor en forbindelse til Lyngby ellers ville være for dyr. DIX bliver derfor mere relevant og tiltrækker flere operatører til fordel for alle der er medlemmer.

På DIX kan jeg altså peere med andre - alle dem som vil - for der er ikke noget krav om at alle SKAL. En anden ting er også at jeg udover min forbindelse til DIX bliver nødt til at have mindst en transit internetforbindelse, som er til resten - som jeg ikke kan nå via mine peerings.

Det som typisk adskiller en transit internetforbindelse er at den transiterer flere netværk før modtageren nås. Jeg fandt ordet på DSN.dk under:

transitere vb., -r, -de, -t (føre transitvarer gennem et land) - så vi bruger det lige idag ;-)

En transitforbindelse vil typisk være noget jeg betaler for, men jeg forventer til gengæld at den giver mig fuld adgang til internet, dvs jeg kan nå de fleste af de 425.000 prefixes på internet gennem denne forbindelse. Jeres internetforbindelse som I køber vil derfor typisk være en transit forbindelse, og det er typisk kun større netværk eller ISP'er der bruger udtryk som peering og peeringforbindelser. Hvis man er til farver findes der en fin oversigt på http://drpeering.net/core/ch2-Transit.html som også fortæller om afregningsmodellen 95 percentile - som jeg bruger overfor visse kunder.

I praksis vil danske internetudbydere således kunne bruge peering på DIX eller andre steder, herunder private peerings med direkte forbindelser og transit til at sammensætte løsninger som opfylder kravene til oppetid og økonomi. Der findes en database PeeringDB hvor mange netværk har skrevet deres informationer ind - som gør det nemmere at finde ud af hvor man potentielt kan mødes og peere.

NB: nogle Internet Exchanges (IXs) tillader transit over netværket, andre gør ikke - det diskuteres løbende om fordele og ulemper ved dette. DIX tillader det eksempelvis IKKE pt., mens LU-CIX i Luxembourg specifikt gør.

Den danske trafik

Nu kommer vi så endelig tilbage til spørgsmålet

ved du hvor meget af dansk internettraffik der går gennem De-Cix? I går gennem Dix til De-Cix, eller hur?

Det første vi kan sige er: Vi kommer ikke til DE-CIX gennem DIX - vi kommer til gengæld over DIX til, Bolig:net, Forskningsnettet, ComX, DK Hostmaster A/S, Danmarks Radio, Siminn, NORDunet... m.fl. dem som vi peerer med.

Resten af internet kan vi nå gennem vores transitforbindelser, eksempelvis Cogent og Level3 Communications - men det er meget sandsynligt at disse peerer med hinanden. Specielt de allerstørste der udgør rygraden i internet kaldes typisk for Tier 1 network og har aftalt at peere. Vi kan således som kunde hos disse få adgang til hele internet med få netværk mellem os og slutkunderne - god kvalitet internet.

Nogle af de andre netværk som vi i Danmark kommunikerer med - eksempelvis mange tyske firmaer vil formentlig være forbundet til tyske ISP'er - som naturligt vil være at finde på DE-CIX. Jeg kan også via DE-CIX hjemmesiden at vores to transit leverandører Cogent (AS174) og Level (3) Communications GmbH (AS3356) er til stede på DE-CIX - så der er formentlig en vej fra mig til DE-CIX gennem dem.

Grunden til at jeg vælger det lidt vage udtryk formentlig er at nu begynder der at komme lag 8/9 ind i billedet, da der jo ikke er garanti for at alle på DE-CIX peerer med hinanden. Det er således heller ikke nemt at svare på hvor meget dansk trafik der kommer gennem DIX, men et par traceroutes fra mit eget netværk røg hurtigt henover Hamburg til Frankfurt, og formentlig enten DE-CIX eller private peerings samme steder som DE-CIX findes.

Det bedste bud vi kan give er at analysere de store udbydere som Google (herunder youtube), Akamai (herunder updates til OSX og Windows) og de andre hvor de er til stede og komme med et kvalificeret gæt.

Mit gæt er således at 42% af vores danske trafik går gennem DE-CIX og/eller AMS-IX ;-)

Beklager at jeg ikke har tid til at lave den store undersøgelse og formentlig heller ikke ville få adgang til alle nødvendige data.

Redundans og internet

Nu er ovenstående jo en meget kort introduktion til BGP og internet, men jeg håber man allerede kan se nogle karakteriserende træk for internet.

  • Internet er baseret på BGP, som forøvrigt er relativt usikker - derfor RPKI er interessant
  • Internet er meget decentralt - basalt set en flok hippier der udveksler information om routes og tillades hinandens pakker at flyde frit - nogenlunde frit

Interessant kom der et tweet fra Internet Society (twitter: @internetsociety) hvor let det er at tage et land af internet: How hard is it for your country to be disconnected from the #Internet?

Dette tweet indeholdt også er link til en artikel på Renesys bloggen som beskriver lande i forhold til hvor nemt de kan blive taget af internet - Risk of internet disconnection: http://www.renesys.com/blog/2012/11/could-it-happen-in-your-countr.shtml

Konklusionen i dette indlæg er helt tydelig. Et land med mange forbindelser ud af landet med mange ISP'er er mere robust overfor internetudfald. Yderligere fremhæves at konkurrence stimulerer internetudbydere til at lave mange forbindelser og det er således helt kritisk for Danmark at vi ikke hindrer peering - da peering giver et tæt-vævet internet. Vi må heller ikke lægge hindringer i vejen for ISP'er i Danmark frit kan etablere eller forbinde sig til eksisterende knudepunkter som DE-CIX og AMS-IX, eller andre IX'er.

Vi skal altså have et sundt internet miljø hvor vi ikke lægges flere hindringer i vejen - end hvad forventes for at kunne styre og kontrollere eget netværk. Det sidste afsnit er således en lille husker til politikere og argumenter vi skal bruge når vi snakker med politikere. Et probem kunne eksempelvis være at kravene om mere logning og filtrering ville kræve yderligere ressourcer, større routere, på knudepunkter og peerings - større udgift til etablering og drift. I værste fald får man ikke lavet direkte forbindelser som ellers gør det nemt at adskille trafik, spore trafik direkte til en samarbejdspartner/peeringpartner - og løse problemerne direkte.

Når vi således ser WCIT/ITU problematikker og andre der forsøger at diktere internets fremtid se bort fra hvad der er internet så bliver frygten for fremtiden at vi sidder i en walled garden hvor nogle få udbydere har fuld kontrol over vores applikationer, indhold og kommunikation - det ønsker ingen!

Hvad er din holdning, er det OK at vi har et så anarkistisk internet hvor man kan lave peering med så få regler? Frygter du at de store udbydere rotter sig sammen, eller tror du blot det vil anspore de mindre til at arbejde tættere sammen - så der automatisk kommer balance igen uden at vi skal gøre noget specielt?

Jeg glædes selv over at jeg nemmere kan peere med andre i Interxion og at DIX bliver mere relevant, men kan vi på en eller anden måde sikre en positiv udvikling uden monopoler?

Leg i juledagene

Hvis du får helt lyst til at lege med BGP findes der mange BGP implementationer, jeg nævner i flæng:

  • OpenBGPD fra OpenBSD projektet, følger med OpenBSD og nem at installere på andre platforme
  • BIRD http://bird.network.cz/ ved den bruges som route server flere steder
  • Vyatta http://www.vyatta.org/ en komplet pakke med routing, BGP m.v.

Ovenstående er primært store BGP pakker som kan det hele, modtage og sende BGP announcements, nedenstående er til "andre formål". Til injection af routes findes blandt andet:

Til overvågning af BGP - se route updates findes der også mange alternativer:

Jeg samler relevante (blandede bolscher) BGP links på http://delicious.com/kramshoej/bgp

og Tak til @moltke der arbejder på et indlæg om nogle af de samme emner til Harddisken som jeg glæder mig til at høre.

Kilder

Henrik Kramshøjs billede
Henrik Kramshøj er internet-samurai hos Solido Networks. Han elsker netværkspakker tcpdump, wireshark, BackTrack, Metasploit og andre hackerværktøjer og blogger om sikkerhed, netværk og unix.

Kommentarer (7)

Sune Marcher

Hejsa Henrik,

det er en smule over my head, og helt udenfor de ting jeg professionelt beskæftiger mig med - men det er super fedt at se tekniske blogs på v2, og interessant læsning. Keep it up! :)

Kristian Klausen

Hvis du får helt lyst til at lege med BGP findes der mange BGP implementationer, jeg nævner i flæng:

Har jeg misforstået noget, eller siger du at jeg kan bruge BGP på min private forbindelse?

Henrik Kramshøj

Har jeg misforstået noget, eller siger du at jeg kan bruge BGP på min private forbindelse?

Du kan ikke bruge BGP på din internetforbindelse uden aftale med din udbyder, og det giver ikke ret meget mening hvis du kun har een forbindelse ud til internet.

Du kan dog lege med protokollerne i mindre setup, eksempelvis på virtuelle systemer og specielt metoden til at annoncere en service til et netværk bliver mere og mere relevant.

Eksempelvis skriver vi jo allesammen troligt mindst to DNS servere ind på alle servere og DHCP server config, men reelt er MANGE af vores systemer ekstremt dårlige til at håndtere når den primære DNS server er nede. Så måske ville det istedet være en god ide at man brugte to fysiske servere som begge annoncerede til netværket med samme IP, med https://github.com/cmouse/bgp-advertize-when-alive og således ville der altid være en DNS som svarede på adressen.

Det er dog ikke noget man i et mindre netværk ville have glæde af, men i større netværk ville det være rart. Ligeså med NTP og andre tilsvarende services - specielt er UDP er nemmest.

Jeg synes det er sjovt at lære nyt og BGP bliver mere og mere relevant.

Log ind eller opret en konto for at skrive kommentarer

IT Businesses