IP routinghierarkier Robert Löfman Institutionen för informationsbehandling Åbo Akademi, FIN 20500 Åbo, Finland e post: robert.lofman@abo.nospam.fi
Abstrakt Denna text berättar främst om hur Internets routers samlar in sin information om nätets topologi. Detta är det s.k. routingskedet. Efter detta skede kommer noderna att innehålla tillräckligt med information för att kunna tillfredställa det andra skedet, framföringen (eng.forwarding) av datameddelanden. Denna funktion utför en router alltså först när användaren ber om det d.v.s. vill kontakta en annan dator. Då kommer datagram att skickas genom nätverk och varje mellanliggande nod som skickar detta meddelande mot sitt mål kommer att göra ett beslut på basen av sin routingtabell, vart datagrammet skall skickas.
Innehållsförteckning 1.0 Inledning 2.0 Interdomän routing 2.1 Border Gateway Protocol (BGP) 2.2 Classless Inter Domain Routing (CIDR) 3.0 Intradomän routing 3.1 Routing Information Protocol (RIP) 3.2 Open Shortest Path First (OSPF) 4.0 IntraLAN routing 4.1 Subnätverk ACM klasser: C.5.3, C.2.2, C.2.6 ACM SIG: SIGCOMM
1.0 Inledning TCP/IP är som bekant Internets protokoll som har två typer av uppgifter. För det första, att ta reda på nätverkets topologi genom routing och distribuera denna information m.h.a. routingmeddelanden. För det andra, skall protokollet som körs på varje router använda informationen för att göra beslut om vilken rutt en användares meddelande skall ta. Beslutet skall innebära att den snabbaste rutten används enligt tillgänglig information. Denna uppgift kallas "forwarding" eller på svenska framföring. Olika protokoll används beroende på vilken nivå av Internets hierarki man observerar. Hierakiernas viktigaste uppgifter är att aggregera routing informationen, spara adresser samt förenkla skalning (eng scaling). Vid aggregering grupperar man ihop flera nätverksadresser på en nivå för att t.ex. noder i ryggradsnätet inte skall behöva veta allt om det aggregerade områdena. Detta betyder att ryggradsnoderna enbart behöver veta hur man skickar meddelandet till området, och noder inom området vet hur man hittar det sökta nätverket. Detta minskar både på den routinginformation varje ryggradsnod behöver spara i sina routingtabeller samt routingmeddelandenas spridning i nätverket i.o.m. att vissa meddelanden inte sprids till en annan nivå. Minskningen av spridning märks som förbättrad bandbredd. Adressbesparing är speciellt viktigt så länge IP version 4 ännu används. Det finns endast 32 bitar till förfogande att representera alla adresser på Internet. Man kan spara adresser t.ex. genom användning av sk subnätverk. Då ett nätverk blir fullt kan man undvika ansökan om nya nätverksadresser genom att dela in det existerande nätverket i subnätverk. När ett nätverk som Internet växer är det ytterst viktigt att det sker på ett konsekvent och kontrollerat sätt. Eftersom vissa områden har "självstyre" kan man bygga ut sitt eget nätverk utan att hela Internet behöver informeras explicit [2]. Detta förbättrar skalbarheten eftersom alla routrar inte måste konfigureras på nytt. För att detta skall fungera måste dynamiska protokoll användas vilket betyder att upptäckten av nya noder förlitas helt på protokollet. I denna text beskrivs Internets struktur som nivåer i en hierarki, där den högsta nivån är Internets ryggradsnät, och på den lägsta nivån finns subnätverk. När ordet nod används här kan det betyda både routers och vanliga datorer. Om det inte är någon skillnad i sammanhanget så används ordet nod. En router är en dator som är dedikerad för att styra trafik på Internet men som inte används till annat, medan vanliga datorer också kallade värdar, används av människor.
2.0 IP hierakier På den högsta nivån i Internet försiggår interdomän routing med ett externt routing protokoll (eng. Exterior Gateway Protocol, EGP). Detta betyder utbyte av information mellan noder som är kopplade till varandra med det s.k. ryggradsnätet. Ryggradsnätet är uppbyggt av snabba uppkopplingar som ofta binder ihop noder på mycket långa avstånd. Dessa uppkopplingar förbinder Autonoma System (AS). Ett AS är en samling nätverk som alla underlyder en viss organisation (en domän är i detta sammanhang ekvivalent med AS). Om en organisation vill grunda ett nytt AS måste detta ansökas om från en central organisation (RIPE i Europa) som utdelar AS ID nummer. Man måste då motivera varför man vill skapa ett nytt AS istället för att förbinda sig till ett annat existerande nätverk inom ett AS. 2.1 Border Gateway Protocol (BGP) Ett AS är uppbyggt av routers som utför uppgifter av olika slag. Varje AS måste ha en eller flera s.k. gränsrouters som kör "Border Gateway" protokollet, såsom namnet implicerar skall dessa finnas nära gränsen av ett AS. Dessa routers kallas för "BGP talare" och konfigureras manuellt för att kommunicera med andra talare i andra AS. BGP talarna i olika AS utbyter information om vilka nätverk som kan accesseras varandras AS. Information som en talare lär sig om sin grannes AS skickas också vidare till andra talare i andra AS som gör likandant. På detta sätt kommer varje talare att få veta hur man kommer åt varje nätverk i varje AS. Det finns också andra gränsrouters som inte kommunicerar med BGP men genom vilka paket till andra AS flöder om administratören bestämmer att distribuera rutter som har lärts känna utan BGP. I så fall meddelar också icke BGP routers sitt eget AS vilka rutter till nätverk den lärt känna i det andra AS:et m.h.a av något Intra routing protokoll. Dessutom informerar BGP talaren också sitt eget AS om vilka nätverk i det andra AS:et kan accesseras genom den. En nod inom AS:et kombinerar sedan informationen den har fått av BGP talaren med det interna routing protokollet (kapitel 3) för att hitta en bra rutt till ett annat AS. Om det finns flera BGP talare måste de komma överens om vilken talare inom AS:et noder skall använda när de vill ta kontakt med nätverk utanför det lokala AS:et. Detta sköts med ett "lokalt preferensattribut" i BGP meddelanden som sprids i hela AS:et och hjälper lokala routers att hitta den talare som skall användas för att accessera ett nätverk i ett annat AS. Varje talare prefereras på basen av talet då en väg ut ur AS:et söks. Då det finns två rutter med startpunkt vid två olika talare till samma destinations nätverk, kommer två preferenstal som är givna av talarnas motpart i det andra AS:et att ges åt talarna. Dessa byts sedan ut mellan de två lokala talarna som därefter kommer överens om vilken talare används som "utväg" till destinations nätverket. Denna information "sprids ut" i det lokala AS:et m.h.a. ett internt routingprotokoll.
AS1 1 AS2 4 Gränsrouter Till annat AS 2 Nät1 BGP talare 3 5 BGP talare Nät2 4 6 fig.1 I figur 1 kan man se hur router 6 hittar en väg till nätverk 1 (resten av nätvärken som är kopplade till routrarna är borttagna på bilden för att förenkla den). Om en nod i nätverk 2 vill kommunicera med en nod i ett nätverk 1, så händer följande: router 6 får en förfrågning om hur man kontaktar (vilken mellanliggande nod skall användas) nätverk 1. Router 6 kontrollerar informationen den senast fått av sin BGP talare om vilken gränsrouter som skall anvädas för att kontakta nätverk 1. Svaret blir talare nummer 5. M.h.a. ett internt protokoll vet router 6 hur den skall kontakta router 5 (Interna routing protokoll tas upp i kapitel 3). Router 6 kombinerar alltså informationen från: BGP talaren: hur den kommer åt nätverk 1, d.v.s. genom att skicka genom router 5. Informationen från det interna protokollet: hur den kontaktar router 5. Ett BGP meddelande som en talare får av sin granne innehåller nästa hopps information om hur AS:et kommer åt alla nätverk på Internet som det sändande AS:et är medvetet om. För varje nätverk specificeras alltså ett AS som man skall "hoppa" till för att komma fram till nätverket. Om nätverket inte finns i AS:et man har "hoppat" till så vet AS:et i alla fall vart det skall skicka meddelandet för att det skall komma fram enligt distance vector typ av protokoll i framföringssituationer. Utöver detta skickar man i BGP meddelandet också hela rutten fram till nätverket. Denna rutt skickas i sin helhet för att BGP talare skall hitta cykler i föreslagna rutter [2]. Om en BGP talare får ett meddelande om en rutt där den själv finns med kan den avgöra att det är fråga om en cykel i inter AS rutten. En BGP talare konfigureras för att ta kontakt med en annan talare med TCP och porten 179 och när en förbindelse är ansluten skickar talaren hela sin routingtabell och därefter skickas endast ändringar när de sker. En talare kan dessutom radera rutter från grannens routingtabell förutsatt att det är den själv som informerat om rutten.
Interdomän routing är så svårt att man huvudsakligen inte försöker hitta en optimal rutt utan man nöjer sig med att hitta en överhuvudtaget [1]. Svårigheterna beror på att när man söker rutter genom olika AS som kan ha olika interna protokoll och ojämförbara värden på länkar mellan nätverk. Routing på denna nivå är inte heller automatiskt i den mening som inom ett AS utan man kan t.ex. beordra en gräns router att skicka all trafik från ett AS till ett visst annat AS. BGP fungerar enligt typen Distance Vector algoritmer på följande sätt. En BGP talare samlar information om sitt eget AS 1 och förmedlar detta åt sina grannar i följande AS, säg AS2. AS 2 gör detsamma och dessutom sprider ut informationen åt ytterligare AS genom att säga att nätverk inom AS1 kan nås genom AS 2. Denna procedur upprepas så att varje BGP talare kommer ha vetskap om varje annat AS och en nästa hopps BGP talare som talar om vilket är det nästa hoppet är på vägen mot det AS man försöker kontakta. Det finns 3 olika typer av AS: Stub AS: är AS som endast har en förbindelse till ett annat AS. Multihem AS: AS med flera förbindelser till flera olika AS men som vägrar föra vidare sådana paket som inte är sända av eller skall mottagas av en nod i AS:et. Transit AS: ett AS med förbindelser till flera AS och för vidare trafik som inte tillhör detta AS. Det skulle vara omöjlig att koppla alla nätverk direkt till ryggradsnätet därför att routingtabellerna skulle bli för stora och all överföringskapacitet skulle gå åt att informera varandra om alla nätverk [2]. Därför använder man BGP och CIDR (följande stycke) i ryggradsnätet för att dela in routingen i två delproblem d.v.s. Inter AS routing där en router i ryggrads nätet enbart behöver veta i vilket AS en nod finns. Intra AS routingen tar sedan hand om att rätt nätverk hittas inom AS:et. 2.1 Classless Inter Domain Routing (CIDR) CIDR används för att spara adresser [2] och för att minska på routingtabeller. Minskningen i tabellerna beror på det att flera nätverk i samma område och liknande IP adresser kan nås med samma rutt. CIDR har en viktig funktion i BGP 4 eftersom routers i ryggradsnätet innehåller rutter till varje nätverk. CIDR kan användas för att tilldela organisationer precis den mängd adresser de behöver. Enligt Internets klassiska adressklassificeringssystem kan det till klass A nätverk kopplas 16777214 värdar, till klass B nätverk 65534 värdar och till klass C nätverk 254 värdar. Om en organisation behöver koppla enbart någon värd mera än 254 så måste den få ett klass B nätverk. Detta är dock slöseri med adresser eftersom man inte kommer att koppla nära på 65534 värdar till nätverket. Med CIDR kan man tilldela en organisation t.ex. flera C nätverksadresser för att den slösade mängden inte skall bli för stor. I exemplet ovan kunde man just ge organisationen två klass C adresser så skulle endast ett par hundra adresser slösas.
För att detta skall fungera, skall organisation tilldelas nätverksadresser som har ett gemensamt prefix. T.ex. en organisation kunde tilldelas åtta nätverk med adresserna 192.32.134.0 till 192.32.141.0. När dessa adresser konverteras till binärt format kommer en del av hela adressen att vara samma i alla nätverksadresser och bilda ett nytt nätverk. Mängden bitar som hålls konstant kallas för nätverkets prefix. Dessa sammanslagna nätverk eller prefix som de också kallas representeras i routingtabellerna som [nätverksadress, prefixets längd]. För en ryggradsrouter skulle detta kunna vara [192.32.136.0, 255.255.240.0] (alt. notation 192.32.136.0/20) och alltså se ut som ett enda nätverk även om det i verkligheten är fråga om åtta. CIDR använder alltså inte de typiska klassindelningarna i A, B och C utan man kan specificera egna indelningar av bitarna i adresserna. F.r.o.m 192.32.134.0, binärt 11000000 00100000 10000110 0000000 t.o.m. 192.32.141.0, binärt 11000000 00100000 10001101 0000000 Prefixet 255.255.240.0 binärt 11111111 11111111 11110000 0000000 Dessa 12 bitar kan sedan användas för att representera 2 12 värdar i nätverket 192.32.136.0/20. 3.0 Intradomän routing Inom autonoma system kan man använda sig av valbart routingprotokoll [2] och dessa kan vara av två olika typer. I den första, relativt ointressanta typen av routingprotokoll använder man sig av statiska rutter. Detta betyder att man manuellt konfigurerar in rutter till alla nätverk i varje router. Denna metod förhindrar automatisk återhämtning ur fel i.o.m. att den statiska metoden inte kan upptäcka nya rutter då en annan bryts. Statisk routing försvårar också skalning p.g.a. att vrje router måste konfigureras på nytt då ett nätverk läggs till AS:et. Det är också klart att denna metod fungerar endast i små AS. En router kan köra flera protokoll samtidigt speciellt BGP talare kör både BGP och något internt protokoll för att få information som den kan skicka till andra AS. I följande beskrivs de två mest använda interna dynamiska routingprotokollen. 3.1 Routing Information Protocol (RIP) RIP är ett routingprotokoll som bygger också på s.k. "distance vector" algoritmen och används inom autonoma system. Det finns en äldre version RIP 1 och en nyare RIP 2 som har deverse förbättringar som t.ex. stöd för klasslös nätverksadressering (CIDR). Version 2 av RIP är bakåtkompatibel och dessa kan användas inom samma AS i olika nätverk. Men då får inte RIP 2 information skickas till RIP 1 nätverk. Versionen för protokollet som används kan man ta reda på genom att undersöka RIP paketets "huvuddel" (eng. header). Meddelandena skickas på port 520 med användning av UDP och innehåller par av nätverks adresser och distanser till dem ur sändarens synvinkel. Resten som förklaras här är gemensamt för RIP 1 och RIP 2. RIP är kan användas i medelstora AS för det har en begränsning som beror på RIP:s funktion att sprida information. Varje router som kör RIP, skickar ny information om rutter och distanser till alla nätverk åt alla sina grannrouters då:
Då en router får ny information om en ny, kortare rutt till ett nätverk. Periodisk update varje 30 sekunder. Då den får en förfrågan om en rutt till ett nätverk. Då en router får ett meddelande som säger att det finns en kortare rutt till en destination så sparar den informationen om av vem den fått meddelandendet för att veta vilken router kommer att vara ruttens nästa hopp. Destinationen routern blivit informerad om ligger på en viss längd från den informerande noden. Till detta adderas 1 för att räkna ut distansen från den router som blivit informerad till destinationen vilket sedan sparas tillsammans med nästa hoppet. Routers inom RIP kan också fråga andra routers om de har en rutt till ett nätverk eller flera nätverk [3]. En rutt som inte har blivit nämnd i sex eftervarandra följande periodiska meddelanden av en router, kommer att tas bort av grannen till routern som inte mera nämner rutten. Noder som anväder RIP kan vara i två olika tillstånd, aktiva eller passiva. Att en nod är aktiv betyder att den skickar och tar emot nya rutter på nätverket. En nod i det passiva tillståndet kommer endast att lyssna efter nya rutter men inte skicka dem vidare. På detta sätt kommer varje router att lära sig rutter till alla nätverk i AS:et. RIP har alltså vissa begränsningar som finns i alla "distance vector" algoritmer. Problemet uppkommer då en routers förbindelse till annan bryts och en tredje router ännu har gammal information som den skickar till den första routern. På detta sätt kommer routrarna att ha felaktig information som de skickar till varandra varje gång den ena märker att dess rutt inte fungerar. Båda routrarna kommer varje gång den "smittar" den andra med en obefintlig rutt att spara en rutt med en distans som är grannens distans + 1. Detta betyder att man räknar uppåt mot 16 som är oändligheten i RIP, utan att hitta rutter som skulle leda ända fram till det sökta nätverket. Detta problem kallas också "Count to Infinity" problemet eller räkning till oändligheten. Nät B 1:ans routing tabell Nätverk NästaHop Distans Nät A 1 Nät B 2 2 Nät C 2 3 1 2 Bryts 3 2:ans routing tabell Nätverk NästaHop Distans Nät A 1 2 Nät B 1 Nät C 3 2 Nät A fig.2 Nät C 3:ans routing tabell Nätverk NästaHop Distans Nät A 2 3 Nät B 2 2 Nät C 1 I figur 2 antar man att förbindelsen mellan router 2 och 3 bryts och 2:an sätter sin distans till nätverk C till oändligheten. Därmed vid nästa periodiska updatering kommer router 1 att "säga" att den har förbindelse med nätverk C genom 2:an och distansen 3. Router
nummer 2 kommer då att räkna ut att om den hoppar via router 1 så kan den kontakta nätverk C med en distans på 3+1. På detta sätt kommer 1:an och 2:an att "berätta" åt varandra om obefintliga rutter som hela tiden ökar i längd. När sedan ena routern kommer till 16 definierar man nätverket oåtkomligt. Denna onödiga informations överföring kommer också att resultera i att det tar länge innan varje nod i AS:et har fått en realistisk bild av den nuvarande topologin. Man kan lösa detta på det sätt att en router aldrig skickar information om en rutt tillbaka till den routern man lärde sig av en rutt. Denna teknik kallas "split horizon". Denna teknik löser dock inte det problemet om att information om en bruten länk inte sprider sig snabbt. En teknik som heter "Poisoned Reverse" löser detta. Den går ut på att en router som märker att den inte mera kommer åt ett nätverk genast skickar ett meddelande om vad som hänt, åt sin grannar som i sin tur skickar det vidare. Även om dessa tekniker snabbar upp spridning av dålig information så löser de inte problemen helt. Det är ännu möjligt att en router som ännu inte fått meddelande om bruten länk skickar sin routingtabell som innehåller en rutt genom den brutna länken [3]. 3.2 Open Shortest Path First (OSPF) OSPF fungerar enligt typen link state algoritmer, vilket betyder att varje router skickar meddelanden till alla andra routers (nätverket dränks av meddelanden) inom ASet. Meddelanden som routrarna skickar innehåller information om länkarna till nätverk som är direkt kopplade och kostnaden att traversera en länk. Meddelandena som skickas kallas "Link State Packets" eller länk status paket (LSP). Det är då viktigt att den nya informationen som sprids finns tillgänglig för alla routers för korrekt uträkning av rutter. Alla meddelanden autentikeras och kontrolleras att deras sekvensnummer är nyare än sådana som redan påträffats. På basen av denna information kan varje router sedan räkna ut kortaste vägen till respektive router. LSP:n skickas då en router: hittar en ny granne när en länk bryts när kostnaden ändrar för en länk var 30:e sekund OSPF är ett mera avancerat protokoll än RIP. Det kan t.ex upprätthålla fler rutter till ett nätverk där varje rutt har olika för och nackdelar t.ex. en rutt har låg latens tid men låg bandbredd. En annan funktion som OSPF kan utföra är "Load Balancing" vilket betyder att om en router har flera olika rutter till ett nätverk så kan den fördela trafiken jämnt. OSPF har också en funktion som är av speciellt intresse här. Det kan nämligen dela in ett AS:et i en ytterligare hierarki, kallad area. En area är en mängd nätverk som är grupperade ihop på basen av administrativa eller geografiska förutsättningar. Ett AS som använder sig av OSPF måste åtminstone implementera en area, men oftast används flera. AS:et delas då in i en ryggradsarea samt flera vanliga areor. Routers inom en area har samma "bild" av arean genom att sinsemellan utbyta LSP:n. Dessa LSP:n kommer inte någonsin att lämna arean utan inter area kommunikation utförs av vissa routers inom en arean. Vid gränsen av en area finns en areas gränsrouter (GR) som sammanställer information om AS:et. Denna information utbyts med andra areor mha andra GR:s. En GR skickar sedan ut LSP:n åt den egna arean, om rutter till andra nätverk utanför arean.
Det finns tre typer av routers inom ett AS: Intrarouters (IR) Areans gränsrouter (Area GR) AS:ets gränsrouter (AS GR) Intrarouters sköter endast om att rapportera sina lokala länkar till sina grannar och upprätthåller alltså en databas för rutter inom den lokala arean. Area gränsrouters tillhör arean den är belägen i och är dessutom en del av ryggradsarean. Dessa kopplar alltså ihop olika areor och utbyter routinginformation med alla andra areagränsrouters. Areans gränsrouters informerar dessutom AS:ets gränsrouters om vilka nätverk är belägna inom deras areor så att AS gränsroutern kan skicka denna information till andra AS. Om det p.g.a. geografiska svårigheter inte finns möjlighet att binda en area till ryggradsarean måste en virtuell ryggradslänk upprättas. Denna virtuella länk kommer att byggas upp av en eller flera icke ryggradslänkar inom en vanlig area. Kostnaden för att traversera denna virtuella länk är den sammansatta av alla icke ryggradslänkar. Man benämner dessa areor enlig deras funktion: En area som innehåller en virtuell länk kallas överföringsarea Areor med endast en inter arealänk kallas för stubarea.
Annat AS AS 1 5 Nät.1 1 9 2 7 Nät.5 Nät.2 3 Area 3 8 Nät.7 Area 1 4 5 6 Nät.3 Nät.4 Area 2 12 10 1 1 Nät.7 Nät.6 Area 4 AS:ets gränsrouter Areans gränsrouter Ryggradslänk Virtuell Ryggradslänk Intrarouters fig.3 Figur 3 beskriver alla dessa areor. Till ryggradsarean hör areans gränsroutrar 2, 4, 5 och 7. Dessutom är router 5 också en AS gränsrouter. Till ryggradsarean hör också router nummer 12, men genom en virtuell länk bestående av rutten 7 till 8 och 8 till 12. Router 5 distribuerar alla inter AS rutter till varje area och alla areas gränsrouters meddelar varandra om inter area rutter. Router 5 sammanställer dessa inter area rutter och informerar dem till andra AS. Man kan genast se likheter mellan inter area routing och inter AS routing. Dessa indelningar är gjorda av samma skäl: nämligen för att begränsa storleken på en enskild routers routingtabell, d.v.s. den domän den behöver känna till, vilket också kommer att snabba upp beräkningar av rutter. OSPF skiljer sig från de andra routingprotokollen i.o.m. att det implementeras direkt på nätverksnivån (den tredje nivån inom OSI modellen).
4.0 Intra LAN routing På den lägsta nivån av Internets hierarki finns subnätverk, och de implementeras för att dela in ett större nätverk i flera mindre. Detta betyder att flera fysiska subnätverk kan dela på samma nätverksadress [1], vilket var den grundläggande idén för subnätverk, d.v.s. spara att nätverksadresser. Denna indelning kommer inte att synas för nätverk utanför det indelade nätverket, men alla routers inom nätverket måste känna till subnätens adresser. Här aggregeras routinginformation igen. En router utanför nätverket behöver endast veta en rutt, hur man når nätverket och nätverket vet hur man når subnätet. Det är helt upp till nätverksadministratören hur han vill uppdela nätverket om det görs överhuvudataget. Indelning i subnätverk kallas för statisk subnätsallokering och varje subnät måste ha lika lång subnätsmask till skillnad från CIDR. Intra LAN routing är relativt simpel: en router är konfigurerad med subnäts information om direkt förbundna subnätverk och denna information sprids ut t.ex. med RIP. Om en dator i ett subnätverk inte hittar den dator den vill kontakta i samma subnätverk kommer den att fråga routern var datorn finns. Om inte routern heller vet detta kommer den att skicka meddelandet till en default router som känner till andra nätverk. I det följande tas också upp en del om framföringen i subnät eftersom en del av rutterna upptäcks först i det skedet. 4.1 Subnätverk Subnätverk kan definieras inom lokala nätverk. Den normala IP adressen för en nod är av formen [nätverksadress].[värdnummer] men genom att dela upp värdnumret och använda den första delen av det som subnätverksnummer kan man dela in hela det lokala nätverket i subnätverk. Adressen för en nod blir då [nätverksadress].[subnätverk].[värdnummer]. Det blir lite färre bitar över att representera olika värdar på ett subnät men eftersom flera subnät kan användas kommer en vinst att utformas. En subnätsmask är en 32 bitars sträng, liksom IP adressen, av ettor och nollor som anger hur stor subnätsadressen är. T.ex. om en nod har adressen 9.67.38.2 och subnätsmasken 255.255.255.192 så tar en router reda på nodens subnät genom logiskt AND av nodens adress och subnätsmask. 00001001 01000011 00100110 00000010 9.67.38.2 11111111 11111111 11111111 11 255.255.255.192 AND 00001001 01000011 00100110 00 Nätadress 01000011 00100110 00 Eftersom 9.67.38.2 är en klass A adress så används de 8 första bitarana för att representera nätverksadressen (första biten indikerar klassen A och de sju följande nätverket) så blir det i detta fall 18 bitar över till subnätsadressen som är följande 01000011 00100110 00 decimalt 68760.
Subn #: 128.97.34.0 Mask #: 255.255.255.128 Subnät 1 Subn #: 128.97.34.128 Mask #: 255.255.255.128 Subnät 2 R1 1 2 3 4 Värd 1: 128.97.34.15 fig.4 Värd 4: 128.97.34.193 Figur 4 visar ett exempel visas om hur framföring, i subnät går till. När värd 1 vill skicka ett datagram till en annan värd 2 går det till på följande sätt. Värd 1 AND:ar sin egen subnätsmask med värd 2:s, och om detta ger ett svar som är ekvivalent med värd 1:s subnätsadress så kan värd 1 skicka meddelandet direkt över subnätet utan att routers används. Så är fallet om värdar är kopplade till samma subnät. Om värd 1 vill kontakta värd 4 så kommer AND:ningen inte att matcha värd 1:s subnätsadress. Detta betyder att värd 1 skickar sitt meddelande till en router i subnätet, i detta fall R1. R1:s funktion är följande: R1 har en routningtabell som ser ut som tabell 1 nedan. Subsnätadress Subnätmask Nästa hop 128.97.34.0 255.255.255.128 Subnät 1 128.97.34.128 255.255.255.128 Subnät2 Default Tab.1 Router R1 kommer också att AND:a alla subnätsmaskar i sin tabell med destinations adressen i meddelandet. Ett resultat som är ekvivalent med en subnätsadress i listan betyder att man också har hittat det rätta nästa hoppet. Dvs när 128.97.34.193 och 255.255.255.128 AND:as får man svaret 128.97.34.128, och då förstår routern att skicka meddelandet till subnät 2. Om ingen matchning sker så kommer routern att avgöra att det sökta nätverket inte är ett subnät av det lokala nätverket vilket betyder att meddelandet skickas till en "default router" som har förbindelse till andra nätverk. Meddelandendet kommer därefter att propagera uppåt i Internets hieraki enligt den information som anskaffats i routingskedet.
Referenser: [1] Bruce S Davie, Larry L Peterson, Computer Networks, Morgan Kaufman, 2000 [2] Douglas E. Comer: Internetworking with TCP/IP, Prentice Hall, 2000 [3] Martin W. Murhammer, Orcun Atakan, Stefan Bretz, Larry R. Pugh, Kazunari Suzuki, David H. Wood, TCP/IP Tutorial and Technical Overview, IBM, 1998