Vraag Waarom presteert een hardwarerouter beter dan een Linux-router met betere specificaties (RAM & CPU)?


Ik heb een minimale CentOS 6.3, 64 bit die fungeert als gateway met 4 NIC (1 Gbps), elk verbonden voor openbaar verkeer en andere voor privé, die NATing uitvoert. Het heeft 6 GB RAM en 4 logische kernen. We hebben dit de afgelopen twee jaar probleemloos gebruikt.

Ik heb geen ervaring met hardwarerouters, maar ik heb gehoord dat ze minder RAM en CPU hebben en flash-schijven gebruiken. Hoe kan een box met een lage hardwareconfiguratie beter presteren (zoals in, meer gelijktijdige verbindingen afhandelen) dan een computer met meer RAM en CPU?

Wat zijn de beperkende factoren, anders dan IOS met verschillende methoden om dit aan te pakken?


43
2018-03-28 03:51


oorsprong


Implementaties in Hardware zijn sneller dan firmware sneller is dan software voor dezelfde oplossing. - mdpc
De "betere specificaties" die u noemt, zijn niet relevant voor de taak die u moet uitvoeren. Er zijn andere eigenschappen die er echt toe doen. - ndim
Ok, dus ... van wat je schreef, moet ik aannemen dat je Centos een virtuele machine is? Afgezien van speciale netwerkoptimalisaties voor virtuele machines, zowel op hypervisor als aan gastenzijde, zijn virtuele machines over het algemeen bekend dat ze niet goed zijn in dit soort functies ... voor gebruik als router / firewall is bare metal altijd aanbevolen! - stoned
Stuurt u daadwerkelijk 1 Gbps verkeer door zoals voorgesteld door uw configuratie? U kunt een dumptruck gebruiken om een ​​schop vol zand te verplaatsen. 6 GB RAM en 4 kernen worden in principe nooit aangeraakt voor een router, u kunt elektriciteit en rackruimte besparen door een kleine Intel Atom-machine te gebruiken om deze klus te klaren. - Bert


antwoorden:


ASIC's.

In plaats van een CPU en taakspecifieke software voor algemene doeleinden te gebruiken, kunt u de software overslaan en het silicium de taak direct laten uitvoeren.

Hoogwaardige netwerkhardware gebruikt ASIC's in plaats van software voor de rekenkundig zware (maar relatief logisch eenvoudige) taken van het vergelijken van een IP-adres met een enorme internetrouteringstabel, het controleren van een CAM-tabel voor een schakelbeslissing of het controleren van een pakket tegen een ACL . Dit maakt een enorm verschil in de snelheid van die tijdgevoelige bewerkingen, wat een aanzienlijk voordeel oplevert ten opzichte van een CPU voor algemeen gebruik.


64
2018-03-28 04:06



