thumb|right|Un router Cisco ASM/2-32EM aflat în serviciu la CERN în 1987. thumb|200px|Router D-Link DIR-600 din anul 2009 cu transmitere a conexiunii la internet prin Wi-Fi și cablu. Un router p. 185.Rughiniș et. al., Administrarea rețelelor locale, p. 82. ( sau ) este un dispozitiv hardware sau software care conectează două sau mai multe rețele de calculatoare bazate pe „comutarea de pachete” (packet switching). Aceste rețele pot fi cu fir (în ) sau fără fir (în ). Funcția îndeplinită de routere se numește rutare. În acest articol diferențierea între routerele hardware și routerele software se face în funcție de locul unde se ia decizia de rutare a pachetelor de date. Routerele software utilizează pentru decizie un modul al sistemului de operare, în timp ce routerele hardware folosesc dispozitive specializate (de tip ASIC) ce permit o viteză mai mare de comutare a pachetelor.
Routerele operează la nivelul 3 al modelului OSI. Ele analizează adresa IP de destinație din antetul fiecărui pachet aflat în tranzit și, pe baza tabelei de rutare, stabilesc interfața de ieșire prin care pachetul trebuie transmis. Decizia este luată comparând adresa calculatorului destinație cu înregistrările (câmpurile) din tabela de rutare. Aceasta poate conține înregistrări atât statice (configurate/definite de către administratorul rețelei), cât și dinamice, aflate de la routerele vecine prin intermediul unor protocoale de rutare.
Tipul de router cel mai cunoscut de către consumatori este cel destinat conexiunilor casnice și firmelor mici, ce nu fac decât să trimită pachetele IP între calculatoarele din rețea și Internet, prin rețeaua unui furnizor de servicii internet (ISP). Există totuși multe alte tipuri de routere care conectează rețele de întreprindere sau rețele ISP.
Istoric
Primul dispozitiv care avea o funcție asemănătoare cu routerele de astăzi (comutarea de pachete) a fost (IMP). IMPurile erau dispozitivele care asigurau comutarea în ARPANET, prima rețea cu comutare de pachete. Ideea de router (numite pe vremea aceea „gateway” - „porți”) a apărut din lucrul unui grup de cercetători în rețele, numit International Network Working Group (INWG). Creat în 1972 ca un grup informal care să analizeze problemele tehnice ale interconectării diferitelor tipuri de rețele existente în vremea respectivă, INWG a devenit în același an un subcomitet al .Davies, Shanks, Heart, Barker, Despres, Detwiler, and Riml, „Report of Subgroup 1 on Communication System”, INWG Nota #1.
Aceste dispozitive erau diferite de precedentele comutatoare de pachete în două moduri. În primul rând, ele conectau rețele de tipuri diferite, ca de exemplu rețele seriale și rețele locale. În al doilea rând, dispozitivele acestea nu asigurau controlul erorilor, lăsând acest lucru în sarcina calculatoarelor (această idee a fost încercată și în rețeaua ).
Ideea a fost analizată în mai mult detaliu, în scopul de a produce un prototip funcțional, în cadrul a două programe simultane. Unul din ele era programul inițiat de DARPA care a dus la crearea arhitecturii TCP/IP. Vinton Cerf, Robert Kahn, „Un protocol pentru comunicarea între rețele de pachete”, IEEE Transactions on Communications, volumul 22, numărul 5, mai 1974, pg. 637 - 648. Celălalt era un program al laboratorului , creat pentru a explora noi tehnologii pentru rețele și care a produs sistemul (PUP), care a fost în mare măsură ignorat în afara companiei Xerox din cauza problemelor de proprietate intelectuală. David Boggs, John Shoch, Edward Taft, Robert Metcalfe, „PUP: O arhitectură inter-rețele”, IEEE Transactions on Communications, volumul 28, numărul 4, aprilie 1980, pg. 612- 624.
Primele routere Xerox au intrat în serviciu la începutul anului 1974. Primul router IP adevărat a fost dezvoltat de Virginia Strazisar la compania în 1975-1976, ca parte a unui program inițiat de DARPA. Până la sfârșitul anului 1976 existau 3 routere bazate pe minicalculatorul DEC PDP-11, active în prototipul de Internet existent în acea perioadă. Craig Partridge, S. Blumenthal, „Rețele de date la BBN”; IEEE Annals of the History of Computing, volumul 28, numărul 1; ianuarie-martie 2006.
Primele routere multiprotocol au fost create în mod independent de cercetători de la MIT și Stanford în 1981; routerul de la Stanford a fost creat de William Yeager, iar cel de la MIT, de , ambele fiind bazate pe PDP-11. „Valea tocilarilor: Cine a inventat cu adevărat ruterul multiprotocol și de ce ar trebui să ne pese?” , Public Broadcasting Service, accesat la 11 august 2007. „Router Man” , NetworkWorld, accesat la 22 iunie 2007.David D. Clark, „Implementarea rețelei campus M.I.T.”, CCNG-2, Campus Computer Network Group, M.I.T., Cambridge, 1982, p. 26.Pete Carey, „Povestea adevărată a unui start-up: povestea atât de des spusă a lansării Cisco fără dramă și intrigi”, San Jose Mercury News, 1 decembrie 2001.
Deoarece cea mai mare parte a rețelelor actuale sunt bazate pe protocolul IP, routerele multiprotocol au devenit destul de rare. Cu toate acestea, nu trebuie minimizată importanța lor din perioada de început a dezvoltării rețelelor de calculatoare, deoarece în acea perioadă existau mai multe seturi de protocoale care concurau cu stiva TCP/IP. Se poate spune că routerele cu stivă dublă, IPv4 și IPv6 pot fi considerate multiprotocol, dar într-un mod mult mai limitat decât un router ce cunoștea protocoalele AppleTalk, DECnet, IP și Xerox.Multi Protocol Routers by Chuck Easttom
După cum s-a arătat mai sus, la începutul erei rutării (de la mijlocul anilor 1970 până la mijlocul anilor 1980) pe post de routere erau folosite minicalculatoare. Deși calculatoarele obișnuite pot fi folosite ca routere, dispozitivele moderne sunt mașini extrem de specializate, de multe ori cu hardware dedicat care să accelereze atât funcțiile de bază (comutarea pachetelor), cât și funcțiile speciale (de exemplu, criptarea IPsec).
Cu toate acestea, pentru cercetare și alte aplicații sunt folosite în continuare routere făcute din calculatoare cu Linux și Unix, ce rulează aplicații cu sursă deschisă. Deși sistemul de operare pentru routere de la Cisco (numit IOS) a fost creat de la zero special pentru dispozitive de rețea, alte sisteme de operare pentru routere, precum cele de la Juniper și sunt variante extrem de adaptate pe Unix (mai exact FreeBSD, respectiv Linux.).
Informații generale thumb|300px|Router de nucleu () Routerele conțin în general un sistem de operare specializat (ca, de exemplu, IOS de la Cisco,Richard Deal, p. 103. de la Juniper sau alternative open-source ca OpenWRT ), RAM, NVRAM, memorie flash, unul sau mai multe procesoare, precum și cel puțin două interfețe de rețea.
Routerele pot conține, de asemenea, mai multe procesoare și ASIC-uri specializate în comutarea de pachete. Sistemele extensibile bazate pe șasiuri, cum ar fi , au mai multe ASIC-uri pe fiecare modul și permit o mare varietate de porturi pentru rețele locale sau metropolitane, precum și conexiuni personalizate. Pentru situațiile în care traficul este mai redus și costul este mai important sunt folosite routere mai simple. Folosind un software specializat (precum Untangle, , sau Quagga), orice calculator personal poate deveni un router (poate oferi funcția de router).
Funcționare thumb|250px|left|Procesul de rutare a unui pachet de date
Procesul de rutare are două părți distincte: „Cerințe pentru separarea controlului și comutării în rețele IP”, RFC 3654, H. Khosravi & T. Anderson, noiembrie 2003.Răzvan Rughiniș: „Proiectarea rețelelor de calculatoare - Rutarea” . determinarea căii optime, în care routerul folosește informațiile din tabela de rutare (inclusiv cele introduse de protocoalele de rutare) pentru a învăța interfața de ieșire cea mai potrivită pentru a trimite pachetele la o anumită destinație, și comutarea pachetelor, care asigură trimiterea unui pachet primit pe o interfață (de intrare) pe interfața de ieșire optimă.
Determinarea căii optime
Această parte a procesului de rutare duce la crearea unei tabele de rutare, care conține adresa rețelei și masca de rețea, adresa următorului router și/sau interfața de ieșire pentru destinația respectivă, precum și metrica și distanța administrativă. Rețelele sunt plasate în tabela de rutare în ordinea descrescătoare a măștii de rețea (de la rețele mai mici la rețele mai mari), iar routerul le parcurge liniar.
Metrica și distanța administrativă sunt cele două metode de diferențiere între diferitele rute către aceeași destinație. Distanța administrativă face diferența între diferitele tipuri de rute (statice, dinamice și direct conectate). Felul în care se calculează metrica diferă de la un protocol de rutare la altul, însă în general sunt incluse informații ca întârzierea, lărgimea de bandă, distanța ori cantitatea de trafic. Metrica este relevantă doar pentru rute generate de același protocol de rutare, de aceea are o importanță mai mică decât distanța administrativă.Rughiniș et. al. - Administrarea rețelelor locale, pg. 141-147.
Pentru rutele dinamice, procesul de alegere a căii optime este următorul: Dacă rețeaua destinație nu există încă în tabela de rutare, aceasta este introdusă; Dacă rețeaua destinație este o subrețea a unei intrări din tabela de rutare, sunt comparate distanța administrativă și metrica: Dacă acestea sunt identice sau ruta existentă are o metrică mai bună, nu se efectuează nicio modificare; Dacă ruta nouă este mai bună, se introduce o nouă intrare în tabela de rutare, înaintea vechii intrări, astfel încât routerul să folosească această rută; Dacă rețeaua există deja în tabela de rutare, iar noua rută este mai bună, intrarea este înlocuită.
Routerele mențin starea rutelor în tabela de rutare, dar nu și starea pachetelor individuale, deoarece acest lucru ar însemna o întârziere a comutării. Mai mult, unele routere folosesc pentru identificarea rapidă a interfețelor de ieșire o a doua tabelă, numită FIB (). Această tabelă este optimizată pentru căutarea rapidă a interfețelor.Wire Speed Packet Classification Without TCAM: One More Register (And A Bit Of Logic) Is Enough Q. Dong et al., ACM SIGCOMM 2006
Comutarea pachetelor
Comutarea pachetelor este funcția de bază a unui router. Pentru a o îndeplini corespunzător, routerul trebuie să efectueze următoarele operații: să examineze fiecare pachet sosit și să determine tipul acestuia, precum și adresa destinație; să determine adresa următorului router (sau a destinației) către care respectivul pachet trebuie trimis, prin examinarea tabelei de rutare; să determine interfața pe care urmează să fie transmis pachetul; să determine adresa de nivel de legătură de date a următorului ruter (sau a destinației), să reunească pachetul cu informațiile de nivel doi și trei corespunzătoare și să-l trimită pe interfața către destinație.
Crearea tabelei de rutare a fost descrisă în secțiunea anterioară. Dacă tabela nu conține interfața, ci doar adresa următorului ruter (next hop), este aleasă interfața aflată în aceeași rețea cu routerul următor. Dacă adresa de nivel de legătură de date a acestuia nu este prezentă în tabela a interfeței, se face o cerere ARP pentru a o obține. Înainte de a transmite pachetul, este decrementată valoarea câmpului TTL (time-to-live) din antetul IP, pentru a evita .
Pentru înaintarea pachetelor IP, designul routerelor încearcă să minimizeze informațiile despre starea pachetelor păstrate de ruter. Odată ce un pachet a fost trimis, routerul nu va mai reține niciun fel de informație despre acel pachet. Pachetele lipsă și corectarea erorilor sunt atributele nivelului transport.