TCP offload motor - TCP offload engine

TCP offload engine ( TOE ) er en teknologi, der bruges i netværkskort (NIC) til at aflaste behandlingen af ​​hele TCP/IP -stakken til netværkskontrolleren. Det bruges primært med højhastighedsnetværksgrænseflader, såsom gigabit Ethernet og 10 Gigabit Ethernet , hvor behandling overhead af netværksstakken bliver betydelig.

Udtrykket TOE bruges ofte til at referere til selve NIC'en, selvom kredsløbsteknikere kun kan bruge det til at referere til det integrerede kredsløb, der er inkluderet på kortet, der behandler Transmission Control Protocol (TCP) headers. TOE'er foreslås ofte som en måde at reducere overhead forbundet med Internet Protocol (IP) lagringsprotokoller såsom iSCSI og Network File System (NFS).

Formål

Oprindeligt TCP er designet til upålidelige netværk lav hastighed (såsom tidlige dial-up modemer ), men med væksten af internettet i form af backbone transmissionshastigheder (ved hjælp af optisk Carrier , Gigabit Ethernet og 10 Gigabit Ethernet- forbindelser) og hurtigere og mere pålidelig adgang mekanismer (f.eks. DSL- og kabelmodem ) bruges det ofte i datacentre og stationære pc -miljøer med en hastighed på over 1 Gigabit i sekundet. TCP -softwareimplementeringerne på værtsystemer kræver omfattende computerkraft. I begyndelsen af ​​2000'erne kunne fuld duplex gigabit TCP-kommunikation forbruge mere end 80% af en 2,4 GHz Pentium 4- processor (se frigjorte CPU-cyklusser ), hvilket resulterer i små eller ingen behandlingsressourcer tilbage til applikationer til at køre på systemet.

TCP er en forbindelsesorienteret protokol, der tilføjer kompleksitet og behandlingsomkostninger. Disse aspekter omfatter:

Ved at flytte nogle eller alle disse funktioner til dedikeret hardware, en TCP -offload -motor, frigøres systemets hoved -CPU til andre opgaver. Fra 2012 understøtter meget få forbrugernetværksinterfacekort TOE.

I stedet for helt at erstatte TCP-stakken med en TOE, er der alternative teknikker til at aflaste nogle operationer i samarbejde med operativsystemets TCP-stak. TCP checksum offload og stort segment offload understøttes af størstedelen af ​​nutidens Ethernet NIC'er. Nyere teknikker som stor modtage-offload og TCP-anerkendelse-offload er allerede implementeret i nogle high-end Ethernet-hardware, men er effektive, selvom de udelukkende implementeres i software.

Frigjorte CPU-cyklusser

En generelt accepteret tommelfingerregel er, at 1 Hertz CPU -behandling er påkrævet for at sende eller modtage 1 bit/s TCP/IP. For eksempel kræver 5 Gbit/s (625 MB/s) netværkstrafik 5 GHz CPU -behandling. Dette indebærer, at to hele kerner i en 2,5 GHz multi-core processor vil være påkrævet for at håndtere TCP/IP-behandlingen forbundet med 5 Gbit/s TCP/IP-trafik. Da Ethernet (10GE i dette eksempel) er tovejs, er det muligt at sende og modtage 10 Gbit/s (for en samlet gennemstrømning på 20 Gbit/s). Brug af 1 Hz/(bit/s) reglen svarer til otte 2,5 GHz kerner.

Mange af CPU-cyklusser, der bruges til TCP/IP-behandling, frigøres af TCP/IP-offload og kan bruges af CPU'en (normalt en server- CPU) til at udføre andre opgaver, f.eks. Filsystembehandling (i en filserver) eller indeksering (i en backup medieserver). Med andre ord kan en server med TCP/IP -offload udføre mere serverarbejde end en server uden TCP/IP -offload -NIC'er.

Reduktion af PCI -trafik

Ud over den protokoloverhead, TOE kan løse, kan den også løse nogle arkitektoniske problemer, der påvirker en stor procentdel af værtbaserede (server og pc) slutpunkter. Mange ældre slutpunktsværter er PCI -busbaserede, hvilket giver en standardgrænseflade til tilføjelse af visse eksterne enheder, f.eks. Netværksgrænseflader til servere og pc'er. PCI er ineffektiv til at overføre små bursts af data fra hovedhukommelsen på tværs af PCI -bussen til netværksgrænseflade -IC'erne, men dets effektivitet forbedres i takt med, at databurststørrelsen stiger. Inden for TCP -protokollen oprettes et stort antal små pakker (f.eks. Kvitteringer), og da disse typisk genereres på værts -CPU'en og transmitteres over PCI -bussen og ud af det fysiske netværksinterface, påvirker dette værtscomputers IO -gennemløb.