Hoewel ik het met Shane eens ben, zou ik iptables op een generieke server over een apparaat kiezen, elke dag. in mijn bedrijf is iptables op Fedora sneller, flexibeler, eenvoudiger te configureren, minder belastend voor cpu en geheugen, sneller op te starten en veel goedkoper dan onze cisco-asa. - rvh
@rvh: voor firewalling of gewoon routing? - mveroone
en over het algemeen is 'snelheid' hier een vrij losse term. Ik weet zeker dat er veel situaties zijn waarbij een pc nog steeds een bewerking 'zo snel' als een HW-bewerking kan uitvoeren, of misschien een bepaalde constante duur heeft die langer duurt dan HW. Maar het komt echt neer op stabiliteit en 'knal voor je geld' - je koopt nog steeds minder RAM / CPU met een apparaat, maar het haalt er meer uit en doet alleen wat het nodig heeft om stabiliteit te krijgen - Colin Godsey
Dit antwoord is verkeerd door ommission. Gewoon "ASIC's" roepen is ook een beetje naïef, omdat de meeste routers die NAT gebruiken CPU's voor algemene doeleinden gebruiken, tenzij we extreme prestaties leveren. Ook hardware-NAT-routers hebben sterkere limieten voor het aantal gelijktijdige verbindingen. Wat het OP ervaart, is verkeerde configuratie en het gebruik van een besturingssysteem dat niet geschikt is voor de taak. - dualed
@dualed most routers that do NAT use general purpose CPUs Ja, dat is een echte verklaring, maar onwetend van het feit dat veel van die apparaten uitladen specifiek operaties naar toegewezen chips (zoals een lezing van mijn volledige antwoord hierboven duidelijk maakt). Denk niet aan NAT- en connectie-tracking (wat, ik ben het ermee eens, niet gebeurt in ASIC's in moderne apparaten), denk routingstabel en het schakelen van offloading. - Shane Madden♦


Een high-end, dedicated router kan beter presteren dan een pc met een snellere CPU en meer RAM omdat deze meer routing in hardware kan uitvoeren.

Om dezelfde reden kan een $ 60 Gigabit Ethernet-switch een pc van $ 2000 overschrijden met vier GigE-kaarten met twee poorten die fungeren als een Ethernet-switch. De schakelaar is vanaf de grond opgebouwd om een ​​schakelaar te zijn.


12
2018-03-28 04:06



En aangezien de dedicated router op een flash-disk draait, zijn er minder bewegende delen die op ongelegen momenten kapot gaan. - cpt_fink
Ik weet niet zeker of je gelijk hebt. Ik heb een erg eenvoudige anti-DDOS-beveiliging gemaakt voor een bedrijf dat ik heb gewerkt op basis van netmap (info.iet.unipi.it/~luigi/netmap) en het presteerde erg goed, zelfs op normale hardware (echt vol 1 Gb / s of 11M pakketten / sec). Er is ook een versie van openswitch voor netmap op die site die 3M-pakketten / sec op "normale" hardware kan doorsturen, ik ken geen goedkope (500 $) switch die dit kan, maar ik heb het mis. - XzKto
@XzKto Een typische goedkope ($ 60) 5-poorts GigE-switch kan pakketten met volledige draadsnelheid doorsturen tussen alle combinaties van poorten. Ze gebruiken meestal een volledige, niet-blokkerende dwarsbalk. - David Schwartz
@XzKto Wat David bedoelde, is, in tegenstelling tot de pc die "tot zijn eigen interfaces doorvoer" -snelheid zal verwerken, de switch doet als voor elke combinatie van poort-naar-poort. Je kunt host1 laten praten met host2, en 3 tot 4, en elke verbinding op full-duplex en maximale doorvoer. Je kunt dat niet verslaan. (en voor meer geld, meer poorten, nog gemakkelijker om te zien waarom het sneller is). En voor router is het vergelijkbaar: hardware kan sneller worden omgeleid dan software, omdat het kan worden omgeleid zodra er voldoende informatie is (je linux-router doet het op elke laag, maar daar komt al langzamer) - Olivier Dulac


"Anders dan IOS"?

IOS maakt bijna het verschil. CentOS is een besturingssysteem voor algemene doeleinden. Het is ontworpen om goed genoeg te presteren onder een zeer breed scala aan scenario's, met behulp van een breed scala aan verschillende hardwareconfiguraties. IOS aan de andere kant is extreem fijn afgestemd om alleen het soort workloads te verwerken die je van een stuk netwerkapparatuur zou verwachten, met behulp van de zeer specifieke soorten hardware die je zou vinden in Cisco-apparatuur.

Weten precies welke stukjes hardware je programmeert, zullen je een heel lange weg banen in termen van prestaties versus compatibiliteit.


11
2018-03-28 03:55



1. Voeg daarbij het feit dat Cisco over de technische middelen en knowhow beschikt software vervangen door hardware wanneer nodig. Dit betekent dat als een bepaalde bewerking langzamer is dan ze zouden willen in software, ze moeite kunnen doen om een ​​ASIC te ontwikkelen, instructies aan hun bestaande verwerkingseenheden toe te voegen of een hardwaremodule te bouwen om het te versnellen. De tafels tip overweldigend in het voordeel van de prestaties als je de luxe hebt om beide software te besturen en de hardware. - Justin ᚅᚔᚈᚄᚒᚔ
Het werkt ook in beide richtingen. De hardware hoeft ook geen rekening te houden met zeldzame, complexe gevallen. Het gooit gewoon die naar software. Routing loops? Probeer niet in hardware uit te vinden hoe je daarmee moet omgaan. - MSalters


Zowel software als hardware hebben iets te zeggen. Ik heb de vergelijking van Intel en TP-Link NIC (die een Realtek-chip als kern gebruikt) op generieke serverhardware, evenals speciaal ontwikkelde en generieke software voor routering.

Aan de hardware kant, als de ASIC aan boord enige afhandeling van IP-verkeer kan doen, kan de processorbelasting lager en dus sneller zijn. Ik heb gemerkt dat de twee geïntegreerde INtel NIC-chips direct communiceren door DMA, waarbij de belangrijkste CPU wordt omzeild bij het afhandelen van pakketdoorschakeling; ondertussen onderbreekt de Realtek-chip wanneer een pakket arriveert.

Aan de softwarekant kan de software efficiënter worden gemaakt als de software is ontworpen voor gebruik bij routering. Ik heb zowel pfSense + PF (een gemodificeerd FreeBSD bedoeld voor gebruik als een router) en algemeen bruikbare Ubuntu 12.04 + iptables gebruikt als routingsoftware en de eerste keer dat het verkeer duidelijk sneller wordt geschakeld. (Ubuntu 14.04 is nu bijna net zo snel, dankzij de nieuwe nftables in Linux 3.13 kernel.)

Een dedicated router heeft echter één belangrijk nadeel: het kan niet veel anders dan het schakelen van verkeer uitvoeren en het kan niet worden gevirtualiseerd. Mijn huidige edge-router is een virtuele machine in mijn ESXi-cluster met Ubuntu 14.04 en werkt ook als een inbraakdetectiesysteem en een load balancer.


4
2018-04-23 11:41





AFAIK, het is de overhead van een besturingssysteem voor algemene doeleinden; ongeacht hoe snel uw verbindingen zijn, de pakketten worden pakket voor pakket behandeld in de context van de kernel, waardoor de latentie en belasting van het systeem toenemen. Ik geloof dat het al in de andere Antwoorden is uitgelegd, beter dan ik zou kunnen doen.

Dat gezegd hebbende, zijn er veelbelovende nieuwe "ish" -technologieën die toenemen in populariteit en haalbaarheid die een meer geduchte concurrent uit Linux-systemen kunnen creëren, zowel in dit als in andere opzichten; d.w.z. InfiniBand

Bekijk de volgende vragen en antwoorden over StackOverflow: Hoe wordt TCP Kernel-bypass geïmplementeerd

Verder lezen:


3
2017-10-17 21:40





Dit komt meestal door een gebrek aan kant-en-klare netwerkstack / apparaatconfiguratie in linux. In bijna 90% van de gevallen wordt uw netwerkverkeer verwerkt door CPU0 terwijl andere inactief zijn. Als je dit probleem wilt oplossen, is het verschil met hardware-routers niet zo groot als je misschien denkt. U zou ten minste RSS of RPS moeten instellen (op driver / stack gebaseerde pakketverwerkingsdistributie tussen de CPU's).

Als je echt om je linux-routerprestaties geeft en voldoende tijd hebt, raad ik je aan dit te lezen artikel in blog packagecloud (er is ook een artikel over het verzenden van pakketten).

Als je de distributie eens moet bekijken en je denkt dat het kijken naar while sleep 1; do cat $some_file_in_procfs; done, Evaluatie van CPU-masker en handleiding smp_affinity schrijven is saai, je zou waarschijnlijk mijn huisdierenproject hebben gevonden netutils-linux Extreem nuttig.


2
2017-07-16 03:56