GNU/Linux >> Znalost Linux >  >> Linux

Proč hardwarový router funguje lépe než router Linux s lepšími specifikacemi (RAM a CPU)?

Řešení 1:

ASIC.

Namísto použití univerzálního CPU a softwaru specifického pro úlohu můžete software přeskočit a jednoduše přimět křemík, aby úlohu zvládl přímo.

Vysoce výkonný síťový hardware používá ASIC místo softwaru pro výpočetně náročné (ale relativně logicky jednoduché) úkoly, jako je porovnávání IP adresy s obrovskou internetovou směrovací tabulkou, kontrola CAM tabulky pro rozhodnutí o přepnutí nebo kontrola paketu proti ACL. . To představuje obrovský rozdíl v rychlosti těchto časově citlivých operací, což poskytuje významnou výhodu oproti univerzálnímu CPU.

Řešení 2:

Špičkový, specializovaný router může překonat počítač s rychlejším CPU a více RAM, protože dokáže udělat více směrování v hardwaru.

Je to stejný důvod, proč může gigabitový ethernetový přepínač za 60 USD překonat počítač za 2 000 USD se 4 dvouportovými GigE kartami fungujícími jako ethernetový přepínač. Přepínač je od základu postaven jako přepínač.

Řešení 3:

"Jiné než IOS"?

IOS dělá téměř veškerý rozdíl. CentOS je operační systém pro všeobecné použití. Je navržen tak, aby fungoval dostatečně dobře ve velmi širokém spektru scénářů s využitím široké škály různých hardwarových konfigurací. Na druhou stranu je IOS extrémně vyladěný tak, aby zvládl pouze takové pracovní zátěže, které byste očekávali od síťového zařízení, s použitím velmi specifických typů hardwaru, které najdete v zařízení Cisco.

Vědět přesně to, pro jaké části hardwaru programujete, vám zabere velmi dlouhou cestu, pokud jde o výkon vs. kompatibilitu.

Řešení 4:

Software i hardware mají co říct. Mám srovnání Intel a TP-Link NIC (které ve svém srdci používá čip Realtek) na generickém serverovém hardwaru a také na účelově vytvořeném a generickém softwaru ve směrování.

Na hardwarové stránce, pokud ASIC na desce může provádět nějakou manipulaci s IP provozem, může být zatížení procesoru nižší, a tedy rychlejší. Všiml jsem si, že dva integrované čipy INtel NIC komunikují přímo přes DMA a obcházejí hlavní CPU při manipulaci s předáváním paketů; mezitím čip Realtek přeruší, kdykoli dorazí paket.

Na straně softwaru, pokud je software navržen pro použití při směrování, může být efektivnější. Použil jsem jak pfSense+PF (upravený FreeBSD určený k použití jako router), tak obecný Ubuntu 12.04+iptables jako směrovací software a první jasně přepínal provoz mnohem rychleji. (Ubuntu 14.04 je nyní téměř stejně rychlé díky novým nftables v jádře Linuxu 3.13.)

Dedikovaný router má však jednu velkou nevýhodu:nemůže vykonávat nic jiného než přepínání provozu a nelze jej virtualizovat. Můj současný okrajový router je virtuální stroj uvnitř mého clusteru ESXi se systémem Ubuntu 14.04 a funguje také jako systém detekce narušení a vyrovnávání zatížení.

Řešení 5:

AFAIK, je to režie operačního systému pro obecné účely; bez ohledu na to, jak rychle jsou vaše připojení, jsou pakety zpracovávány na bázi paketu po paketu v kontextu jádra, což zvyšuje latenci a zatížení systému. Věřím, že to již bylo vysvětleno v ostatních odpovědích lépe, než bych to dokázal já.

Jak již bylo řečeno, existují slibné nové "ish" technologie zvyšující popularitu a proveditelnost, které by mohly vytvořit impozantnějšího konkurenta ze systémů Linux v tomto i v jiných ohledech; tj. InfiniBand

Podívejte se na následující otázky a odpovědi na StackOverflow:Jak je implementováno TCP Kernel-bypass

Další čtení:

  • Výukový program na CCGrid ’11:Infiniband a 10gigabitový Ethernet pro figuríny
  • InfiniBand a Linux v článku LinuxJournal
  • Přístup k InfiniBand z Linuxu – Intel DeveloperZone
  • Projekt InfiniBand OpenSource

Linux
  1. Proč je Printf lepší než Echo?

  2. Jak provést Chroot s jmennými prostory Linuxu?

  3. Linux – Jak funguje průměrná zátěž u moderních procesorů?

  1. Proč programátoři milují balení Linuxu

  2. Proč Lun World Wide ID začíná číslem 3 v Linuxu dm-multipath

  3. Proč se můj systém Linux zasekává, pokud neustále nezahazuji mezipaměti?

  1. Proč se držím xtermu

  2. Správa připojeného hardwaru v systému Linux pomocí systemd-udevd

  3. Proč jsem si zamiloval Antergos Linux