En TOE -løsning, der er placeret på netværksgrænsefladen, er placeret på den anden side af PCI -bussen fra CPU -værten, så den kan løse dette I/O -effektivitetsproblem, da de data, der skal sendes over TCP -forbindelsen, kan sendes til TOE fra CPU'en på tværs af PCI -bussen ved hjælp af store dataserksstørrelser, uden at nogen af ​​de mindre TCP -pakker skal krydse PCI -bussen.

Historie

Et af de første patenter inden for denne teknologi, til UDP -aflæsning, blev udstedt til Auspex Systems i begyndelsen af ​​1990. Auspex -grundlægger Larry Boucher og en række Auspex -ingeniører grundlagde Alacritech i 1997 med ideen om at udvide konceptet med netværksstack -offload til TCP og implementere det i brugerdefineret silicium. De introducerede det første parallel-stack fuld offload netværkskort i begyndelsen af ​​1999; virksomhedens SLIC (Session Layer Interface Card) var forgængeren til dets nuværende TOE -tilbud. Alacritech har en række patenter inden for TCP/IP -offload.

I 2002, da fremkomsten af ​​TCP-baseret lagring såsom iSCSI vakte interesse, blev det sagt, at "Mindst et dusin tilflyttere, de fleste grundlagt mod slutningen af ​​dot-com-boblen, jagter muligheden for købmandens halvlederacceleratorer til opbevaring protokoller og applikationer, der kæmper med en halv snes forskansede leverandører og interne ASIC-designs. "

I 2005 licenserede Microsoft Alacritechs patentbase og skabte sammen med Alacritech den delvise TCP -afladningsarkitektur, der er blevet kendt som TCP -skorstenafladning. TCP skorstensafladning er centreret om Alacritech "Communication Block Passing Patent". Samtidig opnåede Broadcom også en licens til at bygge TCP skorstensaflastningsspåner.

Typer af TCP/IP -offload

Parallel-stak fuld offload

Parallel-stack full offload får sit navn fra begrebet to parallelle TCP/IP-stakke. Den første er hovedværtsstakken, der er inkluderet i værts -operativsystemet. Den anden eller "parallelle stak" er forbundet mellem applikationslaget og transportlaget (TCP) ved hjælp af en "vampyrhane". Vampyrhanen opfanger TCP -forbindelsesanmodninger fra applikationer og er ansvarlig for TCP -forbindelsesstyring samt TCP -dataoverførsel. Mange af kritikpunkterne i det følgende afsnit vedrører denne type TCP -offload.

HBA fuld offload

HBA (Host Bus Adapter) fuld offload findes i iSCSI -værtskort, der præsenterer sig selv som diskcontrollere til værtsystemet, mens de tilsluttes (via TCP/IP) til en iSCSI -lagerenhed . Denne type TCP -offload aflaster ikke kun TCP/IP -behandling, men det aflaster også iSCSI -initiatorfunktionen. Fordi HBA vises for værten som en diskcontroller, kan den kun bruges med iSCSI -enheder og er ikke egnet til generel TCP/IP -offload.

TCP skorsten delvis aflastning

TCP skorsten aflæsning adresserer den store sikkerhedskritik af parallel-stack fuld aflæsning. Ved delvis aflastning styrer hovedsystemstakken alle forbindelser til værten. Efter at der er etableret en forbindelse mellem den lokale vært (normalt en server) og en udenlandsk vært (normalt en klient), overføres forbindelsen og dens tilstand til TCP -afladningsmotoren. Tunge løft af dataoverførsel og modtagelse håndteres af aflastningsanordningen. Næsten alle TCP -afladningsmotorer bruger en eller anden form for TCP/IP -hardwareimplementering til at udføre dataoverførslen uden værtens CPU -indgriben. Når forbindelsen er lukket, returneres forbindelsestilstanden fra afladningsmotoren til hovedsystemstakken. Vedligeholdelse af kontrollen over TCP -forbindelser gør det muligt for systemstakken at implementere og kontrollere forbindelsessikkerhed.

Stor modtage lossing

Stor modtage aflastning ( LRO ) er en teknik til at øge indgående gennemløb af høj båndbredde netværksforbindelser ved at reducere central processing unit (CPU) overhead. Det fungerer ved at samle flere indgående pakker fra en enkelt strøm til en større buffer, før de sendes højere op i netværksstakken, hvilket reducerer antallet af pakker, der skal behandles. Linux -implementeringer bruger generelt LRO i forbindelse med den nye API (NAPI) til også at reducere antallet af afbrydelser .

Ifølge benchmarks kan selv implementering af denne teknik helt i software øge netværksydelsen betydeligt. Fra april 2007 understøtter Linux -kernen LRO kun for TCP i software. FreeBSD 8 understøtter LRO i hardware på adaptere, der understøtter det.

LRO bør ikke operere på maskiner, der fungerer som routere, da det bryder ende-til-ende-princippet og kan påvirke ydeevnen betydeligt.

Generisk modtage offload

Generic Receive Offload ( GRO ) implementerer en generaliseret LRO i software, der ikke er begrænset til TCP/ IPv4 eller har de problemer, der er oprettet af LRO.

Stor afsendelse

I computernetværk , stort send aflastning ( LSO ) er en teknik til at øge udgang gennemløb af høj båndbredde netværksforbindelser ved at reducere CPU overhead. Det fungerer ved at sende en multipacket buffer til netværksinterfacekortet (NIC). NIC opdeler derefter denne buffer i separate pakker. Teknikken kaldes også TCP segmentering offload ( TSO ) eller generic segmentation offload ( GSO ) når den anvendes på TCP . LSO og LRO er uafhængige, og brug af den ene kræver ikke brug af den anden.

Når et system skal sende store bidder af data ud over et computernetværk, skal brikkerne først bryde op i mindre segmenter, der kan passere gennem alle netværkselementer som routere og switches mellem kilde- og destinationscomputerne. Denne proces kaldes segmentering . Ofte udfører TCP -protokollen i værtscomputeren denne segmentering. Aflæsning af dette arbejde til NIC kaldes TCP segmentation offload (TSO).

For eksempel er en enhed på 64 KiB (65.536 bytes) data normalt segmenteret til 45 segmenter på 1460 bytes hver, før den sendes gennem NIC og over netværket. Med en vis intelligens i NIC'en kan værts-CPU'en overdrage de 64 KB data til NIC'en i en enkelt transmissionsanmodning, NIC'en kan opdele disse data i mindre segmenter på 1460 bytes, tilføje TCP, IP og data link layer protocol headers - ifølge en skabelon leveret af værtens TCP/IP -stak - til hvert segment, og send de resulterende frames over netværket. Dette reducerer betydeligt arbejdet udført af CPU'en. Fra 2014 understøtter mange nye NIC'er på markedet TSO.

Nogle netværkskort implementerer TSO generisk nok til, at det kan bruges til at aflaste fragmentering af andre transportlagsprotokoller eller til at udføre IP -fragmentering for protokoller, der ikke understøtter fragmentering af sig selv, såsom UDP .

Support i Linux

I modsætning til andre kerner inkluderer Linux -kernen ikke understøttelse af TOE -hardware. For ikke at forveksle med andre lignende navngivne aflastninger , som TCP Segmentation Offload, som er omfattende understøttet. Selvom der er patches fra hardwareproducenterne, såsom Chelsio eller Qlogic, der tilføjer support, er Linux -kerneudviklerne imod denne teknologi af flere årsager, bl.a.

  • Sikkerhed - fordi TOE er implementeret i hardware, skal patches anvendes på TOE -firmwaren i stedet for kun software for at løse eventuelle sikkerhedsrisici, der findes i en bestemt TOE -implementering. Dette forstærkes yderligere af denne hardwares nyhed og leverandørspecificitet sammenlignet med en velafprøvet TCP/IP-stak, som man finder i et operativsystem, der ikke bruger TOE.
  • Begrænsninger af hardware - fordi forbindelser bufferes og behandles på TOE -chippen, kan ressource sult lettere opstå i forhold til den generøse CPU og hukommelse, der er tilgængelig for operativsystemet.
  • Kompleksitet - TOE bryder den antagelse, kerner gør om at have adgang til alle ressourcer til enhver tid - detaljer såsom hukommelse, der bruges af åbne forbindelser, er ikke tilgængelige med TOE. TOE kræver også meget store ændringer i en netværksstak for at blive understøttet korrekt, og selv når det er gjort, fungerer funktioner som servicekvalitet og pakkefiltrering typisk ikke.
  • Proprietær - TOE implementeres forskelligt af hver hardwareleverandør. Det betyder, at mere kode skal omskrives for at håndtere de forskellige TOE -implementeringer på bekostning af den ovennævnte kompleksitet og muligvis sikkerhed. Endvidere kan TOE-firmware ikke let ændres, da den er lukket kilde.
  • Forældelse - Hver TOE NIC har en begrænset levetid, fordi systemhardware hurtigt indhenter TOE -ydelsesniveauer og til sidst overstiger TOE -ydelsesniveauer.

Leverandører

Meget af det nuværende arbejde med TOE -teknologi er fra producenter af 10 Gigabit Ethernet -interfacekort, såsom Broadcom , Chelsio Communications , Emulex , Mellanox Technologies , QLogic .

Se også

Referencer

eksterne links