NO331320B1 - Balansering av nettverksbelastning ved bruk av informasjon om vertsmaskin-status - Google Patents

Balansering av nettverksbelastning ved bruk av informasjon om vertsmaskin-status Download PDF

Info

Publication number
NO331320B1
NO331320B1 NO20042744A NO20042744A NO331320B1 NO 331320 B1 NO331320 B1 NO 331320B1 NO 20042744 A NO20042744 A NO 20042744A NO 20042744 A NO20042744 A NO 20042744A NO 331320 B1 NO331320 B1 NO 331320B1
Authority
NO
Norway
Prior art keywords
load
state
application
load balancing
infrastructure
Prior art date
Application number
NO20042744A
Other languages
English (en)
Other versions
NO20042744L (no
Inventor
Christopher L Darling
Joseph M Joy
Sunita Shrivastava
Chittur Subbaraman
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of NO20042744L publication Critical patent/NO20042744L/no
Publication of NO331320B1 publication Critical patent/NO331320B1/no

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1029Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers using data related to the state of servers by a load balancer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/61Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources taking into account QoS or priority requirements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Abstract

I et første eksempel på mediautførelse inneholder ett eller flere prosessor-aksesserbare medier prosessorseksekverbare instruksjoner som, når de blir eksekvert, instruerer et system til å utføre handlinger omfattende det å: akkumulere vertsmaskinstatusinformasjon i et antall vertsmaskiner og sende den akkumulerte statusinformasjonen fra de flere vertsmaskinene. I et andre eksempel på mediautførelse inneholder ett eller flere prosessor-aksesserbare medier prosessorseksekverbare instruksjoner som, når de blir eksekvert, instruerer et system til å utføre handlinger omfattende det å: motta vertsmaskinstatusinformasjon fra et antall vertsmaskiner og foreta avgjørelser vedrørende lastbalansering basert på den mottatte vertsmaskinstatusinformasjonen. I et tredje eksempel på mediautførelse inneholder ett eller flere prosessor-aksesserbare medier prosessorseksekverbare instruksjoner som, når de blir eksekvert, instruerer et system til å utføre handlinger omfattende det å: bestemme tilstands- og lastinformasjon per applikasjon og velge en applikasjon blant flere applikasjoner basert på tilstands- og lastinformasjonen.

Description

Teknikkens område
Foreliggende oppfinnelse vedrører generelt balansering av nettverksbelastning, og spesielt, som et ikke-begrensende eksempel, balansering av nettverksbelastning med bruk av informasjon om vertsmaskin-status.
Bakgrunn
Kommunikasjon og mange andre aspekter ved livet som omfatter kommunikasjon er i stor grad påvirket av Internett. Internett muliggjør kommunikasjon av informasjon mellom to personer og/eller entiteter på en rask og forholdsvis enkel måte. Internett innbefatter mange nettverksnoder som er koplet sammen slik at det kan overføres informasjon mellom og blant dem. Nettverksnoder kan være rutere som formidler en datapakke fra én link til en annen, individuelle klientdatamaskiner, individuelle nettverk for forskjellige entiteter (f.eks. intranett i bedrifter) og annet.
I tilfellet med et individuelt nettverk, så vel som andre i tilfeller, blir datapakker som ankommer ved en eller flere Internett-noder distribuert til andre noder i det individuelle nettverket. Et slikt individuelt nettverk kan for eksempel bestå av et sett av tjenere som hver kan jobbe på datapakker som ankommer det individuelle nettverket. En bedrift, et universitet, et statlig kontor, etc. vil kunne motta mange datapakker i løpet av kort tid ved sine nettverk. For å kunne respondere i løpet av rimelig tid og for å redusere sannsynligheten for avvisning eller tap av ankommende datapakker, kan nettverket benytte flere tjenere som alle kan jobbe på de ankommende datapakkene samtidig.
De ankommende datapakkene er ofte henvendelser vedrørende gitt informasjon, så som et dokument, et element i en filmappe, en nettside og annet. De ankommende datapakkene kan også vedrøre en økonomisk transaksjon mellom en kunde og en selger. Andre hensikter med datapakkene i en datapakke-basert kommunikasjon er mulige. Uansett formål blir de ankommende datapakkene fordelt mellom forskjellige tjenere i en samling av tjenere for å imøtekomme en hurtig ankomst av datapakkene og/eller komplekse kommunikasjonsutvekslinger.
Fordeling av ankommende datapakker mellom forskjellige tjenere i en samling av tjenere blir ofte referert til som balansering av nettverksbelastning. Med andre ord kan en lastbalanseringsoperasjon bli utført på pakker idet de ankommer ved én eller flere Internett-noder når noden eller nodene danner et personlig nettverk og/eller når de kopler det individuelle nettverket til Internett.
En slik lastbalanseringsoperasjon gjennomføres med bruk av dedikert maskinvare som fronter det individuelle nettverket ved noden eller nodene som kopler det individuelle nettverket til Internett og/eller som sørger for tilstedeværelsen av det individuelle nettverket på Internett. Den fysiske maskinvaren som utfører lastbalanseringsoperasjonen blir vanligvis duplisert i sin helhet for å tilveiebringe redundans og bedre tilgjengeligheten av lastbalanseringsoperasjonen. For å øke kapasiteten for lastbalanserings-operasjoner, blir kraftigere maskinvare som reproduserer hele den tidligere maskinvaren for lastbalansering, og således dennes funksjonalitet, satt inn i stedet for den tidligere maskinvaren for lastbalansering. Slik oppskalering av lastbalanseringskapasiteten er derfor begrenset til å øke kapasiteten til maskinvaren ved å bytte den ut.
For å iverksette en lastbalanseringsoperasjon foretar vanligvis maskinvaren en "round robin"-fordeling av ankommende
tilslutningsforespørseler. Med andre ord blir ankommende tilslutningsforespørseler fordelt til tjenere i en samling av tjenere på en lineær, gjentakende måte der én enkelt tilslutningsforespørsel leveres til hver tjener om gangen. Denne "round robin"-fordelingen av tilslutninger blir typisk anvendt uavhengig av forholdene ved eller tilstanden til det individuelle nettverket eller beskaffenheten til en ankommende tilslutningsforespørsel. Dersom en lastbalanseringsoperasjon er mer omfattende enn en "round robin"-fordeling, hensyntas andre faktorer kun i den utstrekning de kan sluttes fra nettverkstrafikk og/eller fra et opphopningsnivå i det individuelle nettverket.
Følgelig er det behov for systemer og/eller fremgangsmåter som bedrer balansering av nettverksbelastning og/eller funksjonene forbundet med dette.
US 6,330,605 B1 omtaler et proxy cachecluster, og mer spesifikt til et system og en fremgangsmåte for å bedre tilgjengelighet til tjenester tilbudt fra en tjenestetilbyder for et kommunikasjonsnettverk.
Sammendrag
Det er en hensikrt ved den forleiggende oppfnnelse å tilveiebringe en forbedret fremgangsmåte og system for nettverks lastbalansering.
Denne hensikt løses i henhold til den foreliggende oppfinnelse som angitt i de selvstendige krav.
Foretrukne utførelsesformer er defnert i de uselvstendige patentkravene.
og system
I et første eksempel på media-utførelse inneholder ett eller flere prosessor-aksesserbare medier prosessor-eksekverbare instruksjoner som, når de blir eksekvert, instruerer et system til å utføre handlinger omfattende det å akkumulere informasjon om vertsmaskin-status ved flere vertsmaskiner og å sende den akkumulerte vertsmaskin-statusinformasjonen fra de flere vertsmaskinene. I et andre eksempel på media-utførelse inneholder ett eller flere prosessor-aksesserbare medier prosessor-eksekverbare instruksjoner som, når de blir eksekvert, instruerer et system til å utføre handlinger omfattende det å motta informasjon om vertsmaskin-status fra flere vertsmaskiner og å ta avgjørelser vedrørende lastbalansering basert på den mottatte vertsmaskin-statusinformasjonen. I et tredje eksempel på media-utførelse inneholder ett eller flere prosessor-aksesserbare medier prosessor-eksekverbare instruksjoner som, når de blir eksekvert, instruerer et system til å utføre handlinger omfattende det å bestemme tilstands- og lastinformasjon per applikasjon og å velge en applikasjon fra et antall applikasjoner basert på tilstands- og lastinformasjonen.
I et fjerde eksempel på media-utførelse inneholder ett eller flere prosessor-aksesserbare medier prosessor-eksekverbare instruksjoner som, når de blir eksekvert, instruerer et system til å utføre handlinger omfattende det å analysere tilstands- og/eller lastinformasjon fra flere applikasjons-endepunkter og å fastslå en symbolfordeling (eng. token allotment) for de flere applikasjons-endepunktene basert på analysen.
I et femte eksempel på media-utførelse inneholder ett eller flere prosessor-aksesserbare medier prosessor-eksekverbare instruksjoner som, når de blir eksekvert, gjør det mulig for et system å implementere en meldingsprotokoll mellom minst én vertsmaskin og én eller flere lastbalanseringsenheter, der meldingsprotokollen er anvendelig til å kommunisere tilstands- og/eller lastinformasjon mellom den minst ene vertsmaskinen og den ene eller de flere lastbalanseringsenhetene.
I et eksempel på system-utførelse omfatter et system minst én anordning som er vert for én eller flere applikasjoner, der den minst ene anordningen omfatter en tilstands- og belastningstabell som inneholder flere poster og hver post er assosiert med en applikasjon av den ene eller de flere applikasjonene, idet hver post av de flere postene omfatter en identifikator for en gitt applikasjon av den ene eller de flere applikasjonene, informasjon som karakteriserer minst én status for den aktuelle applikasjonen og minst ett lastbalansererdirektiv med hensyn til den aktuelle applikasjonen.
Andre utførelser med hensyn til fremgangsmåter, systemer, tilnærminger, apparater, API-grensesnitt, anordninger, medier, prosedyrer, modeller, etc. er beskrevet i det følgende.
De samme referansenummer anvendes i alle figurene for å referere til like og/eller tilsvarende aspekter, trekk og komponenter.
Kort beskrivelse av figurene
Figur 1 viser et eksempel på modell for balansering av nettverksbelastning, og illustrerer en infrastruktur for lastbalansering og et antall vertsmaskiner. Figur 2 viser et eksempel på modell for balansering av nettverksbelastning, og illustrerer et antall enheter for lastbalansering og et antall vertsmaskiner. Figur 3 viser et eksempel på lastbalanseringsenhet med oppdelt
funksjonalitet og et eksempel på vertsmaskin.
Figur 4 viser et eksempel på infrastruktur for balansering av nettverksbelastning med atskilt sorterings- og videresendingsfunksjonalitet. Figur 5 er et flytdiagram som illustrerer et eksempel på fremgangsmåte for å skalere opp en infrastruktur for balansering av nettverksbelastning til forskjellige konstellasjoner. Figur 6 illustrerer et første eksempel på utførelse av en infrastruktur for balansering av nettverksbelastning, sett fra et anordningsperspektiv. Figur 7 illustrerer et andre eksempel på utførelse av en infrastruktur for balansering av nettverksbelastning, sett fra et anordningsperspektiv. Figurene 8A og 8B illustrerer et første og et andre eksempel på utførelse av en infrastruktur for balansering av nettverksbelastning, sett fra et komponentperspektiv. Figurene 9A og 9B illustrerer et første og et andre eksempel på utførelse av en infrastruktur for balansering av nettverksbelastning, sett fra et ressursperspektiv. Figur 10 illustrerer et eksempel på tilnærming til en infrastruktur for balansering av nettverksbelastning som omfatter informasjon om vertsmaskin-status. Figur 11 er et flytdiagram som illustrerer et eksempel på fremgangsmåte for balansering av nettverksbelastning som involverer informasjon om vertsmaskin-status. Figur 12 illustrerer et eksempel på tilnærming til balansering av nettverksbelastning som omfatter informasjon om tilstand og belastning. Figur 13A illustrerer et eksempel på tilstands- og belastningstabell, som vist i figur 12. Figur 13B illustrerer et eksempel på felles tilstands- og belastningsbuffer, som vist i figur 12. Figur 14 er et flytdiagram som illustrerer et eksempel på fremgangsmåte for balansering av nettverksbelastning som involverer informasjon om status og belastning. Figur 15 illustrerer et eksempel på meldingsprotokoll for kommunikasjon
mellom vertsmaskinene og lastbalanseringsenhetene vist i figur 12.
Figur 16 illustrerer et eksempel på skjema for overføring av meldinger for kommunikasjon mellom vertsmaskinene og lastbalanseringsenhetene vist i figur 12. Figurene 17A og 17B illustrerer eksempler på proxylagrings-scenarier for informasjon om tilstand og belastning henholdsvis for tilstands- og belastningstabellen i figur 13A og det felles hurtigbufferet i figur 13B. Figur 18 illustrerer et eksempel på prosedyre for tildeling av mål-vertsmaskin som anvender informasjon om tilstand og belastning. Figur 19 illustrerer et eksempel på tilnærming til balansering av nettverksbelastning som omfatter sesjonsinformasjon. Figur 20 illustrerer et eksempel på tilnærming til balansering av nettverksbelastning som omfatter kommunikasjon av sesjonsinformasjon ved hjelp av varslinger og meldinger. Figur 21 er et flytdiagram som illustrerer et eksempel på fremgangsmåte for balansering av nettverksbelastning som omfatter det å kommunisere sesjonsinformasjon med bruk av varslinger og meldinger. Figur 22 illustrerer et eksempel på administrering av sesjonsinformasjon ved flere lastbalanseringsenheter. Figur 23A illustrerer et eksempel på sesjonstabell som vist i figur 20. Figur 23B illustrerer et eksempel på DAM-(Distributed Atom Manager)-tabell (DAMT) som vist i figur 22. Figur 24 er et flytdiagram som illustrerer et eksempel på fremgangsmåte for å administrere sesjonsinformasjon ved flere lastbalanseringsenheter. Figur 25 illustrerer et eksempel på infrastruktur for balansering av nettverksbelastning med funksjonalitet for ruting av forespørseler. Figur 26 er et flytdiagram som illustrerer et eksempel på fremgangsmåte for å rute innkommende datapakker på grunnlag av (i) sesjonsinformasjon og (ii) tilstands- og lastinformasjon.
Figur 27 illustrerer et eksempel på trafikkruting uten feiltilstander.
Figur 28 illustrerer et eksempel på trafikkruting med én eller flere feiltilstander. Figur 29 illustrerer ytterligere eksempler på feiloverlevelsesprosedyrer for høy tilgjengelighet av en infrastruktur for balansering av nettverksbelastning. Figur 30 illustrerer et eksempel på samhandling mellom trafikkruting og tilstands- og lastinformasjon. Figur 31 illustrerer eksempler på mekanismer for å oppnå høy tilgjngelighet av en infrastruktur for balansering av nettverksbelastning. Figur 32 illustrerer et eksempel på applikasjons-nivå balansering av nettverksbelastning med flytting av forbindelser. Figur 33 er et flytdiagram som illustrerer et eksempel på fremgangsmåte for å flytte en forbindelse fra en første anordning til en andre anordning. Figur 34 illustrerer et eksempel på flytting av en forbindelse, sett fra en opprinnelig datamaskin. Figur 35 illustrerer et eksempel på flytting av en forbindelse, sett fra en mål-datamaskin. Figur 36 illustrerer et eksempel på en forbindelsesflytting-avlastningsprosedyre for flytting av en forbindelse. Figur 37 illustrerer et eksempel på en opplastningsprosedyre for flytting av en forbindelse. Figur 38 illustrerer et eksempel på "tunelling" av en datapakke mellom en videresender og en vertsmaskin. Figur 39 er et flytdiagram som illustrerer et eksempel på fremgangsmåte for "tunelling" av datapakker mellom en første anordning og en andre anordning. Figur 40 illustrerer et eksempel på kjøremiljø for en dataanordning (eller en generell anordning) som (helt eller delvis) er i stand til å realisere minst ett aspekt ved balansering av nettverksbelastning som beskrevet her.
Detaljert beskrivelse
Eksempler på modeller for balansering av nettverksbelastning
Denne seksjonen beskriver eksempler på modeller for balansering av nettverksbelastning, og er gitt for å tilveiebringe grunnlag, miljøer, sammenhenger, etc. for beskrivelsene i de påfølgende seksjonene. Denne
seksjonen refererer primært til figurene 1-3.
Figur 1 viser et eksempel på modell 100 for en infrastruktur for balansering av nettverksbelastning, og illustrerer en infrastruktur for lastbalansering 106 og et antall vertsmaskiner 108. Modellen 100 omfatter et antall klienter 102(1), 102(2)... 102(m) og et antall vertsmaskiner 108(1), 108(2),... 108(n), samt et nettverk 104 og en infrastruktur for lastbalansering 106.
Hver av klientene 102 kan være en hvilken som helst anordning med funksjonalitet for nettverkskommunikasjon, så som en datamaskin, en mobil terminal, en underholdningsanordning, et annet nettverk og annet. En klient 102 kan også referere til en person og/eller entitet som betjener eller hjelper en klientanordning. Med andre ord kan klientene 102 omfatte logiske klienter i form av brukere og/eller maskiner. Nettverket 104 kan være dannet av ett eller flere nettverk, så som Internett, et intranett, et kablet eller trådløst telefonnettverk og annet. Ytterligere eksempler på klientanordninger 102 og nettverkstyper/- topologier for nettverket 104 er beskrevet nedenfor i forbindelse med figur 40 i seksjonen "Eksempel på kjøremiljø for en datamaskin eller en annen anordning".
Individuelle klienter 102 har mulighet til å kommunisere med én eller flere vertsmaskiner 108, og omvendt, over nettverket 104 via en infrastruktur 106 for lastbalansering. Vertsmaskiner 108 er vert for én eller flere applikasjoner for samhandling/kommunikasjon med klienter 102, for bruk av klienter 102, og annet. Hver vertsmaskin 108 kan svare til en tjener og/eller en anordning, flere tjenere og/eller flere anordninger, en del av en tjener og/eller en del av en anordning, en kombinasjon av ovennevnte, og annet. Spesifikke realiseringer av vertsmaskiner 108 er beskrevet mer utførlig nedenfor i forbindelse med forskjellige omstendigheter for balansering av nettverksbelastning. (For oversiktens skyld er imidlertid generelt databasestøtte og annen bakenforliggende funksjonalitet for vertsmaskinene utelatt.) I tillegg er også ytterligere eksempler på vertsmaskiner 108 beskrevet nedenfor i forbindelse med figur 40 i seksjonen "Eksempel på kjøremiljø for en datamaskin eller en annen anordning".
Infrastrukturen for lastbalansering 106 kan nås eller lokaliseres i nettverket 104 ved én eller flere virtuelle IP-(lnternet Protocol)-adresser. Kommunikasjon fra klienter 102 (eller andre noder) som er adressert til den virtuelle IP-adressen til infrastrukturen for lastbalansering 106 mottas av denne og blir videresendt til en vertsmaskin 108. Infrastrukturen for lastbalansering 106 består av maskinvare- og/eller programvarekomponenter (ikke vist eksplisitt i figur 1).
Selv om infrastrukturen for lastbalansering 106 er vist som en integrert ellipse, vil infrastrukturen for å besørge lastbalansering også kunne være distribuert i andre aspekter ved eksempelet på modell 100 for balansering av nettverksbelastning. For eksempel kan én eller flere programvarekomponenter i infrastrukturen for lastbalansering 106 befinne seg i én eller flere av vertsmaskinene 108, som beskrevet ytterligere nedenfor. Eksempler på arkitekturer for infrastrukturen for lastbalansering 106 er beskrevet nedenfor i forbindelse med figur 40 i seksjonen "Eksempel på kjøremiljø for en datamaskin eller en annen anordning".
Som antydet ved (1) kan én eller flere av vertsmaskinene 108 tilveiebringe statusinformasjon fra vertsmaskinene 108 til infrastrukturen for lastbalansering 106. Denne vertsmaskin-statusinformasjonen kan være applikasjons-spesifikk. Eksempler på slik vertsmaskin-statusinformasjon er beskrevet ytterligere nedenfor og omfatter tilstands- og/eller lastinformasjon, sesjonsinformasjon, etc. for vertsmaskiner 108. En spesifikk utførelse som omfatter tilveiebringelse av tilstands- og/eller lastinformasjon fra vertsmaskiner 108 til infrastrukturen for lastbalansering 106 er beskrevet nedenfor i seksjonen "Eksempel på håndtering av tilstand og belastning".
Ved (2) blir en forespørsel sendt fra klient 102(1) over nettverket 104 til infrastrukturen for lastbalansering 106 ved dennes virtuelle IP-adresse. Innholdet i, formatet til, etc. en forespørsel fra en klient 102 vil kunne avhenge av hvilken applikasjon forespørselen er rettet til, og betegnelsen "forespørsel" kan implisitt innbefatte ett eller flere svar fra én eller flere vertsmaskiner 108, avhengig av sammenhengen. Typer klientforespørseler omfatter, men er ikke begrenset til:
1. GET-forespørseler i HTTP (HyperText Transfer Protocol) fra en klient som anvender et nettleserprogram. Avhengig av applikasjonen (og mer spesifikt URL-(Uniform Resource Locator)-adressen i forespørselene) vil det kunne være bedre å betjene forespørselene i forskjellige samlinger av vertsmaskiner, og eksistens av en "klientsesjonsstatus" hos vertsmaskinene kan sørge for eller hindre at forespørseler fra spesifiserte klienter rutes til spesifikke vertsmaskiner. Forespørselene kan bli overført over en SSL-(Secure Socket Layer)-forbindelse eller en annen (kryptert) forbindelse. 2. VPN-(Virtual Private Network)-forbindelser (f.eks. kan vertsmaskinene være en samling av VPN-tjenere). I dette tilfellet kan "forespørselen" være en L2TP-(Layer-2 Tunneling Protocol)- eller en PPTP-(Point to Point Tunneling Protocol)-"forbindelse" (idet sistnevnte er en kombinasjon av en TCP-(Transmission Control Protocol)-kontrollforbindelse og assosiert GRE-(Generic Routing Encapsulation)-datatrafikk). 3. Terminalserver-forbindelser (f.eks. kan vertsmaskinene være et sett av terminalservere). 4. Proprietære forespørseler i form av individuelle TCP-forbindelser (én per forespørsel) som anvender en proprietær, applikasjons-spesifikk protokoll.
5. SOAP-(Simple Object Access Protocol)-forespørseler.
6. Sanntids kommunikasjonsforespørseler som omfatter kontrollinformasjon over en TCP-forbindelse og latens-følsomme medier som overføres over RTP (Real-Time Protocol).
Forespørseler kan således være på en rekke forskjellige, applikasjons-spesifikke former. I visse beskrevne utførelser kan infrastrukturen for lastbalansering 106 ta applikasjons-spesifikke avgjørelser vedrørende videresending.
Ved (3) sender infrastrukturen for lastbalansering 106 forespørselen fra 102(1) til vertsmaskin 108(2) (i dette eksempelet). Infrastrukturen for lastbalansering 106 kan ta hensyn til én eller flere av mange mulige faktorer ved valg av vertsmaskin 108 å videresende forespørselen til, avhengig av hvilken eller hvilke av implementasjonene beskrevet her som anvendes. For eksempel kan infrastrukturen for lastbalansering 106 ta hensyn til applikasjonsrelatert tilstands- og/eller lastinformasjon ved hver vertsmaskin 108, sesjonsinformasjon vedrørende klient 102(1) som er lagret på en vertsmaskin 108, og annet.
Figur 2 illustrerer et eksempel på modell 200 for balansering av nettverksbelastning, og viser et antall lastbalanseringsenheter 106 og et antall vertsmaskiner 108. Spesifikt er infrastrukturen for lastbalansering 106 vist i form av et antall lastbalanseringsenheter 106(1), 106(2), ... 106(u) i modellen 200.1 tillegg er det vist to rutere og/eller svitsjer 202(1) og 202(2).
Ruterne/svitsjene 202, dersom de eksisterer, kan betraktes som en del av eller som atskilte fra infrastrukturen for lastbalansering 106 (i figur 1). Ruterne/svitsjene 202 har ansvar for å sende generelle forespørseler og individuelle datapakker som mottas over nettverket 104 til den ene eller de flere felles virtuelle IP-(VIP)-adressene til lastbalanseringsenhetene 106. Dersom det oppstår en feiltilstand i en første ruter/svitsj 202, kan den andre ruteren/svitsjen 202 ta over for den første. Selv om to rutere/svitsjer 202 er vist, kan én eller flere enn to rutere/svitsjer 202 alternativt anvendes.
Ruterne/svitsjene 202 kan være uvitende om infrastrukturen for lastbalansering eller være lastbalansering-bevisste. Dersom ruterne/svitsjene 202 ikke er lastbalansering-bevisste, kan ett av to eksempelvise alternativer anvendes. I et første alternativ "tildeles" én lastbalanseringsenhet 106 den felles VIP-adressen, og all nettverkstrafikk blir sendt til denne. Denne ene lastbalanseringsenhet 106 deler da trafikken likt mellom de andre lastbalanseringsenhetene 106. Det er imidlertid flaskehals- og feiloverlevelsesproblemer assosiert med dette første alternativet (som kan unngås eller reduseres dersom flere VIP-adresser er felles og deles av flere lastbalanseringsenheter 106). I et andre alternativ "lures" ruterne/svitsjene 202 til å sende nettverkstrafikk til alle lastbalanseringsenhetene 106, som hver for seg avgjør hvilken trafikk de skal akseptere for lastbalansering. Det er imidlertid problemer som ineffektiv duplisering av arbeid og svitsjytelse/-kompabilitet assosiert med dette andre alternativet.
Dersom på den annen side ruterne/svitsjene 202 er lastbalansering-bevisste, kan de konfigureres til å fordele innkommende nettverkstrafikk mellom/på et antall lastbalanseringsenheter 106 (f.eks. i henhold til et "round- robin"-skjema). Det må forstås at slike lastbalansering-bevisste rutere/svitsjer 202 kan utføre grunnleggende lastbalanseringsfunksjoner (f.eks. i maskinvare). Foreksempel kan lastbalansering-bevisste rutere/svitsjer202 utføre enkel IP-basert sesjonstilhørighet, slik at alle datapakker fra en gitt IP-adresse blir sendt til samme lastbalanseringsenhet 106.
Hver separat illustrerte lastbalanseringsenhet 106 av lastbalanseringsenhetene 106 kan representere én fysisk anordning, flere fysiske anordninger eller deler av én enkelt fysisk anordning. For eksempel kan lastbalanseringsenhet 106(1) svare til én tjener, to tjenere eller flere tjenere. Alternativt kan lastbalanseringsenhet 106(1) og lastbalanseringsenhet 106 sammen svare til én enkelt tjener. Et eksempel på lastbalanseringsenhet 106 sett fra et funksjonelt perspektiv er beskrevet nedenfor i forbindelse med figur 3.
To eksempler på forespørselsruter [1] og [2] er vist i figur 2.1 forespørselsrute [1] sender klient 102(2) en forespørsel over nettverket 104 som ankommer ruter/svitsj 202(1). Ruter/svitsj 202(1) sender datapakken(e) for forespørselen fra klienten 102(2) til lastbalanseringsenhet 106(1). Lastbalanseringsenhet 106(1) videresender da datapakken(e) for forespørselen til vertsmaskin 108(1) i henhold til funksjonalitet for lastbalansering (f.eks. et regelsett). I forespørselsrute [2] sender klient 102(m) en forespørsel over nettverket 104 som ankommer ruter/svitsj 202(2). Ruter/svitsj 202(2) sender datapakken(e) i forespørselen fra klient 102(m) til lastbalanseringsenhet 106(u). Lastbalanseringsenhet 106(u) videresender da datapakken(e) for forespørselen til vertsmaskin 108(n) i henhold til en lastbalanseringsfunksjon. Eksempler på lastbalanseringsfunksjoner er beskrevet nedenfor i forbindelse med figur 3.
Figur 3 illustrerer et eksempel på lastbalanseringsenhet 106 med delt funksjonalitet og et eksempel på vertsmaskin 108. Lastbalanseringsenhet 106 omfatter syv (7) funksjonelle blokker 302-314. Disse funksjonelle blokkene i lastbalanseringsenhet 106 kan være realisert i hvert fall delvis i programvare. Vertsmaskin 108 inneholder én eller flere applikasjoner 316.1 en beskrevet utførelse omfatter lastbalanseringsenhet 106 en videresender 302, en sorterer (eng. classifier) 304, en forespørselsruter 306(H/S), en sesjonssporer 308, en forbindelsesflytter 310, en "tunneler" 312 og en tilstands- og lastbehandler 314.
Tilstands- og lastbehandleren 314 befinner seg delvis i vertsmaskinene 108 og delvis i anordninger i lastbalanseringsenhetene 106. Tilstands- og lastbehandleren 314 overvåker tilstanden til og/eller belastningen på (eller mer generelt, status for) vertsmaskiner 108, slik at tilstands- og/eller lastinformasjon i eller for disse kan anvendes av lastbalanseringsfunksjonaliteten (f.eks. når det tas avgjørelser vedrørende lastbalansering). Eksempler på utførelse av tilstands- og lastbehandleren 314 er beskrevet nedenfor, spesielt i seksjonen "Eksempel på håndtering av tilstand og belastning".
Sesjonssporeren 308 kan også befinne seg delvis i vertsmaskiner 108 og delvis i anordninger i lastbalanseringsenhetene 106. Sesjonssporeren 308 overvåker sesjoner som er etablert av klienter 102, slik at gjentilkopling / fortsettelse av tidligere etablerte sesjoner kan lettes av lastbalanseringsfunksjonaliteten. For eksempel lagrer enkelte applikasjoner applikasjons-spesifikke data vedrørende klientsesjoner på eller om vertsmaskinene (som også er en form for vertsmaskin-statusinformasjon). Disse applikasjonene forventer typisk at klienter anvender samme vertsmaskin gjennom en hel gitt sesjon. Eksempler på sesjonstyper omfatter: (i) en TCP-forbindelse (som strengt tatt er en sesjon); (ii) en SSL-sesjon; (iii) en sikker IP-(IPsec)-sesjon; (iv) en cookie-basert HTTP-sesjon; og annet.
Selv om sesjonssporeren 308 er illustrert som en separat blokk i lastbalanseringsenhet 106, vil sesjonssporingsfunksjonaliteten til sesjonssporer 308 kunne være implementert på et globalt nivå. Med andre ord er sesjons-affinitet støttet på tvers av flere lastbalanseringsenheter 106. Sesjonssporer 308 innbefatter en sentralisert database og/eller en distribuert database med sesjonsinformasjon for å sikre sesjons-affinitet. Eksempler på utførelser av sesjonssporeren 308, som fokuserer på en tilnærming med en distribuert database, er beskrevet nedenfor, spesielt i seksjonen "Eksempel på sesjonssporing".
En sorterer 304 anvender dataene som samles inn og opprettholdes av tilstands- og lastbehandler 314 og/eller sesjonssporer 308, eventuelt sammen med andre faktorer, til å sortere innkommende forespørseler. Med andre ord velger sortereren 314 en mål-vertsmaskin 108 for hver innkommende forespørsel fra en klient 102. En videresender 302 videresender forespørseler fra klienter (og/eller datapakkene assosiert med disse) til mål-vertsmaskinen 108 som valgt av sorterer 304. Videresender 302 og sorterer 304 kan jobbe på en per pakke-basis. Eksempler på utførelse av videresender 302 og sorterer 304 er beskrevet nedenfor, spesielt i seksjonene "Eksempel på tilnærming til fleksibel balansering av nettverksbelastning" og "Eksempler på sortering, videresending og ruting av forespørseler".
En forespørselsruter 306(H/S), i motsetning til pakkebaserte utførelser av videresender 302 og sorterer 304, kan tjene som en proxy for en applikasjon som kjører på en vertsmaskin 108. For eksempel kan forespørselsruter
306(H/S) terminere TCP-forbindelser, undersøke (eventuelt bare deler av) hver logiske forespørsel fra en klient 102 og formidle hver logiske forespørsel til den destinerte vertsmaskinen 108. Følgelig vil hver logiske forespørsel fra en klient 102 kunne bli adressert til en forskjellig vertsmaskin 108 avhengig av avgjørelsene som tas av forespørselsruter 306(H/S). Forespørselsruter 306(H/S) vil videre kunne preprosessere en forbindelse (f.eks. foreta SSL-kryptering), velge å selv ta seg av visse forespørseler (f.eks. fordi forespørselsruter 306(H/S) opprettholder et hurtigbuffer med responser), modifisere forespørseler på vilkårlig måte før den videresender dem til vertsmaskiner 108, etc. Eksempler på utførelse av forespørselsruter 306(H/S) er også beskrevet nedenfor, spesielt i seksjonene "Eksempel på tilnærming til fleksibel balansering av nettverksbelastning" og "Eksempler på sortering, videresending og ruting av forespørseler".
En forbindelsesflytter 310 muliggjør at en forbindelse innledningsvis kan terminere ved en lastbalanseringsenhet 106 og deretter bli flyttet slik at forbindelsen etter dette terminerer ved en vertsmaskin 108. Denne flyttingen av forbindelser vil kunne lette lastbalansering på applikasjonsnivå. Forbindelsesflytter 310 er i stand til å flytte en forbindelse fra en lastbalanseringsenhet 106 til en vertsmaskin 108 på en slik måte at den opprinnelige termineringen ved lastbalanseringsenhet 106 er usynlig for en forespørrende klient 102 og for applikasjoner 316 i den nå terminerende vertsmaskinen 108. En "tunneler" 312 kan anvende et innkapslingsskjema for omdirigering eller "tunnelføring" av datapakker som ikke medfører økt ressursbruk for hver omdirigerte datapakke.
Funksjonaliteten til tunneler 312 kan også anvendes i situasjoner som ikke involverer flytting av en forbindelse. Videre vil forbindelsesflytter 310 og/eller tunneler 312 i tillegg kunne anvendes i utførelser uten lastbalansering. Eksempler på utførelse av forbindelsesflytter 310, så vel som for tunneler 312, er beskrevet ytterligere nedenfor, spesielt i seksjonen "Eksempler på flytting av forbindelser med eventuell tunnelføring og/eller lastbalansering på applikasjonsnivå".
En hvilken som helst utførelse av en lastbalanseringsenhet 106 vil kunne innbefatte én eller flere av de viste funksjonene. Selv om de er vist separat, vil hver av funksjonene i blokkene 302-314 kunne være innbyrdes forbundet med, overlappe og/eller inkludere andre funksjoner. For eksempel vil tilstands-og/eller lastinformasjon i tilstands- og lastbehandleren 314 kunne anvendes av sorterer 304. Videre jobber forbindelsesflytter 310 og tunneler 312 i samsvar med videresender 302 og sorterer 304. Visse eksempler på overlapping og samhandlinger er beskrevet nedenfor,
I en beskrevet utførelse kjører vertsmaskiner 108 og gir tilgang til én eller flere applikasjoner 316. Generelt omfatter applikasjonene 316 filoverføringsprogrammer, programmer for administrering av nettsteder/webservere, fjernaksess-programmer, programmer for elektronisk post, programmer for databaseaksess og annet. Konkret kan applikasjonene 316 omfatte, men er ikke begrenset til, webservere så som Internet Information Server<®>(MS) fra Microsoft<®>Corporation, terminaltjenere så som Microsoft<®>Terminal Server™ samt brannmur- og proxy-produkter så som Internet Security and Acceleration Server™ (ISA). Selv om de ovennevnte konkrete eksemplene på applikasjoner 316 er produkter fra Microsoft®, er ikke balansering av nettverksbelastning som beskrevet her begrenset til noen konkret(e) forsyner(er), applikasjon(er) eller operativsystem(er).
Eksempel på tilnærming til fleksibel balansering av nettverksbelastning
Denne seksjonen belyser hvordan utførelsene av balansering av nettverksbelastning beskrevet i denne og andre seksjoner her tilveiebringer en fleksibel tilnærming til balansering av nettverksbelastning. Denne seksjonen refererer primært til figurene 4-9B.
Som angitt over kan funksjonalitet for balansering av nettverksbelastning skaleres opp ved å bytte ut en første enhet for balansering av nettverksbelastning med en andre, større og kraftigere enhet for balansering av nettverksbelastning. Maskinvarefunksjonaliteten til den andre lastbalanseringsenheten dupliserer maskinvarefunksjonaliteten til den første lastbalanseringsenheten i sin helhet, men det tilveiebringes større kapasitet. Dette er en lite fleksibel tilnærming som kan være veldig ineffektiv, spesielt når kun ett trekk ved lastbalanseringen begrenser ytelsen og nødvendiggjør oppgradering av en lastbalanseringsenhet.
Figur 4 viser et eksempel på infrastruktur for balansering av nettverksbelastning med atskilt sorterings- og videresendingsfunksjonalitet. Den separate sorteringsfunksjonaliteten og videresendingsfunksjonalteten er henholdsvis representert ved sorterer 304 og videresender 302. Selv om sorterings- og videresendingsfunksjoner er beskrevet nedenfor, spesielt i seksjonen "Eksempler på sortering, videresending og ruting av forespørseler", er en innledende beskrivelse gitt her som et eksempel på samhandling mellom funksjonalitet i en infrastruktur for balansering av nettverksbelastning og vertsmaskiner 108.
I en beskrevet utførelse svarer videresender 302 til, og er nettverksendepunkt for, den eller de virtuelle IP-adressene. Videresender 302 jobber på forholdsvis lavt nivå og tar forenklede og/eller grunnleggende regelavgjørelser, om noen, når den sender datapakker til en neste eller en endelig destinasjon. Videresender 302 slår opp i en rutingstabell for å finne denne destinasjonen. Sorterer 304 fyller inn i rutingstabellen på grunnlag av én eller flere faktorer (f.eks. informasjon om vertsmaskin-status), som er beskrevet ytterligere i andre seksjoner her.
Klienter 102 og vertsmaskiner 108 svarer også til anviste nettverksadresser. Konkret svarer klient 102(1) til adressen C1, klient 102(2) til adressen C2 ... og klient 102(m) til adressen Cm. Videre svarer vertsmaskin 108(1) til adressen H1, vertsmaskin 108(2) til adressen H2 ... og vertsmaskin
108(n) til adressen Hn.
Fem kommunikasjonsruter (1 )-(5) er vist i figur 4. Kommunikasjonsrute (1) går mellom klient 102(1) og videresender 302, og kommunikasjonsrute (5) går mellom videresender 302 og vertsmaskin 108(1). Kommunikasjonsrutene (2) -(4) går mellom videresender 302 og sorterer 304. For enkelhets skyld er i dette eksempelet forbindelsen assosiert med kommunikasjonsrutene (1)-(5) en TCP-forbindelse for HTTP. Videre dreier lastbalansering seg i dette eksempelet om det å sende innkommende forbindelser til den minst belastede vertsmaskinen 108, i hvert fall uten noen eksplisitt betraktning av lastbalansering på applikasjonsnivå.
Kommunikasjonsrutene (1 )-(5) viser hvordan videresender 302 og sorterer 304 utfører lastbalansering for én enkelt TCP-forbindelse for HTTP fra klient 102(1). Ved (1) innleder klient 102(1) TCP-forbindelsen ved å sende en TCP SYN-pakke adressert til VIP-adressen. Infrastrukturen for ruting i nettverket 104 sender denne datapakken til videresender 302 via ruter/svitsj 202(1), som er den som er den ruteren/svitsjen 202 som er "nærmest" videresender 302.
Ved (2) sjekker videresender 302 en rutingstabell, som er lagret internt i videresender 302 eller på annen måte er tilgjengelig for denne, for å finne denne forbindelsen. Forbindelsen kan være identifisert i rutingstabellen ved 4-tuppelet i TCP-IP (dvs. kildens IP-adresse, kildens TCP-port, destinasjonens IP-adresse, destinasjonens TCP-port). Ettersom dette er den første datapakken for forbindelsen, finnes det ingen post for den i rutingstabellen. Videresender 302 anvender derfor "standard"-regelen, som er å sende datapakken til sorterer 304.
Ved (3) sjekker sorterer 304 sitt (f.eks. felles) hurtigbuffer for statusinformasjon vedrørende vertsmaskinene 108(1), 108(2)... 108(n). Sorterer 302 konkluderer i dette eksempelet med at vertsmaskin 108(1) er tilgjengelig og den for tiden minst belastede vertsmaskinen 108. Sorterer 304 legger også inn en rute i rutingstabellen som undersøkes av videresender 302 for denne TCP-forbindelsen. For eksempel kan sorterer 304 legge til en post eller kan instruere videresender 302 til å legge til en post i rutingstabellen som knytter TCP-forbindelsen (f.eks. identifisert ved nevnte TCP 4-tuppel) til en spesifikk mål-vertsmaskin 108, som i dette eksempelet er vertsmaskin 108(1). Mer spesifikt spesifiserer posten i rutingstabellen nettverksadressen H1 til vertsmaskin 108(1).
Ved (4) sender sorterer 304 TCP SYN-datapakken tilbake til videresender 302. Alternativt kunne sorterer 304 videresende denne innledende TCP SYN-datapakken til vertsmaskin 108(1) uten å gå via videresender 302. Andre alternativer for sorterer 304 er beskrevet nedenfor.
Ved (5) kan videresender 302 aksessere en post i rutingstabellen for forbindelsen representert ved SYN-datapakken, slik at den videresender datapakken til vertsmaskin 108(1) med adressem H1. Videresender 302 sender også alle etterfølgende datapakker fra klient 102(1) for denne forbindelsen direkte til vertsmaskin 108(1). Med andre ord kan videresender 302 unngå ytterligere interaksjon med sorterer 304 for denne forbindelsen. En mekanisme, eller en kombinasjon av mekanismer, som er beskrevet nedenfor, kan anvendes for å slette posten i rutingstabellen når forbindelsen avsluttes.
For kommunikasjonsruten (5) kan i mange protokollmiljøer ikke videresender 302 bare sende datapakkene fra klient 102(1) som de er til vertsmaskin 108(1) ved nettverksadressen H1 fordi disse datapakkene er adressert til den virtuelle IP-adressen, som eies av videresender 302 selv. I stedet kan videresender 302 for eksempel anvende ett eller flere av følgende alternativer: 1. Videresender 302 utfører NAT-(Network Address Translation)-oversetting ved (i) å overskrive kildens (klient 102(1)) IP-adresse (C1) og portnummer med IP-adressen til og et NAT-generert portnummer for videresender 302, og (ii) å overskrive den destinerte IP-adressen (den virtuelle IP-adressen) med IP-adressen (H1) til vertsmaskinen (108(1)). 2. Videresender 302 utfører "Semi-NAT" ved å overskrive den destinerte IP-adressen (den virtuelle IP-adressen) med IP-adressen (H1) til vertsmaskinen (108(1)), slik at kildens (klient 102(1)) IP-adresse (C1) og portnummer bevares. 3. Videresender 302 sender datapakkene mottatt fra klient 102(1) i "tunnel" fra videresender 302 til vertsmaskin 108(1). Spesifikt kan i dette eksempelet "tunnelføring" skje ved at hver datapakke pakkes inn i en ny IP-pakke som adresseres til vertsmaskin 108(1). Lastbalansering-bevisst programvare på vertsmaskin 108(1) rekonstruerer den opprinnelige datapakken som mottatt ved videresender 302 fra klient 102(1). Denne opprinnelige datapakken blir deretter anvist opp til et virtuelt grensesnitt på vertsmaskin 108(1) (f.eks. kan VIP-adressen svarende til videresender 302 være bundet til dette virtuelle grensesnittet i vertsmaskin 108(1)). Eksempler på utførelse av slik tunnelføring er beskrevet nedenfor i forbindelse med tunneler 312, særlig i forbindelse med flytting av forbindelser og spesielt i seksjonen "Eksempler på flytting av forbindelser med eventuell tunnelføring og/eller lastbalansering på applikasjonsnivå".
Selv om figurene 4-9B viser to spesifikke, atskilte funksjoner, nemlig sortering og videresending, må det forstås at andre funksjoner, så som de til forespørselsruter 306(H/S), sesjonssporer 308, forbindelsesflytter 310 og tilstands- og lastbehandler 314, også vil kunne bli skalert opp uavhengig (f.eks. multipliseres uavhengig), som beskrevet nedenfor. Videre skal det bemerkes at én eller flere enn to funksjoner kan være skilt ut og bli skalert opp uavhengig til forskjellige tider og/eller samtidig. Dessuten, selv om TCP/IP anvendes for enkelhets skyld i mange eksempler i denne og andre seksjoner, kan prinsippene for balansering av nettverksbelastning beskrevet her anvendes med andre overførings- og/eller kommunikasjonsprotokoller.
I eksempelet i figur 4 kan funksjoner for balansering av nettverksbelastning (så som de vist i figur 3) være skilt fra hverandre for skalerbarhetsformål. De vil også kunne være delt opp og duplisert i forskjellige konstellasjoner for økt tilgjengelighet. Eksempler på modeller for skalerbarhet og/eller tilgjengelighet vil bli beskrevet nedenfor i forbindelse med figurene 6-9B, etter at fremgangsmåten i figur 5 er beskrevet.
Figur 5 er et flytdiagram 500 som illustrerer et eksempel på fremgangsmåte for å skalere opp en infrastruktur for balansering av nettverksbelastning til forskjellige konstellasjoner. Flytdiagrammet 500 omfatter tre blokker 502-506. Selv om handlingene i flytdiagram 500 vil kunne bli utført i andre miljøer og med en rekke forskjellige programvaresystemer, anvendes figurene 1-4 og 6-9B spesielt for å illustrere visse aspekter ved og eksempler på fremgangsmåten.
I blokk 502 kjører infrastrukturen for balansering av nettverksbelastning i en første konstellasjon. For eksempel kan hver konstellasjon kjennetegnes ved én eller flere av valg av, forhold mellom og/eller innbyrdes relasjoner mellom forskjellige funksjonaliteter for lastbalansering; antallet av og/eller typen(e) forskjellige anordninger; organisering og/eller layout av forskjellige komponenter; fordeling og/eller allokering av ressurser; og annet. I blokk 504 oppskaleres infrastrukturen for balansering av nettverksbelastning. For eksempel kan adskilte lastbalanseringsfunksjoner utvides og/eller innskrenkes individuelt og/eller uavhengig av hverandre. I blokk 506 kjører den oppskalerte infrastrukturen for balansering av nettverksbelastning i en andre konstellasjon.
Som angitt over kan en enhetlig enhet for balansering av nettverksbelastning skaleres opp ved å styrke funksjonaliteten for balansering av nettverksbelastning i sin helhet ved å skifte ut eksisterende maskinvare med maskinvare med større kapasitet. Til motsetning kan infrastrukturen for balansering av nettverksbelastning muliggjøre individuell og/eller uavhengig oppskalering av (del)funksjoner for lastbalansering. Den kan også muliggjøre samlet eller individuell oppskalering av lastbalanseringsfunksjoner mellom og blant forskjellige anordninger. Eksempler på anordning-, komponent-, og ressurs-orienterte oppskaleringer er gitt nedenfor.
Figur 6 illustrerer et første eksempel på infrastruktur for balansering av nettverksbelastning sett fra et anordnings-perspektiv. I denne første, anordning-orienterte infrastrukturen for balansering av nettverksbelastning er det illustrert tre anordninger 602(1), 602(2), og 602(3). Alternativt kan én, to eller flere enn tre anordninger 602 anvendes.
Som illustrert er en videresender 302(1), en sorterer 304(1), og en vertsmaskin 108(1) tilveiebragt i og kjører på anordning 602(1). En videresender 302(2), en sorterer 304(2) og en vertsmaskin 108(2) er tilveiebragt i og kjører på anordning 602(2). Videre er en videresender 302(3), en sorterer 304(3) og en vertsmaskin 108(3) tilveiebragt i og kjører på anordning 602(3). I denne første anordning-orienterte infrastrukturen for balansering av nettverksbelastning deler således en respektiv videresender 302, sorterer 304 og vertsmaskin 108 ressursene i hver respektive anordning 602.
Under kjøring er videresenderne 302 nettverks-endepunkter for VIP-adressen(e). En hvilken som helst sorterer 304 kan sette opp en rute for en forbindelse til en hvilken som helst vertsmaskin 108 basert på informasjon om vertsmaskin-status. For eksempel kan sorterer 304(2) sette opp en rute for en ny innkommende forbindelse til vertsmaskin 108(3). Basert på en ny rute for denne forbindelsen sender videresender 302(2) påfølgende datapakker til vertsmaskin 108(3).
I én alternativ anordning-orientert infrastruktur for balansering av nettverksbelastning som den første illustrerte infrastrukturen kan bli oppskalert til, kan en fjerde anordning 602(4) (ikke vist eksplisitt i figur 6) være lagt til som omfatter en videresender 302(4), en sorterer 304(4) og en vertsmaskin 108(4). Dersom på den annen side sorteringsfunksjonaliteten tilveiebragt av sortererne 304(1-3) er tilstrekkelig, men ytterligere videresendingsfunksjonalitet kan være en fordel for behandlingen av forespørseler i vertsmaskinene 108, kan en fjerde anordning 602(4) bli lagt til som omfatter en videresender 302(4) og eventuelt en vertsmaskin 108(4). I dette oppskalerte systemet kan en annen sorterer 304(1, 2 eller 3) sette opp ruter for videresender 302(4) til en hvilken som helst av vertsmaskinene 108(1, 2 eller 3) samt vertsmaskin 108(4), hvis tilveiebragt.
Det første anordning-orienterte eksempelet på infrastruktur for balansering av nettverksbelastning i figur 6 kan være spesielt egnet for mindre forhold der det å ha separate anordninger i infrastrukturen for balansering av nettverksbelastning ikke er teknisk og/eller økonomisk hensiktmessig eller mulig. Etter hvert som antallet av (og/eller trafikken gjennom) vertsmaskiner 108 øker, eller dersom nettverksbelastningen på vertsmaskinene 108 er betydelig, kan imidlertid det første anordning-orienterte eksempelet på infrastruktur for balansering av nettverksbelastning bli skalert opp for å imøtekomme dette, som illustrert av et andre anordning-orientert eksempel på infrastruktur for balansering av nettverksbelastning i figur 7.
Figur 7 illustrerer et andre eksempel på infrastruktur for balansering av nettverksbelastning sett fra et anordnings-perspektiv. I denne andre anordning- orienterte infrastrukturen for balansering av nettverksbelastning er det også illustrert tre anordninger 602(1), 602(2), og 602(3). Som over kan alternativt én, to eller flere enn tre anordninger 602 anvendes.
Som illustrert er videresender 302(1) og sorterer 304(1) tilveiebragt i og kjører på anordning 602(1). Videresender 302(2) og sorterer 304(2) er tilveiebragt i og kjører på anordning 602(2). Videre er videresender 302(3) og sorterer 304(3) tilveiebragt i og kjører på anordning 602(3). I denne andre anordning-orienterte infrastrukturen for balansering av nettverksbelastning deler således ikke hver respektive videresender 302 og sorterer 304 ressursene i hver respektive anordning 602 med en vertsmaskin 108. Videre kan infrastrukturen for balansering av nettverksbelastning betjene et hvilket som helst antall vertsmaskiner 108.
Under kjøring er videresenderne 302 også her nettverks-endepunkter for VIP adressen(e). Videre kan en hvilken som helst sorterer 304 sette opp en bane for en forbindelse til en hvilken som helst vertsmaskin 108 basert på informasjon om vertsmaskin-status. For eksempel kan sorterer 304(3) sette opp en rute for en ny innkommende forbindelse til vertsmaskin 108(2). I henhold til den nye ruten for denne forbindelsen sender videresender 302(3) påfølgende datapakker til vertsmaskin 108(2).
Infrastrukturen for balansering av nettverksbelastning som implementert i programvare, for eksempel, kan således skaleres opp ved å flytte infrastrukturen for balansering av nettverksbelastning (eller deler av denne) fra anordninger som deles med vertsmaskiner 108 til anordninger som ikke deles med vertsmaskiner 108. Videre, som antydet ovenfor i forbindelse med figur 6, kan en annen anordning 602(4) bli lagt til i infrastrukturen for balansering av nettverksbelastning som tilveiebringer ytterligere videresendingsfunksjonalitet, ytterligere sorteringsfunksjonalitet, ytterligere funksjonalitet av begge typer, og annet.
Figurene 8Aog 8B illustrerer første og andre eksempler på infrastruktur for balansering av nettverksbelastning sett fra et komponent-perspektiv. Som illustrert omfatter det første komponent-orienterte eksempelet på infrastruktur for balansering av nettverksbelastning 800 fire komponenter. Det andre komponent-orienterte eksempelet på infrastruktur for balansering av nettverksbelastning 850 omfatter seks komponenter. En alternativ andre infrastruktur 850 omfatter en syvende komponent, som angitt av blokken med stiplede linjer, som er beskrevet nedenfor.
Spesifikt omfatter det første komponent-orienterte eksempelet på infrastruktur for balansering av nettverksbelastning 800 (eller den første infrastrukturen 800): (i) to videresendere 302(1) og 302(2) og (ii) to sorterere 304(1) og 304(2). Det andre eksempelet på komponentorientert infrastruktur for balansering av nettverksbelastning 850 (eller den andre infrastrukturen 850) omfatter: (i) fire videresendere 302(1), 302(2), 302(3) og 302(4) og (ii) to sorterere 304(1) og 304(2). Den første infrastrukturen 800 blir således skalert opp til den andre infrastrukturen 850 ved at det legges til to komponenter, som i dette eksempelet er videresendingskomponenter.
I en beskrevet utførelse svarer hver respektive funksjonelle komponent relatert til balansering av nettverksbelastning til en respektiv anordning (ikke vist eksplisitt i figur 8A eller 8B); hver komponent vil imidlertid alternativt kunne tilsvare en del av en anordning eller mer enn én anordning. For eksempel kan videresenderne 302(1) og 302(2) være fordelt på tre anordninger. Eventuelt kan videresender 302(1) og sorterer 304(1) tilsvare en første anordning og videresender 302(2) og sorterer 304(2) tilsvare en andre anordning.
To funksjonelle komponenter assosiert med balansering av nettverksbelastning blir lagt til for å skalere opp den første infrastrukturen 800 til den andre infrastrukturen 850. Alternativt kan imidlertid én komponent (eller flere enn to komponenter) legges til for å skalere opp infrastrukturen for balansering av nettverksbelastning. Dessuten kan to eller flere forskjellige typer funksjonelle komponenter bli skalert opp "samtidig". For eksempel, som illustrert ved den stiplede blokken, kan en annen sorteringskomponent (f.eks. sorterer 304(3)) også bli lagt til ved oppskalering av den første infrastrukturen 800 til den andre infrastrukturen 850.
Videre kan skalering av to eller flere forskjellige typer funksjonelle komponenter bli gjort med liknende (f.eks. ekvivalente) eller forskjellige innbyrdes forhold. Som illustrert representerer det å legge til videresendingskomponenter 302(3) og 302(4) uten å legge til noen sorteringskomponent 304 eller bare legge til én enkelt sorteringskomponent 304(3) en oppskalering med forskjellig innbyrdes forhold. To sorteringskomponenter 304(3) og 304(4) (hvorav sistnevnte ikke er vist i figur 8B) kan imidlertid bli lagt til samtidig med to videresendingskomponenter 302(3) og 302(4) for å oppnå en oppskalering med liknende innbyrdes forhold. Uansett kan hver individuelle funksjonelle komponent assosiert med balansering av nettverksbelastning oppta forskjellig andel av de tilgjengelige ressursene i infrastrukturen for balansering av nettverksbelastning, som beskrevet i forbindelse med figurene 9Aog 9B.
Figurene 9Aog 9B illustrerer første og andre eksempler på en infrastruktur for balansering av nettverksbelastning sett fra et ressursperspektiv. Det første ressursorienterte eksempelet på infrastruktur for balansering av nettverksbelastning 900 (eller den første infrastrukturen 900) omfatter en første ressursfordeling eller -tildeling for en lastbalanseringsenhet 106. Det andre ressursorienterte eksempelet på infrastruktur for balansering av nettverksbelastning 950 (eller den andre infrastrukturen 950) omfatter en andre ressursfordeling for en lastbalanseringsenhet 106.
Som illustrert har den første infrastrukturen 900 en 70%-30% ressursfordeling og den andre infrastrukturen 950 en 40%-60% ressursfordeling. Disse ressursene kan omfatte de totale anordningsressurser (f.eks. antall anordninger), prosesseringsressurser (f.eks. antall prosessorsykluser), minneressurser (f.eks. deler av et hurtigminne, et hovedminne, etc), nettverksbåndbredde og/eller grensesnittsressurser (f.eks. bit per sekund og/eller fysiske nettverkskort (NIC-er)) og annet.
I den første infrastrukturen 900 forbruker videresender 302 70% av ressursene til lastbalanseringsenheten 106, mens sorterer 304 forbruker 30% av disse ressursene. Etter omallokering under en oppskaleringsprosess som frembringer den andre infrastrukturen 950, forbruker videresender 302 40% av ressursene til lastbalanseringsenheten 106 mens sorterer 304 forbruker 60% av disse ressursene.
I et tenkt tilfelle vil den første infrastrukturen 900 kunne muliggjøre en bedre lastbalanseringsytelse når færre, mer omfattende transaksjoner blir behandlet av de assosierte vertsmaskinene (ikke vist i figurene 9A og 9B) ettersom sorteringsfunksjonaliteten kun blir benyttet ved innledende kommunikasjon for en forbindelse og videresendingsfunksjonaliteten deretter blir anvendt. Den andre infrastrukturen 950, på den annen side, vil kunne muliggjøre en bedre lastbalanseringsytelse når flere, mindre omfattende transaksjoner blir behandlet av de assosierte vertsmaskinene ettersom sorteringsfunksjonaliteten blir anvendt for en prosentvis større andel av det totale antall pakker som kanaliseres gjennom infrastrukturen for balansering av nettverksbelastning. I dette tilfellet, dersom forespørselsrutingsfunksjonaliteten også anvendes, blir da forespørselsruteren/-ruterne 306 også tildelt en prosentandel av de totale beregningsressursene. Fordelingen av ressurser mellom de tre funksjonalitetene kan reguleres samtidig med behandling av forbindelser (f.eks. tilpasses fortløpende) avhengig av løpende forbruk av og/eller mangel på ressurser.
Som nevnt ovenfor i forbindelse med figurene 2 og 3, kan hver lastbalanseringsenhet 106 tilsvare hele eller en del av en total infrastruktur 106 for balansering av nettverksbelastning. Ressursene til en hvilken som helst gitt fysisk, logisk, vilkårlig, etc. definert eller oppsatt lastbalanseringsenhet 106 vil kunne bli omfordelt under en oppskaleringsprosess. Mer spesifikt kan en fordeling av ressurser mellom/på forskjellige, separate funksjoner relatert til balansering av nettverkbelastning i en lastbalanseringsenhet 106 endre seg i en oppskaleringsprosess. Videre kan flere enn to forskjellige funksjoner, så vel som andre funksjoner assosiert med balansering av nettverkbelastning som ikke er spesifikt vist i figurene 9Aog 9B, bli tildelt forskjellige prosentandeler av ressursene.
Den prosentvise andelen av de totale systemressursene allokert til alle lastbalanseringsfunksjonene kan også endre seg i en oppskaleringsprosess. Som et generelt eksempel med prosesseringskapasitet kan den prosentvise andelen av den totale prosesseringskapasiteten som er satt av til lastbalansering økes gradvis etter hvert som mengden trafikk som skal lastbalanseres øker.
Programvare for balansering av nettverksbelastning kan eventuelt overvåke for å analysere og avgjøre hvorvidt ressurser bør omfordeles. For eksempel kan programvaren for balansering av nettverksbelastning overvåke prosessorbruken til forskjellige funksjoner assosiert med balansering av nettverksbelastning. Den faktiske omfordelingen kan eventuelt også bli utført automatisk av programvaren for balansering av nettverksbelastning i en "offline"- eller "online"-modus.
Det må forstås at en oppskaleringsmulighet i en infrastruktur for balansering av nettverksbelastning (som f.eks. i hvert fall delvis er realisert i programvare) som beskrevet her kan være knyttet til forskjellige installasjoner og ikke nødvendigvis til en endring av én enkelt installasjon. I et ressurs-orientert eksempel vil en infrastruktur for balansering av nettverksbelastning som beskrevet her kunne være konfigurert i overensstemmelse med én ressursfordeling i ett installasjonsmiljø og kan være konfigurert i overensstemmelse med en annen, forskjellig ressursfordeling i et annet installasjonsmiljø med forskjellige driftsforhold. I tillegg kan mulighetene, trekkene, funksjonaliteten, etc. beskrevet ovenfor i forbindelse med oppskalering også anvendes for "nedskalering". Med andre ord er det også mulig å redusere ressursene som er satt av til en infrastruktur for balansering av nettverksbelastning (eller delfunksjoner i denne).
Eksempel på håndtering av tilstand og belastning
Denne seksjonen beskriver hvordan informasjon om vertsmaskin-status, så som tilstands- og/eller lastinformasjon, kan skaffes tilveie for og benyttes til balansering av nettverksbelastning. Denne seksjonen refererer primært til figurene 10-18, og illustrerer tilstands- og lastfunksjonalitet så som den tilveiebragt av tilstands- og lastbehandler 314 (i figur 3). Som beskrevet ovenfor med henvisning til figur 3, er hver vertsmaskin 108 vert for én eller flere applikasjoner 316. Tilstands- og lastbehandler 314 anvender tilstands- og/eller lastinformasjon vedrørende applikasjoner 316 og/eller vertsmaskiner 108 for gitte beskrevne utførelser av balansering av nettverksbelastning.
Figur 10 illustrerer et eksempel på tilnærming til balansering av nettverksbelastning som omfatter vertsmaskin-statusinformasjon (HSI, Host
Status Information) 1006. Hver vertsmaskin 108(1), 108(2)... 108(n) innbefatter henholdsvis én eller flere applikasjoner 316(1), 316(2)... 316(n). Vertsmaskinene 108 generelt og applikasjonene 316 spesifikt vil kunne endre status fra tid til annen.
For eksempel kan vertsmaskiner 108 og applikasjoner 316 akseptere nye forbindelser eller ikke akseptere nye forbindelser. Videre kan de behandle klientforespørseler hurtig eller langsomt. Enda videre kan de ha mange ledige ressurser i reserve eller få ledige ressurser. Alle eller en hvilken som helst del av slike data, eller andre data, kan omfatte vertsmaskin-statusinformasjon 1006. Generelt tilveiebringer vertsmaskin-statusinformasjon 1006 en angivelse av status for et eller annet aspekt ved vertsmaskinene 108 og/eller applikasjonene 316 som kjører på disse.
I en beskrevet utførelse omfatter hver vertsmaskin 108(1), 108(2)... 108(n) en respektiv enhet 1002(1), 1002(2)... og 1002(n) for å bestemme informasjon om vertsmaskin-status. Hver vertsmaskin 108(1), 108(2)... 108(n) omfatter også en respektiv enhet 1004(1), 1004(2)... og 1004(n)for å levere ut informasjon om vertsmaskin-status. Hver enhet 1002 og/eller enhet 1004 kan være en del av infrastruktur 106 for lastbalansering.
Hver HSI-bestemmelsesenhet 1002 bestemmer vertsmaskin-statusinformasjon 1006 for sin respektive vertsmaskin 108 og/eller applikasjoner 316 som kjører på denne. Eksempler på fremgangsmåter for å bestemme slik vertsmaskin-statusinformasjon 1006 er beskrevet nedenfor i forbindelse med figurene 12-14, og spesielt figur 13A. Hver enhet 1004 for å levere ut informasjon om vertsmaskin-status leverer ut vertsmaskin-statusinformasjon 1006 for sin respektive vertsmaskin 108 og/eller applikasjoner 316 til infrastrukturen for lastbalansering 106 (f.eks. den delen eller de deler av infrastrukturen 106 som ikke befinner seg i vertsmaskiner 108). Eksempler på fremgangsmåter for å utlevere denne statusinformasjonen 1006 er beskrevet nedenfor i forbindelse med figurene 12-17, og spesielt figurene 13Bog 15-17.
Spesifikt leverer hver HSI-distribueringsenhet 1004 vertsmaskin-statusinformasjon 1006 (direkte eller indirekte) til hver lastbalanseringsenhet
(LBU) 106 i infrastrukturen for lastbalansering 106 som omfatter minst én tilstands- og lastbehandler 314 og/eller sorterer 304. Infrastrukturen 106 sjekker statusinformasjonen 1006 når den balanserer nettverksbelastning. For eksempel, som angitt av logikken 1008, er infrastrukturen 106 i stand til å ta avgjørelser vedrørende lastbalansering basert på vertsmaskin-statusinformasjon 1006.
Under kjøring, ved (1), bestemmer HSI-bestemmelsesenheter 1002 vertsmaskin-statusinformasjon 1006 for respektive vertsmaskiner 108 og/eller applikasjoner 316. Ved (1) og (2) leverer HSI-distribueringsenheter 1004 vertsmaskin-statusinformasjon 1006 fra vertsmaskiner 108 til infrastrukturen for lastbalansering 106. Foreksempel kan vertsmaskin-statusinformasjon 1006 bli levert til individuelle lastbalanseringsenheter 106. Ved (3) tar logikken 1008 avgjørelser vedrørende balansering av nettverksbelastning basert på vertsmaskin-statusinformasjon 1006. Ved (4) videresendes forbindelser til mål-vertsmaskiner 108 basert på disse avgjørelsene.
Figur 11 er et flytdiagram 1100 som illustrerer et eksempel på fremgangsmåte for balansering av nettverksbelastning som involverer informasjon om vertsmaskin-status. Flytdiagrammet 1100 omfatter tre blokker 1102-1106. Selv om handlingene illustrert i flytdiagrammet 1100 kan bli utført i andre miljøer og med en rekke forskjellige programvaresystemer, er figurene 1-3 og 10 spesielt ment for å illustrere visse aspekter ved og eksempler på fremgangsmåten.
I blokk 1102 sendes informasjon om vertsmaskin-status fra vertsmaskiner til lastbalanseringsenheter. For eksempel kan vertsmaskin-statusinformasjon 1006 bli sendt fra vertsmaskinene 108 til lastbalanseringsenhetene 106.1 blokk 1104 mottas informasjonen om vertsmaskin-status fra vertsmaskinene ved lastbalanseringsenhetene. Foreksempel kan lastbalanseringsenhetene 106 motta vertsmaskin-statusinformasjon 1006 fra vertsmaskiner 108.1 blokk 1106 tas avgjørelser vedrørende lastbalansering basert på den mottatte vertsmaskin-statusinformasjonen. Foreksempel kan logikk 1008 i lastbalanseringsenhetene 106 ta avgjørelser vedrørende balansering av nettverksbelastning basert på vertsmaskin-statusinformasjon 1006.
I figur 10 samler således infrastrukturen for lastbalansering 106 inn vertsmaskin-statusinformasjon 1006 fra vertsmaskiner 108 (og/eller applikasjoner 316 i disse) og fordeler innkommende forespørseler adressert til vertsmaskinene 108 basert på vertsmaskin-statusinformasjon 1006. Som beskrevet nedenfor i forbindelse med figurene 12-18, kan denne vertsmaskin-statusinformasjonen 1006 være applikasjons-spesifikk. Som også er beskrevet nedenfor omfatter eksempler på vertsmaskin-statusinformasjon 1006 tilstands-og/eller lastinformasjon.
Figur 12 illustrerer et eksempel på tilnærming til balansering av nettverksbelastning som omfatter tilstands- og/eller lastinformasjon (HLI) 1206. Vertsmaskiner 108(1), 108(2)... 108(n) er koplet til lastbalanseringsenheter 106(1), 106(2)... 106(u) via en kommunikasjonsforbindelse 1210, foreksempel et nettverk.
Som illustrert kommuniserer vertsmaskiner 108 tilstands- og lastinformasjon 1206 til lastbalanseringsenheter 106 over kommunikasjonsforbindelsen 1210. Toveis-kommunikasjonen av tilstands- og lastinformasjon 1206, som angitt av pilen som peker i begge retninger, refererer til en toveiskommunikasjon fra lastbalanseringsenheter 106 til vertsmaskiner 108 som sørger for fullstendighet, koherens, riktighet, nøyaktighet, etc, slik at vertsmaskiner 108 og/eller lastbalanseringsenheter 106 kan svikte uavhengig av hverandre. Slik toveiskommunikasjon fra lastbalanseringsenheter 106 til vertsmaskiner 108 er beskrevet ytterligere nedenfor, spesielt med henvisning til figur 15.
Tilstandsinformasjon sier noe om hvorvidt en gitt vertsmaskin og/eller applikasjon er i stand til å behandle klientforespørseler. Lastinformasjon angir antallet, mengden andelen og/eller nivået av klientforespørseler som den aktuelle vertsmaskinen og/eller applikasjon på et gitt tidspunkt er i stand til å behandle. Med andre ord kan last direkte og/eller indirekte angi tilgjengelig antall, andel, mengde og/eller nivå av den totale kapasiteten til den aktuelle vertsmaskinen og/eller applikasjon. Som nevnt tidligere fokuserer utførelser beskrevet i forbindelse med figurene 12-18 på tilstands- og/eller lastinformasjon; disse utførelsene er imidlertid også anvendelige for generell
statusinformasjon for vertsmaskiner (omfattende applikasjonene i disse).
I en beskrevet utførelse omfatter hver vertsmaskin 108(1), 108(2)... 108(n) en respektiv komponent 1202(1), 1202(2)... 1202(n) av en tilstands- og last-infrastruktur (H&LI). Hver infrastruktur-komponent 1202 kan eventuelt være en del av en infrastruktur for lastbalansering 106 som er tilveiebragt i og kjører på hver vertsmaskin 108. Tilstands- og lastinformasjonen 1206 kan være implementert i programvare. Under kjøring oppretter og opprettholder hver tilstands-og last-infrastruktur 1202(1), 1202(2) ... 1202(n)en respektiv tilstands-og last-(H&L)-tabell 1204(1), 1204(2)... 1204(n).
Tilstands- og lasttabellene 1204 kan inneholde applikasjons-spesifikke poster. Tilstands- og lastinformasjon 1206 som er lagret i tilstands- og lasttabellene 1204 kan være uavhengig av infrastrukturen for lastbalansering 106. For eksempel kan systemansvarlige, utviklere, etc. spesifisere kriterier for tilstands- og lastinformasjon 1206 under konfigurering. I tillegg kan entiteter utenfor en anordning som er eller som omfatter en vertsmaskin 108 bidra til å bestemme tilstands- og lastinformasjon 1206 for applikasjoner 316 i anordningen. Et eksempel på tilstands- og lasttabell 1204 er beskrevet nedenfor i forbindelse med figur 13A.
Hver lastbalanseringsenhet 106(1), 106(2)... 106(u) omfatter et respektivt felles tilstands-og last-(H&L)-hurtigbuffer 1208(1), 1208(2)... 1208(u). Hvert felles tilstands- og lastbuffer 1208 inneholder informasjonen fra hver tilstands-og lasttabell 1204(1), 1204(2)... 1204(n). Følgelig er hver lastbalanseringsenhet 106 gitt rask (f.eks. bufret) tilgang til tilstands- og lastinformasjon 1206 for hver vertsmaskin 108 som lastbalanseringsenheter 106 balanserer nettverkstrafikken for.
Under kjøring legger tilstands- og last-infrastrukturer 1202 tilstands- og lastinformasjon 1206 fra tilstands- og lasttabeller 1204 inn i de felles tilstands-og lastbufrene 1208. Mekanismen for å tilveiebringe tilstands- og lastinformasjon 1206 er hendelsesdrevet, slik at endringer av tilstands- og lasttabellene 1204 blir oppdatert i de felles tilstands- og lastbufrene 1208 i løpet av rimelig tid og på en skalerbar måte.
Figur 13A illustrerer et eksempel på tilstands- og lasttabell 1204 som illustrert i figur 12.1 en beskrevet utførelse omfatter tilstands- og lasttabell 1204 et antall poster 1302 som hver er assosiert med en forskjellig applikasjon 316. Hver post 1302 kan svare til en rad med tre kolonner i tilstands- og lasttabell 1204. Disse kolonnene er en applikasjonsidentifikator (ID) 1302(A), en applikasjonsstatus-beskrivelse 1302(B) og et lastbalansererdirektiv 1302(C).
Fordi hver post 1302 er assosiert med en gitt applikasjon 316, blir det lagt til en rad for hver applikasjon som startes opp (f.eks. av en systemansvarlig). Likeledes blir en rad slettet/fjernet hver gang en applikasjon lukkes. Individuelle felter i kolonnene 1302(A), 1302(B) og/eller 1302(C) blir modifisert/oppdatert når en verdi i disse endres. Når for eksempel en statusbeskrivelsesverdi endrer seg for en gitt applikasjon 316, blir verdien i feltet for applikasjonsstatus-beskrivelsen 1302(B) for posten 1302 til den aktuelle applikasjonen 316 oppdatert.
Innsetting og fjerning av poster 1302 for applikasjoner 316 kan skje gjennom innmating fra en styringsenhet ved vertsmaskin 108. For eksempel vet en styringsenhet i et operativsystem når en applikasjon 316 blir startet og stoppet ettersom den er aktivt involvert i starting og stopping av applikasjoner 316. En styringsenhet kan således fastslå at den i hvert fall delvis har startet en applikasjon 316, og styringsenheten kan fastslå at den i hvert fall delvis har stoppet applikasjonen 316. Tilstands- og last-infrastrukturen 1202 kan derfor bli informert om starting og stopping av applikasjoner 316 av styringsenheten. Derfor er ingen eksplisitt kommunikasjon fra applikasjoner 316 til tilstands- og last-infrastrukturer 1202 nødvendig. Et eksempel på styringsenhet er SCM (Service Control Manager) i operativsystemet Windows<®>fra Microsoft<®>Corporation.
Applikasjonsidentifikator 1302(A) omfatter informasjon som benyttes til entydig å identifisere den applikasjonen 316 som posten 1302 er assosiert med. Applikasjonsidentifikator 1302(A) kan omfatte én eller flere av følgende for den assosierte applikasjonen 316: den virtuelle IP-adressen og portnummeret, den fysiske IP-adressen og portnummeret, protokollen som anvendes og hvilken som helst protokoll-spesifikk informasjon. Protokollen kan være HTTP, IPsec, SOAP og annet. Den protokoll-spesifikke informasjonen kan være en URL- adresse eller datastreng som ytterligere beskriver applikasjonen assosiert med posten 1302. Applikasjonsidentifikator 1302(A) henviser således mer spesifikt til et gitt applikasjons-endepunkt i en vertsmaskin 108.
Alternativt kan andre applikasjonsidentifikatorer anvendes. For eksempel, for å redusere kommunikasjonens krav til båndbredde, kan applikasjonsidentifikatoren 1302(A) være et 32-bits tall som avbildes til den eksempelvise informasjonen ovenfor i tilstands- og last-infrastrukturen 1202 og i lastbalanseringsenheter 106. Videre kan et hvilket som helst av feltene i posten 1302 inneholde en globalt unik identifikator som brukes som nøkkel for å oppnå den rette informasjonen i feltet.
Applikasjonsstatus-beskrivelsen 1302(B) omfatter informasjon som viser status for den applikasjonen 316 som posten 1302 er assosiert med. Applikasjonsstatus-beskrivelsen 1302(B) omfatter følgende for den assosierte applikasjonen 316: applikasjonstilstand, applikasjonsbelastning og applikasjonskapasitet. Applikasjonstilstanden er en kvasi-boolsk verdi som angir hvorvidt en applikasjon er funksjonell. Applikasjonstilstanden kan være healthy, failing eller unknown. Applikasjonstilstanden er en forholdsvis instantan verdi og kommuniseres med forholdsvis liten forsinkelse (f.eks. omtrent ett sekund eller noen få sekunder) til lastbalanseringsenheter 106 når applikasjonens tilstand endrer seg.
Applikasjonsbelastningen er en verdi som angir hvor opptatt eller travel en gitt applikasjon er og således direkte eller indirekte hvor mye ytterligere belastning den aktuelle applikasjonen kan ta. Applikasjonsbelastningen er en forholdsvis langsomt endrende eller midlet verdi som kan være glattet med en hysterese-induserende mekanisme, om ønskelig, for å fjerne forbigående topper med stor eller liten belastning. Den kommuniseres forholdsvis sjelden til lastbalanseringsenheter 106 (f.eks. omtrent én til fire ganger hvert minutt). Verdien for applikasjonsbelastningen uttrykkes i forhold til applikasjonskapasiteten.
Applikasjonskapasiteten er en verdi som angir applikasjonens maksimale kapasitet. Den er valgt på en generisk måte slik at den er meningsfull i en gitt sammenheng, men likevel tilstrekkelig fleksibel for andre sammenhenger.
Applikasjonskapasiteten er et enhetsløst, begrenset tall (f.eks. 0-99) som kan
fastsettes under konfigurering. Den kan være basert på prosesseringskapasitet, minnestørrelse/-hastighet, nettverkstilgang, en kombinasjon av disse, og annet. Applikasjonskapasitet uttrykker relative kapasiteter mellom og i forhold til andre applikasjoner av samme type i en samling av vertsmaskiner 108(1, 2 ... n).
I forhold til applikasjonskapasitet gir således applikasjonsbelastning mening. Belastningen på en gitt applikasjon er en prosentandel av kapasiteten til den aktuelle applikasjonen. Alternativt vil applikasjonsbelastning kunne uttrykkes som et enhetløst tall på grunnlag av hvilket prosentandelen kan beregnes i kombinasjon med verdien for applikasjonskapasitet.
Lastbalansererdirektivet 1302(C) omfatter informasjon som angir den ønskede og/eller forventede tilstanden til direktivet etablert av tilstands- og last-infrastrukturen 1202 for lastbalanseringsenheter 106 med hensyn til en applikasjon 316 som posten 1302 er assosiert med. Lastbalansererdirektivet 1302(C) omfatter følgende for den assosierte applikasjonen 316: ønsket lastbalanseringstilstand og gjeldende lastbalanseringstilstand.
Den ønskede lastbalanseringstilstanden angir den tilstanden for direktivet til lastbalanseringsenheter 106 som er ønsket av tilstands- og last-infrastrukturen 1202. Den gjeldende lastbalanseringstilstanden angir hva tilstands- og last-infrastrukturen 1202 erfarer at den rådende tilstanden for direktivet til lastbalanseringsenheter 106 er, som lagret i lastbalanseringsenheter 106. Den gjeldende lastbalanseringstilstanden angir således det lastbalansererdirektivet som tilstands- og last-infrastrukturen 1202 forventer at lastbalanseringsenheter 106 kjører under, som diktert med bruk av en kommunikasjonsprotokoll. Et eksempel på en slik kommunikasjonsprotokoll er beskrevet nedenfor i forbindelse med figur 15. Interaksjonen og sammenhengen mellom den ønskede lastbalanseringstilstanden og den gjeldende lastbalanseringstilstanden er også beskrevet i forbindelse med figur 15.
Den ønskede lastbalanseringstilstanden og den gjeldende lastbalanseringstilstanden kan hver ta verdien aktiv, inaktiv eller tømmende. Et aktivt direktiv angir at nye forespørseler/forbindelser er velkomne og kan sendes til den applikasjonen som er assosiert med posten 1302. Et inaktivt direktiv angir at ingen ytterligere pakker bør sendes til den assosierte applikasjonen. Et tømmende direktiv angir at ingen pakker for nye forespørseler/forbindelser bør sendes til den assosierte applikasjonen, men at pakker for eksisterende forespørseler/forbindelser fortsatt bør sendes til den assosierte applikasjonen.
I en beskrevet utførelse er den siste versjonen av respektiv tilstands- og lastinformasjon 1206 lagret i tilstands- og lasttabeller 1204 tilveiebragt i hver vertsmaskin 108 av et antall vertsmaskiner 108.1 denne utførelsen, dersom en vertsmaskin 108 bryter sammen, vil den tilstands- og lastinformasjonen 1206 som går tapt vedrøre applikasjoner 316 som også har krasjet. Et middel for høy tilgjengelighet oppnås derfor automatisk uten duplisering av data. Den siste versjonen av tilstands-og lastinformasjon 1206 vil imidlertid alternativt kunne være lagret et annet sted. Andre slike lagringsalternativer omfatter lastbalanseringsenhetene 106 selv, en vertsmaskin 108 som (som sin eneste oppgave eller i tillegg til oppgaver forbundet med det å være vert) lagrer og opprettholder tilstands- og lastinformasjon 1206 for et antall andre (for eksempel alle andre) vertsmaskiner 108, en annen separat og/eller ekstern anordning, og annet.
Dersom den siste versjonen av tilstands- og lastinformasjonen 1206 lagres og opprettholdes andre steder i tillegg til å være distribuert til vertsmaskinene 108(1, 2 ...n), kan denne tilstands- og lastinformasjonen 1206 være lagret redundant (f.eks. også være lagret i en dupliserende anordning, bli tatt "back-up" av, etc.) for å oppnå høy tilgjengelighet. Eksempler på proxy-scenarier for å lagre tilstands- og lastinformasjon 1206 er beskrevet nedenfor i forbindelse med figurene 17Aog 17B. Figur 17A illustrerer et proxy-scenario for tilstands- og lasttabeller 1204 og figur 17B illustrerer et proxy-scenario forfelles tilstands- og lastbufre 1208.
Figur 13B illustrerer et eksempel på felles tilstands- og lastbuffer 1208 som illustrert i figur 12.1 en beskrevet utførelse omfatter hvert felles tilstands-og lastbuffer 1208 i hver lastbalanseringsenhet 106 i hvert fall deler av informasjonen som er lagret i hver tilstands- og lasttabell 1204 for hver tilstands- og last-infrastruktur 1202 i hver vertsmaskin 108. Den bufrede tilstands- og lastinformasjonen kan være organisert på en hvilken som helst måte i det felles tilstands- og lastbufferet 1208.
Som illustrert omfatter det felles tilstands- og lastbufferet 1208 et hurtigbuffer for hver vertsmaskin 108(1), 108(2) ... 108(n)som dupliserer deler av eller all informasjonen i tilstands- og lasttabellen 1204 i hver respektive vertsmaskin 108(1, 2 ... n). Spesifikt omfatter det felles tilstands-og lastbufferet 1208 et hurtigbuffer for vertsmaskin #1 1304(1), et hurtigbuffer for vertsmaskin #2 1304(2)... og et hurtigbuffer for vertsmaskin #n 1304(n). Det illustrerte felles tilstands- og lastbufferet 1208 er således på et overordnet nivå organisert etter vertsmaskin 108(1, 2 ... n), idet hvert individuelle buffer 1304 omfatter applikasjons-spesifikke elementer for den respektive assosierte vertsmaskin 108(1, 2 ... n). Alternativt kan det felles tilstands- og lastbufferet 1208 på et overordnet nivå være organisert etter type applikasjon 316, idet individuelle blokker som vedrører en spesifikk type applikasjon videre er delt inn etter vertsmaskin 108(1, 2 ... n). Andre struktureringer av dataene er også mulige.
Figur 14 er et flytdiagram som illustrerer et eksempel på fremgangsmåte for balansering av nettverksbelastning som involverer tilstands- og lastinformasjon. Flytdiagrammet 1400 omfatter åtte blokker 1402-1416. Selv om handlingene i flytdiagrammet 1400 vil kunne bli utført i andre miljøer og med en rekke forskjellige programvaresystemer, anvendes figurene 1-3 og 12-13B spesielt for å illustrere visse aspekter ved og eksempler på fremgangsmåten. For eksempel kan handlingene i to blokker 1402-1404 bli utført av en vertsmaskin 108, mens handlingene i seks blokker 1406-1416 blir utført av en lastbalanseringsenhet 106.
I blokk 1402 bestemmes tilstands- og lastinformasjon ved en vertsmaskin. For eksempel kan tilstands- og lastinformasjon 1206 for applikasjoner 316(2) fremskaffes av tilstands- og last-infrastruktur 1202(2) og bli lagret i tilstands- og lasttabell 1204(2) i vertsmaskin 108(2). I blokk 1404 leveres den oppnådde tilstands- og lastinformasjonen til lastbalanseringsenheter. For eksempel kan tilstands- og last-infrastruktur 1202(2) sende tilstands- og lastinformasjon 1206 for applikasjoner 316(2) til lastbalanseringsenhetene 106(1, 2 ... u). Som angitt av pilen 1418 gjentas handlingene i blokkene 1402 og 1404, slik at (applikasjonsrelatert) tilstand og last kontinuerlig kan overvåkes og oppdateres etter hvert som det oppstår endringer.
I blokk 1406 mottas tilstands- og lastinformasjon fra vertsmaskiner. For eksempel kan lastbalanseringsenhet 106(1) motta tilstands- og lastinformasjon 1206 fra et antall vertsmaskiner 108(1, 2 ... n) som omfatter tilstands- og lastinformasjon 1206 for applikasjonene 316(2) i vertsmaskin 108(2). I blokk 1408 bufres den mottatte tilstands- og lastinformasjonen. For eksempel kan lastbalanseringsenhet 106(1) lagre tilstands- og lastinformasjon 1206 fra vertsmaskiner 108(1, 2 ... n) i det felles tilstands- og lastbufferet 1208(1). Med henvisning til utførelsen i figur 13B av et felles tilstands- og lastbuffer 1208(1), kan tilstands- og lastinformasjon 1206 for applikasjonene 316(2) fra vertsmaskin 108(2) bli lagret i et hurtigbuffer for vertsmaskin #2 1304(2). Som angitt av pilen 1420 gjentas handlingene i blokkene 1406 og 1408, slik at (applikasjonsrelatert) tilstands- og lastinformasjon kontinuerlig kan bli mottat og oppdatert etter hvert som det oppstår endringer.
Som angitt av den stiplede pilen 1422, tar lastbalanseringsenheter 106 seg også av kommunikasjon fra klienter 102 mens de holder på med aktiviteter i forbindelse med (applikasjonsrelatert) tilstand og belastning. I blokk 1410 mottas en datapakke som ber om en ny forbindelse. For eksempel kan lastbalanseringsenhet 106(1) motta en TCP SYN-pakke fra klient 102(2) over nettverket 104.1 blokk 1412 sjekkes den bufrede tilstands- og lastinformasjonen. Foreksempel kan lastbalanseringsenhet 106(1) sjekke det felles tilstands- og lastbufferet 1208(1). Mer spesifikt kan lastbalanseringsenhet 106(1) sjekke poster assosiert med den applikasjonen som TCP SYN-datapakken vedrører i bufrene for vertsmaskinene #1, #2 ... #n 1304(1, 2 ... n).
I blokk 1414 velges en vertsmaskin på grunnlag av den bufrede tilstands-og lastinformasjonen. For eksempel kan lastbalanseringsenhet 106(1) velge vertsmaskin 108(2), som har en eller flere applikasjoner 316(2), på grunnlag av tilstands- og lastinformasjon 1206 som er bufret i det felles tilstands- og lastbufferet 1208(1). Den valgte applikasjonen 316 (og vertsmaskin 108) bør være i en ok tilstand og i stand til å ta ytterligere belastning (f.eks. den minst belastede applikasjonen av applikasjonene av den typen som TCP SYN-datapakken vedkommer).
Sjekken av den bufrede tilstands- og lastinformasjonen (i blokk 1412) og valget av vertsmaskin på grunnlag av den bufrede tilstands- og lastinformasjonen (i blokk 1414) kan gjøres før mottak av en gitt datapakke som representerer en forespørsel om en ny forbindelse og/eller med bruk av en satsvis fil. Videre kan valget av vertsmaskin gjøres i overensstemmelse med et hvilket som helst av mange mulige skjemaer. For eksempel kan det anvendes et "polett (token)"-basert eller et "round-robin"-basert skjema. Uansett skjema kan valget av vertsmaskin involvere en vekting av innbyrdes belastningsforhold mellom de aktuelle applikasjonene. Denne sjekken og utvelgingen, sammen med de "polett"- og "round-robin"-baserte skjemaene, er beskrevet videre nedenfor i forbindelse med figur 18 og i seksjonen "Eksempler på sortering, videresending og ruting av forespørseler", spesielt med hensyn til sorteringsfunksjonalitet.
Etter at mål-vertsmaskin er valgt i blokk 1414, kan datapakken som ber om en ny forbindelse bli sendt til denne. I blokk 1416 videresendes datapakken mottatt fra klienten til den valgte vertsmaskinen. For eksempel blir TCP SYN-datapakken videresendt fra lastbalanseringsenhet 106(1) til den valgte vertsmaskin 108(2). Videresendingen av denne innledende datapakken kan gjøres direkte av en sorterer 304 eller av en videresender 302, som også er beskrevet ytterligere nedenfor i seksjonen "Eksempler på sortering, videresending og ruting av forespørseler".
I en beskrevet utførelse er tilstands- og last-infrastrukturen 1202 tilveiebragt i og distribuert over et antall vertsmaskiner 108, i tillegg til å være representert i lastbalanseringsenheter 106 (som illustrert ved tilstands- og lastbehandler 314). Tilstands- og last-infrastrukturen 1202 har ansvar for tre oppgaver. For det første tilveiebringer den ett eller flere lyttepunkter for å motta oppdateringer av applikasjonsstatus for applikasjonsstatus-beskrivelsene 1302(B) i tilstands- og lasttabellene 1204. For det andre avstemmer den applikasjon-statusinformasjonen for å bestemme hva lastbalanseringsenhetene 106 bør gjøre, som innlemmes i lastbalansererdirektivet 1302(C). For det tredje kommuniserer tilstands- og last-infrastrukturen 1202 dette direktivet fra vertsmaskiner 108 til lastbalanseringsenheter 106.
Det retningsgivende innholdet i lastbalansererdirektivet 1302(C) er en sammenfattet versjon av informasjonen for applikasjonsstatus-beskrivelsene 1302(B). Lastbalanseringsenheter 106 kan imidlertid også motta den ubehandlede informasjonen i applikasjonsstatus-beskrivelsene 1302(B) i tillegg til dette behandlede direktivet. Kommunikasjonen av innholdet i disse og andre felter i tilstands- og lasttabellene 1204 gjøres med bruk av en meldingsprotokoll som er beskrevet nedenfor i forbindelse med figur 15.
Figur 15 illustrerer et eksempel på meldingsprotokoll 1500 for den tilstands- og lastinformasjonsrelaterte kommunikasjonen illustrert i figur 12 mellom vertsmaskiner 108 og lastbalanseringsenheter 106. Generelt anvendes en hendelsesdrevet mekanisme for å overføre endringer i tilstands- og lasttabeller 1204 fra vertsmaskiner 108 til lastbalanseringsenheter 106. Med andre ord blir, i en beskrevet utførelse, informasjon overført fra vertsmaskiner 108 til lastbalanseringsenheter 106 når tilstands- og lasttabellene 1204 oppdateres. Dette gjør at man slipper å regelmessig måtte overføre en kopi av hver tilstands- og lasttabell 1204, noe som reduserer bruken av nettverksbåndbredde for tilstands-og last-infrastrukturen 1202.
Meldingsprotokollen 1500 kan realiseres med bruk av en hvilken som helst tilgjengelig mekanisme for transport av meldinger. Slike mekanismer omfatter pålitelig "multicasf-overføring, punkt-til-punkt-overføring (f.eks. UDP (User Datagram Protocol)) og annet. Som illustrert omfatter meldingsprotokollen 1500 syv meldingstyper 1502-1514: en livstegn-melding 1502, en farvel-melding 1504, en radendringsmelding 1506, en hent-kopi-av-tabell-melding 1508, en send-kopi-av-tabell-melding 1510, en antatt-tabelltilstand-melding 1512 og en antagelse-feil-melding 1514.
Det må forstås at, med unntak av pilene 1516 og 1518, ingen tidsmessige relasjoner mellom de forskjellige meldingstyper 1502-1514 er implisert av illustrasjonen. Foreksempel vil ikke en radendringsmelding 1506 typisk etterfølge en farvel-melding 1504.
Livstegn-meldingen 1502 angir at en gitt vertsmaskin 108 er funksjonell og tilveiebringer en viss feilsjekking av innholdet i en motsvarende tilstands- og lasttabell 1204 i forhold til et motsvarende buffer for den aktuelle vertsmaskinen 1304 i det felles tilstands- og lastbufferet 1208. Hver tilstands- og last-infrastruktur 1202 i hver vertsmaskin 108 senderen livstegn-melding direkte eller indirekte til hvert felles tilstands- og lastbuffer 1208 i hver lastbalanseringsenhet 106.
Livstegn-meldinger 1502 løser problemet med forelding av data i de felles tilstands- og lastbufrene 1208 som, delvis, oppstår fordi en fullstendig kopi av hver tilstands- og lasttabell 1204 ikke regelmessig blir overført til hver lastbalanseringsenhet 106. Et skjema for overføring av livstegn-meldinger 1502 er beskrevet nedenfor i forbindelse med figur 16.
Livstegn-meldinger 1502 omfatteren identifikator for vertsmaskinen, feilsjekkingsdata og eventuelt et DNS-navn. Identifikatoren for vertsmaskinen kan være et unikt (f.eks., 32-bits) tall som velges ved konfigurering. Feilsjekkingsdataene kan være en kontrollsum, et tilstandsendring-sekvensnummer, et generasjonsnummer, en CRC-verdi, etc. som gjør det mulig for en mottakende lastbalanseringsenhet 106 å verifisere at innholdet i dets felles tilstands- og lastbuffer 1208 stemmer overens med innholdet i tilstands-og lasttabellen 1204 i avsender-vertsmaskinen 108. Dersom det anvendes et generasjonsnummer, kan det da anvendes et antall generasjonsidentifikatorer, der hver generasjonsidentifikator er tilordnet et "sett" av applikasjoner. Meldinger kan da referere til et sett-nummer eller et sett-nummer/generasjonsidentifikator-par avhengig av sammenhengen.
Feilsjekkingsdataene kan være én enkelt, samlet verdi for tilstands- og lasttabellen 1204, eller de kan være flere verdier fastsatt per post 1302. DNS-navnet kan eventuelt bli sendt (f.eks. hvert "x-te" livstegn) for å verifisere eller oppdatere vertsmaskinens korrekte nettverksadresse.
En farvel-melding 1504 sendes fra en gitt vertsmaskin 108 til lastbalanseringsenheter 106 for å angi at den aktuelle vertsmaskinen 108 forbereder nedstengning. Farvel-meldingen 1504 omfatter en vertsmaskin-identifikator som kan bli indeksert/avbildet til en nettverksadresse til den aktuelle vertsmaskinen 108. Farvel-meldingen 1504 anvendes for å oppnå ryddige, tilsiktede nedstengninger av vertsmaskiner 108 for å fremskynde en "hurtig opprydding". Dersom en farvel-melding 1504 blir borte, vil imidlertid buffere etter hvert fjerne postene for den aktuelle vertsmaskinen 108 siden den ikke lenger sender livstegn-meldinger 1502.
En radendringsmelding 1506 sendes fra en gitt vertsmaskin 108 til lastbalanseringsenheter 106 for å angi at tilstanden til og/eller belastningen på en gitt applikasjon 316 ved den aktuelle vertsmaskinen 108 har endret seg. Radendringsmeldingen 1506 omfatter en vertsmaskin-identifikator, en applikasjons-identifikator, en operasjon samt data for operasjonen. Eksempler på vertsmaskin-identifikatorer er beskrevet ovenfor i forbindelse med livstegn-meldinger 1502 og farvel-meldinger 1504. Eksempler på applikasjonsidentifikatorer er beskrevet ovenfor i forbindelse med applikasjonsidentifikatoren 1302(A) i en applikasjon-assosiert post 1302 i tilstands- og lasttabellene 1204.
Radendringsoperasjonen kan være legg til, slett eller oppdater. Med andre ord kan dataene for operasjonen bli lagt til (i en legg til-operasjon) eller være en erstatning for (i en oppdater-operasjon) informasjon som allerede finnes i de felles tilstands- og lastbufrene 1208 i lastbalanseringsenheter 106.1 en slett-operasjon er det ikke behov for ytterligere data. Meldingsprotokollen 1500 er definert på en slik måte at flere operasjoner kan kreves utført i én enkelt radendringsmelding 1506. For en gitt vertsmaskin-identifikator kan således sett bestående av en applikasjons-identifikator, en operasjon og operasjonsdata være gjentatt for flere applikasjoner 316 i den vertsmaskinen 108 som identifiseres av den aktuelle vertsmaskin-identifikatoren.
En hent-kopi-av-tabell-melding 1508 vedrørende sendes fra en gitt lastbalanseringsenhet 106 for et gitt felles tilstands- og lastbuffer 1208 til én eller flere vertsmaskiner 108. Meldingen 1508 ber om at tilstands- og last-infrastrukturen 1202 i vertsmaskiner 108 tilveiebringer en kopi av de respektive tilstands- og lasttabellene 1204 forde respektive vertsmaskinene 108. Denne meldingen inneholder en identifikasjon av den lastbalanseringsenheten 106 som fremsatte forespørselen og kan anvendes av en lastbalanseringsenhet 106 (i) etter at den har hatt en feiltilstand og deretter er gjenopprettet; (ii) etter at en vertsmaskin 108 har hatt en feiltilstand, blitt gjenopprettet og igjen begynner å sende livstegn-meldinger 1502; (iii) dersom en radendringsmelding 1506 er sendt til en lastbalanseringsenhet 106, men meldingen har blitt forkastet, slik at dens felles tilstands- og lastbuffer 1208 er ute av synk med den respektive tilstands- og lasttabellen 1204 for den aktuelle vertsmaskinen 108 og (iv) andre grunner.
I det tredje (iii) tilfellet oppdages den manglende synkroniseringen mellom det felles tilstands- og lastbufferet 1208 og den respektive tilstands- og lasttabellen 1204 forden aktuelle vertsmaskinen 108 etter en påfølgende livstegn-melding 1502 fra den aktuelle vertsmaskinen 108 fordi "feilsjekkingen" vil avsløre at det felles tilstands- og lastbufferet 1208 er foreldet. Lastbalanseringsenheten 106 kan da sende en hent-kopi-av-tabell-melding 1508 slik at den kan få oppdatert sitt felles tilstands- og lastbuffer 1208.1 alle de tre (i, ii, iii) eksempelvise tilfellene over rekonstruerer således lastbalanseringsenhet 106 deretter sitt felles tilstands- og lastbuffer 1208 ved anvendelse av hent-tabellkopi-meldingen 1508. Hent-tabellkopi-meldingen 1508 kan bli sendt gjentagelsesvis til hver vertsmaskin 108 i et "punkt-til-punkt"-skjema eller kan bli sendt én gang til flere vertsmaskiner 108 i et "multicast"-skjema.
Send-kopi-av-tabell-meldingen 1510 sendes fra en individuell vertsmaskin 108 til en gitt lastbalanseringsenhet 106 etter at den aktuelle vertsmaskinen 108 har mottatt en hent-kopi-av-tabell-melding 1508 fra den aktuelle lastbalanseringsenheten 106, som angitt av pilen 1516. Innholdet i en send-kopi-av-tabell-melding 1510 genereres av tilstands- og last-infrastrukturen 1202 og omfatter alle eller i hvert fall flere av radene i tilstands- og lasttabellen 1204 i den aktuelle vertsmaskinen 108, slik at den aktuelle lastbalanseringsenheten 106 kan gjenoppbygge sitt felles tilstands- og lastbuffer 1208. Send-kopi-av-tabell-meldingen 1510 kan være en egen melding eller den kan være ekvivalent med en sekvens av legg til-operasjoner i en radendringsmelding 1506.
Antatt-tabelltilstand-melding 1512 og antagelse-feil-melding 1514 er knyttet til den ønskede lastbalanseringstilstanden og den gjeldende lastbalanseringstilstanden til lastbalansererdirektivet 1302(C) i en post 1302 i en tilstands- og lasttabell 1204. Den ønskede lastbalanseringstilstanden er den retningslinjen som tilstands- og last-infrastrukturen 1202 ønsker at lastbalanseringsenhetene 106 skal kjøre under. Den gjeldende lastbalanseringstilstanden er den retningslinjen som tilstands- og last-infrastrukturen 1202 forventer eller tror at lastbalanseringsenhetene 106 faktisk kjører under. Som regel er de to lastbalanseringstilstandene identiske.
Den ønskede lastbalanseringstilstanden vil imidlertid kunne være forskjellig fra den gjeldende lastbalanseringstilstanden i en overgangsperiode i forbindelse med en endring av et tilstandsdirektiv. For eksempel settes den ønskede lastbalanseringstilstanden og den gjeldende lastbalanseringstilstanden begge innledningsvis til aktiv. Et problem med en vertsmaskin 108 og/eller en applikasjon 316 i denne blir oppdaget, og det ønskede lastbalanseringstilstand-direktivet skiftes til tømmende. Dette direktivet blir kommunisert til lastbalanseringsenheter 106 via en radendringsmelding 1506.
Det er en forsinkelse før denne direktivendringen er reflektert i alle de felles tilstands- og lastbufrene 1208 i alle lastbalanseringsenheter 106. Under denne overgangsperioden er den ønskede lastbalanseringstilstanden tømmende mens den gjeldende lastbalanseringstilstanden fortsatt er aktiv i tilstands- og lasttabellen 1204 i vertsmaskin 108. Før den endrer den gjeldende lastbalanseringstilstanden til tømmende, ønsker tilstands- og last-infrastrukturen 1202 å sikre at de felles tilstands- og lastbufrene 1208 faktisk har blitt oppdatert til den nye tilstanden tømmende.
For å verfisere at de felles tilstands- og lastbufrene 1208 i lastbalanseringsenheter 106 har blitt oppdatert til et nytt tilstandsdirektiv, sender tilstands- og last-infrastrukturen 1202 en antatt-tabelltilstand-melding 1512 til lastbalanseringsenhetene 106. Antatt-tabelltilstand-meldingen 1512 sendes en tid (f.eks. en forbestemt forsinkelsesperiode) etter overføring av en radendringsmelding 1506 som angir at tilstandsdirektivet skal endres. Antatt-tabelltilstand-meldingen 1512 angir i dette eksempelet at tabelltilstanden skal være tømmende. Som vist av den stiplede pilen 1518, svarer en lastbalanseringsenhet 106 på denne antatt-tabelltilstand-meldingen 1512 dersom dens felles tilstands- og lastbuffer 1208 er forskjellig fra det antatte tilstandsdirektivet.
Dersom direktivet i det felles tilstands- og lastbufferet 1208 er forskjellig fra det antatte tilstandsdirektivet, sender da denne lastbalanseringsenheten 106 en antagelse-feil-melding 1514 til tilstands- og last-infrastrukturen 1202 i den vertsmaskinen 108 som sendte antatt-tabelltilstand-meldingen 1512. Denne tilstands- og last-infrastrukturen 1202 sender da regelmessig antatt-tabelltilstand-meldingen 1512 på nytt inntil ingen flere antagelse-feil-meldinger 1514 mottas fra de felles tilstands- og lastbufrene 1208. På dette tidspunktet sender tilstands- og last-infrastrukturen 1202 en radendringsmelding 1506 med den nye gjeldende lastbalanseringstilstanden. I denne forstand er det felles tilstands- og lastbufre 1208 som endelig bestemmer den gjeldende lastbalanseringstilstanden og tilstands- og last-infrastrukturen 1202 som endelig bestemmer den ønskede lastbalanseringstilstanden.
Figur 16 illustrerer et eksempel på meldingsoverføringsskjema for kommunikasjonen illustrert i figur 12 mellom vertsmaskiner 108 og lastbalanseringsenheter 106. Det viste meldingsoverføringsskjemaet kan redusere båndbredden som opptas av livstegn-meldinger 1502 i kommunikasjonsforbindelsen 1210. Meldingsoverføringsskjemaet i figur 16 er spesielt tilpasset for livstegn-meldinger 1502, men det kan også anvendes for andre meldinger definert i meldingsprotokollen 1500.
En gruppe av vertsmaskiner 108(1), 108(2), 108(3)... 108(11) og 108(12) er illustrert sammen med lastbalanseringsenheter 106(1), 106(2)... 106(u). Hver linje representerer en medlemsskap eller innlemmelse i gruppen av vertsmaskiner 108(1, 2 ... 12). Gruppen av vertsmaskiner 108(1, 2 ... 12) danner et fellesskap av noder som jobber sammen for å overføre livstegn-informasjon til lastbalanseringsenheter 106. Selv om tolv vertsmaskiner er vist, vil flere eller færre kunne være del av en hvilken som helst gitt gruppe av vertsmaskiner. Videre kan et fullstendig sett av vertsmaskiner 108 som betjenes av en infrastruktur for lastbalansering 106 være delt inn i én, to, tre eller flere grupper av vertsmaskiner.
I en beskrevet utførelse velger fellesskapet av noder som omfatter gruppen av vertsmaskiner 108(1, 2 ... 12) en leder som gis ansvar for å sende livstegn-meldinger 1502 til lastbalanseringsenheter 106. Hver vertsmaskin 108 (som ikke er leder) i gruppen av vertsmaskiner 108(1, 2 ... 12) sender sine livstegn-meldinger 1502 til den valgte lederen. I dette eksempelet er vertsmaskin 108(4) valgt som leder.
I fellesskapet av noder sendes livstegn-informasjon for hver vertsmaskin 108 i gruppen av vertsmaskiner 108(1, 2 ... 12) til leder-vertsmaskinen 108(4). Vertsmaskinen 108(4) samler inn livstegn-informasjonen og samler den i en felles livstegn-melding 1602. Felles livstegn-meldinger 1602(1), 1602(2)... 1602(u) blir deretter sendt til respektive lastbalanseringsenheter 106(1), 106(2) ... 106(u). Disse felles livstegn-meldingene 1602 kan eventuelt komprimeres for ytterligere å redusere bruken av båndbredde.
Som et annet alternativ kan leder-vertsmaskinen 108(4) kun sende endringer av medlemsskapet i gruppen til felles tilstands- og lastbufre 1208. Med andre ord jobber i denne modusen de felles tilstands- og lastbufrene 1208 primært, om ikke utelukkende, med endringer av medlemsskap. Det er leder-vertsmaskinen 108(4) sitt ansvar å sikre at den første "hei"-meldingen blir videresendt når en vertsmaskin 108 dukker opp i nettverket og at en farvel-melding 1504 blir sendt når denne vertsmaskinen 108 forsvinner fra nettverket. I tillegg kan en vertsmaskin 108 periodisk spesifisere at en livstegn-melding 1502 skal "videresendes". Dette angir for leder-vetrsmaskin 108(4) at den skal sende den til felles tilstands- og lastbufre 1208 selv om den ikke representerer en endring av et medlemsskap.
Livstegn-meldinger 1502 (omfattende felles livstegn-meldinger 1602) anvendes av lastbalanseringsenheter 106 når deres felles tilstands- og lastbufre 1208 er ute av synk med tilstands- og lasttabellene 1204. Dette tapet av synkronisering kan for eksempel ha oppstått som følge av et sammenbrudd av eller en annen feiltilstand ved det felles tilstands- og lastbufferet 1208 og/eller lastbalanseringsenhet 106. Som beskrevet ovenfor omfatter hver livstegn-melding 1502 feilsjekkingsdata som kan benyttes til å verifisere overensstemmelse mellom et felles tilstands- og lastbuffer 1208 og tilstands- og lasttabeller 1204. Dersom det oppdages uoverensstemmelse i forhold til en gitt vertsmaskin 108 og/eller en applikasjon 316 i denne, innhentes DNS-navnet til den aktuelle vertsmaskinen 108 fra livstegn-meldingene 1502.
DNS-navnet brukes av det felles tilstands- og lastbufferet 1208 til å sende en hent-kopi-av-tabell-melding 1508 til den aktuelle vertsmaskinen 108 for å oppnå oppdatert tilstands- og lastinformasjon 1206 i form av en send-kopi-av-tabell-melding 1510. En annen eller den samme hent-kopi-av-tabell-meldingen 1508 blir sendt til hver vertsmaskin 108 som det oppdages uoverensstemmelser i forhold til. Til slutt samsvarer tilstands- og lastinformasjonen 1206 i det felles tilstands- og lastbufferet 1208 med tilstands-og lastinformasjonen 1206 i tilstands- og lasttabellene 1204, som kan bli verifisert gjennom nye livstegn-meldinger 1502. På denne måten kan et feilaktig felles tilstands- og lastbuffer 1208 gjøres korrekt uten manuell intervensjon med bruk av meldingsprotokoll 1500 og et skjema for å sjekke samsvar.
Figur 17Aog figur 17B illustrerer eksempler på proxylagring av tilstands-og lastinformasjon henholdsvis for tilstands- og lasttabeller 1204 og forfelles tilstands- og lastbufre 1208.1 utførelser beskrevet ovenfor i forbindelse med figurene 12-16, omfatter vertsmaskiner 108 tilstands- og last-infrastrukturen 1202. Andre utførelser kan imidlertid omfatte vertsmaskiner som ikke innbefatter tilstands-og last-infrastrukturen 1202.
For eksempel kan en vertsmaskin kjøre en versjon av én eller flere applikasjoner og/eller et operativsystem som tilstands- og last-infrastrukturen enten ikke er implementert for eller som av andre årsaker ikke kan installeres på vertsmaskinen. Følgelig kjører ikke denne typen vertsmaskiner tilstands- og last-infrastrukturen 1202. Vertsmaskin 1702 er en slik vertsmaskin som ikke kjører tilstands-og last-infrastrukturen 1202. Allikevel kan vertsmaskin 1702 anvende en tilstands- og last-infrastruktur 1202 som kjører på én eller flere proxyer, for eksempel proxy 1704.
Proxy 1704 er tilveiebragt med og kjører en tilstands- og last-infrastruktur 1202 som omfatter en tilstands- og lasttabell 1204. Vertsmaskinen 1702 kan anvende funksjonaliteten til tilstands- og last-infrastrukturen 1202 ved å tilveiebringe tilstands- og lastinformasjon 1206 til tilstands- og lasttabellen 1204 for applikasjoner som kjører på vertsmaskin 1702. Alternativt kan proxy 1704 skaffe seg kunnskap om tilstand og belastning i vertsmaskinen 1702 gjennom ekstern overvåkning. Proxy 1704 er illustrert som proxy 1704(1) og 1704(2) for redundans og assosiert høy tilgjengelighet.
I utførelser beskrevet ovenfor i forbindelse med figurene 12-16 og nedenfor i forbindelse med figur 18, bevirkes lastbalansering med bruk av lastbalanseringsenheter 106 som omfatter felles tilstands- og lastbufre 1208. Andre utførelser kan imidlertid besørge lastbalansering uten å anvende felles tilstands- og lastbufre 1208.
For eksempel kan lastbalansering utføres av monolittisk maskinvare for lastbalansering eller andre infrastrukturer for lastbalansering som ikke lagrer og/eller ikke er i stand til å lagre eller på annen måte innlemme et felles tilstands- og lastbuffer 1208. Lastbalanserer 1706 representerer én eller flere lastbalanseringsanordninger som ikke innbefatter et felles tilstands- og lastbuffer 1208. Allikevel kan lastbalanserer 1706 anvende et felles tilstands- og lastbuffer 1208 tilveiebragt i én eller flere proxyer, for eksempel proxy 1708.
Proxy 1708 omfatter et felles tilstands- og lastbuffer 1208 som lagrer tilstands- og lastinformasjon 1206 for applikasjoner som lastbalanseres av lastbalanserer 1706. Lastbalanserer 1706 kan anvende tilstands- og lastinformasjonen 1206 i det felles tilstands- og lastbufferet 1208 når den utfører lastbalanseringsfunksjoner ved å aksessere denne informasjonen ved hjelp av interne API-funksjoner som støttes av lastbalanserer 1706. Alternativt kan det felles tilstands- og lastbufferet 1208 anrope API-funksjoner for å overføre tilstands- og lastinformasjon 1206, omfattende direktiver, til lastbalanserer 1706. Proxy 1708 er illustrert i form av proxy 1708(1) og 1708(2) for redundans og assosiert høy tilgjengelighet.
Figur 18 illustrerer et eksempel på fremgangsmåte for tildeling av mål-applikasjonsendepunkt som involverer en sorterer 304 og en tilstands- og lastbehandler 314 i en lastbalanseringsenhet 106. Etter at tilstands- og lastbehandler 314 har skaffet et felles tilstands- og lastbuffer 1208, anvendes tilstands- og lastinformasjon 1206 i dette ved valg av applikasjonsendepunkter for nye forespørseler/forbindelser.
Som beskrevet ovenfor i forbindelse med figur 13B, omfatter det felles tilstands- og lastbufferet 1208 bufret tilstands- og lastinformasjon 1206 for et antall vertsmaskiner 108. For å gjøre det lettere å opprette og oppdatere et felles tilstands- og lastbuffer 1208 basert på tilstands- og lastinformasjon 1206 fra et antall vertsmaskiner 108, er tilstands- og lastinformasjonen 1206 i disse organisert slik at den kan aksesseres ved identifikator for hver vertsmaskin 108. Tilstands- og lastinformasjonen 1206 i disse er imidlertid også organisert slik at den kan aksesseres ved type applikasjon 316 for å lette valg av applikasjonsendepunkt.
Med andre ord er tilstands- og lastbehandler 314 i stand til å aksessere tilstands- og lastinformasjon 1206 per applikasjon 316 på tvers av tilstands- og lastinformasjon 1206 for et antall vertsmaskiner 108. Når tilstands- og lastinformasjon 1206 for en gitt applikasjon 316 er aksessert for alle vertsmaskiner 108, kan allokering av innkommende forbindelsesforespørseler gjøres basert på denne tilstands- og lastinformasjonen 1206. For eksempel kan mulige endepunkter for den aktuelle applikasjonen 316 bli allokert til innkommende forbindelsesforespørseler ved valg av endepunktene av den aktuelle applikasjonen 316 på grunnlag av relativ tilgjengelig lastkapasitet mellom operative endepunkter for den aktuelle applikasjonen 316.
I en beskrevet utførelse fremsetter sorterer 304 en forespørsel 1802 om tildeling av mål-applikasjonsendepunkt til tilstands- og lastbehandler 314. Som illustrert omfatter forespørselen 1802 (i) en virtuell IP-adresse og et portnummer, (ii) en protokoll og (iii) protokollspesifikasjonsinformasjon. Forespørselen 1802 identifiserer derfor en type applikasjon 316 som innkommende forbindelsesforespørseler er rettet mot.
Tilstands- og lastbehandler 314 mottar forespørselen 1802 og velger minst ett fysisk endepunkt svarende til den identifiserte typen applikasjon 316 ved anvendelse av én eller flere av mange mulige utvelgingsmekanismer. For å redusere latenstiden velger tilstands- og lastbehandler 314 en tildeling av applikasjons-endepunkter for bruk i et antall innkommende forbindelsesforespørseler. Denne tildelingen blir tilveiebragt fra tilstands- og lastbehandler 314 til sorterer 304 ved anvendelse av en mål-applikasjonsendepunkt-tildelingsrespons 1804. Som illustrert omfatter responsen 1804 en tildeling av fysiske IP-adresser og porter (så som endepunktene IP1, IP2 og IP3)forden identifiserte typen applikasjon 316.
Tildelingen for mål-applikasjonsendepunkt-tildelingsresponsen 1804 kan gjennomføres med bruk av ett eller flere tildelingsskjemaer. Som et eksempel er et polettbasert tildelingsskjema 1806 og et prosentbasert tildelingsskjema 1808 illustrert. Det polettbaserte tildelingsskjemaet 1806 er et enhetsbasert tildelingsskjema, og det prosentbaserte tildelingsskjemaet 1808 er et tidsbasert tildelingsskjema.
Det polettbaserte tildelingsskjemaet 1806 allokerer "poletter" til hvert operative endepunkt IP1, IP2 og IP3 basert på deres innbyrdes belastnings- og kapasitetsforhold. I det illustrerte eksempelet har, av den totale tilgjengelige kapasiteten, IP1 40% av den tilgjengelige kapasiteten, IP2 35% av den tilgjengelige kapasiteten og IP3 25% av den tilgjengelige kapasiteten. Det totale antallet poletter deles således opp i disse prosentdelene. Det totale antallet poletter kan være tilveiebragt som del av forespørselen 1802 om tildeling av mål-applikasjonsendepunkt eller bestemmes av tilstands- og lastbehandler 314.
En hvilken som helst verdi for det totale antallet poletter kan anvendes, så som 10, 45, 100, 250, 637,1000, osv. Denne verdien kan velges avhengig av antallet forbindelsesforespørseler per sekund og hyppigheten av/frekvensen for endring av applikasjoners tilstand og/eller belastning. Sorterer 304 "bruker opp" ett symbol hver gang den responderer til en forbindelsesforespørsel med en applikasjonsendepunkt-tildeling inntil polettene er oppbrukt; sorterer 304 ber da om en ny polett-tildeling gjennom forespørselen 1802.
Det prosentbaserte tildelingsskjemaet 1808 bestemmer den tilgjengelige relative kapasiteten på en tilsvarende måte. I stedet for poletter tilveiebringes imidlertid de bestemte tilgjengelige relative kapasitetene per applikasjonsendepunkt til sorterer 304 sammen med en tidsverdi 1810. Sorterer 304 tildeler mål-applikasjonsendepunkter til innkommende forbindelsesforespørseler i henhold til de relative prosentandelene av tilgjengelig kapasitet inntil tidsverdien 1810 utløper.
For det prosentbaserte tildelingsskjemaet 1808 opprettholder sorterer 304 en løpende registrering av applikasjonsendepunkt-tildelinger for å kunne holde seg innenfor tildelte prosentandelene og holde styr på tiden for tidsverdien 1810. Når tiden utløper, berda sorterer 304 om en ny prosentbasert tildeling ved anvendelse av forespørsel 1802.
Det skal bemerkes at det polettbaserte tildelingsskjemaet 1806 også vil kunne anvende en tidsbegrensning. Dersom tildelte poletter er for gamle, bør de forkastes og nye fremskaffes. Ellers vil sorterer 304 kunne bruke foreldede poletter som ble allokert basert på tilstands- og lastinformasjon som nå er utdatert. Bruken av applikasjonsendepunkt-tildelinger av sorterer 304 er beskrevet ytterligere nedenfor i seksjonen "Eksempler på sortering, videresending og ruting av forespørseler".
Eksempel på sesionssporing
Denne seksjonen beskriver hvordan informasjon om vertsmaskin-status, så som sesjonsinformasjon, kan samles inn for og benyttes til balansering av nettverksbelastning. Denne seksjonen refererer primært til figurene 19-24, og viser funksjonalitet for bevaring av sesjonstilhørighet, så som den tilveiebragt av sesjonsporer 308 (i figur 3). Som beskrevet ovenfor i forbindelse med figurene 1-3, er hver vertsmaskin 108 vert for én eller flere applikasjoner 316 som tilveiebringer én eller flere tjenester til klienter 102. Sesjonssporer 308 anvender sesjonsinformasjon vedrørende kontekster for forbindelsene etablert mellom applikasjoner 316 og klienter 102 for visse beskrevne utførelser av balansering av nettverksbelastning.
Figur 19 illustrerer et eksempel på tilnærming til balansering av nettverksbelastning som omfatter sesjonsinformasjon 1902. Ved forbindelse [1] er klient 102(1) vist idet den etablerer en ny forbindelse med vertsmaskin 108(2) via infrastrukturen for lastbalansering 106. Infrastrukturen for lastbalansering 106 kan innbefatte én eller flere lastbalanseringsenheter 106. Når forbindelsesforespørselen ankommer infrastrukturen for lastbalansering 106, blir forespørselen typisk rutet til en vertsmaskin 108 ved hjelp av funksjonalitet for balansering av nettverksbelastning basert på tilstands- og/eller lastinformasjon for vertsmaskinene 108 og/eller applikasjoner 316 (ikke vist eksplisitt i figur 19) i disse.
Når forbindelsen [1] er opprettet, etableres det en sesjon mellom klient 102(1) og den betjenende applikasjonen 316, som i dette eksempelet befinner seg i vertsmaskin 108(2). Sesjonen tilveiebringer en kontekst for utveksling av kommunikasjon mellom klient 102(1) og vertsmaskin 108(2). Informasjonen for sesjonskonteksten lagres i vertsmaskin 108(2). Når forbindelsen [1] er avsluttet, er det ikke sikkert sesjonskonteksten blir anvendt flere ganger. På den annen side vil sesjonskonteksten kunne komme til nytte igjen dersom klient 102(1) forsøker å opprette en ny forbindelse med vertsmaskinene 108 for tjenesten tilveiebragt av applikasjonen 316. Dersom denne andre forbindelsen ikke blir rutet til samme vertsmaskin 108(2) som lagrer denne sesjonskonteksten, må klient 102(1) da etablere en ny sesjonskontekst, noe som kan være tidkrevende, data/prosesseringskrevende og/eller frustrerende for brukeren ved klientmaskinen 102(1). Med balansering av nettverksbelastning basert på tilstands- og/eller lastinformasjon er det kun tilfeldigheter som avgjør hvorvidt den andre forbindelsen blir rutet til vertsmaskin 108(2).
Dersom imidlertid infrastrukturen for lastbalansering 106 har tilgang til en avbildning mellom sesjonsinformasjon og vertsmaskiner 108, vil infrastrukturen 106 kunne rute forbindelsesforespørseler som er beslektet med tidligere etaberte sesjoner til den aktuelle vertsmaskinen 108. En del sesjonsinformasjon kan avledes fra innholdet i datapakker som strømmer gjennom infrastrukturen for lastbalansering 106. En slik tilnærming er imidlertid upresis og vilkårlig av flere grunner. For det første blir det bare trukket slutninger om etablering og terminering av sesjoner. For det andre blir ikke alle sesjoner "offisielt" terminert med en passende angivelse innlemmet i en datapakke. For eksempel avsluttes noen sesjoner som følge av tidsutløp. For det tredje vil datapakker som sendes fra vertsmaskin 108(2) til klient 102(1) kunne følge en bane som ikke går gjennom infrastrukturen for lastbalansering 106, noe som gjør det umulig for infrastrukturen for lastbalansering 106 å undersøke disse datapakkene for sesjonsinformasjon.
Som kan sees i figur 19, tilveiebringer vertsmaskinene 108 sesjonsinformasjon (Sl) 1902 til infrastrukturen for lastbalansering 106. Med bruk av sesjonsinformasjon 1902 fra vertsmaskiner 108 kan en enhet for bevaring av sesjonaffinitet 1904 sørge for affinitet mellom en etablert sesjon og den vertsmaskinen 108 som sesjonen ble etablert på. Sesjonsinformasjonen 1902 omfatter en kopling mellom eller en avbildning fra hver sesjon etablert mellom en klient 102 og en gitt vertsmaskin 108 til denne vertsmaskinen 108. Denne avbildningen er tilgjengelig for enheten for bevaring av sesjonaffinitet 1904 som del av vertsmaskin-sesjonsinformasjonsavbildningen 1906. Mer konkrete eksempler på sesjonsinformasjon 1902 er gitt nedenfor, spesielt i forbindelse med figurene 20, 22, 23Aog 23B.
I visse beskrevne utførelser for sesjonssporing er den logiske naturen til klienter 102 relevant. Som nevnt ovenfor i forbindelse med figur 1, kan en klient 102 være en spesifikk anordning og/eller en spesifikk bruker av en anordning. Følgelig er det mulig å opprettholde sesjonstilhørigheten for en klientbruker 102 som aksesserer vertsmaskinene 108 fra forskjellige anordninger. Gjenopprettelse av sesjoner ved hjelp av sesjonsinformasjon 1902 er derfor fortsatt mulig i tilfeller som anvender en proxy (f.eks. de til enkelte Internett-tjenesteleverandører (ISP-er)).
Fortsatt med henvisning til eksempelet med forbindelsen [1], tilveiebringes sesjonen etablert ved vertsmaskin 108(2) til infrastrukturen for lastbalansering 106 som sesjonsinformasjon 1902. Spesifikt blir det opprettet en kopling/avbildning mellom (i) sesjonskonteksten til klient 102(1) og vertsmaskin 108(2) og (ii) en identifikator for vertsmaskin 108(2) ved vertsmaskin-sesjonsinformasjonavbildningen 1906. Når det senere ankommer en forbindelsesforespørsel for forbindelsen [2] vedrørende den samme sesjonkonteksten, lokaliserer enheten for bevaring av sesjonaffinitet 1904 denne sesjonskonteksten i informasjonsavbildningen 1906 og verifiserer at vertsmaskin 108(2) er assosiert med denne sesjonskonteksten ved hjelp av koplingen/avbildningen.
Basert på avbildningen av vertsmaskin 108(2) til den etterspurte sesjonskonteksten som verifisert av enheten for bevaring av sesjonaffinitet 1904 ved hjelp av avbildningen 1906, blir forbindelsen [2] rutet til vertsmaskin 108(2). I denne forstand har det å opprettholde sesjonstilhørighet høyere prioritet for infrastrukturen for lastbalansering 106 enn avgjørelser vedrørende balansering av nettverksbelastning basert på applikasjoners tilstand og belastning. Tilstand og/eller belastning kan imidlertid være en viktigere faktor ved balansering av nettverksbelastning enn sesjonssporing, for eksempel når belastningen er ekstremt stor eller når den applikasjonen og/eller vertsmaskinen som er relevant for sesjonen er i en feiltilstand.
Mange typer forbindelser kan være sesjonrelaterte. Eksempler på dette omfatter: en TCP-forbindelse, en (TLS, Transport Layer Security)/SSL-sesjon, en PPTP-sesjon, en IPSec/L2TP-sesjon, en ISA-sesjon, en HTTP-cookie-basert sesjon, en Terminal Server-sesjon, en administrator-definert sesjon, og annet. Som en oppklaring anses en TCP-forbindelse å være en sesjon av TCP-pakker. Videre kan en modell for å definere sesjoner av en administrator være spesifisert og støttet. I tillegg kan også sesjoner basert på en klients IP-adresse som avgrenses av tidsavbrudd være støttet. Dette er sesjonsstøtte på et forholdsvis lavt nivå, men forventes av enkelte brukere.
En forespørsel om en forbindelse fra en klient 102 varierer med typen av ønsket sesjon. For sesjoner av typen "TCP-forbindelse", omfatter for eksempel forbindelsesforespørselen en TCP-pakke. For sesjoner av typen "SSL-sesjon", omfatter forbindelsesforespørselen en TCP-forbindelse. Andre slike forbindelsesforespørseler svarer til andre typer sesjoner. Disse eksemplene illustrerer også hvordan det kan være lagdelte sesjoner. På et laveste sesjonsnivå kan en sesjonskontekst for en TCP-forbindelse omfatte et 4-tuppel for TCP, et sesjonsnummer, antallet bit-oktetter sendt/mottatt, og annet. På et høyere sesjonnivå kan en sesjonskontekst for en SSL-sesjon omfatte en 32 bit-oktetter lang sesjonsidentifikator, en fellesnøkkel for klienten 102 som tilveiebringes til vertsmaskin 108, og annet.
Figur 20 illustrerer et eksempel på tilnærming til balansering av nettverksbelastning som omfatter det å kommunisere sesjonsinformasjon ved hjelp av varslinger 2006 og meldinger 2008. Et antall lastbalanseringsenheter 106(1), 106(2)... 106(u) og et antall vertsmaskiner 108(1), 108(2)... 108(n) er vist. Hver respektive vertsmaskin 108(1), 108(2)... 108(n) omfatter én eller flere respektive applikasjoner 316(1), 316(2)... 316(n) som er installert og kjører på denne. Varslingene 2006 benyttes til å tilveiebringe sesjonsinformasjon fra applikasjoner 316, og meldingene 2008 benyttes til å tilveiebringe sesjonsinformasjon fra vertsmaskiner 108 til lastbalanseringsenheter 106.
Som illustrert omfatter hver respektive vertsmaskin 108(1), 108(2)... 108(n) omfatter en respektiv infrastruktur for sesjonssporing (STI) 2002(1), 2002(2)... 2002(n). Hver respektive infrastruktur 2002(1), 2002(2)... 2002(n) omfatter en respektiv sesjonstabell 2014(1), 2014(2)... 2014(n) (selv om kun en sesjonstabell 2014(1) eksplisitt er vist i figur 20).
Hver respektive lastbalanseringsenhet 106(1), 106(2)... 106(u) omfatter trafikkrutingsfunksjonalitet (TRF) 2012(1), 2012(2)... 2012(u). Trafikkrutingsfunksjonaliteten 2012 kan for eksempel omfatte funksjonalitet for sortering og/eller ruting av forespørseler, så som den tilveiebragt henholdsvis av sorterer 304 og forespørselsruter 306(H/S). En distribuert sesjonssporingsstyrer 2010 er distribuert til lastbalanseringsenhetene 106(1), 106(2)... 106(u).
I en beskrevet utførelse er trafikkrutingsfunksjonaliteten 2012 og den distribuerte sesjonssporingsstyreren 2010 en del av infrastrukturen for lastbalansering 106. Infrastrukturen for sesjonssporing 2002 kan også være en (f.eks. fjernlokalisert) del av infrastrukturen for lastbalansering 106.
Et API 2004 anvendes for å tilveiebringe sesjonsinformasjon fra applikasjoner 316 til infrastrukturen for sesjonssporing 2002. Ved hjelp av API 2004 kan applikasjoner 316 varsle infrastrukturen for sesjonssporing 2002 om sesjonsinformasjon, omfattende forskjellige endringer av denne. Mer spesifikt er hver applikasjon 316 i stand til å tilveiebringe, og infrastrukturen for sesjonssporing 2002 i stand til å ta imot, varslinger 2006.
En varsling av at en sesjon har blitt etablert (eller en sesjonsetableringsvarsling 2006(E)) tilveiebringes av applikasjon 316 når en sesjon etableres eller åpnes. Sesjonsetableringsvarslingen 2006(E) omfatter en sesjonsidentifikator og eventuelt en identifikator for applikasjonen 316. En varsling om at en sesjon har blitt terminert (eller en sesjonstermineringsvarsling 2006(T)) tilveiebringes fra applikasjon 316 når en sesjon termineres eller lukkes. Sesjonstermineringsvarslingen 2006(T) omfatter også sesjonsidentifikatoren og eventuelt identifikatoren for applikasjonen 316.
Når infrastrukturen for sesjonssporing 2002 mottar en sesjonsetableringsvarsling 2006(E), legger den inn en post i sesjonstabellen 2014 for den nye sesjonen. Et eksempel på sesjonstabell 2014 er beskrevet nedenfor i forbindelse med figur 23A. Når infrastrukturen for sesjonssporing 2002 mottar en sesjonstermineringsvarsling 2006(T), fjerner den posten i sesjonstabellen 2014 for den avsluttede sesjonen.
Sesjonstabell 2014(1) er den autoriserte kilden for sesjonsinformasjon 1902 med hensyn til applikasjoner 316(1) på vertsmaskin 108(1). Det gir imidlertid generelt en for høy latenstid å kreve at trafikkrutingsfunksjonaliteten 2012 kontakter vertsmaskiner 108 for å aksessere sesjonstabeller 2014 hver gang den mottar en innkommende forbindelsesforespørsel som omfatter en sesjonsreferanse. Sesjonsinformasjonen 1902 blir derfor bufret i lastbalanseringsenheter 106.
I lastbalanseringsenhetene 106 besørger den distribuerte sesjonssporingsstyreren 2010 bufring av sesjonsinformasjon 1902 som del av sine sesjonsstyringsoppgaver. Generelt er den distribuerte sesjonssporingsstyreren 2010 en distribuert applikasjon og/eller virtuell tjeneste, deler av hvilken er tilveiebragt i hver lastbalanseringsenhet 106. For hver logiske sesjon opprettholder den distribuerte sesjonssporingsstyreren 2010 minst én bufret kopi av sesjonsinformasjon for denne på en pålitelig og skalerbar måte som raskt kan benyttes til å styre trafikk etter hvert som innkommende forbindelsesforespørseler som inneholder en sesjonsreferanse mottas av infrastrukturen for lastbalansering 106.
Kommunikasjon mellom vertsmaskiner 108 og lastbalanseringsenheter 106 skjer over en pålitelig protokoll som sikrer at meldinger 2008 sendt fra en vertsmaskin 108 ankommer ved den tilsiktede lastbalanseringsenheten 106. Hver vertsmaskin 108 er bundet til minst én spesifikk lastbalanseringsenhet 106 som er mål-lastbalanseringsenhet 106 for meldinger 2008. Denne bindingen skapes ved å tildele en IP-adresse tilhørende en gitt lastbalanseringsenhet 106 til hver vertsmaskin 108 for å sende sesjonssporingsmeldinger 2008 mellom infrastrukturen for sesjonssporing 2002 og den distribuerte sesjonssporingsstyreren 2010. For å oppnå høy tilgjengelighet av infrastrukturen for lastbalansering 106 vil, dersom en lastbalanseringsenhet 106 oppleveren feiltilstand, en annen lastbalanseringsenhet 106 overta IP-adressen til den sviktende lastbalanseringsenheten 106. Deteksjon av feiltilstander for overdragelse av IP-adresser kan oppnås med bruk av en livstegn-melding eller et annet skjema for overvåkning av livstegn.
Meldinger 2008 kommuniserer således sesjonsinformasjon 1902 fra infrastrukturen for sesjonssporing 2002 til den distribuerte sesjonssporingsstyreren 2010. Når for eksempel infrastrukturen for sesjonssporing 2002 mottar en sesjonsetableringsvarsling 2006(E), sender den en sesjon oppe-melding 2008(U) til den distribuerte sesjonssporingsstyreren 2010. Sesjon oppe-meldingen 2008(U) omfatter sesjonsidentifikatoren, en vertsmaskin-identifikator og eventuelt annen informasjon. Innhold i en sesjon oppe-melding 2008(U) er beskrevet nedenfor i forbindelse med figur 23B med hensyn til informasjon som vil kunne bli lagret for hver sesjon av én utførelse av den distribuerte sesjonssporingsstyreren 2010. Når infrastrukturen for sesjonssporing 2002 mottar en sesjonstermineringsvarsling 2006(T), sender den også en sesjon nede-melding 2008(D) til den distribuerte sesjonssporingsstyreren 2010. Meldinger 2008 kan bli sendt før, mens eller etter at infrastrukturen for sesjonssporing 2002 på passende måte modifiserer sesjonstabell 2014 som reaksjon på varslinger 2006.
Figur 21 er et flytdiagram 2100 som illustrerer et eksempel på fremgangsmåte for balansering av nettverksbelastning som omfatter det å kommunisere sesjonsinformasjon med bruk av varslinger og meldinger. Flytdiagrammet 2100 omfatter femten blokker 2102-2130. Selv om handlingene i flytdiagram 2100 vil kunne bli utført i andre miljøer og med en rekke forskjellige programvaresystemer, anvendes figurene 1-3 og 19-20 spesielt for å illustrere visse aspekter ved og eksempler på fremgangsmåten.
For eksempel kan handlingene i fire blokker 2102-2104 og 2118-2120 bli utført av en applikasjon 316, mens handlingene i seks trinn 2106-2110 og 2122-2126 blir utført av infrastrukturen for sesjonssporing 2002 og handlingene i fem trinn 2112-2116 og 2128-2130 blir utført av en distribuert sesjonssporingsstyrer 2010. Handlingene i åtte av disse trinnene 2102-2116 er primært rettet mot åpning av en sesjon, og handlingene i syv av disse trinnene 2118-2130 er primært rettet mot lukking av en sesjon.
I blokk 2102 åpnes en sesjon. For eksempel kan applikasjonen 316 åpne en sesjon med en klient 102.1 blokk 2104 tilveiebringes en sesjonsetableringsvarsling. For eksempel kan applikasjonen 316 sende en sesjonsetableringsvarsling 2006(E) til infrastrukturen for sesjonssporing 2002 ved anvendelse av API 2004 som følge av og/eller i forbindelse med åpning av sesjonen.
I blokk 2106 mottas sesjonsetableringsvarslingen. For eksempel kan infrastrukturen for sesjonssporing 2002 ta imot sesjonsetableringsvarslingen 2006(E) fra applikasjonen 316 med bruk av API 2004.1 blokk 2108 settes det inn en post i en sesjonstabell. For eksempel kan infrastrukturen for sesjonssporing 2002 sette inn en post i sesjonstabell 2014 for den åpnede sesjonen. Eksempler på innsetting i en sesjonstabell er beskrevet ytterligere nedenfor, spesielt i forbindelse med figur 23A. I blokk 2110 sendes en sesjon oppe-melding. For eksempel kan infrastrukturen for sesjonssporing 2002 sende en sesjon oppe-melding 2008(U) til den distribuerte sesjonssporingsstyreren 2010 ved anvendelse av en pålitelig kommunikasjonsprotokoll.
I blokk 2112 mottas sesjon oppe-meldingen. For eksempel kan den distribuerte sesjonssporingsstyreren 2010 motta sesjon oppe-melding 2008(U) fra infrastrukturen for sesjonssporing 2002 i overensstemmelse med den pålitelige kommunikasjonsprotokollen. I blokk 2114 opprettes en sesjonsinformasjonspost. For eksempel kan den distribuerte sesjonssporingsstyreren 2010 opprette en post forden bufrede sesjonsinformasjonen 1902 i én eller flere lastbalanseringsenheter 106. Eksempler på oppretting og påfølgende tillegging er beskrevet ytterligere nedenfor, spesielt i forbindelse med figurene 22 og 23B.
I blokk 2116 rutes nettverkstrafikk med sesjonsinformasjon. For eksempel kan trafikkrutingsfunksjonaliteten 2012, i kombinasjon med den distribuerte sesjonssporingsstyreren 2010, anvende bufret sesjonsinformasjon 1902, inklusive den opprettede sesjonsinformasjonsposten, for å rute innkommende forbindelsesforespørseler som inneholder en sesjonsreferanse. Et eksempel på slik trafikkruting er beskrevet ytterligere nedenfor, spesielt i forbindelse med figur 24. Ytterligere eksempler er beskrevet nedenfor i
seksjonen "Eksempler på sortering, videresending og ruting av forespørseler".
I blokk 2118 lukkes sesjonen. For eksempel kan applikasjonen 316 lukke sesjonen med klient 102.1 blokk 2120 tilveiebringes en
sesjonstermineringsvarsling. For eksempel kan applikasjonen 316 sende en sesjonstermineringsvarsling 2006(T) til infrastrukturen for sesjonssporing 2002 ved anvendelse av API 2004 som følge av og/eller i forbindelse med lukking av sesjonen.
I blokk 2122 mottas sesjonstermineringsvarslingen. For eksempel kan infrastrukturen for sesjonssporing 2002 ta imot sesjonstermineringsvarslingen 2006(T) fra applikasjonen 316 gjennom API 2004.1 blokk 2124 fjernes posten fra sesjonstabellen. For eksempel kan infrastrukturen for sesjonssporing 2002 fjerne posten for den lukkede sesjonen fra sesjonstabellen 2014.1 blokk 2126 sendes en sesjon nede-melding. For eksempel kan infrastrukturen for sesjonssporing 2002 sende en sesjon nede-melding 2008(D) til den distribuerte sesjonssporingsstyreren 2010 ved anvendelse av den pålitelige kommunikasjonsprotokollen.
I blokk 2128 mottas sesjon nede-meldingen. For eksempel kan den distribuerte sesjonssporingsstyreren 2010 motta sesjon nede-meldingen 2008(D) fra infrastrukturen for sesjonssporing 2002 i henhold til den pålitelige kommunikasjonsprotokollen. I blokk 2130 ødelegges sesjonsinformasjonspostene. For eksempel kan den distribuerte sesjonssporingsstyreren 2010 ødelegge sesjonsinformasjonsposten i den bufrede sesjonsinformasjonen 1902 ved alle lastbalanseringsenheter 106 som har sesjonsinformasjonsposten. Eksempler på slik ødelegging og påfølgende sletting er beskrevet nedenfor, spesielt i forbindelse med figurene 22 og 23B.
Figur 22 illustrerer et eksempel på administrering av sesjonsinformasjon i et antall lastbalanseringsenheter 106. Hver respektive lastbalanseringsenhet 106(1), 106(2)... 106(u) omfatter en respektiv andel 2202(1), 2202(2)... 2202(u) av en distribuert atomstyrer (DAM) 2202. DAM 2202 er et eksempel på utførelse av en distribuert sesjonssporingsstyrer 2010. Hver respektive DAM-andel 2202(1), 2202(2)... 2202(u) omfatter en respektiv andel 2206(1), 2206(2)
... 2206(u) av en DAM-tabell (DAMT) 2206.
DAM 2202 er en distribuert applikasjon eller virtuell tjeneste som administrerer sesjonsinformasjon 1902 på en pålitelig og skalerbar måte, slik at trafikkrutingsfunksjonalitet 2012 kan bruke den til å bevare sesjonstilhørighet. For eksempel kan trafikkrutingsfunksjonaliteten 2012 aksessere DAM 2202 gjennom et API (ikke spesifikt vist) for å søke eller å få søkt gjennom DAMT 2206. Funksjonsanrop 2204, virkemåten til DAM 2202 og andre aspekter ved figur 22 er beskrevet ytterligere nedenfor etter beskrivelsen av figurene 23A og 23B.
Figur 23A er et eksempel på sesjonstabell 2014 som illustrert i figur 20. Sesjonstabell 2014 omfatter "v" poster 2302(1), 2302(2)... 2302(v). Hver post 2302 er lagt inn av infrastrukturen for sesjonssporing 2002 som reaksjon på en sesjonsetableringsvarsling 2006(E) mottatt fra en applikasjon 316. Hver post 2302 blir fjernet av infrastrukturen for sesjonssporing 2002 som reaksjon på en sesjonstermineringsvarsling 2006(T) mottatt fra applikasjonen 316.
Som beskrevet ovenfor omfatter hver sesjonsetableringsvarsling 2006(E) en sesjonsidentifikator og eventuelt en identifikator for applikasjonen 316. Hver respektive post 2302(1), 2302(2)... 2302(v) i sesjonstabell 2014 omfatter respektive felter med: (i) en sesjonsidentifikator 2302(11), 2302(21)... 2302(vl) og (ii) en sesjonstype og/eller applikasjon 2302(1 T), 2302(2T)... 2302(vT).
Sesjonstypen og/eller applikasjonen 2302(T) kan være "TCP", "IPSEC", "Terminal Server," "HTTP-cookie", en applikasjonstype som angitt ovenfor, og annet. Sesjonsidentifikatoren 2302(1) kan være "<kildens IP-adresse, kildens TCP-port, destinasjonens IP-adresse, destinasjonens TCP-port >", "Klient IP = 172.30.189.122", "User = 'joe_user'", "Cookie = '{b7595cc9-e68b-4eb0-9bf1-bb717b31d447}"', en annen, f.eks. applikasjons-spesifikk identifikasjon av en sesjon, og annet. For TCP-forbindelse/sesjonstyper kan sesjonsidentifikatoren 2302(1) alternativt være en kanonisk versjon av TCP-4-tuppelet (for IPv4 eller IPv6). Andre verdier i feltene for sesjonsidentifikator 2302(1) og applikasjon/sesjonstype 2302(T) kan alternativt anvendes.
Figur 23B illustrerer et eksempel på distribuert atomstyrer-(DAM)-tabell (DAMT) 2206 som illustrert i figur 22. DAM-tabellen 2206 omfatter "w" poster 2304(1), 2304(2)... 2304(w). Hver sesjonsinformasjonspost 2304 er opprettet av DAM 2202 som reaksjon på en sesjon oppe-melding 2008(U) mottatt fra infrastrukturen for sesjonssporing 2002. Hver sesjonsinformasjonspost 2304 blir ødelagt som reaksjon på en sesjon nede-melding 2008(D) som mottas fra infrastrukturen for sesjonssporing 2002. Som beskrevet nedenfor kan sesjonsinformasjonsposter 2304 i DAM-tabeller 2206 manipuleres av DAM 2202 gjennom funksjonsanrop 2204.
Som beskrevet ovenfor omfatter sesjon oppe-meldingen 2008(U) sesjonsidentifikatoren, en vertsmaskin-identifikator og eventuelt annen informasjon. Hver respektive sesjonsinformasjonspost 2304(1), 2304(2)... 2304(w) i DAM-tabell 2206 omfatter respektive felter med: (i) en nøkkel 2304(1 K), 2304(2K)... 2304(wK), (ii) data 2304(1 D), 2304(2D)... 2304(wD) og (iii) metadata 2304(1 M), 2304(2M)... 2304(wM). For eksempel kan verdier i nøkkelfeltene 2304(K) være alfanumeriske datastrenger og verdier i datafeltene 2304(D) være binærtall. Verdier for nøkkelen 2304(K) kan også være binærtall.
Nøkkelen 2304(K) kan motsvare sesjonsidentifikator 2302(1). Dataene 2304(D) kan motsvare vertsmaskin-identifikatoren, for eksempel en nettverksadresse til den vertsmaskinen 108 hvor sesjonskonteksten befinner seg. Metadata 2304(M) kan motsvare annen, eventuelt tilveiebragt informasjon. Eksempler på metadata 2304(M) omfatter data som anvendes internt av DAM 2202 til å løse atom-konflikter og til å spore atom-livstegn (f.eks. ved hjelp av en tidsutløpsmekanisme). (Karakteriseringen av postene 2304 som atomiske er beskrevet mer i detalj i neste avsnitt.) Mer spesifikt omfatter metadataene 2304(M), blant annet, identiteten til den entiteten (f.eks. instansen av trafikkrutingsfunksjonalitet 2012) som har lagt til sesjonsinformasjonsposten 2304 i DAM-tabell 2206.
I en beskrevet utførelse er hver sesjonsinformasjonspost 2304 atomisk i den forstand at DAM 2202 kan legge til, slette, kopiere, etc. postene 2304 som helheter, men DAM 2202 vil vanligvis ikke modifisere noen spesifikk del av en post 2304. Atomiske poster blir således 2304 lagt til, slettet, kopiert, på annen måte manipulert, etc. på tvers av DAM-tabeller 2206 av DAM 2202 for å tilveiebringe høy tilgjengelighet og skalerbarhet for en utførelse med bevaring av sesjonstilhørighet.
Funksjonsanrop 2204 (i figur 22) kan anvendes av DAM 2202 for å manipulere de atomiske postene 2304 i DAM-tabell 2206. Funksjonsanrop 2204 kan bli kommunisert fra én lastbalanseringsenhet 106 til én eller flere andre lastbalanseringsenheter 106 ved hjelp av punkt-til-punkt- eller multicast-kommunikasjon. Funksjonsanropene omfatter legg-til-atom 2204(A), slett-atom 2204(D), sjekk-atom 2204(Q) og returner-atom 2204(R).
Legg-til-atom 2204(A) er på formen AddAtom(nøkkel, data), og brukes til å legge til en atomisk post 2304 i én eller flere DAM-tabeller 2206. Et anrop til funksjonen legg-til-atom 2204(A) kan således formuleres som AddAtom(<sesjonsidentifikator>, vertsmaskins IP-adresse). Slett-atom 2204(D) er på formen DeleteAtom(nøkkel), og brukes til å slette en atomisk post 2304 fra én eller flere DAM-tabeller 2206. Anrop til funksjonen slett-atom 2204(D) kan bli sendt til de DAM-tabellene 2206 man vet har en kopi av den sesjonen som identifiseres av nøkkelen 2304(K), eller kan bli kringkastet til alle DAM-tabeller 2206 for å sikre at alle kopier blir slettet.
Sjekk-atom 2204(Q) er på formen QueryAtom(nøkkel), og anvendes av en gitt DAM-andel 2202 når en sesjonsidentifikator som refereres til av en innkommende forbindelsesforespørsel ikke befinner seg i den lokale DAM-tabellen 2206 i den aktuelle DAM-andelen 2202. Anrop til funksjonen sjekk-atom 2204(Q) sendes til én eller flere (eventuelt alle) andre DAM-andeler 2202. I respons sjekker hver DAM-andel 2202 sin lokale DAM-tabell 2206 etter nøkkelen/sesjonsidentifikatoren. Dersom nøkkelen finnes av en annen DAM-andel 2202, svarer denne andre DAM-andelen 2202 med et anrop til funksjonen returner-atom 2204(R).
Returner-atom 2204(R) er på formen ReturnAtom(nøkkel, data) og anvendes for å besvare et anrop til sjekk-atom 2204(Q). Anrop til funksjonen returner-atom 2204(R) anvendes når en DAM-andel 2202 har en etterspurt atomisk post 2304 i sin lokale DAM-tabell 2206, som identifisert av en nøkkel 2304(K) spesifisert i anropet til sjekk-atom 2204(Q). Anrop til funksjonen returner-atom 2204(R) kan bli sendt tilbake til den DAM-andelen 2202 som gjorde anropet til sjekk-atom 2204(Q).
Anrop til funksjonen legg-til-atom 2204(A) gjøres i respons til sesjon oppe-meldinger 2008(U) og/eller for å duplisere en atomisk post 2304 til én eller flere andre DAM-tabeller 2206. Denne dupliseringen kan være for å oppnå redundans og/eller skalerbarhet.
Anrop til funksjonen slett-atom 2204(D) gjøres i respons til sesjon nede-meldinger 2008(D), og kan også bli sendt til én eller flere andre DAM-tabeller 2206. Etter at en atomisk post 2304 er slettet, kan den atomiske posten 2304 bli satt i en "zombie"-tilstand slik at den forblir hos DAM 2202, og eventuelt slik at den fortsatt er lagret i DAM-tabellen 2206 med en "zombie"-angivelse i metadataene 2304(M) for den atomiske posten 2304.
Når en atomisk post 2304 er slettet, kan den således forbli i DAM 2202 og DAM-tabell 2206 i en "zombie"-tilstand, slik at pakker for denne (nå døde og lukkede) sesjonen blir sendt til vertsmaskin 108 i sesjonskonteksten for passende, protokoll-spesifikk behandling. For eksempel blir TCP-pakker som mottas etter at en TCP-forbindelse er avsluttet sendt til den vertsmaskinen 108 som terminerte forbindelsen. Denne vertsmaskinen 108 kan respondere på passende måte - eventuelt ved å sende en RST eller ved å sende en ny FIN-ACK. Hvor lenge den atomiske posten 2304 befinner seg i denne "zombie"-tilstanden overensstemmer (så godt som mulig innenfor rimelige grenser) med den protokoll-spesifikke forsinkelsen i den pålitelige kommunikasjonsprotokollen som anvendes.
Et anrop til funksjonen sjekk-atom 2204(Q) gjøres for å oppnå en atomisk post 2304 når en første lastbalanseringsenhet 106 mottar en innkommende forbindelsesforespørsel som refererer til en sesjon som ikke er lagret i den lokale DAM-tabellen 2206 i DAM 2202 i den første lastbalanseringsenheten 106. Det skal bemerkes at andre andeler av DAM 2202 kan spørres samtidig i et kringkastet anrop til funksjonen sjekk-atom 2204(Q) eller sekvensielt inntil et anrop til funksjonen returner-atom 2204(R) er mottatt.
Et anrop til funksjonen returner-atom 2204(R) anvendes av en DAM-andel 2202 i en annen lastbalanseringsenhet 106 for å tilveiebringe en atomisk post 2304 til DAM-andelen 2202 i den første lastbalanseringsenheten 106, der den atomiske posten 2304 har en nøkkel 2304(K) som er spesifisert av nøkkelen/sesjonsidentifikatoren i et anrop til funksjonen sjekk-atom 2204(Q), som tidligere er gjort av DAM-andelen 2202 i den første lastbalanseringsenheten 106. Det skal bemerkes at andre komponenter, så som trafikkrutingsfunksjonaliteten 2012, også vil kunne være i stand til å anrope funksjoner 2204, spesielt funksjonen sjekk-atom 2204(Q), gjennom et API eller liknende.
DAM-andelene 2202 og DAM-tabellene 2206 kan organiseres og forvaltes på mange mulige måter. Eksempler er duplisering/redundans, lokal bufring ved akkvisisjon, hash-behandling for valg av lagringssted og annet. Ingen, ett, to eller flere nivåer av duplisering, opp til full duplisering er mulig. Uten duplisering blir hver atomiske post 2304 lagret i den DAM 2202 som mottar en sesjon oppe-melding 2008(U) for denne uten å bli duplisert til andre DAM-andeler 2202.
I et første dupliseringsnivå lagres hver atomiske post 2304 i den DAM 2202 som mottar en sesjon oppe-melding 2008(U) for denne, og den blir også lagt (kopiert) til én annen DAM-andel 2202 gjennom et anrop til funksjonen legg-til-atom 2204(A). Dette er tilstrekkelig til å håndtere ett nivå av feil for en lastbalanseringsenhet 106. Tilsvarende, i et andre nivå av duplisering, blir hver atomiske post 2304 lagret i den DAM 2202 som mottar en sesjon oppe-melding 2008(U) for denne, og den blir i tillegg lagt til i to andre DAM-andeler 2202. Som regel er den ene, de to, osv. andre DAM-andelene 2202 som en gitt DAM-andel 2202 kopierer atomiske poster 2304 til forbestemt eller blir valgt tilfeldig. Tredje, fjerde, osv. nivåer av duplisering er også tenkelige.
Videre kan full duplisering oppnås ved også å legge til hver atomiske post 2304 som blir lagret i den DAM 2202 som mottar en sesjon oppe-melding 2008(U) for denne i alle andre DAM-andeler 2202. En rekke faktorer påvirkes av valget av dupliseringsnivå: Når dupliseringsnivået økes, vil tilgjengeligheten øke og latenstiden avta. På den annen side øker både nettverkstrafikken og minnebruken i takt med dupliseringsnivået.
Når full duplisering ikke anvendes, kan lokal bufring ved akkvisisjon anvendes. For eksempel, når en DAM-andel 2202 ikke finner en referert sesjonsidentifikator i sin del av DAM-tabell 2206, anroper denne DAM-andelen 2202 funksjonen sjekk-atom 2204(Q) for å få tak i den atomiske posten 2304 assosiert med den refererte sesjonsidentifikatoren via et anrop til funksjonen returner-atom 2204(R). I stedet for å kaste den mottatte atomiske posten 2304 etter bruk, bufrer DAM-andel 2202 den mottatte atomiske posten 2304 i sin del av DAM-tabellen 2206. Denne muligheten representerer en avveining mellom de ovenfor nevnte faktorene.
Som et annet alternativ når full duplisering ikke anvendes, kan hash-behandling bli anvendt for valg av dupliseringssted. Den første atomiske posten 2304 for en sesjon blir lagret i den DAM-andelen 2202 som mottar sesjon oppe-meldingen 2008(U). Ett eller flere duplikater sendes via et anrop til funksjonen legg-til-atom 2204(A) til én eller flere spesifiserte DAM-andeler 2202 ved anvendelse av en hash-funksjon. Av et totalt sett av mulige hash-verdier, blir hver DAM-andel 2202 tildelt en delmengde. Hver sesjonsidentifikator blir hash-behandlet med bruk av en hash-funksjon for å frembringe en hash-verdi. Denne hash-verdien blir avbildet til den eller de tildelte DAM-andelene 2202. Den DAM-andelen 2202 som først la til den atomiske posten 2304 dupliserer da denne atomiske posten 2304 til den eller de aktuelle DAM-andelene 2202.
Med hash-behandling for valg av dupliseringssted kan minst én DAM-andel 2202 som har en ønsket atomisk post 2304 lokalt bufret i sin DAM-tabell 2206 identifiseres på grunnlag av sesjonsidentifikatoren. En anrop til funksjonen sjekk-atom 2204(Q) kan derfor bli sendt til den eller de kjente DAM-andelene 2202. Dette vil vanligvis redusere nettverkstrafikken og/eller latenstiden.
Denne hash-behandlingen for valg av dupliseringssted kan benyttes med ett, to, tre eller flere dupliseringsnivåer, idet hvert sett av hash-verdier henholdsvis refererer til én, to, tre, etc. forskjellige DAM-andeler 2202.1 tillegg kan hash-behandling for valg av dupliseringssted anvendes i kombinasjon med lokal bufring ved akkvisisjon.
Figur 24 er et flytdiagram 2400 som illustrerer et eksempel på fremgangsmåte for å forvalte sesjonsinformasjon ved flere
lastbalanseringsenheter. Flytdiagrammet 2400 omfatter åtte blokker 2402-2416. Selv om handlingene i flytdiagrammet 2400 vil kunne bli utført i andre miljøer og med en rekke forskjellige programvaresystemer, anvendes figurene 1-3, 19, 20, 22 og 23B spesielt for å illustrere visse aspekter ved og eksempler på
fremgangsmåten.
I blokk 2402 undersøkes en innkommende forbindelsesforespørsel med en sesjonsreferanse. Foreksempel kan trafikkrutingsfunksjonaliteten 2012 motta en innkommende forbindelsesforespørsel som refererer til en tidligere åpnet/etablert sesjon av en gitt type. I blokk 2404 gjennomsøkes en lokal DAM-tabell med bruk av sesjonsreferansen. For eksempel, for en gitt lastbalanseringsenhet 106 og trafikkrutingsfunksjonalitet 2012, kan DAM-andelen 2202 i denne søke gjennom sin assosierte DAM-tabell 2206 etter sesjonsreferansen.
I blokk 2406 avgjøres det om sesjonsreferansen overensstemmer med en nøkkel i den lokale DAM-tabellen. For eksempel kan DAM-andelen 2202 søke i nøkkelfelter 2304(K) i flere poster 2304 i DAM-tabellen 2206 for å bestemme hvorvidt sesjonsreferansen overensstemmer med noen verdi i nøkkelfeltene 2304(K). I så fall fortsetter fremgangsmåten i blokk 2412.
Dersom på den annen side sesjonsreferansen ikke overensstemmer med noen nøkkel, fortsetter fremgangsmåten i blokk 2408.1 blokk 2408 anropes funksjonen sjekk-atom. For eksempel kan DAM-andel 2202 anrope funksjonen sjekk-atom 2204(Q) med sesjonsreferansen/identifikatoren som nøkkel. Anropet til sjekk-atom 2204(Q) kan bli sendt til minst én annen DAM-andel 2202. Antallet, valget, rekkefølgen, etc. av mulig adresserte DAM-andeler 2202 for anropet til sjekk-atom 2204(Q) kan avhenge av kjørealternativene (f.eks. dupliseringsnivå, hash-behandling for valg av dupliseringssted, lokal bufring ved akkvisisjon, punkt-til-punkt overføring vs. kringkasting, etc.) som anvendes av DAM 2202.
I blokk 2410 mottas et returnert atom. For eksempel kan informasjon fra et anrop til funksjonen returner-atom 2204(R) gjort av en annen DAM-andel 2202 bli mottatt. Den aktuelle andre DAM-andelen 2202 fant en atomisk post 2304 i sin assosierte DAM-tabell 2206 med en nøkkel som overensstemmer med sesjonsreferansen. Informasjonen fra anropet til funksjonen returner-atom 2204(R) omfatter verdier fra nøkkelfeltet 2304(K) og datafeltet 2304(D) for den funnede atomiske posten 2304. Disse verdiene svarer til identifikatoren for sesjonen og nettverksadressen til den vertsmaskinen 108 som er assosiert med
sesjonen.
I blokk 2412 fremhentes en atomisk post. Den atomiske posten blir hentet frem fra den lokale DAM-tabellen dersom en overensstemmelse ble funnet lokalt (i blokkene 2404 og 2406), eller fra det returnerte atomet dersom en overensstemmelse ble funnet et annet sted (i blokkene 2408 og 2410). For eksempel kan en atomisk post 2304 bli hentet fra DAM-tabellen 2206 i DAM-andelen 2202 eller fra informasjon mottatt gjennom et anrop til funksjonen returner-atom 2204(R). Den oppnådde atomiske posten 2304 vil kunne bli bufret i den lokale DAM-tabellen 2206 hvis mottatt via anropet til funksjonen returner-atom 2204(R).
I blokk 2414 identifiseres vertsmaskinen som er assosiert med den refererte sesjonen ved hjelp av den atomiske posten. For eksempel kan en verdi i datafeltet 2304(D) i den oppnådde atomiske posten 2304 bli sjekket for med det å identifisere en nettverksadresse til den sesjonstilhørige vertsmaskinen 108.1 blokk 2416 rutes den innkommende forbindelsesforespørselen til den identifiserte vertsmaskinen. For eksempel kan trafikkrutingsfunksjonaliteten 2012 og/eller videresendingsfunksjonalitet rute den innkommende forbindelsesforespørselen med sesjonsreferansen til den identifiserte og assosierte vertsmaskinen 108. Eksempler på funksjonalitet for sortering, ruting av forespørseler og videresending er beskrevet i den neste seksjonen.
Eksempler på sortering, videresending og ruting av forespørseler
Denne seksjonen beskriver hvordan trafikkruting kan bli implementert for balansering av nettverksbelastning, inklusive hvordan å oppnå høy tilgjengelighet av denne trafikkrutingsfunksjonaliteten. Trafikkrutingsfunksjonalitet kan omfatte funksjonalitet for sortering og/eller ruting av forespørseler, spesielt i forbindelse med videresendingsfunksjonalitet. Denne seksjonen refererer primært til figurene 25-31. Den illustrerer funksjonaliteten til en forespørselsruter 306(H/S) (i figur 3), innbyrdes relasjoner mellom sporing av sesjoner og bruk av tilstands- og lastinformasjon ved ruting av trafikk, driftsmessige utførelser for samhandling mellom trafikkruting og sesjonsinformasjon og/eller tilstands- og lastinformasjon, feilopprettingsprosedyrer for høy tilgjengelighet av infrastrukturen for balansering av nettverksbelastning (omfattende håndtering av feiltilstander i komponenter for sortering, videresending og/eller ruting av forespørseler), ytterligere infrastrukturer for balansering av nettverksbelastning, og annet.
Figur 25 illustrerer et eksempel på infrastruktur for balansering av nettverksbelastning som omfatter funksjonalitet for ruting av forespørseler realisert av forespørselsruter 306(H/S). Som nevnt tidligere i forbindelse med trafikkrutingsfunksjonalitet 2012, kan trafikkruting vedkomme sortering (f.eks. med videresending) og/eller ruting av forespørseler. Sortering på pakkenivå, i forbindelse med videresending, er beskrevet over i forbindelse med figur 4. Ruting av forespørseler beskrives her spesielt med henvisning til figur 25.
Ruting på forespørselsnivå skjer på et høyere nivå enn ruting på pakkenivå. Generelt tjener en forespørselsruter 306 som proxy for en applikasjon 316 som kjører på en vertsmaskin 108. Forespørselsruter 306 terminerer TCP-forbindelser, analyserer (muligens bare delvis) hver forespørsel fra en klient 102 og videresender hver forespørsel til en vertsmaskin 108. Forespørselsruter 306 kan foreta preprosessering av forbindelsen, for eksempel SSL-dekryptering. Videre kan forespørselsruter 306 velge å ta seg av visse forespørseler selv (f.eks. kan forespørselsruteren opprettholde et buffer med responser), og den kan modifisere forespørseler på "vilkårlig" måte før den vidersender dem til vertsmaskiner 108.
Forespørselsrutere 306 er vanligvis applikasjons-spesifikke, og har få begrensninger med hensyn til hva slags funksjonalitet de kan tilveibringe. Kun som et eksempel er én enkelt type forespørselsrutere 306 - HTTP/SSL-forespørselsrutere 306(H/S) - beskrevet i den følgende beskrivelsen. Som vist kommuniserer en klient 102 med en nettverksadresse C1 over nettverket 104 med vertsmaskinene 108(1) og 108(2), som henholdsvis har nettverksadresse H1 og H2. Kommunikasjonen skjer via infrastrukturen for lastbalansering, som omfatter en HTTP/SSL-forespørselsruter 306(H/S).
HTTP/SSL-forespørselsruter 306(H/S) terminerer HTTP- og SSL-trafikk, dekrypterer SSL-trafikk, undersøker hver HTTP-forespørsel fra klienter 102, anvender applikasjons-spesifikke regler for å sortere hver forespørsel og for å bestemme det "beste" endepunktet for denne forespørselen, tatt i betraktning tilstands- og lastinformasjon vedrørende applikasjonsendepunktet, og sender forespørselen til det aktuelle endepunktet. Overføringen av forespørselen til endepunktet anvender en annen TCP-forbindelse enn den opprinnelige fra klienten 102 (sistnevnte forbindelse er terminert ved HTTP/SSL-forespørselsruter 306(H/S)). Disse handlingene kan anses som logisk ekvivalente med handlingene som utføres av en sorterer 304, men det er en forskjell i det at disse handlingene i HTTP/SSL-forespørselsruter 306(H/S) skjer på et logisk forespørselsnivå for hver forespørsel innenfor TCP-forbindelsen. HTTP/SSL-forespørselsruter 306(H/S), og forespørselsrutere 306 generelt, kan anvende samme (i) applikasjonstilstand- og belastning og (ii) infrastruktur for sporing av sesjoner som anvendes av sorterere 304.
HTTP/SSL-forespørselsruter 306(H/S) tjener som mellomledd mellom en klient 102 og to vertsmaskiner 108(1) og 108(2). Den behandler to forespørseler fra klienten 102 over én enkelt TCP forbindelse. I en beskrevet utførelse omfatter den assosierte forespørselsrutingen et antall handlinger fordelt på flere trinn. I et første trinn etablerer klienten 102 en http- eller https-forbindelse [1] til HTTP/SSL-forespørselsruter 306(H/S) og sender en forespørsel #1 2502(1).
I et andre trinn terminerer HTTP/SSL-forespørselsruter 306(H/S) SSL-sesjonen (dersom trafikken er SSL-kryptert), analyserer forespørsel #1 2502(1) og undersøker innholdet i forespørsel #1 2502(1). Tatt i betraktning applikasjonstilstand og -belastning, så vel som sesjonsinformasjon, bestemmer i dette eksempelet HTTP/SSL-forespørselsruter 306(H/S) at vertsmaskin 108(1) er den "beste" vertsmaskinen for denne spesifikke forespørselen #1 2502(1).
I et tredje trinn etablerer HTTP/SSL-forespørselsruter 306(H/S) en sekundær TCP-forbindelse [2] til vertsmaskin 108(1). Den kan alternativt anvende en eksisterende forbindelse [2] til vertsmaskin 108(1). HTTP/SSL-forespørselsruter 306(H/S) sender da en f.eks. ukryptert versjon av forespørsel #1 2502(1) til vertsmaskin 108(1). I et fjerde trinn svarer vertsmaskin 108(1) med en respons #1 2504(1). I et femte trinn krypterer HTTP/SSL-forespørselsruter 306(H/S) respons #1 2504(1) og sender den til klienten 102 over TCP-forbindelsen [1].
I et sjette trinn sender klient 102 en annen forespørsel, forespørsel #2 2502(2). Forespørsel #2 2502(2) blir behandlet på samme måte som forespørsel #1 2502(1), bortsett fra at HTTP/SSL-forespørselsruter 306(H/S) velger vertsmaskin 108(2). Dette forskjellige valget av vertsmaskin kan være fordi vertsmaskin 108(1) nå er i en feiltilstand eller er tyngre belastet, fordi forespørsel #2 2502(2) er adressert til en annen URL enn forespørsel #1 2502(1) eller annet. Uansett etablerer HTTP/SSL-forespørselsruter 306(H/S) en annen sekundær TCP-forbindelse, men denne sekundære TCP-forbindelsen [3] er til vertsmaskin 108(2). Forespørsel #2 2502(2) blir sendt ukryptert til vertsmaskin 108(2), og en resulterende respons #2 2504(2) mottas fra denne. En kryptert versjon av respons #2 2504(2) blir deretter sendt til klient 102 fra HTTP/SSL-forespørselsruter 306(H/S).
I et syvende trinn lukker klient 102 TCP-forbindelsen [1] med HTTP/SSL-forespørselsruter 306(H/S). HTTP/SSL-forespørselsruter 306(H/S) lukker (på et senere tidspunkt) forbindelsene [2] og [3] som henholdsvis er etablert til vertsmaskinene 108(1) og 108(2) på vegne av klienten 102. TCP-forbindelsen
[2] kan alternativt bli lukket etter at HTTP/SSL-forespørselsruter 306(H/S) bestemmer seg for å åpne/anvende TCP-forbindelsen [3] for forespørsel #2 2502(2).
Ettersom en HTTP/SSL-forespørselsruter 306(H/S) terminerer http/https-forbindelsen, kan HTTP/SSL-forespørsesruter 306 gjøre mer enn bare å rute forespørseler. For eksempel vil HTTP/SSL-forespørselsruter 306(H/S) kunne opprettholde sitt eget buffer med responser (f.eks. med en "out-of-band"-mekanisme for å ugyldiggjøre bufferet). Som angitt i eksempelet over, vil HTTP/SSL-forespørselsruter 306(H/S) også kunne rute forskjellige typer forespørseler til forskjellige samlinger av vertsmaskiner 108, for eksempel basert på den etterspurte URL-adressen. Motsatt vil HTTP/SSL-forespørselsruter 306(H/S) kunne samle forespørseler fra mange kortvarige klientforbindelser og sende dem over noen få, langvarige TCP-forbindelser til vertsmaskiner 108. En slik aggregering av forbindelser kan redusere tidsbruken for behandling av TCP-forbindelser i vertsmaskinene 108.
Forespørselsrutere av andre typer kan følge andre protokoller enn HTTP.
For eksempel kan én forespørselsruter være en SOAP-forespørselsruter. SOAP-forespørselsrutere fungerer på samme måte som en HTTP/SSL-forespørselsruter 306(H/S). SOAP-forespørselsrutere er imidlertid spesialisert for ruting av SOAP-trafikk. SOAP-forespørselsrutere forstår SOAP-headere og tar rutingsavgjørelser basert på SOAP-headere i tillegg til applikasjonstilstand og -belastning.
Både sortering og videresending (eller ruting) på pakkenivå og ruting på forespørselsnivå kan tilveiebringe en form for "lag 7-lastbalansering". Lag 7-lastbalansering er beskrevet ytterligere nedenfor i seksjonen "Eksempler på flytting av forbindelser med eventuell tunnelføring og/eller lastbalansering på applikasjonsnivå". Ruting på pakkenivå tilveiebringer leseaksess til den innledende delen av en klients TCP-forbindelsesdata, og ruting på forespørselsnivå tilveiebringer lese- og skriveaksess til en hel datastrøm.
Ruting på pakkenivå har typisk en rekke fordeler fremfor ruting på forespørselsnivå. Disse fordelene omfatter transparens (klientpakker blir levert til vertsmaskiner som de er, noe som bevarer kildens og destinasjonens IP-adresse og et portnummer), liten ekstra behandlingstid (generelt omfatter videresending av trafikk det å slå opp ruten), lav latenstid (individuelle pakker blir videresendt, og pakker blir ikke køet etter at destinasjonen for TCP-forbindelsen er bestemt) og høy tilgjengelighet (i alminnelighet vil ikke en feil i en videresender avslutte TCP-forbindelsen). Ruting på forespørselsnivå, på den annen side, har typisk følgende fordeler fremfor ruting på pakkenivå: mulighet til å undersøke en hel datastrøm på vei til og fra klienten; samt mulighet til å transformere en datastrøm og også til å fordele datastrømmen på et antall vertsmaskiner eller forene datastrømmer fra flere klienter.
Figur 26 er et flytdiagram 2600 som illustrerer et eksempel på fremgangsmåte for å rute innkommende datapakker basert på (i) sesjonsinformasjon og (ii) tilstands- og lastinformasjon. Flytdiagrammet 2600 omfatter åtte blokker 2602-2616. Selv om handlingene i flytdiagrammet 2600 kan bli utført i andre miljøer og med en rekke forskjellige programvaresystemer, anvendes figurene 1-3, 12,18-20, 22, og 23B spesielt for å illustrere visse aspekter ved og eksempler på fremgangsmåten.
I blokk 2602 mottas en innkommende pakke. For eksempel kan en pakke fra en klient 102 bli mottatt av en videresender 302 i en lastbalanseringsenhet 106.1 blokk 2604 bestemmes det om den mottatte datapakken er for en allerede eksisterende sesjon. For eksempel kan videresender 302 slå opp i en lokal DAM-tabell 2206() og bestemme at den mottatte datapakken allerede er del av en TCP/IP-sesjon.
Alternativt kan videresender 302 etter å ha sjekket den lokale DAM-tabellen 2206() bestemme at den mottatte datapakken ikke allerede er en del av en TCP/IP-sesjon. I dette tilfellet sender videresender 302 den mottatte datapakken til en sorterer 304, som sjekker etter sesjonstilhørighet på et høyere nivå for den mottatte datapakken dersom den inneholder en sesjonsreferanse. Eksempler på disse handlingene er beskrevet ovenfor i forbindelse med figur 24, og nedenfor i forbindelse med figurene 27 og 28.
Dersom den mottatte datapakken er for en allerede eksisterende sesjon (som bestemt i blokk 2604), fortsetter da fremgangsmåten i blokk 2606.1 blokk 2606 identifiseres vertsmaskinen som har sesjonstilhørighet med den allerede eksisterende sesjonen. Foreksempel kan en sesjonstilhørig vertsmaskin 108 bli funnet i den lokale DAM 2206 og/eller i den totale, distribuerte DAM 2206 av videresender 302 eller sorterer 304.
I blokk 2608 bestemmes det hvorvidt den sesjonstilhørige vertsmaskinen er operativ. For eksempel kan sorterer 304 sjekke det felles tilstands- og lastbufferet 1208 for å bestemme hvorvidt den sesjonstilhørige vertsmaskinen 108 er operativ, spesielt for de mottatte datapakkene som er del av sesjoner på et høyere logisk nivå enn TCP/IP-sesjoner. Handlingen(e) i denne blokken kan bli utført i kombinasjon med en tilstands- og lastbehandler 314.
Dersom den sesjonstilhørige vertsmaskinen er operativ (som bestemt i blokk 2608), fortsetter da fremgangsmåten i blokk 2610.1 blokk 2610 rutes den mottatte datapakken til den sesjonstilhørige vertsmaskinen . For eksempel kan videresender 302 (for TCP/IP-sesjoner) eller sorterer 304 (for sesjoner på et høyere nivå) sende datapakken til den sesjonstilhørige vertsmaskinen 108.1 en alternativ utførelse kan sorterer 304 returnere den mottatte datapakken til videresender 302 for videresending til den sesjonstilhørige vertsmaskinen 108
også for mottatte pakker som er del av sesjoner på høyere nivå.
Dersom på den annen side den sesjonstilhørige vertsmaskinen ikke er operativ (som bestemt i blokk 2608), fortsetter da fremgangsmåten i blokk 2612. Dersom den mottatte datapakken ikke er for en allerede eksisterende sesjon (som bestemt i blokk 2604), fortsetter da fremgangsmåten i blokk 2612.1 blokk 2612 velges en vertsmaskin basert på tilstands- og lastinformasjon. For eksempel kan sorterer 304 velge en vertsmaskin 108 fra og/eller ved anvendelse av en tilstands- og belastningsrelatert applikasjonstildeling (f.eks. på grunnlag av en mål-applikasjonsendepunkt-tildelingsrespons 1804) som er oppnådd fra tilstands- og lastbehandler 314. Eksempler på disse handlingene er beskrevet ovenfor i forbindelse med figurene 19 og 18 og nedenfor i forbindelse med figur 30.
I blokk 2614 sendes den mottatte datapakken til den valgte vertsmaskinen. For eksempel kan sorterer 304 sende (eventuelt via videresender 302) datapakken til den valgte vertsmaskinen 108.1 blokk 2616 settes det opp en forbindelsesrute til den valgte vertsmaskinen. For eksempel kan sorterer 304 legge til en post med sesjonsinformasjon i en DAM-tabell 2206, spesielt i den DAM-tabellen 2206() som er lagret lokalt hos den videresenderen 302 som sendte den mottatte datapakken til sorterer 304. Denne informasjonsposten kan bli duplisert i henhold til gjeldende redundansregler for en DAM 2202 (f.eks. i en sesjonssporer 308).
Handlingen(e) i blokk 2614 og de i blokk 2616 kan bli utført i den illustrerte rekkefølgen, handlingene i blokk 2616 kan bli utført før de i blokk 2614, handlingene kan bli utført helt eller delvis samtidig i en hvilken som helst rekkefølge, eller annet. Det skal bemerkes at handlingene som utføres av sorterer 304 som beskrevet ovenfor alternativt kan bli utført av en forespørselsruter 306(eller mer generelt av trafikkrutingsfunksjonalitet 2012).
Figur 27 illustrerer et eksempel på trafikkruting uten feiltilstander. Som illustrert fronter én eller flere lastbalansering-bevisste (LBA)-svitsjer 202 resten av infrastrukturen for lastbalansering 106 (ikke angitt separat). Videresendings-og sorteringsfunksjonalitet er distribuert til tre anordninger eller noder. En første anordning omfatter videresender 302(1) og sorterer 304(1). En andre anordning omfatter sorterer 304(2). En tredje anordning omfatter videresender 302(2).
Med sorterer 304(2) kjørende på den andre anordningen og videresender 302(2) kjørende på den tredje anordningen, kan hver av anordningene være spesialtilpasset for sitt respektive formål. For eksempel kan maskinvaren, programvaren, fastvaren, en kombinasjon av disse, etc. i den andre anordningen og den tredje anordningen være spesialisert for å støtte den ønskede funksjonaliteten uten å omfatte unødvendig tilleggsfunksjonalitet. Den tredje anordningen, som omfatter videresender 302(2), kan således være som en svitsj og/eller ruter sett fra et maskinvareperspektiv, og den andre anordningen, som omfatter sorterer 304(2), kan være mer som en tjener og/eller personlig datamaskin sett fra et maskinvareperspektiv.
Selv om den er vist som tre anordninger som tilveiebringer funksjonalitet fordelt på fire komponenter, er alternative logiske og/eller anordning-nivå strukturer for videresendings- og sorteringsfunksjonalitet tenkelige i eksempelet på trafikkruting som er beskrevet her i forbindelse med figur 27. Videre, selv om rutingsdestinasjonene er vist i form av vertsmaskiner 108, kan beskrivelsene her av rutingsimplementasjoner alternativt gjelde mer generelt for sending av en datapakke til en neste node og ikke nødvendigvis til en endelig node som konsumerer datapakken.
En realisering av sesjonssporer 308 i form av en DAM 2202 er anvendt for å implementere DAM-tabell 2206. Imidlertid vil generelt også enheter 1904 for bevaring av sesjonstilhørighet kunne anvendes i eksempelet på trafikkruting i figur 27. Videresender 302(1) omfatter en andel 2206(1) av DAM-tabellen og videresender 302(2) omfatter en andel 2206(2) av DAM-tabellen. Innkommende pakker sendes til vertsmaskin 108(1) eller vertsmaskin 108(2).
I en beskrevet utførelse er DAM 2202 en distribuert, minnelagret tabell av "atomer" 2304 (f.eks. nøkkelord-verdi-par, eventuelt omfattende metadata) med sesjonsinformasjon. DAM 2202 og DAM-tabell 2206 er beskrevet ovenfor, spesielt i forbindelse med figurene 22-24. En hvilken som helst node i samlingen av sorterere 304 kan legge til, spørre etter og slette atomer 2304. DAM 2202 opprettholder en DAM-tabell 2206 med høy tilgjengelighet som omfatter aktive (f.eks. TCP/IP-nivå) ruter så vel som informasjon om sesjoner
på høyere nivå.
Ved (1) sender lastbalansering-bevisste svitsjer 202 en innkommende datapakke til videresender 302(1). Ved (2) sjekker videresender 302(1) sin interne rutingstabell, DAM-tabell 2206(1). Når videresender 302(1) ikke finner en atomisk post 2304 for denne datapakken, videresender den datapakken til dens tildelte og/eller assosierte sorterer, sorterer 304(1).
Ved (3) detekterer sorterer 304(1) i dette eksempelet at datapakken er en TCP SYN-pakke. Sorterer 304(1) behandler derfor datapakken som begynnelsen på en ny TCP-forbindelse fra en klient 108. Basert på tilstands- og lastinformasjon fra en tilstands- og lastbehandler 314 (ikke eksplisitt illustrert), bestemmer sorterer 304(1) at vertsmaskin 108(1) bør få denne TCP-forbindelsen. Sorterer 304(1) oppdaterer DAM-tabell 2206(1), som tjener som lokal rutingstabell for videresender 302(1), og den setter også inn en atomisk post 2304 som representerer ruten i den helhetlige DAM 2206. Dette kan bli gjort separate operasjoner, i én enkelt operasjon der TCP/IP-nivå sesjonene i DAM-tabell 2206 befinner seg hos videresendere 302, eller annet. DAM 2202 dupliserer internt denne ruten til én eller flere andre medlemmer i samlingen av sorterere 304 i henhold til sine gjeldende regler for redundans.
Ved (4) sender videresender 302(1) påfølgende datapakker for denne forbindelsen direkte til vertsmaskin 108(1) uten samhandling med sorterer 304(1). DAM 2202 kan anvendes for i hvert fall delvis å dekke over feiltilstander i en videresender 302, i en sorterer 304 eller i et videresender/sorterer-par 302/304. DAM 2202 kan også bruker til i hvert fall delvis å opprettholde klient-konnektivitet dersom lastbalansering-bevisste svitsjer 202 uten grunn begynner å sende pakker for et etablert forbindelse til en annen videresender 302.
Figur 28 illustrerer et eksempel på trafikkruting under én eller flere feiltilstander. I forhold til trafikkrutingseksempelet uten feiltilstander i figur 27 har det oppstått en feiltilstand et sted i infrastrukturen for balansering av nettverksbelastning 106 (ikke spesifikt identifisert) i figur 28. Mer spesifikt har det oppstått en feiltilstand i den første anordningen, i hvilken videresender 302(1) og sorterer 304(1) befinner seg og kjører, etter at forbindelsen som er illustrert i figur 27 er etablert. Denne feilen overdekkes i hvert fall delvis av DAM
2202.
Ved (1) detekterer lastbalansering-bevisste svitsjer 202 feilen ved videresender 302(1) og begynner å sende pakker for forbindelsen til en av de andre videresenderne 302 i klyngen. I dette eksempelet er den andre videresenderen 302 identisk med videresender 302(2). Selv om figur 28 illustrerer en feiltilstand, vil de lastbalansering-bevisste svitsjene 202 også kunne sende denne trafikken til videresender 302(2) selv om videresender 302(1) fortsatt er tilgjengelig. En slik endring av videresender 302 som ikke er forårsaket av en feiltilstand kan for eksempel skje fordi de lastbalansering-bevisste svitsjene 202 "glemmer" at denne trafikken har tilhørighet til videresender 302(1). Handlingene i blokkene (2)-(5) gjelder for både feiltilstander og tilfeller av "glemt affinitet".
Ved (2) sjekker videresender 302(2) sin rutingstabell, DAM-tabell 2206(2). Når den ikke finner noen rute for denne datapakken, sender den datapakken til sin sorterer 304(2). Ved (3) oppdager sorterer 304(2) at denne datapakken er en TCP-pakke for en "mellom-forbindelse", og sorterer 304(2) sjekker med DAM 2202 for å finne ruten for denne datapakken. DAM 2202 returnerer ruten for forbindelsen fra en atomisk post 2304 assosiert med denne.
Ved (4) setter sorterer 304(2) opp ruten i videresender 302(2). Et eksempel på protokoll for å sette ruter er beskrevet nedenfor. Ved (5) blir påfølgende datapakker for denne forbindelsen som sendes til videresender 302(2), rutet direkte til den korrekte vertsmaskinen, som i dette eksempelet er vertsmaskin 108(1), uten å gå gjennom sorterer 304(2).
Generelt omfatter en rutesettingsprotokoll for kommunikasjon mellom sorterere 304 og videresendere 302 instruksjoner for å legge til og fjerne ruter. Mer spesifikt sendes en legg-til-rute-instruksjon fra en sorterer 304 til en videresender 302 for å sette opp en bane fra videresender 302 til en mål-vertsmaskin 108 for en gitt forbindelse. Som et eksempel kan en legg-til-rute-instruksjon bli sendt til videresender 302(2) fra sorterer 304(2) som angitt ved (4) i figur 28. Ruten (f.eks. en nøkkel og en tilhørende verdi) blir lagt til i den lokale DAM-tabellen 2206(2) for fremtidig hurtig aksess av videresender 302(2). I dette eksempelet befinner sorterer 304(2) seg i en annen anordning enn videresender 302(2), slik at rutesettingsprotokollen kan være en protokoll for kommunikasjon mellom anordninger. Rutesettingsprotokollen kan imidlertid også anvendes for kommunikasjon internt i anordninger.
I en beskrevet utførelse omfatter sorterer 304(2) en liste 2802 over forbindelser. Ved hjelp av forbindelseslisten 2802 holder sorterer 304(2) styr på forbindelsene til hvilke som helst videresendere 302 (så som videresender 302(2)) som sorterer 304(2) setter ruter for. For å gjøre det mulig for sorterer 304(2) å holde styr på forbindelsene, omfattende opphør av disse, sender videresender 302(2) avslutningspakker for forbindelser (så som en TCP FIN-pakke) til sorterer 304(2). Sorterer 304(2) sletter da en post i forbindelseslisten 2802 som svarer til forbindelsen og sender en slett-rute-instruksjon til videresender 302(2). Når den mottar slett-rute-instruksjonen, fjerner videresender 302(2) den assosierte ruten i DAM-tabell 2206(2). På denne måten kan sorteringsfunksjonalitet sammen med sesjonssporingsfunksjonalitet administrere rutingstabellene, og rutene i disse, som anvendes av videresendingsfunksjonaliteten. Følgelig kan videresendingsfunksjoner som er tilveiebragt i en annen anordning bli utført med bruk av rask, men forholdsvis enkel maskinvare.
Figur 29 illustrerer ytterligere eksempler på feilopprettingsprosedyrer for å oppnå høy tilgjengelighet av infrastrukturen for balansering av nettverksbelastning 106. Feilopprettingsprosedyrer for to forskjellige feiltilstander, feiltilstand 2902 og feiltilstand 2906, er beskrevet. Som illustrert omfatter infrastrukturen for balansering av nettverksbelastning 106 (ikke eksplisitt angitt) fem komponenter: videresender 302(1), videresender 302(2), videresender 302(3), sorterer 304(1) og sorterer 304(2).
I en beskrevet utførelse svarer hver av disse fem komponentene 302(1), 302(2), 302(3), 304(1) og 304(2) til en separat anordning. Tilsvarende feilopprettingsprosedyrer kan imidlertid bli anvendt også i miljøer hvor forskjellige lastbalanseringskomponenter er tilveiebragt i samme anordning.
Innledningsvis, ved [1], sender ruter/svitsj(er) 202 en innkommende datapakke som tilfeldigvis er for en ny forbindelse til videresender 302(1). Ettersom videresender 302(1) ikke har noen rute for denne forbindelsen i sin lokale rutingstabell, sendes den datapakken til sorterer 304(1), som angitt av den stiplede, toveispekende pilen ved (1). Sorterer 304(1) sjekker først sesjonsinformasjon ved å konsultere sesjonsporeren 308 for å se etter mulig tilhørighet til sesjoner på høyere nivå. I dette eksempelet hører ikke datapakken til en eksisterende sesjon, så sorterer 304(1) velger en vertsmaskin 108 basert på tilstands- og lastinformasjon oppnådd fra tilstands- og lastbehandleren 314.
I dette eksempelet velger sorterer 304(1) vertsmaskin 108(1). Antatt at datapakken er for en TCP/IP-forbindelse, blir denne TCP/IP-sesjonen, som knyttet til vertsmaskin 108(1), lagt til i DAM 2202 gjennom et anrop til funksjonen legg-til-atom 2204(A) av sorterer 304(1). Den innledende datapakken blir videresendt til vertsmaskin 108(1) av sorterer 304(1) eller videresender 302(1). Sorterer 304(1) setter også opp en rute i den lokale rutingstabellen i videresender 302(1). Senere pakker blir videresendt til vertsmaskin 108(1) av videresender 302(1) uten ytterligere samhandling med sorterer 304(1).
På et eller annet tidspunkt under forbindelsen [1] oppstår det en feiltilstand 2902 i videresender 302(1). Med én eller flere lastbalansering-bevisste rutere/svitsjer 202 blir denne feiltilstanden 2902 detektert. Som følge av denne feiltilstanden sender ved 2904 ruter(ne)/svitsj(ene) 202 påfølgende datapakker som skulle ha vært sendt til videresender 302(1) over forbindelsen
[1] til en annen videresender 302, som i dette eksempelet er videresender 302(2).
Videresender 302(2) mottar således fremtidige pakker over en forbindelse [2]. Siden videresender 302(2) ikke har noen post i sin lokale rutingstabell for datapakkene som tidligere ble sendt til videresender 302(1), sender videresender 302(2) den første mottatte datapakken for forbindelsen [2] til den sortereren den er tildelt/assosiert med. I dette eksempelet er videresender 302(2) tildelt sorterer 304(2), som angitt av den stiplede, toveispekende pilen ved (2).
Sorterer 304(2) anvender et anrop til funksjonen sjekk-atom 2204(Q) for å få tak i den atomiske posten 2304 (ikke vist eksplisitt) fra den DAM 2202 som er assosiert med den eksisterende TCP/IP-forbindelsen. Denne atomiske posten 2304 tilveiebringes gjennom DAM 2202 i sesjonssporeren 308 via et anrop til funksjonen returner-atom 2204(R). Sorterer 304(2) finner ut hvilken vertsmaskin 108(1) som er assosiert med denne TCP/IP-forbindelsen fra den returnerte atomiske posten 2304. Sorterer 304(2) videresender den første mottatte datapakken for forbindelsen [2] til vertsmaskin 108(1) og setter opp en rute i den lokale rutingstabellen i videresender 302(2). Påfølgende datapakker blir sendt til vertsmaskin 108(1) av videresender 302(2) uten ytterligere samhandling med sorterer 304(2).
Beskrivelsene fokuserer hovedsaklig på feiltilstander i individuelle komponenter av videresender 302. Det kan imidlertid også oppstå feiltilstander i komponenter av sorterer 304. For eksempel kan det på et eller annet tidspunkt oppstå en feiltilstand 2906 i sorterer 304(2). Videresender 302(2) detekterer feilen 2906 når den forsøker å oppnå sorteringstjenester eller ved at den oppdager at et fastsatt livstegn fra sortereren uteblir, for eksempel en livstegn-melding. For å håndtere feiltilstanden 2906 blir videresender 302(2) tildelt eller assosiert med en annen sorterer 304, som i dette eksempelet er sorterer 304(1). Sorteringsfunksjonalitet tilveiebringes etter dette til videresender 302(2) av sorterer 304(1), som angitt av den stiplede, toveispekende pilen ved (3).
Figur 30 illustrerer et eksempel på samhandling mellom trafikkruting og tilstands- og lastinformasjon. Videresender 302 og sorterer 304 samhandler med tilstands- og lastbehandler 314 for å rute pakker til vertsmaskinene 108(1), 108(2)... 108(n). Selv om en videresender 302 og en sorterer 304 er illustrert, er eksempelet også anvendelig for en forespørselsruter 306 (eller trafikkrutingsfunksjonalitet 2012 generelt).
Som illustrert omfatter vertsmaskin 108(1) applikasjons-endepunkter IP1, IP3 og IP4 henholdsvis for applikasjon #1, applikasjon #1 og applikasjon #2. Vertsmaskin 108(2) omfatter applikasjons-endepunkter IP2 og IP6, henholdsvis for applikasjon #1 og applikasjon #2. Vertsmaskin 108(n) omfatter applikasjons-endepunkt IP5 for applikasjon #2. Disse vertsmaskinene 108(1), 108(2)... 108(n) og applikasjons-endepunktene IP1, IP2, IP3, IP4, IP5 og IP6 overvåkes av tilstands- og lastbehandler 314 (f.eks. med bruk av tilstands- og last-infrastrukturen 1202, det felles tilstands- og lastbufferet 1208, etc).
I en beskrevet utførelse ber ved (1) sorterer 304 om én eller flere applikasjonsendepunkt-tildelinger (f.eks. gjennom minst én forespørsel 1802 om tildeling av mål-applikasjonsendepunkt) i et miljø som anvender et polett-basert tildelingsskjema 1806. Tilstands- og lastbehandler 314, i dette eksempelet, svarer med å tilveiebringe polett-tildelinger 3002 (f.eks. gjennom minst én mål-applikasjonsendepunkt-tildelingsrespons 1804).
Spesifikt er en polett-tildeling for applikasjon #1 3002(1) og en polett-tildeling for applikasjon #2 3002(2) tilgjengelig for sorterer 304. Polett-tildelingen for applikasjon #1 3002(1) inneholder innledningsvis 40 poletter til IP1, 35 poletter til IP2 og 25 poletter til IP3. Polett-tildelingen for applikasjon #2 3002(2) inneholder 10 poletter til IP4, 72 poletter til IP5 og 18 poletter til IP6. For hver nye forbindelse som tildeles en rute til et applikasjons-endepunkt av sorterer 304 forbruker sorterer 304 én polett.
Ved (2) mottar videresender 302 en innkommende datapakke for innledning av en ny forbindelse. Fordi ingen rute for denne nye forbindelsen finnes i den lokale andelen 2206 av DAM-tabellen i videresender 302, sender videresender 302 den innledende datapakken til sorterer 304 ved (3).
Ved (4) velger sorterer 304 (f.eks. etter å ha bestemt at den innledende datapakken ikke omfatter en sesjonsreferanse til en sesjon på et høyere nivå) et applikasjons-endepunkt (og således en vertsmaskin 108) basert på tilstands-og lastinformasjon. Konkret kan sorterer 304, for en ny forbindelse som skal betjenes av applikasjon #1, velge en hvilken som helst av IP1, IP2 og IP3, forutsatt at det fortsatt er igjen flere poletter for det aktuelle endepunktet.
Sorterer 304 kan forbruke poletter på en hvilken som helst av mange mulige måter. For eksempel kan sorterer 304 anvende en "round-robin"-tilnærming uavhengig av antallet poletter per endepunkt. Alternativt kan sorterer 304 ganske enkelt begynne med IP1 og fortsette til IP3 i en tilnærming der den bruker opp alle poletter for hvert endepunkt før den går til neste endepunkt. Som et annet alternativ kan sorterer 304 til enhver tid bruke en polett fra det endepunkt-definerte settet av poletter som på det aktuelle tidspunktet har flest poletter. I sistnevnte tilfelle ville sorterer 304 velge IP1. Andre alternativer er også mulige.
Som illustrert konsumerer sorterer 304 en polett fra applikasjons-endepunkt IP2. Følgelig reduseres antallet poletter for IP2 fra 35 poletter til 34 poletter ettersom én polett er brukt opp. Den innledende datapakken for den nye forbindelsen skal rutes til applikasjons-endepunkt IP2.
Ved (5A) sendes den innledende datapakken fra sorterer 304 til applikasjons-endepunkt IP2 i vertsmaskin 108(2). Før, under eller etter denne videresendingen setter sorterer 304, ved (5B), en rute for denne forbindelsen i den lokale delen av DAM-tabellen 2206. Sorterer 304 kan også sette inn en atomisk post 304 for denne sesjonen i DAM-tabell 2206 for distribusjons- og dupliseringsformål. Ved (6) sendes etterfølgende datapakker for denne forbindelsen/sesjonen fra videresender 302 til applikasjons-endepunktet IP2 i vertsmaskin 108(2) ved anvendelse av den lokale rutingstabellen i videresender 302, som realisert i form av den lokale DAM-tabell-andelen 2206 i figur 30.
Figur 31 illustrerer eksempler på mekanismer for å oppnå høy tilgjengelighet av infrastrukturen for balansering av nettverksbelastning 106. Spesifikt er det vist et eksempel på feildeteksjon 3104, et eksempel på feilhåndtering 3106 og et eksempel på feiloppretting 3108. Disse eksempelvise mekanismene for å oppnå høy tilgjengelighet er beskrevet i forbindelse med forskjellige komponenter i infrastrukturen for balansering av nettverksbelastning 106. Disse komponentene omfatter en videresender 302, en sorterer 304, en forespørselsruter 306, en sesjonssporer 308 og en tilstands- og lastbehandler 314.
Ved 3102(A) oppstår en lokal feiltilstand i videresender 302. Ved 3104(A) detekterer minst én lastbalansering-bevisst svitsj feiltilstanden. For å håndtere den lokale feiltilstanden 3102(A) blir datapakker om rutet til én eller flere andre videresendere ved 3106(A) av den lastbalansering-bevisste svitsjen. For å gjenopprette systemet etter feilen i videresender 302, blir transportruter som var lagret lokalt i videresender 302 rekonstruert, ved 3108(A), i den eller de videresenderne som datapakker blir omrutet til ved hjelp av en distribuert sesjonssporingsstyrer og en tabell i denne, for eksempel en DAM og en DAM-tabell i denne. Den distribuerte sesjonssporingsstyreren kan derfor omfatte dataredundans på ett eller flere nivåer.
Ved 3102(B) oppstår det en lokal feiltilstand i sorterer 304. Ved 3104(B) detekterer minst én videresender feiltilstanden. For å håndtere den lokale feiltilstanden 3102(B) blir datapakker omrutet til én eller flere andre sorterere ved 3106(B) av den videresenderen som oppdaget feilen. For å gjenopprette systemet etter feiltilstanden i sorterer 304, blir sesjonsinformasjon som var lagret lokalt i sorterer 304 rekonstruert, ved 3108(B), i den eller de sortererne som datapakker blir omrutet til ved anvendelse av DAM. Denne sesjonsinformasjonen kan for eksempel være sesjonsinformasjon for et høyere nivå enn de grunnleggende TCP/IP-forbindelsene. Videre kan slik sesjonsinformasjon være en del av den sesjonssporingsinfrastrukturen som befinner seg i samme anordning som sorterer 304.
Ved 3102(C) oppstår det en lokal feiltilstand i forespørselsruter 306. Ved 3104(C) detekterer minst én videresender og/eller lastbalansering-bevisst svitsj feiltilstanden. For å håndtere den lokale feiltilstanden 3102(C), blir pakker omrutet til én eller flere andre forespørselsrutere ved 3106(C) av videresenderen og/eller den lastbalansering-bevisste svitsjen. Enkeltvise logiske forespørseler som forespørselsruter 306 jobber med når det oppstår en lokal feiltilstand 3102(C) vil kunne gå tapt dersom ikke hver slike logiske forespørsel er duplisert mens forespørselen betjenes. For å gjenopprette systemet etter feiltilstanden i forespørselsruter 306, blir sesjonsinformasjon og/eller transportruter som var lagret lokalt i forespørselsruter 306 ved 3108(C) rekonstruert ved den eller de forespørselsruterne som datapakker (og således nye logiske forespørseler) nå blir rutet til. Rekonstrueringen av sesjonsinformasjonen kan bli gjort med bruk av en DAM. Som tidligere kan denne sesjonsinformasjonen være en del av den sesjonssporingsinfrastrukturen som befinner seg i samme anordning som forespørselsruter 306.
Ved 3102(D) oppstår det en lokal feiltilstand i sesjonssporer 308. Ved 3104(D) detekterer minst én videresender og/eller sorterer feiltilstanden. Dersom for eksempel sesjonssporer 308 befinner seg i samme anordning som en sorterer, kan da en videresender eller en annen sorterer detektere feiltilstanden. Dersom sesjonssporer 308 befinner seg i en annen anordning, kan da en sorterer detektere feiltilstanden. For å håndtere den lokale feiltilstanden 3102(D) blir dataredundans på ett eller flere nivåer og distribusjon til flere anordninger iverksatt ved 3106(D) for den sporede sesjonsinformasjonen. Det skal bemerkes at redundansen og distribusjonen ble besørget før feiltilstanden 3102(D) oppstod. For å gjenopprette systemet etter feiltilstanden i sesjonssporer 308, kan sesjonsinformasjon fra tabellene i nevnte DAM bli redistribuert og duplisert på nytt ved 3108(D) til i hvert fall to anordninger (dersom den ikke allerede er distribuert og tilstrekkelig duplisert) for å kunne overleve en dobbel feil.
Ved 3102(E) oppstår det en lokal feiltilstand i tilstands- og lastbehandler 314. Ved 3104(E) detekterer minst én sorterer og/eller forespørselsruter feiltilstanden. For eksempel kan en komponent som mottar tilstands- og lastinformasjon fra tilstands- og lastbehandler 314 detektere en feiltilstand dersom tilstands- og lastbehandler 314 slutter å svare på henvendelser, spesielt dersom tilstands- og lastbehandler 314 befinner seg i en annen anordning enn den spørrende komponenten. For å håndtere den lokale feiltilstanden 3102(E) iverksettes redundans av bufrede tilstands- og lastdata og intern feilhåndtering ved 3106(E) for tilstands- og lastinformasjonen.
For eksempel kan hver tilstands- og lastbehandler 314 omfatte et felles tilstands- og lastinformasjonsbuffer 1208 som dupliserer informasjon i tilstands-og lasttabellene 1204 på et antall vertsmaskiner 108. Videre kan konsumenter av tilstands- og lastinformasjonen 1206 fra en gitt tilstands- og lastbehandler 314 befinne seg i samme anordning som tilstands- og lastbehandler 314, slik at feiltilstander i tilstands- og lastbehandler 314 kan aksepteres. Tilsvarende er den autoritative versjonen av en respektiv andel av tilstands- og lastinformasjonen 1206 lagret på en respektiv vertsmaskin 108, slik at feiltilstander i vertsmaskin 108 gjør tap av den respektive andelen av tilstands-og lastinformasjonen akseptabelt.
For å gjenopprette systemet etter feiltilstanden i tilstands- og lastbehandler 314, kan en gitt lastbalanseringskomponent som konsumerer tilstands- og lastinformasjon spørre en annen tilstands- og lastbehandler fordi hver slike tilstands- og lastbehandler omfatter et fellesbuffer med tilstands- og lastbehandlerinformasjon. Videre kan, når tilstands- og lastbehandler 314 igjen er tilgjengelig, meldingsprotokollen 1500 anvendes ved 3108(E) for å gjenoppbygge dens fellesbuffer for tilstands- og lastinformasjon. Ved hjelp av disse eksempelvise mekanismene for å oppnå høy tilgjengelighet kan feiltilstander i komponenter av infrastrukturen for balansering av nettverksbelastning 106 detekteres, håndteres og gjenopprettes fra for å skjule slike feiltilstander for klienter 102.
Eksempler på flytting av forbindelser med eventuell tunnelføring og/ eller lastbalansering på applikasionsnivå
Denne seksjonen beskriver hvordan manipulasjon av forbindelser, så som flytting av en forbindelse, kan være til nytte under balansering av nettverksbelastning. Denne seksjonen refererer primært til figurene 32-39 og viser funksjonalitet for flytting av forbindelser, så som den tilveiebragt av forbindelsesflytter 310 (i figur 3). Som beskrevet ovenfor i forbindelse med figurene 3 og 4, kan hver innkommende forbindelse til infrastrukturen for lastbalansering 106 være terminert ved denne. Deretter kan forbindelsen bli flyttet til en vertsmaskin 108, slik at forbindelsen da er terminert ved vertsmaskinen 108. Forbindelsesflytter 310 er i stand til å utføre denne flyttingen av forbindelser, og kan befinne seg delvis i vertsmaskiner 108 for å gjennomføre flyttingen. Slik flytting av forbindelser kan bli gjort i forbindelse med lastbalansering på applikasjonsnivå av en sorterer 304 og/eller tunnelføring ved hjelp av tunneler 312.
Figur 32 illustrerer et eksempel på tilnærming til applikasjonsnivå balansering av nettverksbelastning med flytting av forbindelser. Applikasjonsnivå, eller lag 7, lastbalansering vedrører det å foreta avgjørelser vedrørende lastbalansering med hensyn til hvilken applikasjon som skal betjene en forbindelse. For å utføre applikasjonsnivå lastbalansering tar infrastrukturen for lastbalansering 106 vanligvis hensyn til en data-andel av en forbindelse. Dersom ikke forespørselsruting er anvendt, vil en sorterer 304 typisk undersøke den innledende delen av en forbindelse og deretter flytte forbindelsen, i samarbeid med forbindelsesflytter 310, til en valgt vertsmaskin 108.
For applikasjonsnivå lastbalansering i et TCP-basert miljø generelt, undersøker sorterere 304 den innledende delen av en klients TCP-data når den bestemmer hvor den skal sende klientens TCP-forbindelse. Logikk på applikasjonsnivå undersøker således klientens data og tar avgjørelser vedrørende lastbalanseringbasert på disse dataene. Dersom for eksempel en forbindelse er en (ukryptert) HTTP-forbindelse, kan en sorterer 304 undersøke HTTP-headeren i den første HTTP-forespørselen i forbindelsen, og den kan ta rutingsavgjørelser basert på en del av innholdet i headeren (f.eks. URL-adressen, en cookie, etc). Selv om applikasjonsnivå lastbalansering, flytting av forbindelser og tunnelføring også kan anvendes i andre protokoller, er hovedsaklig TCP/IP anvendt i eksemplene her.
Som illustrert omfatter infrastrukturen for lastbalansering 106 (ikke spesifikt angitt) en videresender 302, en sorterer 304, en tunneler 312 og en forbindelsesflytter 310 (og eventuelt f.eks. lastbalansering-bevisste rutere/svitsjer 202). Videresender 302 svarer til den virtuelle IP-adressen og sender datapakker til vertsmaskiner 108 i overensstemmelse med valg av vertsmaskiner gjort av sorterer 304. Selv om det for oversiktens skyld ikke er spesifikt vist i figur 32, omfatter vertsmaskinene 108 også funksjonalitet fra forbindelseflytter 310 og tunneler 312.
I en beskrevet utførelse samvirker videresender 302, sorterer 304 og forbindelsesflytter 310 (i sorterer 304 og i vertsmaskiner 108), sammen med TCP-protokoll-programvare i sorterer 304 og vertsmaskiner 108, for å besørge flytting av forbindelser. Flyttingen illustrert i figur 32 er for en forbindelse fra klient 102(1) som innledningvis er terminert ved sorterer 304. Etter flytting er forbindelsen fra klient 102(1) terminert ved vertsmaskin 108(1). Når forbindelsen er terminert ved vertsmaskin 108(1), kan datapakker for forbindelsen bli sendt i "tunnel" ved hjelp av tunneler 312 (i videresender 302 og vertsmaskin 108(1)).
Ved (1) sender klient 102(1) en SYN-pakke til videresender 302 for å signalisere begynnelsen på en ny TCP-forbindelse. Ved (2) sender videresender 302 denne datapakken til sorterer 304. Ved (3) tar sorterer 304 imot TCP-forbindelsen på vegne av en vertsmaskin 108 (hvis identitet enda ikke er kjent ettersom en mål-vertsmaskin 108() enda ikke er valgt). I TCP-terminologi sender sorterer 304 en SYN ACK-pakke til klient 102(1).
Ved (4) begynner klient 102(1) å sende data. (Den innledende SYN-datapakken vil også kunne inneholde data.) Dataene blir behandlet av sorterer 304, som kan få hjelp av applikasjons-spesifikk logikk. Den applikasjons-spesifikke logikken kan vedkomme bestemmelse av hvilken vertsmaskin 108 som er i stand til å betjene eller som best kan betjene hvilke typer forespørseler eller forbindelser. Sorterer 304 bruker således dataene, så vel som tilstands- og lastinformasjon vedrørende applikasjoner fra tilstands- og lastbehandler 314 og eventuelt sesjonsinformasjon vedrørende applikasjoner fra sesjonssporer 308, til å bestemme en vertsmaskin 108 som er bedre eller best egnet til å betjene denne forbindelsen fra klient 102(1). I dette eksempelet velges vertsmaskin 108(1).
Ved (5) sender sorterer 304 en "binærblokk" som representerer tilstanden til TCP-forbindelsen til vertsmaskin 108(1). Denne forbindelsestilstanden aggregeres i samarbeid med en TCP-stakk i sorterer 304 av forbindelsesflytter 310. Binærblokken inneholder data fra klient 102(1) som er bekreftet av sorterer 304 og TCP-parametere så som TCP/IP 4-tuppelet, initielle sekvensnumre og annet.
Ved (6) "innsetter" en komponent av forbindelsesflytter 310 i vertsmaskin 108(1) (ikke eksplisitt vist i figur 32) denne forbindelsen i en TCP-stakk på vertsmaskin 108(1). Denne innsettingen av forbindelsestilstand utføres i samarbeid med TCP-stakken på vertsmaskin 108(1), slik at det for applikasjoner 316 i vertsmaskin 108(1) ser ut som om denne forbindelsen opprinnelig er mottatt av vertsmaskin 108(1) selv. Klienten 102(1) er heller ikke klar over at forbindelsen blir flyttet.
Ved (7) rydder sorterer 304, i samarbeid med TCP-stakken i sorterer 304, stilltiende opp i den interne tilstanden opprettholdt for denne forbindelsen. Sorterer 304 legger også til en rute i en lokal rutingstabell i videresender 302 som utpeker vertsmaskin 108(1) som destinasjon for datapakker for denne forbindelsen.
Ved (8) blir etterfølgende datapakker for forbindelsen rutet av videresender 302 til vertsmaskin 108(1). Disse datapakkene kan bli behandlet på samme måte av videresender 302 som datapakker for forbindelser som sorteres og rutes uten forbindelsesflytting. Disse etterfølgende datapakkene kan eventuelt bli "tunnelført" fra videresender 302 til vertsmaskin 108(1) ved anvendelse av tunneler 312. Tunneler 312 er også illustrert (med bruk av stiplede linjer) i forbindelsesflytter 310 i sorterer 304 fordi én eller flere parametere som anvendes av tunneler 312 kan bli bestemt under flytting av en forbindelse og/eller være assosiert med en forbindelse som blir flyttet. Eksempler på utførelser av tunneler 312 er beskrevet nedenfor, spesielt i forbindelse med figurene 38 og 39.
Figur 33 er et flytdiagram 3300 som illustrerer et eksempel på fremgangsmåte for å flytte en forbindelse fra en første anordning til en andre anordning. Flytdiagrammet 3300 omfatter syv blokker 3302-3314. Selv om figurene 32 og 34-37 primært fokuserer på flytting av forbindelser i et miljø for balansering av nettverksbelastning, kan flytting av forbindelser som beskrevet her skje mellom to generelle anordninger som begge omfatter funksjonalitet for flytting av forbindelser, så som den til forbindelsesflytter 310.
I blokk 3302 aksepteres/mottas en forbindelse ved en første anordning. For eksempel kan en første anordning terminere en innkommende forbindelse i henhold til én eller flere protokoller i en protokollstakk-andel av en nettverksstakk. I blokk 3304 mottas data for forbindelsen ved den første anordningen. For eksempel kan disse dataene bli mottatt i en innledende datapakke som ber om forbindelsen eller i én eller flere datapakker som er mottatt etter at forbindelsen er akseptert/mottatt.
I blokk 3306 aggregeres en forbindelsestilstand for den aksepterte forbindelsen fra en protokollstakk (eller mer generelt fra en nettverksstakk) ved den første anordningen. For eksempel kan en tilstand for den ene eller de flere protokollene i protokollstakken bli satt sammen og aggregert med hvilke som helst mottatte data som er bekreftet. I blokk 3308 sendes forbindelsestilstanden fra den første anordningen til en andre anordning. For eksempel kan den aggregerte forbindelsestilstand-informasjonen bli sendt ved anvendelse av en pålitelig protokoll til en andre anordning.
I blokk 3310 mottas forbindelsestilstanden for forbindelsen som flyttes fra den første anordningen ved den andre anordningen. I blokk 3312 legges forbindelsestilstanden inn i en protokollstakk (eller mer generelt inn i nettverksstakken) i den andre anordningen. For eksempel kan forbindelsen bli "rehydrert" ved anvendelse av protokollene i protokollstakken i den andre anordningen, slik at programmer ovenfor protokollstakklaget ikke er klar over at forbindelsen er en flyttet forbindelse. Mer spesifikt kan protokolltilstanden bli lagt inn i protokollstakken. De aggregerte forbindelsestilstand-dataene blir også lagt inn i den andre anordningen. I blokk 3314 videreføres forbindelsen ved den andre anordningen. For eksempel kan forbindelsen bli videreført ved den andre anordningen akkurat som om forbindelsen ikke tidligere har vært terminert et annet sted.
Figur 34 illustrerer et eksempel på tilnærming til flytting av forbindelser sett fra en opprinnelig anordning 3400. Flytting av en forbindelse fra en opprinnelig anordning 3400 besørges i hvert fall delvis av en forbindelsesflytter 310.1 en beskrevet utførelse er den opprinnelige anordningen 3400 en del av infrastrukturen for balansering av nettverksbelastning 106. For eksempel kan den opprinnelige anordningen 3400 omfatte en sorterer 304, eventuelt sammen med en videresender 302, en forespørselsruter 306 og annet.
Som illustrert omfatter den opprinnelige anordningen 3400 som del av sin nettverksstakk et fysisk nettverksgrensesnitt (PNI) 3410, en PNI-miniport 3408, et protokollmaskinvare-grensesnitt 3406, en protokollstakk 3404 og et "socket"-lag 3402. Den opprinnelige anordningen 3400 omfatter også lastbalanseringsfunksjonalitet 106, så som en sorterer 304 på applikasjonsnivå og forbindelsesflytter 310. Spesifikt omfatter forbindelsesflytter 310 en mellomdriver (eng. migrator intermediate driver) 3414 og et mellomledd (eng. migrator shim) 3412. Forbindelsesflytter 310 er i stand til å avlaste en forbindelse fra den opprinnelige anordningen 3400.
I en beskrevet utførelse kan det fysiske nettverksgrensesnittet 3410 være et nettverkskort (NIC) (f.eks. et Ethernet-basert nettverkskort), et trådløst grensesnitt og annet. Selv om kun ett fysisk nettverksgrensesnitt 3410 er vist, vil en gitt anordning kunne ha flere slike fysiske nettverksgrensesnitt 3410 (dvs. at den opprinnelige anordningen 3400 kan ha flere adresser). Hvert fysiske nettverksgrensesnitt 3410 svarer typisk til én eller flere fysiske
nettverksadresser.
PNI-miniport 3408 er en programvaremodul som er kompatibel med og grensesnitter mot den spesifikke maskinvaren som danner det fysiske nettverksgrensesnittet 3410. Protokollmaskinvare-grensesnittet 3406 er et lag som omfatter ett eller flere respektive grensesnitt mellom én eller flere respektive protokoller og PNI-miniport 3408.
Protokollstakken 3404 omfatter én eller flere respektive moduler som hver jobber mot én eller flere respektive protokoller. Eksempler på slike protokoller er beskrevet ytterligere nedenfor i forbindelse med figurene 36 og 37.1 en transient kontekst omfatter protokollstakken 3404 en protokolltilstand 3420 for hver forbindelse som eksisterer i den opprinnelige anordningen 3400. Et socket-lag 3402 ligger mellom et program så som lastbalanseringsfunksjonalitet 106 og protokollstakken 3404. Socket-laget 3402 tilveiebringer API-funksjoner mellom lastbalanseringsfunksjonalitet 106 og protokollstakken 3404, og det gjør det blant annet mulig for programmer å registrere seg for forbindelser.
Mellomdriveren 3414, eller mer generelt driveren 3414, er tilveiebragt i protokollmaskinvare-grensesnittslaget 3406. Mellomleddet 3412 er tilveiebragt transparent mellom protokollstakken 3404 og socket-laget 3402.
Når en innledende datapakke (ikke vist) som ber om en ny forbindelse blir presentert for den opprinnelige anordningen 3400, sendes denne datapakken oppover fra det fysiske nettverksgrensesnittet 3410 til PNI-miniport 3408, gjennom protokollmaskinvare-grensesnittslaget 3406 og til protokollstakken 3404. Etter hvert som datapakken går gjennom den ene eller de flere protokollene i protokollstakken 3404, opprettes en protokolltilstand 3420 i denne. Videre, som et resultat av denne innledende datapakken eller som følge av at lastbalanseringsfunksjonalitet 106 tar imot forbindelsen for å undersøke forespørselen, ankommer data 3416 ved den opprinnelige anordningen 3400.
Under kjøring sender mellomdriveren 3414 en kopi av dataene 3416 til logikken i forbindelsesflytter 310. Når lastbalanseringsfunksjonalitet 106 anroper en funksjon for å flytte en forbindelse, sendes dette anropet til et øverste lag i protokollstakken 3404, slik at aggregeringen 3418 av forbindelsestilstand kan påbegynnes. Protokolltilstanden 3420 blir satt sammen av den ene eller de flere protokollene i protokollstakken 3404.1 en utførelse med TCP/IP kan protokolltilstanden 3420 omfatte (i) TCP-port og IP-adresse for destinasjon og kilde (f.eks. et TCP/IP 4-tuppel), (ii) tilstand for TCP-vinduet, (iii) initielle sekvensnumre, (iv) tidsavbrudd-informasjon, (v) ID for IP-fragment, (vi) rutingsinformasjon og (vii) annet.
Aggrergeringen 3418 av forbindelsestilstanden aggregerer også data 3416 som er omdirigert til forbindelsesflytter 310 og som allerede er bekreftet av den opprinnelige anordningen 3400 (f.eks. av lastbalanseringsfunksjonalitet 106). Denne aggregerte forbindelsestilstanden 3418 omfatter protokolltilstanden 3420 og dataene 3416 (og eventuelt annen forbindelserelatert informasjon). Den aggregerte forbindelsestilstanden 3418 blir da sendt som en binærblokk 3422 fra den opprinnelige anordningen 3400 mot en mål-anordning ved anvendelse av en pålitelig protokoll. Denne binærblokken 3422 kan også være satt sammen med en datastrøm-identifikator dersom forbindelsen senere skal "tunnelføres" av tunneler 312. Datastrøm-identifikatorer med tunnelføring er beskrevet ytterligere nedenfor i forbindelse med figurene 38 og 39.
Figur 35 illustrerer et eksempel på tilnærming til flytting av forbindelser sett fra en mål-anordning 3500. Mål-anordning 3500 er tilsvarende den opprinnelige anordningen 3400 med hensyn til de forskjellige illustrerte lag/moduler, inklusive forbindelsesflytter 310. Som illustrert grensesnitter imidlertid minst én applikasjon 316 på applikasjonslaget mot socket-laget 3402. Mål-anordningen 3500 kan derfor omfatte en vertsmaskin 108. Videre er forbindelsesflytter 310 i stand til å laste opp en forbindelse fra den opprinnelige anordningen 3400.
I en beskrevet utførelse er applikasjonen 316 destinasjon for forbindelsesinnlednings-datapakken mottatt ved den opprinnelige anordningen 3400. Mål-anordningen 3500 mottar en binærblokk 3422 fra den opprinnelige anordningen 3400. Binærblokken 3422 omfatter forbindelsestilstanden assosiert med forbindelsen som blir flyttet til mål-anordningen 3500 og eventuelt en datastrøm-identifikator. Denne forbindelsestilstanden omfatter protokolltilstand 3420 og bekreftede data 3416 (og eventuelt annen forbindelserelatert informasjon).
Under kjøring, når binærblokken 3422 ankommer protokollmaskinvare-grensesnittslaget 3406, gjenkjenner mellomdriveren 3414 den som en blokk for flytting av en forbindelse og omdirigerer den. Forbindelsestilstanden settes inn ved 3502 for at det for applikasjonen 316 skal se ut som om at forbindelsen opprinnelig var terminert ved mål-anordningen 3500.
Spesifikt legges protokolltilstanden 3420 for forbindelsestilstanden innsatt ved 3502 inn i protokollstakken 3404.1 en beskrevet utførelse legges protokolltilstanden 3420 først inn i høyere lags protokoller og deretter i lavere lags protokoller i protokollstakken 3404. Etter at protokolltilstanden 3420 er lagt inn i protokollstakken 3404, kan dataene 3416 bli anvist opp til applikasjonen 316. Disse dataene 3416 kan bli levert til applikasjonen 316 som om de var en del av en ny og lokalt terminert forbindelse.
Etter at innsettingen 3502 av forbindelsestilstanden er fullført, blir forbindelsen innledet av datapakken mottatt ved den opprinnelige anordningen 3400 flyttet fra denne til mål-anordningen 3500. Etterfølgende datapakker for forbindelsen kan bli videresendt direkte til mål-anordningen 3500 uten å gå gjennom den opprinnelige anordningen 3400, eller i hvert fall kun med enkel ruting og uten at den blir analysert på applikasjonsnivå. Eventuelt kan disse datapakkene bli sendt i tunnel, slik at mellomdriveren 3414 effektivt fungerer som et programvarebasert virtuelt nettverkskort som er bundet til den virtuelle IP-adressen.
Figur 36 illustrerer et eksempel på en avlastningsprosedyre 3600 for flytting av en forbindelse. Avlastingsprosedyren 3600 illustrerer eksempelvise detaljer for flytting av en forbindelse fra en opprinnelig anordning 3400. Som illustrert omfatter den generelle protokollstakken 3404 en TCP-stakk 3404(T), en IP-stakk 3404(1) og en ARP-(Address Resolution Protocol)-stakk 3404(A). Imidlertid kan andre spesifikke protokollstakker 3404() alternativt anvendes.
Som et eksempel kan protokollmaskinvare-grensesnittslaget 3406 være realisert i form av et NDIS-(Network Driver Interface Specification)-basert lag i et Microsoft® Windows® operativsystem (OS). Videre kan socket-laget 3402
være realisert i form av et Winsock™-lag i et OS fra Microsoft<®>Windows<®>.
I en beskrevet utførelse omfatter mellomdriveren 3414 protokollmaskinvare-grensesnitt 3406 ved overgangen til ARP-stakk 3404(A) og til PNI-miniport 3408. Mellomdriveren 3414 tjener som avlastningsmål i forbindelsesflytting-avlastningsprosedyren 3600. Avlastningsmålet er en protokollmaskinvare-grensesnitt-miniport som illustrert i dette eksempelet. I en opplastingsprosedyre 3700 for flytting av en forbindelse (som i figur 37) tjener mellomdriveren 3414 som en omsenderfor opplasting.
Mer spesifikt bindes mellomdriveren 3414 til hvert fysiske nettverksgrensesnitt 3410 gjennom hvilket en TCP-forbindelse kan bli flyttet. Mellomdriveren 3414 fungerer vanligvis som en formidlingsdriver ved å sende datapakker oppover eller nedover i nettverksstakken uten på annen måte å vekselvirke med datapakkene. Mellomdriveren 3414 vekselvirker imidlertid med datapakker relatert til forbindelsesflytting (eventuelt inklusive senere tunnelførte datapakker).
Arbeidsoppgavene til mellomdriveren 3414 omfatter: (i) mottak/aksept av forespørseler om avlastning av flytting; (ii) aggregering av protokolltilstandsinformasjonen assosiert med TCP-forbindelsen som flyttes, som satt sammen fra de spesifikke protokollstakkene 3404(), sammen med bekreftede data for å generere forbindelsestilstandsinformasjonen; og (iii) overføring av den aggregerte forbindelsestilstanden til en mål-anordning 3500 foren forbindelsesflytting-opplastingsprosedyre 3700 for forbindelsesflytting. En pålitelig overføringsprotokoll for denne overføringen kan være identisk med den som anvendes av sesjonssporingskomponentene 2002 og 2010 til å sende og motta sesjonsinformasjonsmeldinger 2008 (f.eks. som beskrevet ovenfor i forbindelse med figur 20).
En annen arbeidsoppgave for mellomdriveren 3414 (f.eks. i en forbindelsesflytting-opplastingsprosedyre 3700) er å igangsette opplasting av flyttede forbindelser som den mottar fra andre anordninger og å bufre eventuelle innkommende datapakker relatert til forbindelsen som flyttes mens den er i ferd med å bli lastet opp. For å laste opp forbindelsen sender mellomdriveren 3414 en opplastingsforespørsel til mellomleddet 3412. Mellomleddet 3412 gjør et innsettingsanrop ned i protokollstakken 3404 til TCP-stakken 3404(A) for å instansiere forbindelsen i protokollstakk-andelen 3404 av nettverksstakken.
Mellomleddet 3412 eksponerer et klientgrensesnitt mot TCP-stakken 3404(T) og eksponerer et forsyner-grensesnitt mot socket-laget 3402. Mellomleddet 3412 har to oppgaver: (i) å initiere forbindelsesflytting-avlastningsprosedyren 3600 på en opprinnelig anordning 3400 og deretter forbindelsesflytting-opplastingsprosedyren 3700 på en mål-anordning 3500, og (ii) å være formidlingsledd i sorteringsprosessen mellom et applikasjonsprogram 316 i en vertsmaskin, et sortererprogram 304 for lastbalansering og socket-laget 3402. Mellomleddet 3412 og mellomdriveren 3414 er begge beskrevet ytterligere nedenfor i forbindelse med figurene 36 og 37.
I et eksempel på forbindelsesflytting-avlastningsprosedyre 3600 blir flyttingen av en TCP-forbindelse utført etter at sorterer 304 har sortert den innkommende TCP-forbindelsen ved anvendelse av én, to eller flere datapakker i denne. Forbindelsesflytting-avlastningsprosedyren 3600 er beskrevet i punktene <1> til <7>.
Ved <1> blir det foretatt initialisering før sorteringsoperasjoner. Protokollstakken 3404 sender forespørseler til protokollmaskinvare-grensesnittslaget 3406 for å finne ut hvilke avlastningsmuligheter, om noen, som er tilgjengelige. Mellomdriveren 3414 angir at avlastning av forbindelsesflytting er tilgjengelig og sender forespørselen ned til PNI-miniport 3408. Dersom TCP-chimney-offload-funksjonalitet er støttet av et fysisk nettverksgrensesnitt 3410, angir PNI-miniport 3408 også dette. TCP-chimney-offload muliggjør avlastning av noe TCP/IP-prosessering til maskinvaren i det fysiske nettverksgrensesnittet 3410, og involverer en viss sammenstilling av protokolltilstanden 3420. Følgelig kan noe sammenstillings- og aggregeringslogikk være delt mellom de to avlastningsmekanismene.
Ved <2>, når en TCP- forbindelse er sortert, igangsetter sorterer 304 flytting av en TCP-forbindelse til en valgt vertsmaskin 108. Spesifikt sendes en flyttingskommando som identifiserer en mål-anordning 3500 over socket-laget 3402 til mellomleddet 3412.
Ved <3> igangsetter mellomleddet 3412 flyttingen av TCP-forbindelsen for å sammenstille TCP-protokolltilstanden. Spesifikt anroper mellomleddet 3412 et API for å iverksette avlastning av flytting av TCP-forbindelser (eller mer generelt en funksjon eller kommando for å flytte en forbindelse). Denne rutinen setter sammen den relevante tilstanden for den spesifiserte TCP-forbindelsen, som anvendes for å gjeninnsette forbindelsen i mål-anordningen 3500. Den sammenstilte protokolltilstanden 3420 omfatter tilstand fra de mellomliggende lagene i stakken, omfattende TCP-stakken 3404(T), IP-stakken 3404(1) og ARP-stakken 3404(A).
Ved <4>, når protokollstakken 3404 har satt satt sammen protokolltilstanden 3420 for TCP-forbindelsen som flyttes, anroper den en API-funksjon for å iverksette avlastning av forbindelseflytting på den miniporten den er bundet til; i dette eksempelet er denne miniporten identisk med mellomdriveren 3414.1 praksis kan det imidlertid være andre mellomliggende drivere innsatt mellom protokollstakken 3404 og mellomdriveren 3414, så som IP QoS. I så fall kan disse mellomliggende driverne delta i flyttingen, dersom det er aktuelt, ved å innsette/aggregere sin tilstand i forbindelsestilstandsinformasjonen for forbindelsen som flyttes. De mellomliggende driverne sender funksjonsanrop for å iverksette avlastning av forbindelsesflytting videre ned nettverksstakken, noe som til slutt fører til eksekvering av en "migrate-offload"-behandler i mellomdriveren 3414. På dette tidspunktet legger mellomdriveren 3414 også til eventuelle bekreftede data i den gjenværende forbindelsestilstanden for overføring av TCP-forbindelsen til mål-anordningen 3500.
Ved <5>, etter lagring/kopiering av forbindelsestilstandsinformasjon for TCP-forbindelsen som flyttes, varsler mellomdriveren 3414 nettverksstakken om at flyttingen er i sin avsluttende fase ved å anrope en API-funksjon som angir at initieringen av avlastning av forbindelsesflytting er fullført. Denne API-funksjonen følger motsatt vei opp nettverksstakken, gjennom de samme mellomliggende driverne (hvis noen) og til slutt til protokollstakken 3404. Etter hvert som hvert lag prosesser dette anropet, kan tilstandsinformasjon assosiert med den flyttede forbindelsen offentliggjøres. Før prosesseringen av dette anropet er fullført, kan hvert lag sende oppdateringsvarslinger ned nettverksstakken for å oppdatere en hvilken som helst del av forbindelsestilstanden som har endret seg siden flyttingen ble igangsatt.
Ved <6>, når rutinen for å angi at initieringen av avlastning av forbindelsesflytting er fullført kommer til TCP-stakken 3404(T), lukker TCP forbindelsen i det stille (dvs. at ingen "reset" blir sendt til klient 108), fjerner all tilstand assosiert med den flyttede forbindelsen og sender rutinen videre til mellomleddet 3412. På dette tidspunktet har ikke nettverksstakken noen som helst kunnskap om den flyttede TCP-forbindelsen.
Ved <7>, når anropet for å angi at initieringen av avlastning av forbindelsesflytting er fullført returnerer til mellomdriveren 3414 (via mellomleddet 3412 av forbindelsesflytter 310), kan flyttingen av TCP-forbindelsen fra den opprinnelige anordningen 3400 til mål-anordningen 3500 påbegynne overføringen av forbindelsestilstanden til denne. Forbindelsestilstanden kan bli overført på en asynkron og pålitelig måte.
Når flytting er igangsatt, har den opprinnelige anordningen 3400 også ansvar for å sørge for at påfølgende data fra klienten 108 blir videresendt til mål-anordningen 3500. Følgelig beholder derfor den opprinnelige anordningen noe av tilstanden for forbindelsen (f.eks. en post i en rutingstabell) også etter at forbindelsen er flyttet til mål-anordningen for å kunne rute påfølgende pakker til mål-anordningen. Når forbindelsen er terminert, varsler mål-anordningen den opprinnelige anordningen for å gi den mulighet til å rydde opp i den tilstandsinformasjonen som måtte være igjen for den flyttede forbindelsen.
Videre, som følge av forbindelsesflyttingens asynkrone natur, vil datapakker for forbindelsen som flyttes som blir videresendt av den opprinnelige anordningen 3400 (eller en videresender utpekt av denne, hvis en separat anordning) kunne ankomme mål-anordningen 3500 før mål-anordningen 3500 mottar tilstanden for forbindelsen som flyttes. Mellomdriveren 3414 i mål-anordningen 3500 har ansvar for å bufre disse datapakkene inntil den assosierte flyttede forbindelsen er etablert på mål-anordningen 3500.
Figur 37 illustrerer et eksempel på opplastingsprosedyre 3700 for flytting av forbindelser. Prosedyren 3700 illustrerer ytterligere eksempelvise detaljer for
flytting av en forbindelse til en mål-anordning 3500.
Når en flyttet forbindelse ankommer mål-anordningen 3500, blir den videresendt til mellomdriveren 3414 for behandling. Etter integrering og opptak av den flyttede forbindelsestilstanden, setter mellomdriveren 3414, i kombinasjon med mellomleddet 3412, den flyttede forbindelsen inn i den lokale nettverksstakken på en måte som er usynlig for applikasjonen 316. For et eksempel på forbindelsesflytting-opplastingsprosedyre 3700 er flytting av en TCP-forbindelse beskrevet gjennom punkter <1 > til <8>.
Ved <1>, som beskrevet ovenfor med henvisning til forbindelsesflytting-avlastningsprosedyren 3600, utføres en initialisering før applikasjonsvert-operasjoner. Spesifikt fremsetter protokollstakken 3404 forespørseler vedrørende hvilke avlastningsmuligheter, om noen, som er tilgjengelige. Mellomdriveren 3414 fyller inn i forespørselen om støtte forflytting av TCP-forbindelser for å angi at opplasting av forbindelsesflytting er tilgjengelig, og sender også forespørselen videre ned til PNI-miniport 3408 for mulig TCP-chimney-offload-funksjonalitet.
Ved <2>, når forbindelsesflyttingsdata ankommer mål-anordningen 3500, blir forbindelsesflyttingsinformasjon (f.eks. en binærblokk 3422) levert til mellomdriveren 3414. Mellomdriveren 3414 reassemblerer forbindelsestilstanden, jamfører den med eventuelle assosierte data som har ankommet under flytteprosessen og forbereder for opplasting til nettverksstakken. Hvilke som helst data fra klient 102 som ankommer under prosessen med å laste opp den flyttede forbindelsen blir bufret av mellomdriveren 3414. Når flyttingen er korrekt fullført, vil dataene bli levert til applikasjonen 316.
Ved <3>, for å igangsette opplastingen av den flyttede forbindelsen til den lokale nettverksstakken, varsler mellomdriveren 3414 mellomleddet 3412 om at en forespørsel om en flyttet forbindelse har ankommet. Mellomdriveren 3414 sender også forbindelsestilstanden (eller i hvert fall protokolltilstanden 3420) til mellomleddet 3412.
Ved <4> initierer mellomleddet 3412 opplastingen av den flyttede forbindelsen ved å anrope en TCP-initiere-innsetting-rutine (eller mer generelt en funksjon for å iverksette innsetting av en protokolltilstand) og ved å tilveiebringe den flyttede protokolltilstanden 3420 til TCP-stakken 3404(T). Ved
<5> gjenskaper TCP/IP den flyttede forbindelsen i hele protokollstakken 3404 ved anvendelse av den tilveiebragte protokolltilstanden 3420. Denne protokolltilstanden 3420 kan omfatte én eller flere av transporttilstand (TCP), overføringsbane-tilstand (IP), nabo- og neste-ledd-tilstand (ARP) og annet.
Ved <6>, dersom den flyttede forbindelsen er korrekt gjenetablert på mål-anordningen 3500, initierer TCP en "connect"-hendelse til en klientandel av mellomleddet 3412 for å angi at en ny forbindelse er etablert. Det finnes mange mulige årsaker til feiltilstander, men vanlige årsaker kan omfatte fravær av en tilhørende lytter, rutingsfeil, etc. I de tilfeller hvor nettverksstakken ikke er i stand til å gjenetablere den flyttede forbindelsen, tilveiebringes ingen "connect"-hendelse, og en feilstatus spesifiseres i anropet for å angi at initiering av innsetting er fullført. Forbindelsesflytter 310 har ansvar for å rydde opp etter flyttingen og for å sende en "reset"-varsling tilbake til klienten 102 for å avvise forbindelsen.
Ved <7> tjener mellomleddet 3412 som en forsyner for å formidle "connecf-hendelsen til socket-laget 3402 for å angi for den lyttende applikasjonen 316 at en ny forbindelse har blitt etablert. Dersom applikasjonen 316 aksepterer forbindelsen, behandler den forespørselene og svarer med vanlige socket-baserte lese- og skriveoperasjoner; applikasjonen 316 kan være uvitende om at forbindelsen har blitt flyttet. Dersom forbindelsen ikke aksepteres av applikasjonen 316, terminerer TCP forbindelsen, men sender ikke en "reset"-varsling tilbake til klienten 102. Som over spesifiseres en feilstatus i anropet for å angi at initiere innsetting er fullført, og forbindelsesflytter 310 har ansvar for å rydde opp etter flyttingen og for å sende en "reset"-varsling tilbake til klienten 102 for å avvise forbindelsen.
Et spesialtilfelle oppstår når applikasjonen 316 og sortereren 304 befinner seg i samme anordning: mellomleddet 3412 kan velge mellom dem. Når begge typen programmer befinner seg i samme vertsmaskin 108, vil begge kunne lytte til samme IP-adresse(r) og port(er). TCP har imidlertid typisk én lytter per unike par av IP-adresse og portnummer. Følgelig vil mellomleddet 3412 kunne hindre en konfigurasjon hvor to programmer lytter på samme par av IP adresse og portnummer ved å multiplekse de to socketene til én enkelt lytter på TCP-laget.
I et slikt tilfelle, når "connect"-hendelser ankommer ved klient-andelen av mellomleddet 3412, bestemmer mellomleddet 3412 i egenskap av å være forsyner hvilken lyttende socket å levere "connect"-meldingen til på socket-laget 3402. Dersom det kun er én socket som lytter på det aktuelle paret av IP-adresse og portnummer, mottar da denne socketen "connecf-hendelsen. Dersom det er flere enn én socket som lytter, vil da mottakeren avhenge av i hvilken sammenheng "connecf-hendelsen er angitt. Dersom "connecf-hendelsen er en ny forbindelse til en virtuell IP-adresse, blir da "connecf-hendelsen sendt til sorterer 304, mens dersom "connecf-hendelsen er til en fast IP-adresse (en ikke lastbalansert IP-adresse) eller er resultat av opplasting av en flyttet forbindelse, blir da "connecf-hendelsen sendt til mål-applikasjonen 316.
Ved <8>, når innsettingen av den flyttede forbindelsen er fullført, varsler TCP-mellomleddet 3412 ved å anrope den tilveiebragte initiate-inject-complete-behandleren. En statuskode tilveiebringes for å angi for mellomleddet 3412 hvorvidt forbindelsen er korrekt opplastet eller ikke. Dersom opplastingen av den flyttede forbindelsen går feil, har forbindelsesflytter 310 ansvar for å rydde opp etter flyttingen og for å varsle klienten 102 om at forbindelsen er avvist ved å sende den en "reset". Dersom den flyttede forbindelsen er korrekt lagt inn i den lokale nettverksstakken, kan mellomdriveren 3414 begynne å levere eventuelle bufrede data fra klienten 102 ved å sende den eller de mottatte datapakkene opp pakkemottaksbanen til protokollmaskinvare-grensesnittet 3406.
Når en flyttet forbindelse avsluttes (fordi opplastingen gikk feil, fordi den flyttede forbindelsen senere blir lukket på normal måte, etc), varsler mål-anordningen 3500 den opprinnelige anordningen 3400. Den opprinnelige anordningen 3400 benytter disse varslingene til på en mer effektiv og pålitelig måte å rydde opp i gjenværende tilstand for flyttede forbindelser, inklusive poster i rutingstabeller. For å holde rede på vellykket flyttede forbindelser som terminerer på vilkårlig måte på et senere tidspunkt, kan derfor mellomleddet 3412 overvåke aktiviteten i disse og varsle mellomdriveren 3414 når socketene for dem blir lukket.
Figur 38 illustrerer et eksempel på tunnelføring av datapakker mellom en videresender 302 og en vertsmaskin 108. Innkapslede datapakker 3808 kan bli sendt i tunnel fra videresender 302 til vertsmaskin 108 uten en assosiert økning av prosesseringstiden for hver overførte datapakke. Som beskrevet ytterligere nedenfor, bevirkes tunnelføring med bruk av en datastrøm-identifikator 3814 og avbildningstabeller 3806 og 3810, henholdvis i tunnelere 312(F) og 312(H) i henholdsvis videresender 302 og vertsmaskin 108. Datastrøm-identifikatoren 3814 settes inn i innkapslede datapakker 3808.
Som nevnt ovenfor i forbindelse med figur 32, kan datapakker for en forbindelse som ankommer etter flytting av forbindelsen bli sendt av videresender 302 til vertsmaskin 108(1) med bruk av tunnelføring gjennom en tunneler 312. Ved (8) (i figur 32) sender videresender 302 slike påfølgende datapakker fra videresender 302 med nettverksadresse "F" til vertsmaskin 108(1), som har nettverksadresse "H1". Som beskrevet ovenfor i forbindelse med figur 4, kan videresender 302 anvende NAT, semi-NAT, tunnelføring, etc. for å rute de innkommende datapakkene til vertsmaskin 108(1).
Slike innkommende datapakker inneholder en destinasjons-IP-adresse som er den virtuelle IP-adressen, og en kilde-IP-adresse "C1" for datapakker som ankommer fra klient 102(1). Datapakkene som blir sendt til vertsmaskin 108(1) har destinasjons-IP-adresse H1 og kildeadresse C1 (for semi-NAT) eller "F" (for full NAT). Denne overskrivingen av adressene kan være inkompatibel med protokoller som forventer at klienten 102(1) og vertsmaskinen 108(1) "ser" samme kilde- og destinasjonsadresse.
Videre, i hvert fall når det gjelder full NAT, kan ikke returbaner fra vertsmaskin 108(1) til klient 102(1) som ikke går gjennom videresender 302 anvendes fordi vertsmaskin 108(1) ikke kjenner adressen til klient 102(1). Direkte overføringsruter fra vertsmaskin 108(1) til klient 102(1) er ønskelig i tilfeller der trafikken fra vertsmaskin 108(1) til klient 102(1) er spesielt stor og/eller betydelig større enn trafikken i motsatt retning (f.eks. når vertsmaskin
108(1) tilveiebringer datastrøm-baserte medier til klient 102(1)).
Tunnelføring gjennom tunnelere 312 som beskrevet her kan sørge for at klienter 102 og applikasjoner 316 på vertsmaskiner 108 ser identiske kilde- og destinasjonsadresser (og portnumre). Som et eksempel, og med henvisning til figurene 34 og 35, kan tunneler 312 i hver av videresender 302 og vertsmaskin 108 kjøre som en del av eller i kombinasjon med en mellomdriver 3414 i en forbindelsesflytter 310.
I en utførelse beskrevet i forbindelse med figur 38, tilveiebringer forbindelsesflytter 310 en avbildning 3812 mellom en datastrøm-identifikator
3814 og et TCP/IP 4-tuppel 3804. Forbindelsesflytter 310 kan være tilknyttet en sorterer 304, og forbindelsesflytter 310 (eventuelt sammen med en slik sorterer 304) kan befinne seg i samme anordning som videresender 302. Alternativt kan forbindelsesflytter 310 (så vel som sorterer 304) befinne seg i en annen anordning enn videresender 302. Avbildningen 3812 kan alternativt være tilveiebragt av eller i forbindelse med funkjonalitet i tunneler 312, som for eksempel er tilveiebragt i og/eller er tilknyttet en sorterer 304.
Ved at den avbildes til et TCP/IP 4-tuppel 3804 i avbildningen 3812, tjener datastrøm-identifikatoren 3814 til å identifisere en strøm av innkapslede datapakker 3808 for en gitt forbindelse. TCP/IP 4-tuppelet 3804 omfatter nettverksadresser (og portnumre, etc.) for kilden og destinasjonen for en gitt forbindelse i henhold til en TCP/IP-protokoll, eller en hvilken som helst tilsvarende eller liknende protokoll. Datastrøm-identifikatoren 3814 er 32 bit lang i en beskrevet utførelsesform, ettersom 32 bit er tilgjengelig for forbindelser etablert i overensstemmelse med IPv4-protokollen. Imidlertid kan alternativt datastrøm-identifikatorer 3814 med en annen lengde anvendes, spesielt for andre protokoller så som IPv6, UDP og annet.
Datastrøm-identifikatorer 3814 kan bli generert ved hjelp av en hvilken som helst egnet mekanisme, så som en inkrementert forbindelsesteller. Videre er et TCP/IP 4-tuppel 3804 mer generelt et kilde/destinasjon-par. Hver kilde og destinasjon i et gitt kilde/destinasjon-par kan omfatte en nettverksnode-identifikator (f.eks. en nettverksadresse, et portnummer, en kombinasjon av dette, etc.) henholdsvis for kilden og destinasjonen til en gitt datapakke som blir
overført over en gitt forbindelse.
Forbindelsesflytter 310 tilveiebringer avbildningen 3812 til vertsmaskin 108. Tunneler 312(H) i vertsmaskin 108 lagrer avbildningen 3812 i avbildningstabellen 3810 som post 3810(1). Tunneler 312(H) kan deretter benytte datastrøm-identifikatoren 3814 til å avbilde til og identifisere den aktuelle forbindelsen som svarer til TCP/IP 4-tuppelet 3804. Avbildningen 3812 kan eventuelt bli tilveiebragt til vertsmaskin 108 som del av en sammensatt binærblokk 3422 i en forbindelsesflyttingsoperasjon.
Videresender 302 omfatter også en tunneler-komponent 312(F) som har en avbildningstabell 3806. Tabellen 3806 lagrer en post 3806(1) som knytter/avbilder et TCP/IP 4-tuppel 3804 for en gitt forbindelse til en datastrøm-identifikator 3814. Tunneler 312(F) mottar også avbildningsinformasjonen for posten 3806(1) fra forbindelsesflytter 310 (f.eks. i form av en avbildning 3812).
Selv om kun én avbildningspost 3806(1) og 3810(1) er vist, kan både avbildningstabell 3806 og avbildningstabell 3810 inneholde flere slike poster. Disse avbildningstabellene 3806 og 3810 kan bli kombinert med annen informasjon, så som tabeller for sesjonsinformasjon i sesjonssporer 308.
Når en avsenderanordning (så som videresender 302) og en mottakeranordning (så som vertsmaskin 108) for innkapslede datapakker 3808 kun sender i tunnel mellom hverandre, vil innkapslingsavbildningstabellene i disse mest sannsynlig inneholde de samme postene. Ellers vil avbildningstabell 3806 og avbildningstabell 3810 mest sannsynlig inneholde et forskjellig totalt sett av avbildningsposter, henholdsvis 3806() og 3810().
Under kjøring mottas en innkommende datapakke 3802 for en gitt forbindelse ved videresender 302. Den aktuelle forbindelsen er assosiert med TCP/IP 4-tuppelet 3804. Den innkommende datapakken 3802 omfatter et TCP/IP 4-tuppel 3804 med en kilde-IP-adresse (til en klient 102), en destinasjons-IP-adresse (den virtuelle IP-adressen), en kilde-TCP-port (til klienten 102) og en destinasjons-TCP-port.
Tunneler 312(F) tar imot den innkommende datapakken 3802 for tunnelføring til vertsmaskin 108. Med bruk av TCP/IP 4-tuppelet 3804 aksesserer tunneler 312(F) avbildningstabellen 3806 og finner avbildningsposten 3806(1). Datastrøm-identifikatoren 3814 oppnås fra posten 3806(1), som assosiert med/avbildet til TCP/IP 4-tuppelet 3804.
For å danne den innkapslede datapakken 3808 legger tunneler 312(F) inn en datastrøm-identifikator 3814 i kildeport- og destinasjonsport-andelene av TCP/IP 4-tuppelet. I en utførelse med IPv4 tilveiebringer disse to TCP-port-andelene tilsammen 32 bit med lagringsplass. I kilde-IP-adressen i TCP/IP 4-tuppelet legger tunneler 312(F) inn IP-adressen "F" til videresender 302.1 destinasjons-IP-adressen i TCP/IP 4-tuppelet legger tunneler 312(F) inn IP-adressen "H" til vertsmaskin 108.
Videresender 302 ruter/sender den innkapslede datapakken 3808 til vertsmaskin 108, og vertsmaskin 108 mottar den innkapslede datapakken 3808 fra videresender 302. Tunneler-komponenten 312(1-1) i vertsmaskin 108 opppdager at den innkapslede datapakken 3808 er en tunnelført pakke som skal pakkes ut.
Datastrøm-identifikatoren 3814 hentes fra den innkapslede datapakken 3808 og brukes til å slå opp det motsvarende TCP/IP 4-tuppelet 3804 i avbildningsposten 3810(1) i avbildningstabellen 3810. TCP/IP 4-tuppelet 3804 brukes av tunneler 312(H) til å gjenopprette headeren med TCP/IP 4-tuppelet 3804 som opprinnelig mottatt i den innkommende datapakken 3802 ved videresender 302.
Spesifikt blir IP-adressen F til videresender 302 byttet ut med kilde-IP-adressen, og IP-adressen H til vertsmaskin 108 blir erstattet med destinasjons-IP-adressen. Videre blir datastrøm-identifikatoren 3814 byttet ut med kilde-TCP-porten og destinasjons-TCP-porten. Den utpakkede datapakken blir deretter anvist opp nettverksstakken i vertsmaskin 108 til mål-applikasjonen 316.
Mer generelt kan en del av en datapakke-header, inklusive en del av et kilde/destinasjon-par, for en gitt pakke som ikke nødvendigvis blir anvendt for å kommunisere den aktuelle datapakken, brukes til å overføre en datastrøm-identifikator 3814. Ved at i hvert fall en del av kilde/destinasjon-paret på forhånd tilveiebringes ved vertsmaskin 108, kan en datastrøm-identifikator 3814 benyttes til å tunnelføre (f.eks. innkapsle og/eller pakke ut) datapakker uten å øke prosesseringstiden for hver datapakke. Videre kan datapakker som er komplette med hensyn til en gitt protokoll, bli overført i tunnel uten å deles opp.
Figur 39 er et flytdiagram 3900 som illustrerer et eksempel på fremgangsmåte for tunnelføring av datapakker mellom en første anordning og en andre anordning. For eksempel kan den første anordningen og den andre anordningen henholdsvis svare til en opprinnelig anordning 3400 og en mål-anordning 3500, henholdsvis i infrastrukturen for lastbalansering 106 og i en samling av vertsmaskiner 108. Tunnelføring kan imidlertid også anvendes i miljøer uten lastbalansering.
Flytdiagrammet 3900 omfatter tolv blokker 3902-3924. Selv om handlingene i flytdiagrammet 3900 kan bli utført i andre miljøer og med en rekke forskjellige programvaresystemer, anvendes figurene 1-3, 32, 34, 35 og 38 spesielt for å illustrere visse aspekter ved og eksempler på fremgangsmåten.
I blokk 3902 sendes en avbildning fra en datastrøm-identifikator til et TCP/IP 4-tuppel til en mål-anordning fra en opprinnelig anordning. For eksempel kan den opprinnelige anordningen 3400 sende en avbildning 3812 som assosierer en datastrøm-identifikator 3814 med et TCP/IP 4-tuppel 3804.1 blokk 3914 mottas avbildningen av datastrøm-identifikatoren til TCP/IP 4-tuppelet ved mål-anordningen fra den opprinnelige anordningen. For eksempel mottar mål-anordningen 3500 avbildningen 3812 som assosierer datastrøm-identifikatoren 3814 med TCP/IP 4-tuppelet 3804, fra den opprinnelige anordningen 3400.
Alternativt kan mål-anordningen 3500 motta innkapslings-avbildningen 3812 fra en annen anordning. Som angitt av de stiplede pilene 3926 og 3928, kan handlingene i blokkene 3904-3912 og blokkene 3916-3924 henholdsvis bli utført en tid etter handlingene i blokkene 3902 og 3914.
I blokk 3904 mottas en innkommende pakke ved den opprinnelige anordningen fra en klient. For eksempel kan en innkommende pakke 3802 med en header som inneholder TCP/IP 4-tuppelet 3804 blir mottatt ved den opprinnelige anordningen 3400 fra en klient 102.1 blokk 3906 oppnås en datastrøm-identifikator for en forbindelse svarende til datapakken fra klienten ved anvendelse av TPC/IP 4-tuppelet i den innkommende datapakken. For eksempel kan datastrøm-identifikatoren 3814 for forbindelsen med klient 102 slås opp med bruk av TCP/IP 4-tuppelet 3804 som er avbildet til denne i en avbildningpost 3806(1) i en avbildningstabell 3806.
I blokk 3908 erstattes kilde-IP-adressen og destinasjons-IP-adressen i den innkommende datapakken henholdsvis med en IP-adresse til den opprinnelige anordningen og en IP-adresse til mål-anordningen. Foreksempel kan den opprinnelige anordningen 3400 bytte ut IP-adressene i TCP/IP 4-tuppelet 3804 i en header av den innkommende datapakken 3802 med IP-adressene til den opprinnelige anordningen 3400 og mål-anordningen 3500.
I blokk 3910 erstattes kildeporten og destinasjonsporten i den innkommende datapakken med datastrøm-identifikatoren. For eksempel kan den opprinnelige anordningen 3400 bytte ut kildeporten og destinasjonsporten i TCP/IP 4-tuppelet 3804 i headeren av den innkommende datapakken 3802 med datastrøm-identifikatoren 3814.1 blokk 3912 sendes den innkapslede datapakken fra den opprinnelige anordningen til mål-anordningen. For eksempel kan den opprinnelige anordningen 3400 sende en innkapslet datapakke 3808 til mål-anordning 3500.
I blokk 3916 mottas den innkapslede datapakken fra den opprinnelige anordningen ved mål-anordningen. For eksempel kan mål-anordningen 3500 motta den innkapslede datapakken 3808 fra den opprinnelige anordningen 3400.1 blokk 3918 slås TCP/IP 4-tuppelet for forbindelsen som svarer til datapakken mottatt fra klienten opp ved anvendelse av datastrøm-identifikatoren. For eksempel kan mål-anordningen 3500 aksessere en post 3810(1) i en avbildningstabell 3810 som avbilder datastrøm-identifikatoren 3814 til TCP/IP 4-tuppelet 3804.
I blokk 3920 erstattes den opprinnelige anordningens IP-adresse og den mål-anordningens IP-adresse henholdsvis med kilde-IP-adressen og destinasjons-IP-adressen ved anvendelse av det oppnådde TCP/IP 4-tuppelet. For eksempel kan mål-anordningen 3500 bytte ut IP-adressene til den opprinnelige anordningen 3400 og mål-anordningen 3500 i den innkapslede datapakken 3808 med kilde-IP-adressen og destinasjons-IP-adressen fra TCP/IP 4-tuppelet 3804, som oppnådd fra avbildningstabellen 3810.
I blokk 3922 erstattes datastrøm-identifikatoren med kildeporten og destinasjonsporten for den innkommende datapakken ved anvendelse av det oppnådde TCP/IP 4-tuppelet. For eksempel kan mål-anordningen 3500 bytte ut datastrøm-identifikatoren 3814 i den innkapslede datapakken 3808 med kilde-TCP-porten og destinasjons-TCP-porten fra TCP/IP 4-tuppelet 3804.1 blokk 3924 anvises datapakken fra klienten opp til en applikasjon i mål-anordningen. For eksempel anvises en utpakket versjon av den innkapslede datapakken 3808, eller den innkommende datapakken 3802, opp til applikasjonen 316 i mål-anordningen 3500.
Handlinger, aspekter, særtrekk, komponenter, etc. i figurene 1-39 er illustrert i diagrammer som er delt inn i et antall blokker eller trinn. Rekkefølgen, innbyrdes relasjoner, layouter, etc. i eller med hvilke figurene 1-39 er beskrevet og/eller vist er imidlertid ikke ment som en begrensning, og et hvilket som helst antall blokker eller trinn kan kombineres, ominnrettes, utvides, utelates, etc. på en hvilken som helst måte for å realisere hvilke som helst systemer, fremgangsmåter, anordninger, prosedyrer, medier, API-funksjoner, apparater, innretninger, etc. for balansering av nettverksbelastning. Videre, selv om beskrivelsen her omfatter henvisninger til spesifikke utførelsesformer (og til eksempelet på kjøremiljø i figur 40), kan de illustrerte og/eller beskrevne utførelselser bli realisert i en hvilken som helst egnet maskinvare, programvare, fastvare eller kombinasjon av disse, og med bruk av hvilke som helst egnede nettverksorganiseringer, transport/kommunikasjonsprotokoller, API-funksjoner, klient/tjener-arkitekturer og annet.
Eksempel på kjøremiljø for en datamaskin eller en annen anordning.
Figur 40 illustrerer et eksempel på et kjøremiljø 4000 for en datamaskin (eller en generell elektronisk anordning) som (helt eller delvis) kan implementere minst én av et system, en anordning, en komponent, en innretning, en protokoll, en tilnærming, en fremgangsmåte, en prosedyre, et medium, et API, en kombinasjon av disse, etc. for balansering av nettverksbelastning som beskrevet her. Kjøremiljøet 4000 kan anvendes i de datamaskin- og nettverksarkitekturene som er beskrevet nedenfor eller alene.
Eksempelet på kjøremiljø 4000 er bare ett eksempel på et miljø, og er ikke ment å antyde noen som helst begrensning vedrørende bruksområdet eller funksjonaliteten til de anvendelige anordningsarkitekturene (idet en anordning kan omfatte en datamaskin, en nettverksnode, en underholdningsanordning, en mobil innretning, en generell elektronisk anordning, etc). Heller ikke skal kjøremiljøet 4000 tolkes å ha noen som helst avhengighet av eller krav vedrørende noen enkelt komponent eller kombinasjon av komponenter som er illustrert i figur 40.
I tillegg kan balansering av nettverksbelastning implementeres med en rekke forskjellige andre generelle eller spesialiserte anordninger (inklusive datasystemer), miljøer eller konfigurasjoner. Eksempler på velkjente anordninger, systemer, miljøer og/eller konfigurasjoner som kan være anvendelige omfatter, men er ikke begrenset til, personlige datamaskiner, tjenermaskiner, tynne klienter, tykke klienter, personlige digitale assistenter (PDA-er) eller mobiltelefoner, klokker, håndholdte anordninger eller "laptop"-anordninger, flerprosessorsystemer, mikroprosessor-baserte systemer, "set top"-bokser, programmerbar forbrukerelektronikk, videospill-maskiner, spillkonsoller, bærbare eller håndholdte spillenheter, personlige datamaskiner i nettverk, minidatamaskiner, stormaskiner, nettverksnoder, distribuerte eller fleroppgave-databehandlingsmiljøer som omfatter hvilke som helst av de ovenfor nevnte systemer eller anordninger, en hvilken som helst kombinasjon av disse, osv.
Utførelser av balansering av nettverksbelastning kan beskrives i den generelle sammenhengen prosessor-eksekverbare instruksjoner. Generelt omfatter prosessor-eksekverbare instruksjoner rutiner, programmer, protokoller, objekter, grensesnitt, komponenter, datastrukturer og liknende som utfører og/eller muliggjør spesifikke oppgaver og/eller implementerer spesifikke abstrakte datatyper. Balansering av nettverksbelastning, som beskrevet i gitte utførelser her, kan også praktiseres i distribuerte datamiljøer der oppgaver utføres av fjernkoplede prosesseringsanordninger som er forbundet via en kommunikasjonslink og/eller et nettverk. Spesielt i et distribuert databehandlingsmiljø kan prosessor-eksekverbare instruksjoner være lagret i separate lagringsmedier, bli eksekvert av forskjellige prosessorer og/eller bli sendt over overføringsmedier.
Eksempelet på kjøremiljø 4000 omfatter en generell dataanordning i form av en datamaskin 4002, som kan omfatte en hvilken som helst (f.eks. elektronisk) anordning med funksjonalitet for databehandling/prosessering. Komponentene av datamaskinen 4002 kan omfatte, men er ikke begrenset til, én eller flere prosessorer eller prosesseringsenheter 4004, et systemminne 4006 og en systembus 4008 som forbinder forskjellige systemkomponenter, inklusive prosessoren 4004, med systemminnet 4006.
Prosessorer 4004 er ikke begrenset med hensyn til tilvirkningsmateriale eller prosesseringsmekanismene som anvendes i disse. For eksempel kan prosessorer 4004 innbefatte én eller flere halvledere og/eller transistorer (f.eks. elektroniske integrerte kretser). I denne sammenhengen kan prosessor-eksekverbare instruksjoner være elektronisk eksekverbare instruksjoner. Videre kan mekanismene i eller for prosessorene 4004, og således for datamaskinen 4002 omfatte, men er ikke begrenset til, kvanteteknologi-basert databehandling, optisk databehandling, mekanisk databehandling (som f.eks. anvender nanoteknologi) og annet.
Systembussen 4008 representerer én eller flere av hvilke som helst av mange typer kablede eller trådløse busstrukturer, omfattende en minnebuss eller minnekontrolller, en punkt-til-punkt forbindelse, en svitsjingsenhet, en periferienhet-buss, en akselerert grafikkport og en prosessor- eller lokal buss, som anvender en hvilken som helst av en rekke tilgjengelige bussarkitekturer. Som eksempler kan slike bussarkitekturer omfatte en ISA (Industry-Standard-Architecture)-buss, en MCA (Micro-Channel-Architecture)-buss, en EISA (Enhanced ISA)-buss, en lokal VESA (Video-Electronics-Standards-Associate)-buss, en PCI (Peripheral-Component-lnterconnect)-buss, også kjent som en Mezzanine-buss, en hvilken som helst kombinasjon av disse, osv.
Datamaskinen 4002 omfatter typisk forskjellige prosessor-aksesserbare medier. Et slikt medium kan være et hvilket som helst tilgjengelig medium som kan aksesseres av datamaskinen 4002 eller en annen (f.eks. elektronisk) anordning, og omfatter både volatile og ikke-volatile medier, flyttbare og ikke-flyttbare medier samt lagrings- og overføringsmedier.
Systemminnet 4006 omfatter prosessor-aksesserbare lagringsmedier i form av volatilt minne, så som et direkteaksessminne (RAM) 4010 og/eller ikke-volatilt minne, så som leseminne (ROM) 4012. Et BIOS (basic input/output system) 4014, som inneholder de grunnleggende rutinene som hjelper til med å overføre informasjon mellom elementer i datamaskinen 4002, for eksempel under oppstart, er typisk lagret i ROM 4012. RAM 4010 inneholder typisk data og/eller programmoduler/instruksjoner som er umiddelbart tilgjengelige for og/eller som blir operert på av prosesseringsenheten 4004.
Datamaskinen 4002 kan også omfatte andre flyttbare/ikke-flyttbare og/eller volatile/ikke-volatile lagringsmedier. Som et eksempel illustrerer figur 40 en harddiskstasjon eller et sett av diskstasjoner 4016 for å lese fra og skrive til et (typisk) ikke-flyttbart, ikke-volatilt magnetisk medium (ikke vist separat), en magnetdiskstasjon 4018 for å lese fra og skrive til en (typisk) flyttbar, ikke-volatil magnetdisk 4020 (f.eks. en "diskett"), og en optisk disk-stasjon 4022 for å lese fra og/eller skrive til en (typisk) flyttbar, ikke-volatil optisk disk 4024 så som en CD, en DVD eller et annet optisk medium. Harddiskstasjonen 4016, magnetdiskstasjonen 4018 og optisk disk-stasjonen 4022 er alle koplet til systembussen 4008 via ett eller flere lagringsmedium-grensesnitt 4026. Alternativt kan harddiskstasjonen 4016, magnetdiskstasjonen 4018 og optisk disk-stasjonen 4022 være koplet til systembussen 4008 gjennom ett eller flere andre separate eller kombinerte grensesnitt (ikke vist).
Lagringsstasjonene og deres assosierte prosessor-aksesserbare medier tilveiebringer ikke-volatil lagring av prosessor-eksekverbare instruksjoner, så som datastrukturer, programmoduler og andre data for datamaskinen 4002. Selv om den eksempelvise datamaskinen 4002 innbefatter en harddisk 4016, en flyttbar magnetdisk 4020 og en flyttbar optisk disk 4024, må det forstås at andre typer prosessor-aksesserbare medier kan lagre instruksjoner som kan aksesseres av en anordning, så som magnetkasetter eller andre magnetiske lagringsanordninger, flash-minne, CD-ROM, DVD-er eller annen optisk lagring, RAM, ROM, EEPROM (Electrically-Erasable Programmable Read-Only Memory), osv. Slike medier kan også omfatte såkalte spesialiserte eller fastkodede integrerte kretsbrikker. Med andre ord kan et hvilket som helst prosessor-aksesserbart medium anvendes som lagringsmedium i det
eksemplifiserte kjøremiljøet 4000.
Et hvilket som helst antall programmoduler (eller andre enheter eller sett av instruksjoner/koder) kan være lagret i harddisk 4016, magnetdisk 4020, optisk disk 4024, ROM 4012 og/eller RAM 4010, omfattende, som et generelt eksempel, et operativsystem 4028, ett eller flere applikasjonsprogrammer 4030, andre programmoduler 4032 og programdata 4034.
En bruker kan mate inn kommandoer og/eller informasjon til datamaskinen 4002 via innmatingsanordninger så som et tastatur 4036 og en pekeranordning 4038 (f.eks. en "mus"). Andre innmatingsanordninger 4040 (ikke vist spesifikt) kan omfatte en mikrofon, en styrespak, en spillkontroll, en parabolantenne, en serieport, en skanner og/eller liknende. Disse og andre innmatingsanordninger er koplet til prosesseringsenheten 4004 via inn/ut-grensesnitt 4042 som er koplet til systembussen 4008. Inn- og/eller utmatingsanordninger kan imidlertid istedet være tilkoplet via andre grensesnitt og busstrukturer, så som en parallelport, en spillutgang, en USB(Universal Serial Bus)-port, et IEEE 1394 ("Firewire")-grensesnitt, et IEEE 802.11 trådløst grensesnitt, et Bluetooth<®>trådløst grensesnitt, osv.
En monitor/fremvisningsskjerm 4044 eller en annen type fremvisningsanordning kan også være koplet til systembussen 4008 via et grensesnitt, så som et videoadapter 4046. Videoadapteret 4046 (eller en annen komponent) kan være eller kan omfatte et grafikk-kort for å prosessere grafikktunge beregninger og for å håndere krevende fremvisningskrav. Et grafikk-kort omfatter typisk en grafikkprosesseringsenhet (GPU), et video-RAM (VRAM), etc. for å lette rask fremvisning av grafikk og øke ytelsen ved grafikkoperasjoner. I tillegg til monitoren 4044 kan andre periferiske utmatingsanordninger omfatte komponenter så som høyttalere (ikke vist) og en skriver 4048, som kan være koplet til datamaskinen 4002 via inn/ut-grensesnittet 4042.
Datamaskinen 4002 kan operere i et nettverksmiljø ved anvendelse av logiske forbindelser til én eller flere fjern-datamaskiner, så som en fjern-dataanordning 4050. Som et eksempel kan fjern-dataanordningen 4050 være en personlig datamaskin, en bærbar datamaskin (f.eks. en "laptop"-datamaskin, en bordmaskin, en PDA, en mobil terminal, etc), en hånd- eller lommeformat-datamaskin, en klokke, en spillanordning, en tjener, en ruter, en nettverksdatamaskin, en peer-anordning, en annen nettverksnode eller en annen type anordning nevnt ovenfor, osv. Fjern-dataanordningen 4050 er imidlertid illustrert i form av en bærbar datamaskin som kan omfatte mange av eller alle de elementene og trekkene som er beskrevet her med i forbindelse med datamaskinen 4002.
Logiske forbindelser mellom datamaskinen 4002 og fjern-datamaskinen 4050 er vist i form av et lokalt nettverk (LAN) 4052 og et generelt regionalt nettverk (WAN) 4054. Slike nettverksmiljøer er vanlige i kontorer, bedriftsomspennende datanettverk, intranett, Internett, stasjonære og mobile telefonnett, trådløse "ad hoc" og infrastruktur-baserte nettverk, andre trådløse nettverk, spillnettverk, en kombinasjon av slike, osv. Slike nettverk og kommunikasjonsforbindelser er eksempler på overføringsmedier.
Når den kjører i et LAN-nettverksmiljø, er datamaskinen 4002 vanligvis koplet til LAN 4052 via et nettverksgrensesnitt eller nettverkskort 4056. Når den kjører i et WAN-nettverksmiljø, omfatter datamaskinen 4002 typisk et modem 4058 eller andre mekanismer for å etablere kommunikasjon over WAN 4054. Modemet 4058, som kan være internt eller eksternt i forhold til datamaskinen 4002, kan være koplet til systembussen 4008 via inn/ut-grensesnittet 4042 eller hvilke som helst andre egnede mekanismer. Det må forstås at de illustrerte nettverksforbindelsene kun er eksempler, og at andre mekanismer for å etablere én eller flere kommunikasjonslinker mellom datamaskinene 4002 og 4050 kan anvendes.
Videre kan det anvendes annen maskinvare som er designet spesifikt for tjenere. For eksempel kan SSL-akseleratorkort anvendes for å avlaste SSL-beregninger. I tillegg, spesielt i et miljø for balansering av nettverksbelastning, kan maskinvare for TCP-avlastning og/eller datapakke-sorterere i nettverksgrensesnitt eller -adaptere 4056 (f.eks. i nettverkskort) installeres og anvendes i tjeneranordninger.
I et nettverksmiljø, så som det illustrert med kjøremiljøet 4000, kan programmoduler eller andre instruksjoner som er vist i forbindelse med datamaskinen 4002, eller deler av disse, være helt eller delvis lagret i en fjernlokalisert lagringsanordning. Som et eksempel befinner fjern-applikasjonsprogrammene 4060 seg i en minnekomponent i fjern-datamaskinen 4050, men vil kunne anvendes eller på annen måte aksesseres av datamaskinen 4002. Videre er for illustrasjonsformål applikasjonsprogrammene 4030 og andre prosessor-eksekverbare instruksjoner så som operativsystemet 4028, her vist som separate blokker, men det er underforstått at slike programmer, komponenter og andre instruksjoner til forskjellige tider befinner seg i forskjellige lagringskomponenter i dataanordningen 4002 (og/eller fjern-dataanordningen 4050) og eksekveres av prosessor(er) 4004 i datamaskin 4002 (og/eller de i fjern-dataanordning 4050).
Ytterligere utførelseseksempler
Det følgende er en ikke-utfyllende liste av ytterligere eksempler på utførelsesformer av oppfinnelsen: E1. Ett eller flere prosessor-aksesserbare medier som omfatter prosessor-eksekverbare instruksjoner som, når de blir eksekvert, instruerer et system til å utføre handlinger omfattende det å: motta informasjon om vertsmaskin-status fra et antall vertsmaskiner, og
foreta avgjørelser vedrørende lastbalansering basert på den mottatte vertsmaskin-statusinformasjonen.
E2. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E1, omfattende prosessor-eksekverbare instruksjoner som, når de blir eksekvert, instruerer systemet til å utføre en ytterligere handling som omfatter det å:
motta en forespørsel om en ny forbindelse fra en klient,
idet det å foreta avgjørelser omfatter det å:
velge et destinasjonmål for den nye forbindelsen basert på den mottatte vertsmaskin-statusinformasjonen.
E3. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E1, der informasjonen om vertsmaskinstatus omfatter tilstands- og/eller lastinformasjon assosiert med de flere vertsmaskinene, og der den handling å motta omfatter det å:
motta tilstands- og/eller lastinformasjon fra de flere vertsmaskinene.
E4. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E1, der vertsmaskin-statusinformasjonen omfatter applikasjons-spesifikk informasjon om vertsmaskin-status, og der det å foreta avgjørelser omfatter det å: foreta avgjørelser vedrørende lastbalansering basert på den mottatte applikasjons-spesifikke informasjonen om vertsmaskin-status.
E5. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E1, der det å motta omfatter minst én handling omfattende det å: motta informasjonen om vertsmaskin-status direkte fra én eller flere vertsmaskiner av de flere vertsmaskinene, og
motta informasjonen om vertsmaskin-status indirekte fra én eller flere vertsmaskiner av de flere vertsmaskinene.
E6. System, omfattende:
minst én prosessor, og
ett eller flere medier som omfatter prosessor-eksekverbare instruksjoner som kan bli eksekvert av den minst ene prosessoren, idet de prosessor-eksekverbare instruksjonene er innrettet for å instruere systemet til å utføre handlinger omfattende det å: motta informasjon om vertsmaskin-status fra et antall vertsmaskiner, og
ta avgjørelser vedrørende lastbalansering basert på den mottatte vertsmaskin-statusinformasjonen.
E7. System som beskrevet i utførelsesform E6, der den handling å motta omfatter det å: motta informasjonen om vertsmaskin-status fra de flere vertsmaskinene via minst én proxy.
E8. System som beskrevet i utførelsesform E6, der informasjonen om vertsmaskin-status omfatter minst ett direktiv for lastbalansering, og der den handling å motta omfatter det å: motta det minst ene lastbalanseringsdirektivet fra de flere vertsmaskinene via minst én proxy som anroper én eller flere API-funksjoner for å oversende det minst ene lastbalanseringsdirektivet.
E9. System som beskrevet i utførelsesform E6, der systemet omfatter minst én av en enkeltstående anordning og flere anordninger.
E10. Fremgangsmåte for balansering av nettverksbelastning, omfattende de trinn å:
bestemme statusinformasjon for et antall vertsmaskiner,
sende vertsmaskin-statusinformasjonen fra de flere vertsmaskinene til minst én anordning som innbefatter infrastrukturen for lastbalansering,
motta vertsmaskin-statusinformasjonen fra de flere vertsmaskinene ved den minst ene anordningen, og
foreta avgjørelser vedrørende lastbalansering med infrastrukturen for lastbalansering basert på den mottatte vertsmaskin-statusinformasjonen.
E11. Ett eller flere prosessor-aksesserbare medier som omfatter prosessor-eksekverbare instruksjoner som, når de blir eksekvert, instruerer et system til å utføre handlinger omfattende det å: samle opp informasjon om vertsmaskin-status ved et antall vertsmaskiner, og
sende den oppsamlede vertsmaskin-statusinformasjonen fra de flere vertsmaskinene.
E12. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E11, der vertsmaskin-statusinformasjonen omfatter tilstands-og/eller lastinformasjon assosiert med de flere vertsmaskinene, og der den handling å sende omfatter det å: sende tilstands- og/eller lastinformasjonen fra de flere vertsmaskinene.
E13. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E11, der den handling å samle opp informasjon omfatter det å: samle opp vertsmaskin-statusinformasjonen med hensyn til applikasjoner som kjører på de flere vertsmaskinene.
E14. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E11, der den handling å sende omfatter det å: sende den oppsamlede vertsmaskin-statusinformasjonen fra de flere vertsmaskinene til minst én proxy.
E15. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E11, der den handling å sende omfatter det å: sende den oppsamlede vertsmaskin-statusinformasjonen fra de flere vertsmaskinene til funksjonalitet for lastbalansering.
E16. System, omfattende:
en enhet for å bestemme informasjon om vertsmaskin-status som er innrettet for å bestemme statusinformasjon for en vertsmaskin, og
en enhet for å levere ut informasjon om vertsmaskin-status som er innrettet for å levere ut vertsmaskin-statusinformasjonen til infrastrukturen for lastbalansering.
E17. System som beskrevet i utførelsesform E16, der systemet videre omfatter:
én eller flere applikasjoner,
idet enheten for å bestemme informasjon om vertsmaskin-status bestemmer vertsmaskin-statusinformasjonen med hensyn til den ene eller de flere applikasjonene.
E18. System som beskrevet i utførelsesform E16, der systemet omfatter en anordning i hvilken vertsmaskinen befinner seg.
E19. System som beskrevet i utførelsesform E16, der systemet videre omfatter: en annen enhet for å bestemme informasjon om vertsmaskin-status som er innrettet for å bestemme ytterligere statusinformasjon for en annen vertsmaskin, og
en annen enhet for å levere ut informasjon om vertsmaskin-status som er innrettet for å levere ut den ytterligere vertsmaskin-statusinformasjonen til infrastrukturen for lastbalansering,
idet systemet omfatter en første anordning i hvilken vertsmaskinen befinner seg og en andre anordning i hvilken den andre vertsmaskinen befinner seg.
E20. Ett eller flere prosessor-aksesserbare medier som omfatter prosessor-eksekverbare instruksjoner som, når de blir eksekvert, gjør det mulig for et system å implementere en meldingsprotokoll mellom minst én vertsmaskin og én eller flere lastbalanseringsenheter, der meldingsprotokollen er anvendelig til å kommunisere tilstands- og/eller lastinformasjon mellom den minst ene vertsmaskinen og den ene eller de flere lastbalanseringsenhetene.
E21. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E20, der i hvert fall en del av de prosessor-eksekverbare instruksjonene omfatter programvare som er innrettet for å bli kjørt på den minst ene vertsmaskinen.
E22. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E20, der i hvert fall en del av de prosessor-eksekverbare instruksjonene omfatter programvare som er innrettet for å bli kjørt på den ene eller de flere lastbalanseringsenhetene.
E23. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E20, omfattende prosessor-eksekverbare instruksjoner som, når de blir eksekvert, gjør det mulig for systemet å implementere en meldingsprotokoll som omfatter minst én melding, idet den minst ene meldingen omfatter en livstegn-melding som angir for den ene eller de flere lastbalanseringsenhetene at den minst ene vertsmaskinen er operativ.
E24. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E23, der formatet til livstegn-meldingen omfatter en identifikator for den minst ene vertsmaskinen, feilsjekkingsdata for tilstands- og/eller lastinformasjon og et DNS-navn.
E25. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E23, der formatet til livstegn-meldingen muliggjør innlemmelse av et blokknummer/generasjonsidentifikator-par.
E26. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E20, omfattende prosessor-eksekverbare instruksjoner som, når de blir eksekvert, gjør det mulig for systemet å implementere meldingsprotokollen som omfatter minst én melding, idet den minst ene meldingen omfatter en farvel-melding som angir for den ene eller de flere lastbalanseringsenhetene at den minst ene vertsmaskinen planlegger nedstengning.
E27. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E26, der formatet til farvel-meldingen omfatter en identifikator for den minst ene vertsmaskinen.
E28. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E20, omfattende prosessor-eksekverbare instruksjoner som, når de blir eksekvert, gjør det mulig for systemet å implementere meldingsprotokollen som omfatter minst én melding, idet den minst ene meldingen omfatter en radendringsmelding som angir for den ene eller de flere lastbalanseringsenhetene at tilstands- og/eller lastinformasjon for en applikasjon i den minst ene vertsmaskinen er endret.
E29. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E28, der formatet til radendringsmeldingen omfatter en identifikator for den minst ene vertsmaskinen, en identifikator for applikasjonen, en operasjon for å reflektere endringen samt data for operasjonen.
E30. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E20, omfattende prosessor-eksekverbare instruksjoner som, når de blir eksekvert, gjør det mulig for systemet å implementere meldingsprotokollen som omfatter minst én melding, idet den minst ene meldingen omfatter en hent-kopi-av-tabell-melding som blir sendt av den ene eller de flere lastbalanseringsenhetene til den minst ene vertsmaskinen, og idet hent-kopi-av-tabell-meldingen ber om en kopi av gjeldende tilstands- og/eller lastinformasjon for den minst ene vertsmaskinen.
E31. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E30, der formatet til hent-kopi-av-tabell-meldingen omfatter en identifikasjon av en forespørrende lastbalanseringsenheten av den ene eller de
flere lastbalanseringsenhetene.
E32. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E20, omfattende prosessor-eksekverbare instruksjoner som, når de blir eksekvert, gjør det mulig for systemet å implementere meldingsprotokollen som omfatter minst én melding, idet den minst ene meldingen omfatter en send-kopi-av-tabell-melding som blir sendt fra den minst ene vertsmaskinen til en forespørrende lastbalanseringsenhet av den ene eller de flere lastbalanseringsenhetene, og idet send-kopi-av-tabell-meldingen tilveiebringer en kopi av gjeldende tilstands- og/eller lastinformasjon for den minst ene vertsmaskinen.
E33. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E32, der formatet til send-kopi-av-tabell-meldingen omfatter kopien av den gjeldende tilstands- og/eller lastinformasjonen for den minst ene vertsmaskinen.
E34. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E20, omfattende prosessor-eksekverbare instruksjoner som, når de blir eksekvert, gjør det mulig for systemet å implementere meldingsprotokollen som omfatter minst én melding, idet den minst ene meldingen omfatter en antatt-tabelltilstand-melding som blir sendt fra den minst ene vertsmaskinen til den ene eller de flere lastbalanseringsenhetene, idet antatt-tabelltilstand-meldingen omfatter et lastbalanseringstilstand-direktiv som angir et gjeldende lastbalanseringstilstand-direktiv som forventes av den minst ene vertsmaskinen å gjelde i den ene eller de flere lastbalanseringsenhetene.
E35. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E34, der formatet til antatt-tabelltilstand-meldingen omfatter en identifikator for den minst ene vertsmaskinen og det gjeldende lastbalanseringstilstand-direktivet.
E36. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E20, omfattende prosessor-eksekverbare instruksjoner som, når de blir eksekvert, gjør det mulig for systemet å implementere meldingsprotokollen som omfatter minst én melding, idet den minst ene meldingen omfatter en antagelse-feil-melding som blir sendt fra en lastbalanseringsenhet av den ene eller de flere lastbalanseringsenhetene til den minst én vertsmaskin som har sendt en antatt-tabelltilstand-melding, og idet antagelse-feil-meldingen angir at lastbalanseringsenheten har et faktisk lastbalanseringstilstand-direktiv som er forskjellig fra et postulert lastbalanseringstilstand-direktiv som er innlemmet i antatt-tabelltilstand-meldingen.
E37. System, omfattende:
minst én anordning som er vert for én eller flere applikasjoner, der den minst ene anordningen omfatter en tilstands- og lasttabell som inneholder flere poster, idet hver post av de flere postene er assosiert med en applikasjon av den ene eller de flere applikasjonene, og idet hver post av de flere postene omfatter: en applikasjonsidentifikator for en gitt applikasjon av den ene eller de flere applikasjonene,
informasjon som beskriver minst én status for den aktuelle applikasjonen, og
minst ett lastbalanseringsdirektiv vedrørende den aktuelle applikasjonen.
E38. System som beskrevet i utførelsesform E37, der
applikasjonsidentifikatoren entydig identifiserer den aktuelle applikasjonen blant den ene eller de flere applikasjonene.
E39. System som beskrevet i utførelsesform E37, der
applikasjonsidentifikatoren omfatter minst én av en virtuell IP-(lnternet Protocol)-adresse og et portnummer, en fysisk IP-adresse og et portnummer, en protokoll som er relevant for den aktuelle applikasjonen samt informasjon
spesifikk for protokollen.
E40. System som beskrevet i utførelsesform E37, der
applikasjonsidentifikatoren omfatter minst én globalt unik identifikator (GUID).
E41. System som beskrevet i utførelsesform E37, der informasjonen som beskriver minst én status for den aktuelle applikasjonen omfatter minst én av
applikasjonens tilstand, applikasjonens belastning og applikasjonens kapasitet.
E42. System som beskrevet i utførelsesform E41, der applikasjonens tilstand angir hvorvidt status for den aktuelle applikasjonen er ok, feilet eller ukjent, der applikasjonens belastning angir hvor opptatt den aktuelle applikasjonen er, og der applikasjonens kapasitet angir en maksimal kapasitet for den aktuelle applikasjonen.
E43. System som beskrevet i utførelsesform E42, der den maksimale kapasiteten til den aktuelle applikasjonen er uttrykt i forhold til en total kapasitet for applikasjoner av samme type som den aktuelle applikasjonen som kjører i systemet.
E44. System som beskrevet i utførelsesform E42, der den maksimale kapasiteten til den aktuelle applikasjonen er uttrykt som et enhetløst og begrenset tall.
E45. System som beskrevet i utførelsesform E37, der det minst ene lastbalanseringsdirektivet kan bli tilveiebragt til flere lastbalanseringsenheter for å tilveiebringe rettledning for balansering av nettverksbelastning vedrørende den aktuelle applikasjonen og med hensyn til andre applikasjoner av samme type.
E46. System som beskrevet i utførelsesform E37, der det minst ene lastbalanseringsdirektivet omfatter minst én av aktiv, tømmende og inaktiv. E47. System som beskrevet i utførelsesform E37, der det minst ene lastbalanseringsdirektivet omfatter et ønsket lastbalanseringstilstand-direktiv og et gjeldende lastbalanseringstilstand-direktiv.
E48. System som beskrevet i utførelsesform E47, der ønsket lastbalanseringstilstand-direktivet angir en lastbalanseringstilstand som tilstands- og last-infrastrukturen, som er tilveiebragt i den minst ene anordningen, vil at tilstands- og last-infrastrukturen, som er tilveiebragt i flere lastbalanseringsenheter, skal kjøre under.
E49. System som beskrevet i utførelsesform E47, der gjeldende lastbalanseringstilstand-direktivet angir en lastbalanseringstilstand som tilstands- og last-infrastrukturen, som er tilveiebragt i den minst ene anordningen, tror tilstands- og last-infrastrukturen, som er tilveiebragt i flere lastbalanseringsenheter, faktisk kjører under.
E50. System som beskrevet i utførelsesform E37, der systemet videre omfatter: et antall anordninger, idet hver respektive anordning av de flere anordningene omfatter en respektiv tilstands- og lasttabell.
E51. Ett eller flere prosessor-aksesserbare medier omfattende prosessor-eksekverbare instruksjoner som omfatter i hvert fall en del av et operativsystem, idet de prosessor-eksekverbare instruksjonene, når de blir eksekvert, instruerer et system til å utføre handlinger omfattende det å:
bestemme når en applikasjon blir startet,
rapportere, i respons til bestemmelsen, applikasjonen som startet til tilstands- og last-infrastrukturen, som er i stand til å kommunisere med infrastrukturen for balansering av nettverksbelastning,
detektere når applikasjonen blir stoppet, og
rapportere, i respons til detekteringen, applikasjonen som stoppet til
tilstands- og last-infrastrukturen.
E52. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E51, der i hvert fall en del av de prosessor-eksekverbare instruksjonene omfatter i hvert fall en del av en styringskomponent i operativsystemet.
E53. Én eller flere prosessor-aksesserbare medier omfattende prosessor-eksekverbare instruksjoner som omfatter i hvert fall en del av et operativsystem, idet de prosessor-eksekverbare instruksjonene, når de blir eksekvert, instruerer et system til å utføre handlinger omfattende det å: bestemme at en applikasjon er startet som følge av at applikasjonen blir startet,
rapportere, i respons til bestemmelsen, applikasjonen som startet til tilstands- og last-infrastrukturen, som er i stand til å kommunisere med infrastrukturen for balansering av nettverksbelastning,
bestemme at applikasjonen er stoppet følge av at applikasjonen blir stoppet, og
rapportere, i respons til bestemmelsen, applikasjonen som stoppet til tilstands- og last-infrastrukturen.
E54. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E53, der i hvert fall en del av de prosessor-eksekverbare instruksjoner omfatter i hvert fall en del av en styringsenhet i operativsystemet.
E55. System, omfattende:
en tilstands- og last-infrastruktur som er innrettet for å bestemme applikasjons-spesifikk tilstands- og lastinformasjon, og
en infrastruktur for lastbalansering som er innrettet for anvende den applikasjons-spesifikke tilstands- og lastinformasjonen når den allokerer forespørseler til flere applikasjoner.
E56. System som beskrevet i utførelsesform E55, der tilstands- og last-infrastrukturen omfatter en tilstands- og lasttabell som lagrer i hvert fall en del av den applikasjons-spesifikke tilstands- og lastinformasjonen.
E57. System som beskrevet i utførelsesform E55, der tilstands- og last-infrastrukturen omfatter en tilstands- og lasttabell som lagrer i hvert fall en del av den applikasjons-spesifikke tilstands- og lastinformasjonen, idet tilstands- og lasttabellen omfatter et antall poster, der hver post av de flere postene er assosiert med en gitt applikasjon av de flere applikasjonene.
E58. System som beskrevet i utførelsesform E55, der tilstands- og last-infrastrukturen omfatter en tilstands- og lasttabell som lagrer i hvert fall en del av den applikasjons-spesifikke tilstands- og lastinformasjonen, idet tilstands- og lasttabellen omfatter flere poster, der hver post av de flere postene omfatter: en applikasjonsidentifikator for en gitt applikasjon som posten er assosiert med, informasjon som beskriver minst én status for den aktuelle applikasjonen og minst ett lastbalanseringsdirektiv med hensyn til den aktuelle applikasjonen.
E59. System som beskrevet i utførelsesform E55, der infrastrukturen for lastbalansering omfatter et felles tilstands- og lastbuffer som lagrer den applikasjons-spesifikke tilstands- og lastinformasjonen.
E60. System som beskrevet i utførelsesform E55, der infrastrukturen for lastbalansering omfatter et felles tilstands- og lastbuffer som lagrer den applikasjons-spesifikke tilstands- og lastinformasjonen for de flere applikasjonene som kjører på et antall vertsmaskiner.
E61. System som beskrevet i utførelsesform E55, der den applikasjons-spesifikke tilstands- og lastinformasjonen omfatter applikasjonsendepunkt-spesifikk tilstands- og lastinformasjon.
E62. System som beskrevet i utførelsesform E55, videre omfattende en proxy- anordning som omfatter i hvert fall en del av tilstands- og last-infrastrukturen, idet denne, i det minste delvise, tilstands- og last-infrastrukturen er innrettet for å bestemme den applikasjons-spesifikke tilstands- og lastinformasjonen ved å utføre eksterne overvåkningshandlinger.
E63. System som beskrevet i utførelsesform E55, der:
tilstands- og last-infrastrukturen omfatter flere tilstands- og lasttabeller som lagrer den applikasjons-spesifikke tilstands- og lastinformasjonen, og
infrastrukturen for lastbalansering omfatter flere felles tilstands- og lastbufre som lagrer den applikasjons-spesifikke tilstands- og lastinformasjonen.
E64. System som beskrevet i utførelsesform E63, der systemet videre omfatter: flere vertsmaskiner til hvilke tilstands- og last-infrastrukturen er distribuert, idet hver vertsmaskin av de flere vertsmaskinene har en tilstands- og lasttabell av de flere tilstands- og lasttabellene, og
flere lastbalanseringsenheter svarende til i hvert fall en del av infrastrukturen for lastbalansering, idet hver lastbalanseringsenhet av de flere lastbalanseringsenhetene har et felles tilstands- og lastbuffer av de flere felles tilstands- og lastbufrene.
E65. System som beskrevet i utførelsesform E63, der systemet videre omfatter: flere vertsmaskiner til hvilke tilstands- og last-infrastrukturen er distribuert, idet hver vertsmaskin av de flere vertsmaskinene har en tilstands- og lasttabell av de flere tilstands- og lasttabellene, og
flere lastbalanseringsenheter svarende til i hvert fall en del av infrastrukturen for lastbalansering, idet hver lastbalanseringsenhet av de flere lastbalanseringsenhetene har et felles tilstands- og lastbuffer av de flere felles tilstands- og lastbufrene,
idet hvert felles tilstands- og lastbuffer av de flere tilstands- og lastbufrene inneholder den applikasjons-spesifikke tilstands- og
lastinformasjonen som er lagret i hver tilstands- og lasttabell av de flere tilstands- og lasttabellene.
E66. System som beskrevet i utførelsesform E63, der systemet videre omfatter: flere vertsmaskiner til hvilke tilstands- og last-infrastrukturen er distribuert, idet hver vertsmaskin av de flere vertsmaskinene har en tilstands- og lasttabell av de flere tilstands- og lasttabellene, og
flere lastbalanseringsenheter svarende til i hvert fall en del av infrastrukturen for lastbalansering, idet hver lastbalanseringsenhet av de flere lastbalanseringsenhetene har et felles tilstands- og lastbuffer av de flere felles tilstands- og lastbufrene,
idet de flere applikasjonene kjører på de flere vertsmaskinene.
E67. System som beskrevet i utførelsesform E63, der systemet videre omfatter: flere vertsmaskiner tilveiebragt i flere anordninger, idet tilstands- og last-infrastrukturen er distribuert til de flere vertsmaskinene, og idet hver vertsmaskin av de flere vertsmaskinene har en tilstands- og lasttabell av de flere tilstands- og lasttabellene, og
flere lastbalanseringsenheter omfattet av minst én anordning og svarende til i hvert fall en del av infrastrukturen for lastbalansering, der hver lastbalanseringsenhet av de flere lastbalanseringsenhetene omfatter et felles tilstands- og lastbuffer av de flere felles tilstands- og lastbufrene.
E68. System som beskrevet i utførelsesform E63, der systemet videre omfatter: flere vertsmaskiner tilveiebragt i flere anordninger, idet tilstands- og last-infrastrukturen er distribuert til de flere vertsmaskinene og hver vertsmaskin av de flere vertsmaskinene har en tilstands- og lasttabell av de flere tilstands- og lasttabellene, og
flere lastbalanseringsenheter omfattet av minst én anordning og
svarende til i hvert fall en del av infrastrukturen for lastbalansering, idet hver lastbalanseringsenhet av de flere lastbalanseringsenhetene omfatter et felles tilstands- og lastbuffer av de flere felles tilstands- og lastbufrene,
idet tilstands- og last-infrastrukturen omfatter en fjernlokalisert del av infrastrukturen for lastbalansering.
E69. System som beskrevet i utførelsesform E63, der systemet videre omfatter: flere vertsmaskiner tilveiebragt i flere anordninger, idet tilstands- og last-infrastrukturen er distribuert til de flere vertsmaskinene og hver vertsmaskin av de flere vertsmaskinene har en tilstands- og lasttabell av de flere tilstands- og lasttabellene, og
flere lastbalanseringsenheter omfattet av minst én anordning og svarende til i hvert fall en del av infrastrukturen for lastbalansering, idet hver lastbalanseringsenhet av de flere lastbalanseringsenhetene omfatter et felles tilstands- og lastbuffer av de flere felles tilstands- og lastbufrene,
idet den minst ene anordningen er én av de flere anordningene.
E70. System som beskrevet i utførelsesform E63, der systemet videre omfatter: flere vertsmaskiner tilveiebragt i flere anordninger, idet tilstands- og last-infrastrukturen er distribuert til de flere vertsmaskinene og hver vertsmaskin av de flere vertsmaskinene har en tilstands- og lasttabell av de flere tilstands- og lasttabellene, og
flere lastbalanseringsenheter omfattet av minst én anordning og svarende til i hvert fall en del av infrastrukturen for lastbalansering, idet hver lastbalanseringsenhet av de flere lastbalanseringsenhetene omfatter et felles tilstands- og lastbuffer av de flere felles tilstands- og lastbufrene,
idet den minst ene anordningen ikke er én av de flere anordningene, og
idet tilstands- og last-infrastrukturen videre er innrettet for å levere den applikasjons-spesifikke tilstands- og lastinformasjonen fra de flere anordningene til den minst ene anordningen.
E71. System som beskrevet i utførelsesform E55, der tilstands- og last-infrastrukturen og infrastrukturen for lastbalansering er i stand til å anvende en meldingsprotokoll for innbyrdes kommunikasjon vedrørende den applikasjons-spesifikke tilstands- og lastinformasjonen.
E72. System som beskrevet i utførelsesform E71, der meldingsprotokollen omfatter én eller flere av følgende meldingstyper: en livstegn-melding, en farvel-melding, en radendringsmelding, en hent-kopi-av-tabell-melding, en send-kopi-av-tabell-melding, en antatt-tabelltilstand-melding og en antagelse-feil-melding.
E73. System som beskrevet i utførelsesform E71, der meldingsprotokollen definerer funksjonalitet for kommunikasjon ved anvendelse av gruppemedlemskap.
E74. System som beskrevet i utførelsesform E55, der infrastrukturen for lastbalansering, etter en feiltilstand, er i stand til å gjenopprette den applikasjons-spesifikke tilstands- og lastinformasjonen ved hjelp av tilstands- og last-infrastrukturen ved anvendelse av en meldingsprotokoll for innbyrdes kommunikasjon mellom disse.
E75. System som beskrevet i utførelsesform E55, der infrastrukturen for lastbalansering videre er innrettet for å allokere forespørseler til de flere applikasjonene ved anvendelse av ett eller flere tildelingsskjemaer.
E76. System som beskrevet i utførelsesform E75, der det ene eller de flere tildelingsskjemaene omfatter minst ett av et polettbasert tildelingsskjema og et prosentbasert tildelingsskjema.
E77. System som beskrevet i utførelsesform E75, der det ene eller de flere tildelingsskjemaene involverer bruk av en tidsutløpsmekanisme.
E78. System som beskrevet i utførelsesform E75, der det ene eller de flere tildelingsskjemaene blir gjennomført av en tilstands- og lastbehandler-komponent i infrastrukturen for lastbalansering.
E79. Ett eller flere prosessor-aksesserbare medier som omfatter prosessor-eksekverbare instruksjoner som, når de blir eksekvert, instruerer et system til å utføre handlinger omfattende det å: analysere tilstands- og/eller lastinformasjon for flere applikasjons-endepunkter, og
fastslå en polett-tildeling for de flere applikasjons-endepunktene basert på analysen.
E80. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E79, omfattende prosessor-eksekverbare instruksjoner som, når de blir eksekvert, instruerer systemet til å utføre ytterligere handlinger omfattende det å: motta en forespørsel om tildeling av mål-applikasjons-endepunkt som identifiserer de flere applikasjons-endepunktene, og
sende en respons vedrørende tildeling av mål-applikasjons-endepunkt som omfatter polett-tildelingen.
E81. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E79, omfattende prosessor-eksekverbare instruksjoner som, når de blir eksekvert, instruerer systemet til å utføre ytterligere handlinger omfattende det å: motta en forespørsel om tildeling av målapplikasjons-endepunkt som omfatter én eller flere av en virtuell IP-adresse og et portnummer, en protokoll og informasjon spesifikk for protokollen, og
sende en respons vedrørende tildeling av mål-applikasjons-endepunkt som omfatter en fysisk IP-adresse og et portnummer.
E82. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E79, der den handling å analysere omfatter det å: analysere applikasjonsendepunkt-spesifikk tilstands- og/eller lastinformasjon for de flere applikasjons-endepunktene.
E83. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E79, der den handling å fastslå omfatter det å: fastslå polett-tildelingen for de flere applikasjons-endepunktene basert på relative tilgjengelige kapasiteter mellom eller i de flere applikasjons-endepunktene.
E84. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E79, der polett-tildelingen omfatter et første antall poletter svarende til et første applikasjons-endepunkt av de flere applikasjon-endepunktene og et andre antall poletter svarende til et andre applikasjons-endepunkt av de flere applikasjons-endepunktene.
E85. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E79, der polett-tildelingen omfatter: et første antall poletter svarende til et første applikasjons-endepunkt av de flere applikasjons-endepunktene,
et andre antall poletter svarende til et andre applikasjons-endepunkt av de flere applikasjons-endepunktene, og
en tidsbegrensning, idet utløp av tidsbegrensningen gjør eventuelle gjenværende poletter av det første antallet poletter og det andre antallet poletter ubrukelige.
E86. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E79, omfattende prosessor-eksekverbare instruksjoner som, når de blir eksekvert, instruerer systemet til å utføre en ytterligere handling omfattende det å bruke polett-tildelingen til å sortere innkommende forbindelsesforespørseler.
E87. Ett eller flere prosessor-aksesserbare medier som omfatter prosessor-eksekverbare instruksjoner som, når de blir eksekvert, instruerer et system til å utføre handlinger omfattende det å:
bestemme tilstands- og lastinformasjon på applikasjonsbasis, og
velge en applikasjon blant flere applikasjoner basert på tilstands- og lastinformasjonen.
E88. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E87, der den handling å bestemme omfatter det å: bestemme når applikasjoner av de flere applikasjonene blir startet og stoppet.
E89. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E87, der den handling å bestemme omfatter det å: bestemme når en applikasjon av de flere applikasjonene er operativ og når applikasjonen feiler eller har feilet.
E90. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E87, der den handling å bestemme omfatter det å: bestemme en belastning på en gitt applikasjon av en gitt type i forhold til en belastning på én eller flere andre applikasjoner av den aktuelle typen.
E91. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E87, omfattende prosessor-eksekverbare instruksjoner som, når de blir eksekvert, instruerer systemet til å utføre en ytterligere handling omfattende det å: motta ekstern innmating vedrørende bestemmelse av tilstands- og lastinformasjonen på applikasjonsbasis,
idet den handling å bestemme omfatter det å:
bestemme tilstands- og lastinformasjonen per applikasjon i henhold til den eksterne innmatingen.
E92. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E87, omfattende prosessor-eksekverbare instruksjoner som, når de blir eksekvert, instruerer systemet til å utføre en ytterligere handling omfattende det å: levere ut tilstands- og lastinformasjonen fra minst én vertsmaskin til én eller flere lastbalanseringsenheter.
E93. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E87, omfattende prosessor-eksekverbare instruksjoner som, når de blir eksekvert, instruerer systemet til å utføre en ytterligere handling omfattende det å: levere ut tilstands- og lastinformasjonen fra minst én vertsmaskin til én eller flere lastbalanseringsenheter ved anvendelse av en meldingsprotokoll.
E94. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E87, omfattende prosessor-eksekverbare instruksjoner som, når de blir eksekvert, instruerer systemet til å utføre en ytterligere handling omfattende det å: levere ut tilstands- og lastinformasjonen fra minst én vertsmaskin til én eller flere lastbalanseringsenheter ved anvendelse av en medlemsskap-gruppering.
E95. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E94, der den handling å levere ut informasjon omfatter det å: sende en livstegn-melding fra den minst ene vertsmaskinen til en leder-vertsmaskin, der livstegn-meldingen omfatter en videresendings-angivelse som instruerer leder-vertsmaskinen til å videresende livstegn-meldingen til den ene eller de flere lastbalanseringsenhetene selv om ingen endring av medlemsskap-grupperingen er involvert.
E96. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E87, omfattende prosessor-eksekverbare instruksjoner som, når de blir eksekvert, instruerer systemet til å utføre en ytterligere handling omfattende det å: levere ut tilstands- og lastinformasjonen fra minst én tilstands- og lasttabell til ett eller flere felles tilstands- og lastbufre.
E97. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E87, omfattende prosessor-eksekverbare instruksjoner som, når de blir eksekvert, instruerer systemet til å utføre ytterligere handlinger omfattende det å: motta tilstands- og lastinformasjonen fra et antall vertsmaskiner, og bufre tilstands- og lastinformasjonen.
E98. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E87, omfattende prosessor-eksekverbare instruksjoner som, når de blir eksekvert, instruerer systemet til å utføre ytterligere handlinger omfattende det å:
motta tilstands- og lastinformasjonen fra et antall vertsmaskiner,
bufre den mottatte tilstands- og lastinformasjonen,
motta en datapakke som ber om oppretting av en forbindelse, og
konsultere den bufrede tilstands- og lastinformasjonen for opprettingen av forbindelsen,
idet den handling å velge omfatter det å:
velge applikasjonen blant de flere applikasjonene basert på konsulteringen.
E99. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E98, der opprettelsen av forbindelsen er assosiert med en gitt type applikasjon.
E100. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E87, der den handling å velge omfatter det å: velge et applikasjons-endepunkt blant flere applikasjons-endepunkter basert på tilstands- og lastinformasjonen.
E101. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E87, der den handling å velge omfatter det å: velge, basert på tilstands- og lastinformasjonen, et applikasjons-endepunkt blant et antall applikasjons-endepunkter som er distribuert til et antall vertsmaskiner.
E102. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E87, der den ene eller de flere prosessor-aksesserbare mediene omfatter minst én av (i) ett eller flere lagringsmedier og (ii) ett eller flere overføringsmedier.
E103. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E87, der i hvert fall en del av de prosessor-eksekverbare instruksjonene omfatter i hvert fall en del av et dataprogram for balansering av belastning.
E104. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E87, der i hvert fall en del av de prosessor-eksekverbare instruksjonene er innrettet for å kjøre i systemet, idet systemet omfatter én enkelt anordning.
E105. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E87, der i hvert fall en del av de prosessor-eksekverbare instruksjonene er innrettet for å kjøre i systemet, idet systemet omfatter flere anordninger.
E106. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E87, der den handling å velge omfatter det å: velge, basert på tilstands- og lastinformasjonen, en tildeling av applikasjons-endepunkter blant flere applikasjons-endepunkter med hensyn til relative tilgjengelige kapasiteter mellom eller i de flere applikasjons-endepunktene.
E107. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E106, der den handling å velge videre omfatter det å: velge tildelingen av applikasjons-endepunkter ved anvendelse av et polettbasert tildelingsskjema.
E108. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E106, der den handling å velge videre omfatter det å: velge tildelingen av applikasjons-endepunkter ved anvendelse av et prosentbasert tildelingsskjema.
E109. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E106, der de flere applikasjons-endepunktene svarer til applikasjoner av én enkelt type.
E110. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E87, der den handling å velge omfatter det å: velge applikasjonen blant de flere applikasjonene basert på tilstands- og lastinformasjonen for å balansere en nettverksbelastning forårsaket av innkommende datapakker.
E111. Ett eller flere prosessor-aksesserbare medier som beskrevet i utførelsesform E87, der den handling å velge omfatter det å: velge applikasjonen blant de flere applikasjonene basert på tilstands- og lastinformasjonen for å balansere en nettverksbelastning forårsaket av innkommende forbindelsesforespørseler.
E112. Innretning for balansering av nettverksbelastning med bruk av informasjon om vertsmaskin-status, idet innretningen omfatter: midler for å bestemme statusinformasjon for et antall vertsmaskiner, og
midler for å ta avgjørelser vedrørende lastbalansering basert på vertsmaskin-statusinformasjonen.
E113. Innretning som beskrevet i utførelsesform E112, der midlene for å bestemme er tilveiebragt i de flere vertsmaskinene og midlene for å ta avgjørelser er tilveiebragt i infrastrukturen for lastbalansering, idet innretningen videre omfatter: midler for å levere vertsmaskin-statusinformasjonen fra de flere vertsmaskinene til infrastrukturen for lastbalansering.
E114. Innretning som beskrevet i utførelsesform E112, der midlene for å bestemme omfatter midler for å bestemme applikasjons-spesifikk statusinformasjon for de flere vertsmaskinene, og der midlene for å ta avgjørelser omfatter midler for å ta avgjørelsene vedrørende lastbalansering basert på den applikasjons-spesifikke statusinformasjonen.
E115. Innretning som beskrevet i utførelsesform E112, omfattende minst ett system.
E116. Innretning som beskrevet i utførelsesform E112, omfattende ett eller flere prosessor-aksesserbare medier.
E117. Innretning, omfattende:
akkumuleringsmidler for å akkumulere informasjon om vertsmaskin-status i et antall vertsmaskiner, og
overføringsmidler for å sende den akkumulerte statusinformasjonen fra de flere vertsmaskinene.
E118. Innretning som beskrevet i utførelsesform E117, der vertsmaskin-statusinformasjonen omfatter tilstands- og/eller lastinformasjon som er assosiert med de flere vertsmaskinene, og der overføringsmidlene omfatter: midler for å sende tilstands- og/eller lastinformasjonen fra de flere vertsmaskinene.
E119. Innretning som beskrevet i utførelsesform E117, der akkumuleringsmidlene omfatter: midler for å akkumulere vertsmaskin-statusinformasjonen med hensyn til applikasjoner som kjører på de flere vertsmaskinene.
E120. Innretning som beskrevet i utførelsesform E117, der overføringsmidlene omfatter: midler for å sende den akkumulerte statusinformasjonen fra de flere vertsmaskinene til funksjonalitet for lastbalansering.
E121. Innretning, omfattende:
midler for å bestemme tilstands- og lastinformasjon per applikasjon, og
utvelgingsmidler for velge en applikasjon blant flere applikasjoner basert på tilstands- og lastinformasjonen.
E122. Innretning som beskrevet i utførelsesform E121, der bestemmelsesmidlene omfatter: midler for å bestemme når en applikasjon av de flere applikasjonene er operativ og når applikasjonen feiler eller har feilet.
E123. Innretning som beskrevet i utførelsesform E121, der bestemmelsesmidlene omfatter: midler for å bestemme en belastning på en gitt applikasjon av en gitt type i forhold til en belastning på én eller flere andre applikasjoner av den samme typen.
E124. Innretning som beskrevet i utførelsesform E121, der utvelgingsmidlene omfatter: midler for å velge et applikasjons-endepunkt blant flere applikasjons-
endepunkter basert på tilstands- og lastinformasjonen.
Selv om systemer, medier, anordninger, fremgangsmåter, prosedyrer, apparater, teknikker, skjemaer, tilnærminger, prosesser, innretninger og andre realiseringer er beskrevet i et språk som er spesifikt for strukturelle, logiske, algorithmiske og funksjonelle trekk og/eller diagrammer, skal det være underforstått at oppfinnelsen som definert i de etterfølgende patentkravene, ikke nødvendigvis er begrenset til de spesifikke trekk eller diagrammer som er beskrevet. Snarere er de spesifikke trekkene og diagrammene beskrevet som eksempler på mulige måter å realisere den krevede oppfinnelsen.

Claims (76)

1. System, omfattende: midler for å motta (1208) applikasjonsspesifikke tilstands- og lastinformasjon (1206) fra et antall vertsmaskiner (108), der den applikasjonsspesifikke helseinformasjon inkluderer en indikasjon om når en applikasjon som kjører på nevnte vertsmaskin er i en feiltilstand og midler for å ta avgjørelser (106) vedrørende lastbalansering basert på den mottatte applikasjonsspesifikke helse- og lastinformasjonen.
2. System ifølge krav 1, der midlene for å motta omfatter: midler for å motta motta den applikasjonsspesifikke tilstands- og lastinformasjonen fra de flere vertsmaskinene via minst én proxy.
3. System ifølge krav 1, der den applikasjonsspesifikke tilstands- og lastinformasjonen omfatter minst ett lastbalanseringsdirektiv, og der midlene for å motta omfatter: midler for å motta det minst ene lastbalanseringsdirektivet fra de flere vertsmaskinene via minst én proxy som anroper én eller flere API-funksjoner for å overbringe det minst ene lastbalanseringsdirektivet.
4. System ifølge krav 1, der systemet omfatter én eller flere anordninger.
5. System, omfattende: en tilstands- og last-infrastruktur (1202) som er innrettet for å bestemme applikasjons-spesifikk tilstands- og lastinformasjon (1206) hos et flertall vertsmaskiner (108), der den applikasjonsspesifikke tilstands- og lastinformasjon inkluderer en indikasjon om når en applikasjon som kjører er i en feiltilstand, og en infrastruktur (106) for lastbalansering som er innrettet for anvende den applikasjons-spesifikke tilstands- og lastinformasjonen fra de nevnte vertsmaskiner (108) ved tildeling av forespørsler til flere applikasjoner (316).
6. System ifølge krav 5, der tilstands- og last-infrastrukturen omfatter en tilstands- og lasttabell som lagrer i hvert fall en del av den applikasjons-spesifikke tilstands- og lastinformasjonen.
7. System ifølge krav 5, der tilstands- og last-infrastrukturen omfatter en tilstands- og lasttabell som lagrer i hvert fall en del av den applikasjons-spesifikke tilstands- og lastinformasjonen, idet tilstands- og lasttabellen omfatter flere poster, der hver post av de flere postene er assosiert med en gitt applikasjon av de flere applikasjonene.
8. System ifølge krav 5, der tilstands- og last-infrastrukturen omfatter en tilstands- og lasttabell som lagrer i hvert fall en del av den applikasjons-spesifikke tilstands- og lastinformasjonen, idet tilstands- og lasttabellen omfatter flere poster, der hver post av de flere postene omfatter: en applikasjonsidentifikator for en gitt applikasjon som posten er assosiert med, informasjon som beskriver minst én status for den aktuelle applikasjonen og minst ett lastbalanseringsdirektiv som angår den aktuelle applikasjonen.
9. System ifølge krav 5, der infrastrukturen for lastbalansering omfatter et felles tilstands- og lastbuffer som lagrer den applikasjons-spesifikke tilstands-og lastinformasjonen.
10. System ifølge krav 5, der infrastrukturen for lastbalansering omfatter et felles tilstands- og lastbuffer som lagrer den applikasjons-spesifikke tilstands-og lastinformasjonen for de flere applikasjonene som kjører på et antall vertsmaskiner.
11. System ifølge krav 5, der den applikasjons-spesifikke tilstands- og lastinformasjonen omfatter applikasjonsendepunkt-spesifikk tilstands- og lastinformasjon.
12. System ifølge krav 5, videre omfattende: en proxy-anordning som omfatter i hvert fall en del av tilstands- og last-infrastrukturen, idet nevnte i hvert fall en del av tilstands- og last-infrastrukturen er innrettet for å bestemme den applikasjons-spesifikke tilstands- og lastinformasjonen ved å utføre eksterne overvåkingshandlinger.
13. System ifølge krav 5, der: tilstands- og last-infrastrukturen omfatter flere tilstands- og lasttabeller som lagrer den applikasjons-spesifikke tilstands- og lastinformasjonen, og infrastrukturen for lastbalansering omfatter flere felles tilstands- og lastbufre som lagrer den applikasjons-spesifikke tilstands- og lastinformasjonen.
14. System ifølge krav 13, der systemet videre omfatter: flere vertsmaskiner som tilstands- og last-infrastruktur er distribuert til, der hver vertsmaskin av de flere vertsmaskinene har en tilstands- og lasttabell av de flere tilstands- og lasttabellene, og flere lastbalanseringsenheter svarende til i hvert fall en del av infrastrukturen for lastbalansering, der hver lastbalanseringsenhet av de flere lastbalanseringsenhetene har et felles tilstands- og lastbuffer av de flere felles tilstands- og lastbufrene.
15. System ifølge krav 13, der systemet videre omfatter: flere vertsmaskiner som tilstands- og last-infrastruktur er distribuert til, der hver vertsmaskin av de flere vertsmaskinene har en tilstands- og lasttabell av de flere tilstands- og lasttabellene, og flere lastbalanseringsenheter svarende til i hvert fall en del av infrastrukturen for lastbalansering, der hver lastbalanseringsenhet av de flere lastbalanseringsenhetene har et felles tilstands- og lastbuffer av de flere felles tilstands- og lastbufrene, idet hvert felles tilstands- og lastbuffer av de flere tilstands- og lastbufrene omfatter den applikasjons-spesifikke tilstands- og lastinformasjonen som er lagret i hver tilstands- og lasttabell av de flere tilstands- og lasttabellene.
16. System ifølge krav 13, der systemet videre omfatter: flere vertsmaskiner som tilstands- og last-infrastruktur er distribuert til, der hver vertsmaskin av de flere vertsmaskinene har en tilstands- og lasttabell av de flere tilstands- og lasttabellene, og flere lastbalanseringsenheter svarende til i hvert fall en del av infrastrukturen for lastbalansering, der hver lastbalanseringsenhet av de flere lastbalanseringsenhetene har et felles tilstands- og lastbuffer av de flere felles tilstands- og lastbufrene idet de flere applikasjonene kjører på de flere vertsmaskinene.
17. System ifølge krav 13, der systemet videre omfatter: flere vertsmaskiner tilveiebragt i flere anordninger, idet tilstands- og last-infrastrukturen er distribuert til de flere vertsmaskinene og hver vertsmaskin av de flere vertsmaskinene har en tilstands- og lasttabell av de flere tilstands- og lasttabellene, og flere lastbalanseringsenheter omfattet av minst én anordning og svarende til i hvert fall en del av infrastrukturen for lastbalansering, der hver lastbalanseringsenhet av de flere lastbalanseringsenhetene har et felles tilstands- og lastbuffer av de flere felles tilstands- og lastbufrene.
18. System ifølge krav 13, der systemet videre omfatter: flere vertsmaskiner tilveiebragt i flere anordninger, idet tilstands- og last-infrastrukturen er distribuert til de flere vertsmaskinene og hver vertsmaskin av de flere vertsmaskinene har en tilstands- og lasttabell av de flere tilstands- og lasttabellene, og flere lastbalanseringsenheter omfattet av minst én anordning og svarende til i hvert fall en del av infrastrukturen for lastbalansering, der hver lastbalanseringsenhet av de flere lastbalanseringsenhetene har et felles tilstands- og lastbuffer av de flere felles tilstands- og lastbufrene, idet tilstands- og last-infrastrukturen omfatter en fjernlokalisert del av infrastrukturen for lastbalansering.
19. System ifølge krav 13, der systemet videre omfatter: flere vertsmaskiner tilveiebragt i flere anordninger, idet tilstands- og last-infrastrukturen er distribuert til de flere vertsmaskinene og hver vertsmaskin av de flere vertsmaskinene har en tilstands- og lasttabell av de flere tilstands- og lasttabellene, og flere lastbalanseringsenheter omfattet av minst én anordning og svarende til i hvert fall en del av infrastrukturen for lastbalansering, der hver lastbalanseringsenhet av de flere lastbalanseringsenhetene har et felles tilstands- og lastbuffer av de flere felles tilstands- og lastbufrene, idet den minst ene anordningen er én av de flere anordningene.
20. System ifølge krav 13, der systemet videre omfatter: flere vertsmaskiner tilveiebragt i flere anordninger, idet tilstands- og last-infrastrukturen er distribuert til de flere vertsmaskinene og hver vertsmaskin av de flere vertsmaskinene har en tilstands- og lasttabell av de flere tilstands- og lasttabellene, og flere lastbalanseringsenheter omfattet av minst én anordning og svarende til i hvert fall en del av infrastrukturen for lastbalansering, der hver lastbalanseringsenhet av de flere lastbalanseringsenhetene har et felles tilstands- og lastbuffer av de flere felles tilstands- og lastbufrene, idet den minst ene anordningen ikke er én av de flere anordningene, og idet tilstands- og last-infrastrukturen videre er innrettet for å spre den applikasjons-spesifikke tilstands- og lastinformasjonen fra de flere anordningene til den minst ene anordningen.
21. System ifølge krav 5, der tilstands- og last-infrastrukturen og infrastrukturen for lastbalansering er i stand til å anvende en meldingsprotokoll for innbyrdes kommunikasjon angående den applikasjons-spesifikke tilstands-og lastinformasjon.
22. System ifølge krav 21, der meldingsprotokollen omfatter én eller flere av følgende meldingstyper: en livstegn-melding, en farvel-melding, en radendringsmelding, en hent-kopi-av-tabell-melding, en send-kopi-av-tabell-melding, en antatt-tabelltilstand-melding, og en antagelse-feil-melding.
23. System ifølge krav 21, der meldingsprotokollen omfatter funksjonalitet for kommunikasjon ved anvendelse av gruppemedlemsskap.
24. System ifølge krav 5, der infrastrukturen for lastbalansering, etter en feiltilstand, er i stand til å gjenopprette den applikasjons-spesifikke tilstands- og lastinformasjon ved hjelp av tilstands- og last-infrastrukturen ved anvendelse av en meldingsprotokoll for innbyrdes kommunikasjons mellom disse.
25. System ifølge krav 5, der infrastrukturen for lastbalansering videre er innrettet for tildele forespørseler til de flere applikasjonene ved anvendelse av ett eller flere tildelingsskjemaer.
26. System ifølge krav 25, der det ene eller de flere tildelingsskjemaene omfatter minst én av et polettbasert tildelingsskjema og et prosentbasert tildelingsskjema.
27. System ifølge krav 25, der det ene eller de flere tildelingsskjemaene involverer bruk av en tidsutløpsmekanisme.
28. System i følge krav 5, videre omfattende minst én anordning som er vert for én eller flere applikasjoner, idet tilstands- og last infrastrukturen omfatter: en tilstands- og lasttabell som omfatter flere poster, der hver post av de flere postene er assosiert med en applikasjon av den ene eller de flere applikasjonene, idet hver post av de flere postene omfatter: en applikasjonsidentifikator for en gitt applikasjon av den ene eller de flere applikasjonene, informasjon som beskriver minst én status for den aktuelle applikasjonen, og minst ett lastbalanseringsdirektiv vedrørende den aktuelle applikasjonen.
29. Minst én anordning ifølge krav 28, der applikasjonsidentifikatoren entydig identifiserer den aktuelle applikasjonen blant den ene eller de flere applikasjonene.
30. Minst én anordning ifølge krav 28, der applikasjonsidentifikatoren omfatter minst én av en virtuell IP-(lnternet Protocol)-adresse og et portnummer, en fysisk IP-adresse og et portnummer, en protokoll som er relevant for den aktuelle applikasjonen og informasjon spesifikk for protokollen.
31. Minst én anordning ifølge krav 28, der applikasjonsidentifikatoren omfatter minst én globalt unik identifikator (GUID).
32. Minst én anordning ifølge krav 28, der informasjonen som beskriver minst én status for den aktuelle applikasjonen omfatter minst én av applikasjonens tilstand, applikasjonens belastning og applikasjonens kapasitet.
33. Minst én anordning ifølge krav 32, der applikasjonens tilstand angir hvorvidt status for den aktuelle applikasjonen er ok, tømmende eller ukjent, der applikasjonens belastning angir hvor opptatt den aktuelle applikasjonen er og der applikasjonens kapasitet angir en maksimal kapasitet for den aktuelle applikasjonen.
34. Minst én anordning ifølge krav 33, der den maksimale kapasiteten til den aktuelle applikasjonen er uttrykt (i) i forhold til en total kapasitet for applikasjoner av samme type som den til den aktuelle applikasjonen som kjører på den minst ene anordningen og/eller (ii) som et enhetløst og begrenset tall.
35. Minst én anordning ifølge krav 28, der det minst ene lastbalanseringsdirektivet kan bli tilveiebragt til flere lastbalanseringsenheter for å gi rettledning for balansering av nettverksbelastning vedrørende den aktuelle applikasjonen og med hensyn til andre applikasjoner av samme type.
36. Minst én anordning ifølge krav 28, der det minst ene lastbalanseringsdirektivet omfatter minst én av aktiv, tømmende og inaktiv.
37. Minst én anordning ifølge krav 28, der det minst ene lastbalanseringsdirektivet omfatter et ønsket lastbalanseringstilstand-direktiv og et gjeldende lastbalanseringstilstand-direktiv.
38. Minst én anordning ifølge krav 37, videre omfattende: en første tilstands- og last-infrastruktur, der (i) ønsket lastbalanseringstilstand-direktivet angir en lastbalanseringstilstand som den første tilstands- og last-infrastrukturen vil at den andre tilstands- og last-infrastrukturen skal kjøre under, idet den andre tilstands- og last-infrastrukturen befinner seg i flere lastbalanseringsenheter, og der (ii) gjeldende lastbalanseringstilstand-direktivet angir en lastbalanseringstilstand som den første tilstands- og last-infrastrukturen antar at den andre tilstands- og last-infrastrukturen kjører under.
39. Minst én anordning ifølge krav 28, der den minst ene anordningen omfatter flere anordninger, idet hver anordning av de flere anordningene omfatter en respektiv tilstands- og lasttabell.
40. System i følge krav 5, der systemet implementerer en meldingsprotokoll mellom minst én vertsmaskin for tilstands- og lastinfrastrukturen og én eller flere lastbalanseringsenheter for tilstands- og lastinfrastrukturen, der meldingsprotokollen er anvendelig til å kommunisere tilstands- og lastinformasjon mellom den minst ene vertsmaskinen og den ene eller de flere lastbalanseringsenhetene.
41. Ett eller flere prosessor-aksesserbare medier ifølge krav 40, omfattende prosessor-eksekverbare instruksjoner som, når de blir eksekvert, gjør det mulig for systemet å implementere meldingsprotokollen som omfatter minst én melding, idet den minst ene meldingen omfatter en livstegn-melding som angir for den ene eller de flere lastbalanseringsenhetene at den minst ene vertsmaskinen er operativ.
42. Ett eller flere prosessor-aksesserbare medier ifølge krav 41, der formatet til livstegn-meldingen omfatter en identifikator for den minst ene vertsmaskinen, feilsjekkingsdata for tilstands- og/eller lastinformasjon og et DNS-(Domain Name System )-navn.
43. Ett eller flere prosessor-aksesserbare medier ifølge krav 41, der formatet til livstegn-meldingen tillater innlemmelse av et blokknummer/generasjonsidentifikator-par.
44. Ett eller flere prosessor-aksesserbare medier ifølge krav 40, omfattende prosessor-eksekverbare instruksjoner som, når de blir eksekvert, gjør det mulig for systemet å implementere meldingsprotokollen som omfatter minst én melding, idet den minst ene meldingen omfatter en farvel-melding som angir for den ene eller de flere lastbalanseringsenhetene at den minst ene vertsmaskinen planlegger nedstengning.
45. Ett eller flere prosessor-aksesserbare medier ifølge krav 44, der formatet til farvel-meldingen omfatter en identifikator for den minst ene vertsmaskinen.
46. Ett eller flere prosessor-aksesserbare medier ifølge krav 40, omfattende prosessor-eksekverbare instruksjoner som, når de blir eksekvert, gjør det mulig for systemet å implementere meldingsprotokollen som omfatter minst én melding, idet den minst ene meldingen omfatter en radendringsmelding som angir for den ene eller de flere lastbalanseringsenhetene at tilstands- og/eller lastinformasjon for en applikasjon i den minst ene vertsmaskinen er endret.
47. Ett eller flere prosessor-aksesserbare medier ifølge krav 46, der formatet til radendringsmeldingen omfatter en identifikator for den minst ene vertsmaskinen, en identifikator for applikasjonen, en operasjon for å reflektere endringen samt data for operasjonen.
48. Ett eller flere prosessor-aksesserbare medier ifølge krav 40, omfattende prosessor-eksekverbare instruksjoner som, når de blir eksekvert, gjør det mulig for systemet å implementere meldingsprotokollen som omfatter minst én melding, idet den minst ene meldingen omfatter en hent-kopi-av-tabell-melding som blir sendt av den ene eller de flere lastbalanseringsenhetene til den minst ene vertsmaskinen, idet hent-kopi-av-tabell-meldingen ber om en kopi av gjeldende tilstands- og/eller lastinformasjon i den minst ene vertsmaskinen.
49. Ett eller flere prosessor-aksesserbare medier ifølge krav 48, der formatet til hent-kopi-av-tabell-meldingen omfatter en identifikasjon av en forespørrende lastbalanseringsenhet av den ene eller de flere lastbalanseringsenhetene.
50. Ett eller flere prosessor-aksesserbare medier ifølge krav 40, omfattende prosessor-eksekverbare instruksjoner som, når de blir eksekvert, gjør det mulig for systemet å implementere meldingsprotokollen som omfatter minst én melding, idet den minst ene meldingen omfatter en send-kopi-av-tabell-melding som blir sendt fra den minst ene vertsmaskinen til en forespørrende lastbalanseringsenhet av den ene eller de flere lastbalanseringsenhetene, idet send-kopi-av-tabell-meldingen tilveiebringer en kopi av gjeldende tilstands-og/eller lastinformasjon i den minst ene vertsmaskinen.
51. Ett eller flere prosessor-aksesserbare medier ifølge krav 50, der formatet til send-kopi-av-tabell-meldingen omfatter kopien av den gjeldende tilstands-og/eller lastinformasjonen i den minst ene vertsmaskinen.
52. Ett eller flere prosessor-aksesserbare medier ifølge krav 40, omfattende prosessor-eksekverbare instruksjoner som, når de blir eksekvert, gjør det mulig for systemet å implementere meldingsprotokollen som omfatter minst én melding, idet den minst ene meldingen omfatter en antatt-tabelltilstand-melding som blir sendt fra den minst ene vertsmaskinen til den ene eller de flere lastbalanseringsenhetene, idet antatt-tabelltilstand-meldingen omfatter et lastbalanseringstilstand-direktiv som angir et gjeldende lastbalanseringstilstand-direktiv som er forventet av den minst ene vertsmaskinen å eksistere i den ene eller de flere lastbalanseringsenhetene.
53. Ett eller flere prosessor-aksesserbare medier ifølge krav 52, der formatet til antatt-tabelltilstand-meldingen omfatter en identifikator for den minst ene vertsmaskinen og det gjeldende lastbalanseringstilstand-direktivet.
54. Ett eller flere prosessor-aksesserbare medier ifølge krav 40, omfattende prosessor-eksekverbare instruksjoner som, når de blir eksekvert, gjør det mulig for systemet å implementere meldingsprotokollen som omfatter minst én melding, idet den minst ene meldingen omfatter en antagelse-feil-melding som blir sendt fra en lastbalanseringsenhet av den ene eller de flere lastbalanseringsenhetene til minst én vertsmaskin som har sendt en antatt-tabelltilstand-melding, idet antagelse-feil-meldingen angir at lastbalanseringsenheten har et faktisk lastbalanseringstilstand-direktiv som er forskjellig fra et antatt lastbalanseringstilstand-direktiv som er innlemmet i antatt-tabelltilstand-meldingen.
55. Ett eller flere prosessor-aksesserbare medier for lagring av instruksjoner som når de blir eksekvert av en datamaskin (4002) forårsaker at datamaskinen utfører en fremgangsmåte omfattende det å: motta (1406) applikasjonsspesifikk tilstands- og lastinformasjon fra et antall vertsmaskiner der den applikasjonsspesifikke tilstands- og lastinformasjon inkluderer en indikasjon av når en applikasjon som kjører på nevnte vertsmasknin er i en feiltilstand, og foreta avgjørelser (1414) vedrørende lastbalansering basert på den mottatte vertsmaskin-statusinformasjonen.
56. Ett eller flere prosessor-aksesserbare medier ifølge krav 55, omfattende prosessor-eksekverbare instruksjoner som, når de blir eksekvert, instruerer systemet til å utføre en ytterligere handling omfattende det å: motta en forespørsel om en ny forbindelse fra en klient, og der den handling å foreta avgjørelser omfatter det å: velge en destinasjon for den nye forbindelsen basert på den mottatte vertsmaskin-statusinformasjonen.
57. Ett eller flere prosessor-aksesserbare medier ifølge krav 55, der den handling å motta i hvert fall omfatter én av det å: motta vertsmaskin-statusinformasjonen direkte fra én eller flere vertsmaskiner av de flere vertsmaskinene, og motta vertsmaskin-statusinformasjonen indirekte fra én eller flere vertsmaskiner av de flere vertsmaskinene.
58. Fremgangsmåte, omfattende de trinn å: bestemme (1402) tilstands- og lastinformasjon per applikasjon forflere vertsmaskiner (108), der tilstands- og lastinformasjon per applikasjon inkluderer en indikasjon om når en applikasjon som kjører på nevnte vertsmaskniner er i en feiltilstand, og velge (1414) en applikasjon blant flere applikasjoner basert på tilstands-og lastinformasjonen som respons på tilstands- og lastinformasjon per applikasjon.
59. Fremgangsmåte ifølge krav 58, der det trinn å bestemme omfatter det å: bestemme når applikasjoner av de flere applikasjonene startes og stoppes.
60. Fremgangsmåte ifølge krav 58, der det trinn å bestemme omfatter det å: bestemme når en applikasjon av de flere applikasjonene er operativ og når applikasjonen feiler eller har feilet.
61. Fremgangsmåte ifølge krav 58, der det trinn å bestemme omfatter det å: bestemme en belastning på en gitt applikasjon av en gitt type i forhold til en belastning på én eller flere andre applikasjoner av samme type.
62. Fremgangsmåte ifølge krav 58, videre omfattende det trinn å: motta ekstern innmating vedrørende bestemmelse av tilstands- og lastinformasjonen per applikasjon, idet det trinn å bestemme omfatter det å: bestemme tilstands- og lastinformasjonen per applikasjon basert på den eksterne innmatingen.
63. Fremgangsmåte ifølge krav 58, videre omfattende det trinn å: levere tilstands- og lastinformasjonen fra minst én vertsmaskin til én eller flere lastbalanseringsenheter.
64. Fremgangsmåte ifølge krav 58, videre omfattende det trinn å: levere tilstands- og lastinformasjonen fra minst én vertsmaskin til én eller flere lastbalanseringsenheter ved anvendelse av en medlemsskaps-gruppering.
65. Fremgangsmåte ifølge krav 64, der det trinn å levere omfatter det å: sende en livstegn-melding fra den minst ene vertsmaskinen til en leder-vertsmaskin, der livstegn-meldingen omfatter en videresendingsangivelse som instruerer leder-vertsmaskinen til å videresende livstegn-meldingen til den ene eller de flere lastbalanseringsenhetene selv om ingen endring av medlemsskaps-grupperingen er involvert.
66. Fremgangsmåte ifølge krav 58, videre omfattende det trinn å: levere tilstands- og lastinformasjonen fra minst én tilstands- og lasttabell til én eller flere felles tilstands- og lastbufre.
67. Fremgangsmåte ifølge krav 58, videre omfattende de trinn å: motta tilstands- og lastinformasjonen fra et antall vertsmaskiner, og bufre tilstands- og lastinformasjonen.
68. Fremgangsmåte ifølge krav 58, videre omfattende de trinn å: motta tilstands- og lastinformasjonen fra et antall vertsmaskiner, bufre den mottatte tilstands- og lastinformasjonen, motta en datapakke som ber om opprettelse av en forbindelse, og konsultere den bufrede tilstands- og lastinformasjon for opprettelsen av forbindelsen, idet det trinn å velge omfatter det å: velge applikasjonen blant de flere applikasjonene på grunnlag av konsulteringen.
69. Fremgangsmåte ifølge krav 68, der opprettelsen av forbindelsen angår en gitt type applikasjon.
70. Fremgangsmåte ifølge krav 58, der det trinn å velge omfatter det å: velge et applikasjons-endepunkt blant flere applikasjons-endepunkter basert på tilstands- og lastinformasjonen.
71. Fremgangsmåte ifølge krav 58, der det trinn å velge omfatter det å: velge, basert på tilstands- og lastinformasjonen, et applikasjons-endepunkt blant flere applikasjons-endepunkter som er distribuert til et antall vertsmaskiner.
72. Fremgangsmåte ifølge krav 58, der det trinn å velge omfatter det å: velge, basert på tilstands- og lastinformasjonen, en tildeling av applikasjons-endepunkter blant flere applikasjons-endepunkter basert på relative tilgjengelige kapasiteter mellom eller i de flere applikasjons-endepunktene.
73. Fremgangsmåte ifølge krav 72, der det trinn å velge omfatter det ytterligere trinn å: velge tildelingen av applikasjons-endepunkter ved anvendelse av et polettbasert tildelingsskjema og/eller et prosentbasert tildelingsskjema.
74. Fremgangsmåte ifølge krav 72, der de flere applikasjons-endepunktene svarer til applikasjoner av én enkelt type.
75. Fremgangsmåte ifølge krav 58, der det trinn å velge omfatter det å: velge applikasjonen blant de flere applikasjonene basert på tilstands- og lastinformasjonen for å balansere en nettverksbelastning forårsaket av innkommende datapakker.
76. Fremgangsmåte ifølge krav 58, der det trinn å velge omfatter det å: velge applikasjonen blant de flere applikasjonene basert på tilstands- og lastinformasjonen for å balansere en nettverksbelastning forårsaket av innkommende forbindelsesforespørseler.
NO20042744A 2003-06-30 2004-06-29 Balansering av nettverksbelastning ved bruk av informasjon om vertsmaskin-status NO331320B1 (no)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/610,519 US7636917B2 (en) 2003-06-30 2003-06-30 Network load balancing with host status information

Publications (2)

Publication Number Publication Date
NO20042744L NO20042744L (no) 2005-01-03
NO331320B1 true NO331320B1 (no) 2011-11-21

Family

ID=33435411

Family Applications (1)

Application Number Title Priority Date Filing Date
NO20042744A NO331320B1 (no) 2003-06-30 2004-06-29 Balansering av nettverksbelastning ved bruk av informasjon om vertsmaskin-status

Country Status (22)

Country Link
US (1) US7636917B2 (no)
EP (1) EP1494421B1 (no)
JP (1) JP4942921B2 (no)
KR (1) KR101109218B1 (no)
CN (1) CN1578320B (no)
AT (1) ATE407506T1 (no)
AU (1) AU2004202389B2 (no)
BR (1) BRPI0402591B1 (no)
CA (1) CA2470300A1 (no)
CO (1) CO5590203A1 (no)
DE (1) DE602004016255D1 (no)
EG (1) EG23984A (no)
HK (1) HK1073025A1 (no)
IL (1) IL162164A0 (no)
MX (1) MXPA04006411A (no)
MY (1) MY142244A (no)
NO (1) NO331320B1 (no)
NZ (1) NZ533148A (no)
RU (1) RU2380746C2 (no)
SG (1) SG117505A1 (no)
TW (1) TWI356311B (no)
ZA (1) ZA200404375B (no)

Families Citing this family (374)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7343413B2 (en) 2000-03-21 2008-03-11 F5 Networks, Inc. Method and system for optimizing a network by independently scaling control segments and data flow
US8380854B2 (en) 2000-03-21 2013-02-19 F5 Networks, Inc. Simplified method for processing multiple connections from the same client
US7606898B1 (en) 2000-10-24 2009-10-20 Microsoft Corporation System and method for distributed management of shared computers
US7890543B2 (en) 2003-03-06 2011-02-15 Microsoft Corporation Architecture for distributed computing system and automated design, deployment, and management of distributed applications
US8122106B2 (en) 2003-03-06 2012-02-21 Microsoft Corporation Integrating design, deployment, and management phases for systems
US7689676B2 (en) 2003-03-06 2010-03-30 Microsoft Corporation Model-based policy application
US7496662B1 (en) 2003-05-12 2009-02-24 Sourcefire, Inc. Systems and methods for determining characteristics of a network and assessing confidence
US7760729B2 (en) 2003-05-28 2010-07-20 Citrix Systems, Inc. Policy based network address translation
WO2004107132A2 (en) 2003-05-28 2004-12-09 Caymas Systems, Inc. Method, system and software for state signing of internet resources
US9525566B2 (en) * 2003-07-31 2016-12-20 Cloudsoft Corporation Limited Self-managed mediated information flow
US8285881B2 (en) * 2003-09-10 2012-10-09 Broadcom Corporation System and method for load balancing and fail over
US7978716B2 (en) 2003-11-24 2011-07-12 Citrix Systems, Inc. Systems and methods for providing a VPN solution
US8572249B2 (en) * 2003-12-10 2013-10-29 Aventail Llc Network appliance for balancing load and platform services
US7774834B1 (en) 2004-02-18 2010-08-10 Citrix Systems, Inc. Rule generalization for web application entry point modeling
US7890996B1 (en) 2004-02-18 2011-02-15 Teros, Inc. Using statistical analysis to generate exception rules that allow legitimate messages to pass through application proxies and gateways
US7778422B2 (en) 2004-02-27 2010-08-17 Microsoft Corporation Security associations for devices
JP2005293370A (ja) * 2004-04-01 2005-10-20 Hitachi Ltd 記憶制御システム
US20050246529A1 (en) 2004-04-30 2005-11-03 Microsoft Corporation Isolated persistent identity storage for authentication of computing devies
US8739274B2 (en) 2004-06-30 2014-05-27 Citrix Systems, Inc. Method and device for performing integrated caching in a data communication network
US8495305B2 (en) 2004-06-30 2013-07-23 Citrix Systems, Inc. Method and device for performing caching of dynamically generated objects in a data communication network
US20060209695A1 (en) * 2005-03-15 2006-09-21 Archer Shafford R Jr Load balancing in a distributed telecommunications platform
US7757074B2 (en) 2004-06-30 2010-07-13 Citrix Application Networking, Llc System and method for establishing a virtual private network
US7808906B2 (en) 2004-07-23 2010-10-05 Citrix Systems, Inc. Systems and methods for communicating a lossy protocol via a lossless protocol using false acknowledgements
EP2264956B1 (en) 2004-07-23 2017-06-14 Citrix Systems, Inc. Method for securing remote access to private networks
US7539681B2 (en) 2004-07-26 2009-05-26 Sourcefire, Inc. Methods and systems for multi-pattern searching
US7496962B2 (en) * 2004-07-29 2009-02-24 Sourcefire, Inc. Intrusion detection strategies for hypertext transport protocol
US20060069761A1 (en) * 2004-09-14 2006-03-30 Dell Products L.P. System and method for load balancing virtual machines in a computer network
US20060072482A1 (en) * 2004-10-06 2006-04-06 Nokia Corporation Service routing
US7734785B2 (en) * 2004-12-09 2010-06-08 International Business Machines Corporation On demand message based financial network integration middleware
US8700695B2 (en) 2004-12-30 2014-04-15 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP pooling
US7810089B2 (en) 2004-12-30 2010-10-05 Citrix Systems, Inc. Systems and methods for automatic installation and execution of a client-side acceleration program
US8706877B2 (en) 2004-12-30 2014-04-22 Citrix Systems, Inc. Systems and methods for providing client-side dynamic redirection to bypass an intermediary
US8549149B2 (en) 2004-12-30 2013-10-01 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP multiplexing
US8954595B2 (en) 2004-12-30 2015-02-10 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP buffering
US8255456B2 (en) 2005-12-30 2012-08-28 Citrix Systems, Inc. System and method for performing flash caching of dynamically generated objects in a data communication network
US8040903B2 (en) * 2005-02-01 2011-10-18 Hewlett-Packard Development Company, L.P. Automated configuration of point-to-point load balancing between teamed network resources of peer devices
JP4621044B2 (ja) * 2005-03-15 2011-01-26 富士通株式会社 負荷分散装置および負荷分散方法
JP4848660B2 (ja) * 2005-03-30 2011-12-28 ソニー株式会社 情報処理分散システム,情報処理装置および情報処理分散方法
US8086709B2 (en) * 2005-04-04 2011-12-27 Telefonaktiebolaget L M Ericsson (Publ) Method and apparatus for distributing load on application servers
US7797147B2 (en) 2005-04-15 2010-09-14 Microsoft Corporation Model-based system monitoring
US8489728B2 (en) 2005-04-15 2013-07-16 Microsoft Corporation Model-based system monitoring
JP2006323526A (ja) * 2005-05-17 2006-11-30 Fujitsu Ltd クラスタ管理プログラム、該プログラムを記録した記録媒体、クラスタ管理方法、ノード、およびクラスタ
US8549513B2 (en) 2005-06-29 2013-10-01 Microsoft Corporation Model-based virtual system provisioning
US8135814B2 (en) * 2005-06-29 2012-03-13 At&T Intellectual Property I, L.P. Network capacity management system
US20070041327A1 (en) * 2005-08-16 2007-02-22 Cisco Technology, Inc. Multicast heartbeat signaling
US7882209B1 (en) * 2005-09-30 2011-02-01 At&T Intellectual Property Ii, L.P. Tiered and modular approach to operational support systems
US8234378B2 (en) 2005-10-20 2012-07-31 Microsoft Corporation Load balancing in a managed execution environment
US7926071B2 (en) * 2005-10-20 2011-04-12 Microsoft Corporation Load balancing interfaces
US7941309B2 (en) 2005-11-02 2011-05-10 Microsoft Corporation Modeling IT operations/policies
JP4001297B2 (ja) * 2005-11-10 2007-10-31 株式会社日立製作所 情報処理システム及びその管理サーバ
US7733803B2 (en) 2005-11-14 2010-06-08 Sourcefire, Inc. Systems and methods for modifying network map attributes
US8046833B2 (en) 2005-11-14 2011-10-25 Sourcefire, Inc. Intrusion event correlation with network discovery information
AU2006320203B2 (en) 2005-12-02 2011-12-01 Citrix Systems, Inc. Method and apparatus for providing authentication credentials from a proxy server to a virtualized computing environment to access a remote resource
US7924884B2 (en) 2005-12-20 2011-04-12 Citrix Systems, Inc. Performance logging using relative differentials and skip recording
US8756298B2 (en) * 2005-12-21 2014-06-17 Cisco Technology, Inc. System for automatic configuration of computers in a server farm
US20070150600A1 (en) 2005-12-22 2007-06-28 International Business Machines Corporation Method and apparatus for collecting data for characterizing HTTP session workloads
US8301839B2 (en) 2005-12-30 2012-10-30 Citrix Systems, Inc. System and method for performing granular invalidation of cached dynamically generated objects in a data communication network
US7921184B2 (en) 2005-12-30 2011-04-05 Citrix Systems, Inc. System and method for performing flash crowd caching of dynamically generated objects in a data communication network
JP4652981B2 (ja) * 2006-01-13 2011-03-16 日本電信電話株式会社 Dnsサーバ選択装置、dnsサーバ選択方法、dnsサーバ選択プログラムおよび名前解決システム
US20070168548A1 (en) * 2006-01-19 2007-07-19 International Business Machines Corporation Method and system for performing multi-cluster application-specific routing
US20070198524A1 (en) * 2006-02-09 2007-08-23 International Business Machines Corporation Maintaining connections between application servers and databases in a multitier computer architecture
US20070198982A1 (en) * 2006-02-21 2007-08-23 International Business Machines Corporation Dynamic resource allocation for disparate application performance requirements
US8531953B2 (en) * 2006-02-21 2013-09-10 Barclays Capital Inc. System and method for network traffic splitting
US7675854B2 (en) 2006-02-21 2010-03-09 A10 Networks, Inc. System and method for an adaptive TCP SYN cookie with time validation
US8295275B2 (en) * 2006-03-20 2012-10-23 Intel Corporation Tagging network I/O transactions in a virtual machine run-time environment
US7643410B2 (en) * 2006-03-29 2010-01-05 Intel Corporation Method and apparatus for managing a connection in a connection orientated environment
US20070239854A1 (en) * 2006-04-11 2007-10-11 Gopalakrishnan Janakiraman Method of migrating process domain
US8151323B2 (en) 2006-04-12 2012-04-03 Citrix Systems, Inc. Systems and methods for providing levels of access and action control via an SSL VPN appliance
CN100461719C (zh) * 2006-06-15 2009-02-11 华为技术有限公司 服务健康度检测系统及方法
US7890636B2 (en) * 2006-06-28 2011-02-15 Cisco Technology, Inc. Application integrated gateway
US7760641B2 (en) * 2006-07-10 2010-07-20 International Business Machines Corporation Distributed traffic shaping across a cluster
US7948988B2 (en) 2006-07-27 2011-05-24 Sourcefire, Inc. Device, system and method for analysis of fragments in a fragment train
US8869262B2 (en) 2006-08-03 2014-10-21 Citrix Systems, Inc. Systems and methods for application based interception of SSL/VPN traffic
US8108525B2 (en) * 2006-08-03 2012-01-31 Citrix Systems, Inc. Systems and methods for managing a plurality of user sessions in a virtual private network environment
US8495181B2 (en) * 2006-08-03 2013-07-23 Citrix Systems, Inc Systems and methods for application based interception SSI/VPN traffic
US7701945B2 (en) 2006-08-10 2010-04-20 Sourcefire, Inc. Device, system and method for analysis of segments in a transmission control protocol (TCP) session
US8141164B2 (en) 2006-08-21 2012-03-20 Citrix Systems, Inc. Systems and methods for dynamic decentralized load balancing across multiple sites
US7791559B2 (en) 2006-09-14 2010-09-07 Citrix Systems, Inc. System and method for multiple display support in remote access software
US8054241B2 (en) 2006-09-14 2011-11-08 Citrix Systems, Inc. Systems and methods for multiple display support in remote access software
JP4324975B2 (ja) * 2006-09-27 2009-09-02 日本電気株式会社 負荷低減システム、計算機、及び負荷低減方法
US8145560B2 (en) * 2006-11-14 2012-03-27 Fmr Llc Detecting fraudulent activity on a network
US20080115213A1 (en) * 2006-11-14 2008-05-15 Fmr Corp. Detecting Fraudulent Activity on a Network Using Stored Information
US20080114858A1 (en) * 2006-11-14 2008-05-15 Fmr Corp. Reconstructing Data on a Network
US8180873B2 (en) * 2006-11-14 2012-05-15 Fmr Llc Detecting fraudulent activity
US7856494B2 (en) 2006-11-14 2010-12-21 Fmr Llc Detecting and interdicting fraudulent activity on a network
WO2008127372A2 (en) * 2006-12-05 2008-10-23 Qualcomm Incorporated Apparatus and methods of a zero single point of failure load balancer
US8069352B2 (en) 2007-02-28 2011-11-29 Sourcefire, Inc. Device, system and method for timestamp analysis of segments in a transmission control protocol (TCP) session
US20080209053A1 (en) * 2007-02-28 2008-08-28 Microsoft Corporation HTTP-Based Peer-to-Peer Framework
US7796510B2 (en) 2007-03-12 2010-09-14 Citrix Systems, Inc. Systems and methods for providing virtual fair queueing of network traffic
US7760642B2 (en) 2007-03-12 2010-07-20 Citrix Systems, Inc. Systems and methods for providing quality of service precedence in TCP congestion control
CN101296176B (zh) * 2007-04-25 2010-12-22 阿里巴巴集团控股有限公司 一种基于群集的数据处理方法和装置
CA2685292C (en) 2007-04-30 2013-09-24 Sourcefire, Inc. Real-time user awareness for a computer network
US20080307426A1 (en) * 2007-06-05 2008-12-11 Telefonaktiebolaget Lm Ericsson (Publ) Dynamic load management in high availability systems
US8086674B2 (en) * 2007-06-21 2011-12-27 Research In Motion Limited Attachment server network for viewing attachments on a portable electronic device
US9032079B2 (en) * 2007-06-26 2015-05-12 Microsoft Technology Licensing, Llc Management and diagnosis of telephonic devices
US8132247B2 (en) * 2007-08-03 2012-03-06 Citrix Systems, Inc. Systems and methods for authorizing a client in an SSL VPN session failover environment
US8908700B2 (en) 2007-09-07 2014-12-09 Citrix Systems, Inc. Systems and methods for bridging a WAN accelerator with a security gateway
US8068416B2 (en) * 2007-09-20 2011-11-29 At&T Intellectual Property I, L.P. System and method of communicating a media stream
US8996707B2 (en) * 2007-09-28 2015-03-31 Alcatel Lucent Method and apparatus for performing load balancing for a control plane of a mobile communication network
US8156504B2 (en) * 2007-10-05 2012-04-10 Cisco Technology, Inc. Scalable resources in a virtualized load balancer
US7925694B2 (en) 2007-10-19 2011-04-12 Citrix Systems, Inc. Systems and methods for managing cookies via HTTP content layer
CN101889289B (zh) * 2007-12-05 2014-01-08 欧乐2号公司 用于压缩视频的基于图像块的系统及方法
US7983166B2 (en) * 2008-01-03 2011-07-19 At&T Intellectual Property I, L.P. System and method of delivering video content
US8291086B2 (en) * 2008-01-18 2012-10-16 General Electric Company Method and system for accessing data in an enterprise information system
US8090877B2 (en) 2008-01-26 2012-01-03 Citrix Systems, Inc. Systems and methods for fine grain policy driven cookie proxying
US20090199290A1 (en) * 2008-02-01 2009-08-06 Secure Computing Corporation Virtual private network system and method
US7467207B1 (en) * 2008-02-01 2008-12-16 International Business Machines Corporation Balancing communication load in a system based on determination of user-user affinity levels
US11323510B2 (en) 2008-02-28 2022-05-03 Level 3 Communications, Llc Load-balancing cluster
US8489750B2 (en) 2008-02-28 2013-07-16 Level 3 Communications, Llc Load-balancing cluster
JP2009237763A (ja) * 2008-03-26 2009-10-15 Hitachi Ltd サーバシステム及びその制御方法
US8474043B2 (en) 2008-04-17 2013-06-25 Sourcefire, Inc. Speed and memory optimization of intrusion detection system (IDS) and intrusion prevention system (IPS) rule processing
US8806053B1 (en) 2008-04-29 2014-08-12 F5 Networks, Inc. Methods and systems for optimizing network traffic using preemptive acknowledgment signals
JP5264297B2 (ja) * 2008-06-03 2013-08-14 キヤノン株式会社 ジョブ処理方法及び画像処理システム並びに画像処理装置
US8447881B2 (en) 2008-09-02 2013-05-21 Microsoft Corporation Load balancing for services
US8533333B2 (en) * 2008-09-03 2013-09-10 Microsoft Corporation Shared hosting using host name affinity
US8272055B2 (en) 2008-10-08 2012-09-18 Sourcefire, Inc. Target-based SMB and DCE/RPC processing for an intrusion detection system or intrusion prevention system
US8566444B1 (en) 2008-10-30 2013-10-22 F5 Networks, Inc. Methods and system for simultaneous multiple rules checking
US8738780B2 (en) * 2009-01-22 2014-05-27 Citrix Systems, Inc. System and method for hybrid communication mechanism utilizing both communication server-based and direct endpoint-to-endpoint connections
JPWO2010106772A1 (ja) * 2009-03-17 2012-09-20 日本電気株式会社 分散処理システム及び分散処理方法
US8433749B2 (en) 2009-04-15 2013-04-30 Accenture Global Services Limited Method and system for client-side scaling of web server farm architectures in a cloud data center
US8416692B2 (en) * 2009-05-28 2013-04-09 Microsoft Corporation Load balancing across layer-2 domains
US8613085B2 (en) * 2009-07-22 2013-12-17 Broadcom Corporation Method and system for traffic management via virtual machine migration
GB2473023A (en) 2009-08-27 2011-03-02 Intergrated Security Mfg Ltd Monitoring system
US9450804B2 (en) * 2009-09-03 2016-09-20 At&T Intellectual Property I, L.P. Anycast aware transport for content distribution networks
US8775553B2 (en) * 2009-09-11 2014-07-08 The Directv Group, Inc. Managing signal delivery to a plurality of display platforms
US10157280B2 (en) 2009-09-23 2018-12-18 F5 Networks, Inc. System and method for identifying security breach attempts of a website
US9960967B2 (en) 2009-10-21 2018-05-01 A10 Networks, Inc. Determining an application delivery server based on geo-location information
US10721269B1 (en) 2009-11-06 2020-07-21 F5 Networks, Inc. Methods and system for returning requests with javascript for clients before passing a request to a server
US8868961B1 (en) 2009-11-06 2014-10-21 F5 Networks, Inc. Methods for acquiring hyper transport timing and devices thereof
US8510409B1 (en) * 2009-12-23 2013-08-13 Emc Corporation Application-specific outbound source routing from a host in a data network
US8910176B2 (en) * 2010-01-15 2014-12-09 International Business Machines Corporation System for distributed task dispatch in multi-application environment based on consensus for load balancing using task partitioning and dynamic grouping of server instance
WO2011085519A1 (en) * 2010-01-15 2011-07-21 Telefonaktiebolaget L M Ericsson (Publ) Radio resource allocation in systems comprising relays
CN101788909B (zh) * 2010-01-28 2012-12-05 北京天空堂科技有限公司 一种网络游戏服务器端行走系统的解决方法和装置
TWI502375B (zh) * 2010-03-09 2015-10-01 Alibaba Group Holding Ltd Instant messaging method, system and device
CN101783771A (zh) * 2010-03-24 2010-07-21 杭州华三通信技术有限公司 一种实现负载均衡持续性的方法和设备
CA2789824C (en) 2010-04-16 2018-11-06 Sourcefire, Inc. System and method for near-real time network attack detection, and system and method for unified detection via detection routing
US9667569B1 (en) 2010-04-29 2017-05-30 Amazon Technologies, Inc. System and method for adaptive server shielding
CN102255932B (zh) * 2010-05-20 2015-09-09 百度在线网络技术(北京)有限公司 负载均衡方法和负载均衡器
JP5530810B2 (ja) * 2010-06-02 2014-06-25 株式会社日立システムズ スケールアウトシステムおよび方法ならびにプログラム
US8433790B2 (en) 2010-06-11 2013-04-30 Sourcefire, Inc. System and method for assigning network blocks to sensors
CN101873237B (zh) * 2010-06-13 2012-02-22 用友软件股份有限公司 动态维护集群中的成员服务器的方法和系统
US9141625B1 (en) 2010-06-22 2015-09-22 F5 Networks, Inc. Methods for preserving flow state during virtual machine migration and devices thereof
US8671182B2 (en) * 2010-06-22 2014-03-11 Sourcefire, Inc. System and method for resolving operating system or service identity conflicts
US10015286B1 (en) 2010-06-23 2018-07-03 F5 Networks, Inc. System and method for proxying HTTP single sign on across network domains
US20120221603A1 (en) * 2010-07-02 2012-08-30 salesforces.com, Inc. Distributed mobile services
US8908545B1 (en) 2010-07-08 2014-12-09 F5 Networks, Inc. System and method for handling TCP performance in network access with driver initiated application tunnel
US8391174B2 (en) 2010-07-13 2013-03-05 Hewlett-Packard Development Company, L.P. Data packet routing
US8347100B1 (en) 2010-07-14 2013-01-01 F5 Networks, Inc. Methods for DNSSEC proxying and deployment amelioration and systems thereof
US8244881B2 (en) * 2010-08-06 2012-08-14 Palo Alto Research Center Incorporated Service virtualization over content-centric networks
US9083760B1 (en) 2010-08-09 2015-07-14 F5 Networks, Inc. Dynamic cloning and reservation of detached idle connections
US8630174B1 (en) 2010-09-14 2014-01-14 F5 Networks, Inc. System and method for post shaping TCP packetization
US8886981B1 (en) 2010-09-15 2014-11-11 F5 Networks, Inc. Systems and methods for idle driven scheduling
US8804504B1 (en) 2010-09-16 2014-08-12 F5 Networks, Inc. System and method for reducing CPU load in processing PPP packets on a SSL-VPN tunneling device
US20140181248A1 (en) * 2010-09-27 2014-06-26 Jonathan Peter Deutsch Simple Remote Access Through Firewalls For Networked Devices and Applications
US9215275B2 (en) 2010-09-30 2015-12-15 A10 Networks, Inc. System and method to balance servers based on server load status
US20120109852A1 (en) * 2010-10-27 2012-05-03 Microsoft Corporation Reactive load balancing for distributed systems
US8959571B2 (en) 2010-10-29 2015-02-17 F5 Networks, Inc. Automated policy builder
EP2633667B1 (en) 2010-10-29 2017-09-06 F5 Networks, Inc System and method for on the fly protocol conversion in obtaining policy enforcement information
JP5538560B2 (ja) 2010-11-01 2014-07-02 かもめエンジニアリング株式会社 アクセス制御方法、アクセス制御装置およびアクセス制御プログラム
US9609052B2 (en) 2010-12-02 2017-03-28 A10 Networks, Inc. Distributing application traffic to servers based on dynamic service response time
US8755283B2 (en) 2010-12-17 2014-06-17 Microsoft Corporation Synchronizing state among load balancer components
CN102137005B (zh) * 2010-12-31 2014-04-02 华为技术有限公司 一种通信系统中的数据转发方法、装置和系统
WO2012097015A2 (en) 2011-01-11 2012-07-19 A10 Networks Inc. Virtual application delivery chassis system
US8627467B2 (en) 2011-01-14 2014-01-07 F5 Networks, Inc. System and method for selectively storing web objects in a cache memory based on policy decisions
JP2012156698A (ja) * 2011-01-25 2012-08-16 Hitachi Ltd 中継装置、通信ネットワークシステム、及び、負荷分散方法
US10135831B2 (en) 2011-01-28 2018-11-20 F5 Networks, Inc. System and method for combining an access control system with a traffic management system
US8612550B2 (en) 2011-02-07 2013-12-17 Microsoft Corporation Proxy-based cache content distribution and affinity
US8812586B1 (en) * 2011-02-15 2014-08-19 Google Inc. Correlating status information generated in a computer network
US8601034B2 (en) 2011-03-11 2013-12-03 Sourcefire, Inc. System and method for real time data awareness
US9578126B1 (en) 2011-04-30 2017-02-21 F5 Networks, Inc. System and method for automatically discovering wide area network optimized routes and devices
US9154577B2 (en) 2011-06-06 2015-10-06 A10 Networks, Inc. Sychronization of configuration file of virtual application distribution chassis
US9246819B1 (en) * 2011-06-20 2016-01-26 F5 Networks, Inc. System and method for performing message-based load balancing
US9055076B1 (en) 2011-06-23 2015-06-09 Amazon Technologies, Inc. System and method for distributed load balancing with load balancer clients for hosts
CN102201010A (zh) * 2011-06-23 2011-09-28 清华大学 无共享架构的分布式数据库系统及其实现方法
US8812727B1 (en) 2011-06-23 2014-08-19 Amazon Technologies, Inc. System and method for distributed load balancing with distributed direct server return
CN102891868B (zh) * 2011-07-19 2016-09-28 上海可鲁系统软件有限公司 一种分布式系统的负载均衡方法及装置
US8897154B2 (en) 2011-10-24 2014-11-25 A10 Networks, Inc. Combining stateless and stateful server load balancing
US9432321B2 (en) * 2011-12-19 2016-08-30 Alcatel Lucent Method and apparatus for messaging in the cloud
US9094364B2 (en) 2011-12-23 2015-07-28 A10 Networks, Inc. Methods to manage services over a service gateway
US9270766B2 (en) 2011-12-30 2016-02-23 F5 Networks, Inc. Methods for identifying network traffic characteristics to correlate and manage one or more subsequent flows and devices thereof
US20130173806A1 (en) * 2011-12-31 2013-07-04 Level 3 Communications, Llc Load-balancing cluster
DE102012200042A1 (de) * 2012-01-03 2013-07-04 Airbus Operations Gmbh Serversystem, luft- oder raumfahrzeug und verfahren
US10044582B2 (en) 2012-01-28 2018-08-07 A10 Networks, Inc. Generating secure name records
US10230566B1 (en) 2012-02-17 2019-03-12 F5 Networks, Inc. Methods for dynamically constructing a service principal name and devices thereof
US9172753B1 (en) 2012-02-20 2015-10-27 F5 Networks, Inc. Methods for optimizing HTTP header based authentication and devices thereof
US9231879B1 (en) 2012-02-20 2016-01-05 F5 Networks, Inc. Methods for policy-based network traffic queue management and devices thereof
US10097616B2 (en) 2012-04-27 2018-10-09 F5 Networks, Inc. Methods for optimizing service of content requests and devices thereof
US9197545B2 (en) 2012-05-18 2015-11-24 Benu Networks, Inc. Highly scalable modular system with high reliability and low latency
US9363313B2 (en) * 2012-06-11 2016-06-07 Cisco Technology, Inc. Reducing virtual IP-address (VIP) failure detection time
US8805990B2 (en) 2012-07-12 2014-08-12 Microsoft Corporation Load balancing for single-address tenants
US9843484B2 (en) 2012-09-25 2017-12-12 A10 Networks, Inc. Graceful scaling in software driven networks
US9705800B2 (en) 2012-09-25 2017-07-11 A10 Networks, Inc. Load distribution in data networks
US10021174B2 (en) * 2012-09-25 2018-07-10 A10 Networks, Inc. Distributing service sessions
US10002141B2 (en) * 2012-09-25 2018-06-19 A10 Networks, Inc. Distributed database in software driven networks
US9246998B2 (en) 2012-10-16 2016-01-26 Microsoft Technology Licensing, Llc Load balancer bypass
US9185006B2 (en) 2012-12-17 2015-11-10 Microsoft Technology Licensing, Llc Exchange of server health and client information through headers for request management
CN103259832A (zh) * 2012-12-24 2013-08-21 中国科学院沈阳自动化研究所 实现动态负载平衡、故障诊断与转移的群集资源控制方法
US9531846B2 (en) 2013-01-23 2016-12-27 A10 Networks, Inc. Reducing buffer usage for TCP proxy session based on delayed acknowledgement
US10375155B1 (en) 2013-02-19 2019-08-06 F5 Networks, Inc. System and method for achieving hardware acceleration for asymmetric flow connections
US9900252B2 (en) 2013-03-08 2018-02-20 A10 Networks, Inc. Application delivery controller and global server load balancer
WO2014144837A1 (en) 2013-03-15 2014-09-18 A10 Networks, Inc. Processing data packets using a policy based network path
US9871712B1 (en) 2013-04-16 2018-01-16 Amazon Technologies, Inc. Health checking in a distributed load balancer
US10038626B2 (en) 2013-04-16 2018-07-31 Amazon Technologies, Inc. Multipath routing in a distributed load balancer
US9553809B2 (en) * 2013-04-16 2017-01-24 Amazon Technologies, Inc. Asymmetric packet flow in a distributed load balancer
US10069903B2 (en) 2013-04-16 2018-09-04 Amazon Technologies, Inc. Distributed load balancer
US10135914B2 (en) * 2013-04-16 2018-11-20 Amazon Technologies, Inc. Connection publishing in a distributed load balancer
US10038693B2 (en) 2013-05-03 2018-07-31 A10 Networks, Inc. Facilitating secure network traffic by an application delivery controller
EP3005659B1 (en) * 2013-05-28 2019-07-10 Convida Wireless, LLC Load balancing in the internet of things
US10187317B1 (en) 2013-11-15 2019-01-22 F5 Networks, Inc. Methods for traffic rate control and devices thereof
MX362086B (es) 2014-03-11 2019-01-07 Huawei Tech Co Ltd Aparato y método de transferencia de información.
US20150261721A1 (en) * 2014-03-13 2015-09-17 Lantiq Deutschland Gmbh Flow control between processing devices
US9942152B2 (en) 2014-03-25 2018-04-10 A10 Networks, Inc. Forwarding data packets using a service-based forwarding policy
US9942162B2 (en) 2014-03-31 2018-04-10 A10 Networks, Inc. Active application response delay time
CN104980361B (zh) 2014-04-01 2018-09-21 华为技术有限公司 一种负载均衡方法、装置及系统
US9961130B2 (en) * 2014-04-24 2018-05-01 A10 Networks, Inc. Distributed high availability processing methods for service sessions
US10742559B2 (en) 2014-04-24 2020-08-11 A10 Networks, Inc. Eliminating data traffic redirection in scalable clusters
US9906422B2 (en) 2014-05-16 2018-02-27 A10 Networks, Inc. Distributed system to determine a server's health
US9871849B2 (en) * 2014-05-20 2018-01-16 Citrix Systems, Inc. Systems and methods for just-in-time state sharing
US10129122B2 (en) 2014-06-03 2018-11-13 A10 Networks, Inc. User defined objects for network devices
US9986061B2 (en) 2014-06-03 2018-05-29 A10 Networks, Inc. Programming a data network device using user defined scripts
US9992229B2 (en) 2014-06-03 2018-06-05 A10 Networks, Inc. Programming a data network device using user defined scripts with licenses
US10015143B1 (en) 2014-06-05 2018-07-03 F5 Networks, Inc. Methods for securing one or more license entitlement grants and devices thereof
WO2015195734A1 (en) * 2014-06-19 2015-12-23 Thomson Licensing Natural language control of a gateway device
US11838851B1 (en) 2014-07-15 2023-12-05 F5, Inc. Methods for managing L7 traffic classification and devices thereof
US10511694B2 (en) * 2014-07-23 2019-12-17 Citrix Systems, Inc. Systems and methods for application specific load balancing
US10122630B1 (en) 2014-08-15 2018-11-06 F5 Networks, Inc. Methods for network traffic presteering and devices thereof
US10432711B1 (en) * 2014-09-15 2019-10-01 Amazon Technologies, Inc. Adaptive endpoint selection
US11095715B2 (en) * 2014-09-24 2021-08-17 Ebay Inc. Assigning storage responsibility in a distributed data storage system with replication
US9678773B1 (en) 2014-09-30 2017-06-13 Amazon Technologies, Inc. Low latency computational capacity provisioning
US10048974B1 (en) * 2014-09-30 2018-08-14 Amazon Technologies, Inc. Message-based computation request scheduling
US9323556B2 (en) 2014-09-30 2016-04-26 Amazon Technologies, Inc. Programmatic event detection and message generation for requests to execute program code
US9715402B2 (en) 2014-09-30 2017-07-25 Amazon Technologies, Inc. Dynamic code deployment and versioning
US9600312B2 (en) 2014-09-30 2017-03-21 Amazon Technologies, Inc. Threading as a service
US9146764B1 (en) 2014-09-30 2015-09-29 Amazon Technologies, Inc. Processing event messages for user requests to execute program code
US9830193B1 (en) 2014-09-30 2017-11-28 Amazon Technologies, Inc. Automatic management of low latency computational capacity
US9646163B2 (en) 2014-11-14 2017-05-09 Getgo, Inc. Communicating data between client devices using a hybrid connection having a regular communications pathway and a highly confidential communications pathway
US10182013B1 (en) 2014-12-01 2019-01-15 F5 Networks, Inc. Methods for managing progressive image delivery and devices thereof
US9413626B2 (en) 2014-12-05 2016-08-09 Amazon Technologies, Inc. Automatic management of resource sizing
CN105808343B (zh) * 2014-12-31 2019-01-04 中国科学院沈阳自动化研究所 用于复杂生产管理系统中的群集资源控制方法
US9565167B2 (en) * 2015-01-21 2017-02-07 Huawei Technologies Co., Ltd. Load balancing internet protocol security tunnels
US11895138B1 (en) 2015-02-02 2024-02-06 F5, Inc. Methods for improving web scanner accuracy and devices thereof
US9727725B2 (en) 2015-02-04 2017-08-08 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US9588790B1 (en) 2015-02-04 2017-03-07 Amazon Technologies, Inc. Stateful virtual compute system
US9733967B2 (en) 2015-02-04 2017-08-15 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US10834065B1 (en) 2015-03-31 2020-11-10 F5 Networks, Inc. Methods for SSL protected NTLM re-authentication and devices thereof
US9785476B2 (en) 2015-04-08 2017-10-10 Amazon Technologies, Inc. Endpoint management system and virtual compute system
US9930103B2 (en) 2015-04-08 2018-03-27 Amazon Technologies, Inc. Endpoint management system providing an application programming interface proxy service
US10505818B1 (en) 2015-05-05 2019-12-10 F5 Networks. Inc. Methods for analyzing and load balancing based on server health and devices thereof
US11350254B1 (en) 2015-05-05 2022-05-31 F5, Inc. Methods for enforcing compliance policies and devices thereof
WO2017023860A1 (en) 2015-07-31 2017-02-09 Modulus Technology Solutions Corp. Estimating wireless network load and adjusting applications to minimize network overload probability and maximize successful application operation
US10581976B2 (en) 2015-08-12 2020-03-03 A10 Networks, Inc. Transmission control of protocol state exchange for dynamic stateful service insertion
US10243791B2 (en) 2015-08-13 2019-03-26 A10 Networks, Inc. Automated adjustment of subscriber policies
US10264092B2 (en) * 2015-08-24 2019-04-16 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Signature based distributed inventory caching
CN108370327A (zh) 2015-09-25 2018-08-03 Fsa技术股份有限公司 多干线数据流调节系统和方法
US10623319B1 (en) * 2015-09-28 2020-04-14 Amazon Technologies, Inc. Load rebalancing in a network-based system
US9928108B1 (en) 2015-09-29 2018-03-27 Amazon Technologies, Inc. Metaevent handling for on-demand code execution environments
US10042660B2 (en) 2015-09-30 2018-08-07 Amazon Technologies, Inc. Management of periodic requests for compute capacity
US20170353537A1 (en) * 2015-10-28 2017-12-07 Fractal Industries, Inc. Predictive load balancing for a digital environment
US20200389495A1 (en) 2015-10-28 2020-12-10 Qomplx, Inc. Secure policy-controlled processing and auditing on regulated data sets
IL242353B (en) * 2015-10-29 2021-01-31 Verint Systems Ltd System and method for soft failovers for proxy servers
WO2017078696A1 (en) 2015-11-04 2017-05-11 Hewlett Packard Enterprise Development Lp Direct connection limitation based on a period of time
TW201721498A (zh) * 2015-12-01 2017-06-16 Chunghwa Telecom Co Ltd 具安全與功能擴充性的有線區域網路使用者管理系統及方法
US9830175B1 (en) 2015-12-16 2017-11-28 Amazon Technologies, Inc. Predictive management of on-demand code execution
US10754701B1 (en) 2015-12-16 2020-08-25 Amazon Technologies, Inc. Executing user-defined code in response to determining that resources expected to be utilized comply with resource restrictions
US10013267B1 (en) 2015-12-16 2018-07-03 Amazon Technologies, Inc. Pre-triggers for code execution environments
US9811363B1 (en) 2015-12-16 2017-11-07 Amazon Technologies, Inc. Predictive management of on-demand code execution
US9830449B1 (en) 2015-12-16 2017-11-28 Amazon Technologies, Inc. Execution locations for request-driven code
US9811434B1 (en) 2015-12-16 2017-11-07 Amazon Technologies, Inc. Predictive management of on-demand code execution
US9894670B1 (en) * 2015-12-17 2018-02-13 Innovium, Inc. Implementing adaptive resource allocation for network devices
US9910713B2 (en) 2015-12-21 2018-03-06 Amazon Technologies, Inc. Code execution request routing
US10067801B1 (en) 2015-12-21 2018-09-04 Amazon Technologies, Inc. Acquisition and maintenance of compute capacity
US10002026B1 (en) 2015-12-21 2018-06-19 Amazon Technologies, Inc. Acquisition and maintenance of dedicated, reserved, and variable compute capacity
US11757946B1 (en) 2015-12-22 2023-09-12 F5, Inc. Methods for analyzing network traffic and enforcing network policies and devices thereof
US10318288B2 (en) 2016-01-13 2019-06-11 A10 Networks, Inc. System and method to process a chain of network applications
US10404698B1 (en) 2016-01-15 2019-09-03 F5 Networks, Inc. Methods for adaptive organization of web application access points in webtops and devices thereof
US11178150B1 (en) 2016-01-20 2021-11-16 F5 Networks, Inc. Methods for enforcing access control list based on managed application and devices thereof
US10797888B1 (en) 2016-01-20 2020-10-06 F5 Networks, Inc. Methods for secured SCEP enrollment for client devices and devices thereof
US10162672B2 (en) 2016-03-30 2018-12-25 Amazon Technologies, Inc. Generating data streams from pre-existing data sets
US11132213B1 (en) 2016-03-30 2021-09-28 Amazon Technologies, Inc. Dependency-based process of pre-existing data sets at an on demand code execution environment
US10891145B2 (en) 2016-03-30 2021-01-12 Amazon Technologies, Inc. Processing pre-existing data sets at an on demand code execution environment
TWI612429B (zh) 2016-04-12 2018-01-21 緯創資通股份有限公司 伺服器系統及其資料存取方法
US10644963B2 (en) 2016-06-13 2020-05-05 Intel Corporation Systems and methods for detecting a zombie server
US10904127B2 (en) * 2016-06-13 2021-01-26 Intel Corporation Systems and methods for detecting a zombie server
US10791088B1 (en) 2016-06-17 2020-09-29 F5 Networks, Inc. Methods for disaggregating subscribers via DHCP address translation and devices thereof
US9952896B2 (en) 2016-06-28 2018-04-24 Amazon Technologies, Inc. Asynchronous task management in an on-demand network code execution environment
US10282229B2 (en) 2016-06-28 2019-05-07 Amazon Technologies, Inc. Asynchronous task management in an on-demand network code execution environment
US10102040B2 (en) 2016-06-29 2018-10-16 Amazon Technologies, Inc Adjusting variable limit on concurrent code executions
US10277708B2 (en) 2016-06-30 2019-04-30 Amazon Technologies, Inc. On-demand network code execution with cross-account aliases
US10203990B2 (en) 2016-06-30 2019-02-12 Amazon Technologies, Inc. On-demand network code execution with cross-account aliases
WO2018032499A1 (zh) * 2016-08-19 2018-02-22 华为技术有限公司 一种负载均衡的方法及相关装置
US10884787B1 (en) 2016-09-23 2021-01-05 Amazon Technologies, Inc. Execution guarantees in an on-demand network code execution system
US10061613B1 (en) 2016-09-23 2018-08-28 Amazon Technologies, Inc. Idempotent task execution in on-demand network code execution systems
US11119813B1 (en) 2016-09-30 2021-09-14 Amazon Technologies, Inc. Mapreduce implementation using an on-demand network code execution system
US11063758B1 (en) 2016-11-01 2021-07-13 F5 Networks, Inc. Methods for facilitating cipher selection and devices thereof
US10505792B1 (en) 2016-11-02 2019-12-10 F5 Networks, Inc. Methods for facilitating network traffic analytics and devices thereof
US10778585B1 (en) * 2016-11-30 2020-09-15 Amazon Technologies, Inc. Connection and application state migration for uninterrupted service availability
US10235069B2 (en) * 2016-12-22 2019-03-19 Western Digital Technologies, Inc. Load balancing by dynamically transferring memory range assignments
US10084855B2 (en) * 2017-01-23 2018-09-25 Akamai Technologies, Inc. Pixel-based load balancing
US10476945B2 (en) * 2017-02-01 2019-11-12 Juniper Networks, Inc. Consistent flow assignment in load balancing
US11496438B1 (en) 2017-02-07 2022-11-08 F5, Inc. Methods for improved network security using asymmetric traffic delivery and devices thereof
US10834176B2 (en) 2017-03-10 2020-11-10 The Directv Group, Inc. Automated end-to-end application deployment in a data center
US10791119B1 (en) 2017-03-14 2020-09-29 F5 Networks, Inc. Methods for temporal password injection and devices thereof
US10812266B1 (en) 2017-03-17 2020-10-20 F5 Networks, Inc. Methods for managing security tokens based on security violations and devices thereof
US10931662B1 (en) 2017-04-10 2021-02-23 F5 Networks, Inc. Methods for ephemeral authentication screening and devices thereof
US10972453B1 (en) 2017-05-03 2021-04-06 F5 Networks, Inc. Methods for token refreshment based on single sign-on (SSO) for federated identity environments and devices thereof
US11343237B1 (en) 2017-05-12 2022-05-24 F5, Inc. Methods for managing a federated identity environment using security and access control data and devices thereof
US11122042B1 (en) 2017-05-12 2021-09-14 F5 Networks, Inc. Methods for dynamically managing user access control and devices thereof
US10212043B1 (en) * 2017-07-26 2019-02-19 Citrix Systems, Inc. Proactive link load balancing to maintain quality of link
US10599482B2 (en) 2017-08-24 2020-03-24 Google Llc Method for intra-subgraph optimization in tuple graph programs
US10642582B2 (en) 2017-08-24 2020-05-05 Google Llc System of type inference for tuple graph programs method of executing a tuple graph program across a network
US10887235B2 (en) * 2017-08-24 2021-01-05 Google Llc Method of executing a tuple graph program across a network
US11122083B1 (en) 2017-09-08 2021-09-14 F5 Networks, Inc. Methods for managing network connections based on DNS data and network policies and devices thereof
KR102058541B1 (ko) * 2017-12-11 2020-01-22 엔에이치엔 주식회사 서버 모니터링 방법 및 이를 이용한 서버 모니터링 시스템
US10303492B1 (en) 2017-12-13 2019-05-28 Amazon Technologies, Inc. Managing custom runtimes in an on-demand code execution system
US10564946B1 (en) 2017-12-13 2020-02-18 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US10733085B1 (en) 2018-02-05 2020-08-04 Amazon Technologies, Inc. Detecting impedance mismatches due to cross-service calls
US10353678B1 (en) 2018-02-05 2019-07-16 Amazon Technologies, Inc. Detecting code characteristic alterations due to cross-service calls
US10572375B1 (en) 2018-02-05 2020-02-25 Amazon Technologies, Inc. Detecting parameter validity in code including cross-service calls
US10831898B1 (en) 2018-02-05 2020-11-10 Amazon Technologies, Inc. Detecting privilege escalations in code including cross-service calls
US10725752B1 (en) 2018-02-13 2020-07-28 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US10776091B1 (en) 2018-02-26 2020-09-15 Amazon Technologies, Inc. Logging endpoint in an on-demand code execution system
JP2019161603A (ja) * 2018-03-16 2019-09-19 株式会社東芝 負荷分散装置、負荷分散システム、プログラム及び負荷分散方法
US11658995B1 (en) 2018-03-20 2023-05-23 F5, Inc. Methods for dynamically mitigating network attacks and devices thereof
US20190319933A1 (en) * 2018-04-12 2019-10-17 Alibaba Group Holding Limited Cooperative tls acceleration
US10853115B2 (en) 2018-06-25 2020-12-01 Amazon Technologies, Inc. Execution of auxiliary functions in an on-demand network code execution system
US10649749B1 (en) 2018-06-26 2020-05-12 Amazon Technologies, Inc. Cross-environment application of tracing information for improved code execution
US11146569B1 (en) 2018-06-28 2021-10-12 Amazon Technologies, Inc. Escalation-resistant secure network services using request-scoped authentication information
US10949237B2 (en) 2018-06-29 2021-03-16 Amazon Technologies, Inc. Operating system customization in an on-demand network code execution system
US11044200B1 (en) 2018-07-06 2021-06-22 F5 Networks, Inc. Methods for service stitching using a packet header and devices thereof
US11099870B1 (en) 2018-07-25 2021-08-24 Amazon Technologies, Inc. Reducing execution times in an on-demand network code execution system using saved machine states
CN110858229B (zh) 2018-08-23 2023-04-07 阿里巴巴集团控股有限公司 数据处理方法、设备、访问控制系统及存储介质
CN112005223A (zh) * 2018-09-24 2020-11-27 惠普发展公司,有限责任合伙企业 设备状态评估
US11099917B2 (en) 2018-09-27 2021-08-24 Amazon Technologies, Inc. Efficient state maintenance for execution environments in an on-demand code execution system
US11243953B2 (en) 2018-09-27 2022-02-08 Amazon Technologies, Inc. Mapreduce implementation in an on-demand network code execution system and stream data processing system
US11943093B1 (en) 2018-11-20 2024-03-26 Amazon Technologies, Inc. Network connection recovery after virtual machine transition in an on-demand network code execution system
US10884812B2 (en) 2018-12-13 2021-01-05 Amazon Technologies, Inc. Performance-based hardware emulation in an on-demand network code execution system
US11010188B1 (en) 2019-02-05 2021-05-18 Amazon Technologies, Inc. Simulated data object storage using on-demand computation of data objects
TWI684131B (zh) * 2019-02-26 2020-02-01 華碩電腦股份有限公司 資料傳輸裝置、資料傳輸方法以及非暫態電腦可讀取記錄媒體
US11861386B1 (en) 2019-03-22 2024-01-02 Amazon Technologies, Inc. Application gateways in an on-demand network code execution system
TWI689186B (zh) * 2019-04-09 2020-03-21 聚騰科技股份有限公司 資料傳輸及接收方法
CN110308983B (zh) * 2019-04-19 2022-04-05 中国工商银行股份有限公司 资源负载均衡方法及系统、服务节点和客户端
EP3959675A1 (en) * 2019-04-25 2022-03-02 Liveperson, Inc. Smart capacity for workload routing
US11119809B1 (en) 2019-06-20 2021-09-14 Amazon Technologies, Inc. Virtualization-based transaction handling in an on-demand network code execution system
US11115404B2 (en) 2019-06-28 2021-09-07 Amazon Technologies, Inc. Facilitating service connections in serverless code executions
US11190609B2 (en) 2019-06-28 2021-11-30 Amazon Technologies, Inc. Connection pooling for scalable network services
US11159528B2 (en) 2019-06-28 2021-10-26 Amazon Technologies, Inc. Authentication to network-services using hosted authentication information
US11263220B2 (en) 2019-09-27 2022-03-01 Amazon Technologies, Inc. On-demand execution of object transformation code in output path of object storage service
US11394761B1 (en) 2019-09-27 2022-07-19 Amazon Technologies, Inc. Execution of user-submitted code on a stream of data
US11416628B2 (en) 2019-09-27 2022-08-16 Amazon Technologies, Inc. User-specific data manipulation system for object storage service based on user-submitted code
US10908927B1 (en) 2019-09-27 2021-02-02 Amazon Technologies, Inc. On-demand execution of object filter code in output path of object storage service
US11250007B1 (en) 2019-09-27 2022-02-15 Amazon Technologies, Inc. On-demand execution of object combination code in output path of object storage service
US11023416B2 (en) 2019-09-27 2021-06-01 Amazon Technologies, Inc. Data access control system for object storage service based on owner-defined code
US11656892B1 (en) 2019-09-27 2023-05-23 Amazon Technologies, Inc. Sequential execution of user-submitted code and native functions
US11106477B2 (en) 2019-09-27 2021-08-31 Amazon Technologies, Inc. Execution of owner-specified code during input/output path to object storage service
US11550944B2 (en) 2019-09-27 2023-01-10 Amazon Technologies, Inc. Code execution environment customization system for object storage service
US11360948B2 (en) 2019-09-27 2022-06-14 Amazon Technologies, Inc. Inserting owner-specified data processing pipelines into input/output path of object storage service
US11386230B2 (en) 2019-09-27 2022-07-12 Amazon Technologies, Inc. On-demand code obfuscation of data in input path of object storage service
US10996961B2 (en) 2019-09-27 2021-05-04 Amazon Technologies, Inc. On-demand indexing of data in input path of object storage service
US11055112B2 (en) 2019-09-27 2021-07-06 Amazon Technologies, Inc. Inserting executions of owner-specified code into input/output path of object storage service
US11023311B2 (en) 2019-09-27 2021-06-01 Amazon Technologies, Inc. On-demand code execution in input path of data uploaded to storage service in multiple data portions
US11119826B2 (en) 2019-11-27 2021-09-14 Amazon Technologies, Inc. Serverless call distribution to implement spillover while avoiding cold starts
US10942795B1 (en) 2019-11-27 2021-03-09 Amazon Technologies, Inc. Serverless call distribution to utilize reserved capacity without inhibiting scaling
CN111130979B (zh) * 2019-12-09 2022-02-22 苏州浪潮智能科技有限公司 一种sdwan场景下分支节点连接中心节点的方法和设备
US11714682B1 (en) 2020-03-03 2023-08-01 Amazon Technologies, Inc. Reclaiming computing resources in an on-demand code execution system
US11188391B1 (en) 2020-03-11 2021-11-30 Amazon Technologies, Inc. Allocating resources to on-demand code executions under scarcity conditions
US11775640B1 (en) 2020-03-30 2023-10-03 Amazon Technologies, Inc. Resource utilization-based malicious task detection in an on-demand code execution system
US20210326322A1 (en) * 2020-04-17 2021-10-21 Unisys Corporation Change history
US11616721B2 (en) 2020-11-24 2023-03-28 International Business Machines Corporation In-packet version tagging utilizing a perimeter NAT
US11593270B1 (en) 2020-11-25 2023-02-28 Amazon Technologies, Inc. Fast distributed caching using erasure coded object parts
US11550713B1 (en) 2020-11-25 2023-01-10 Amazon Technologies, Inc. Garbage collection in distributed systems using life cycled storage roots
US11388210B1 (en) 2021-06-30 2022-07-12 Amazon Technologies, Inc. Streaming analytics using a serverless compute system
CN114039881B (zh) * 2021-10-19 2023-08-08 创盛视联数码科技(北京)有限公司 一种通信连接监控方法
EP4268912A1 (en) * 2022-04-26 2023-11-01 Build A Rocket Boy Games Ltd. Dynamic transitioning of a simulating host of a portion or all of a network interactive environment
CN116233137B (zh) * 2023-02-17 2023-11-17 通明智云(北京)科技有限公司 一种基于集群的负载分担和备份方法及装置

Family Cites Families (184)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4200770A (en) * 1977-09-06 1980-04-29 Stanford University Cryptographic apparatus and method
US4218582A (en) 1977-10-06 1980-08-19 The Board Of Trustees Of The Leland Stanford Junior University Public key cryptographic apparatus and method
US4405829A (en) 1977-12-14 1983-09-20 Massachusetts Institute Of Technology Cryptographic communications system and method
US4424414A (en) * 1978-05-01 1984-01-03 Board Of Trustees Of The Leland Stanford Junior University Exponentiation cryptographic apparatus and method
DE3789215T2 (de) 1986-12-22 1994-06-01 American Telephone & Telegraph Gesteuerter dynamischer Belastungsausgleich für ein Multiprozessorsystem.
US5031089A (en) 1988-12-30 1991-07-09 United States Of America As Represented By The Administrator, National Aeronautics And Space Administration Dynamic resource allocation scheme for distributed heterogeneous computer systems
JPH0488489A (ja) 1990-08-01 1992-03-23 Internatl Business Mach Corp <Ibm> 一般化ハフ変換を用いた文字認識装置および方法
ATE194238T1 (de) * 1990-09-17 2000-07-15 Cabletron Systems Inc System und verfahren zur modellierung eines computer-netzwerks
JPH04287290A (ja) 1990-11-20 1992-10-12 Imra America Inc ハフ変換画像処理装置
EP0576574B1 (en) * 1991-03-18 2001-10-31 Echelon Corporation Programming language structures for use in a network for communicating, sensing and controlling information
EP0576549A1 (en) 1991-03-18 1994-01-05 Echelon Corporation Binder interface structure
US6115393A (en) 1991-04-12 2000-09-05 Concord Communications, Inc. Network monitoring
IL99923A0 (en) 1991-10-31 1992-08-18 Ibm Israel Method of operating a computer in a network
US5371852A (en) 1992-10-14 1994-12-06 International Business Machines Corporation Method and apparatus for making a cluster of computers appear as a single host on a network
US5557774A (en) 1993-03-22 1996-09-17 Hitachi, Ltd. Method for making test environmental programs
BR9402027A (pt) * 1993-05-28 1994-12-13 Xerox Corp Processo para gerenciar uma configuração e assegurar compatibilidade entre componentes num sistema de computação, e, processo para eliminar incompatibilidades entre software residente e software de migração num sistema de computador automatizado
JP3487515B2 (ja) * 1993-06-15 2004-01-19 株式会社日立製作所 分散処理システムおよび分散処理方法
US5686940A (en) 1993-12-24 1997-11-11 Rohm Co., Ltd. Display apparatus
US5668995A (en) 1994-04-22 1997-09-16 Ncr Corporation Method and apparatus for capacity planning for multiprocessor computer systems in client/server environments
JPH0844677A (ja) * 1994-07-29 1996-02-16 Toshiba Corp 分散処理システム
WO1996016497A1 (en) * 1994-11-21 1996-05-30 Oracle Corporation Transferring binary large objects (blobs) in a network environment
US5758351A (en) 1995-03-01 1998-05-26 Sterling Software, Inc. System and method for the creation and use of surrogate information system objects
US5724508A (en) 1995-03-09 1998-03-03 Insoft, Inc. Apparatus for collaborative computing
US5774668A (en) 1995-06-07 1998-06-30 Microsoft Corporation System for on-line service in which gateway computer uses service map which includes loading condition of servers broadcasted by application servers for load balancing
US5895499A (en) * 1995-07-03 1999-04-20 Sun Microsystems, Inc. Cross-domain data transfer using deferred page remapping
US5917730A (en) 1995-08-17 1999-06-29 Gse Process Solutions, Inc. Computer implemented object oriented visualization system and method
US5774689A (en) 1995-09-22 1998-06-30 Bell Atlantic Network Services, Inc. Network configuration management system for digital communication networks
US6047323A (en) * 1995-10-19 2000-04-04 Hewlett-Packard Company Creation and migration of distributed streams in clusters of networked computers
US5684800A (en) 1995-11-15 1997-11-04 Cabletron Systems, Inc. Method for establishing restricted broadcast groups in a switched network
US5801970A (en) 1995-12-06 1998-09-01 Martin Marietta Corporation Model-based feature tracking system
GB2309558A (en) * 1996-01-26 1997-07-30 Ibm Load balancing across the processors of a server computer
JP3847364B2 (ja) * 1996-02-14 2006-11-22 富士通株式会社 ロードシェアシステム
JP3083476B2 (ja) * 1996-03-06 2000-09-04 松下電器産業株式会社 アプリケーションサーバシステム
JPH09244940A (ja) * 1996-03-12 1997-09-19 Hitachi Ltd 分散計算機資源の管理方法
US5768271A (en) 1996-04-12 1998-06-16 Alcatel Data Networks Inc. Virtual private network
US6085238A (en) 1996-04-23 2000-07-04 Matsushita Electric Works, Ltd. Virtual LAN system
US5748958A (en) 1996-04-30 1998-05-05 International Business Machines Corporation System for utilizing batch requests to present membership changes to process groups
US5845124A (en) 1996-05-01 1998-12-01 Ncr Corporation Systems and methods for generating and displaying a symbolic representation of a network model
DE69738095T2 (de) 1996-06-07 2008-05-29 Nippon Telegraph And Telephone Corp. Verfahren und System zur Steuerung eines VLANs
KR100204029B1 (ko) 1996-06-19 1999-06-15 이계철 비동기전달모드 교환 시스템에서 연결 식별자 할당방법
US5822531A (en) 1996-07-22 1998-10-13 International Business Machines Corporation Method and system for dynamically reconfiguring a cluster of computer systems
US5796830A (en) * 1996-07-29 1998-08-18 International Business Machines Corporation Interoperable cryptographic key recovery system
US5774660A (en) 1996-08-05 1998-06-30 Resonate, Inc. World-wide-web server with delayed resource-binding for resource-based load balancing on a distributed resource multi-node network
US5818937A (en) 1996-08-12 1998-10-06 Ncr Corporation Telephone tone security device
US5930798A (en) 1996-08-15 1999-07-27 Predicate Logic, Inc. Universal data measurement, analysis and control system
US5918017A (en) 1996-08-23 1999-06-29 Internatioinal Business Machines Corp. System and method for providing dynamically alterable computer clusters for message routing
US6236365B1 (en) 1996-09-09 2001-05-22 Tracbeam, Llc Location of a mobile station using a plurality of commercial wireless infrastructures
US5832529A (en) * 1996-10-11 1998-11-03 Sun Microsystems, Inc. Methods, apparatus, and product for distributed garbage collection
US5790895A (en) 1996-10-18 1998-08-04 Compaq Computer Corporation Modem sharing
US5784463A (en) 1996-12-04 1998-07-21 V-One Corporation Token distribution, registration, and dynamic configuration of user entitlement for an application level security system and method
US5938732A (en) 1996-12-09 1999-08-17 Sun Microsystems, Inc. Load balancing and failover of network services
US6125442A (en) 1996-12-13 2000-09-26 Maves International Software, Inc. Method, system and data structures for computer software application development and execution
GB9626241D0 (en) 1996-12-18 1997-02-05 Ncr Int Inc Secure data processing method and system
US5845277A (en) 1996-12-19 1998-12-01 Mci Communications Corporation Production of statistically-based network maps
US6272523B1 (en) 1996-12-20 2001-08-07 International Business Machines Corporation Distributed networking using logical processes
US6112243A (en) 1996-12-30 2000-08-29 Intel Corporation Method and apparatus for allocating tasks to remote networked processors
JPH10198642A (ja) * 1997-01-09 1998-07-31 Fujitsu Ltd サーバ装置
US5826015A (en) 1997-02-20 1998-10-20 Digital Equipment Corporation Method and apparatus for secure remote programming of firmware and configurations of a computer over a network
US6151688A (en) * 1997-02-21 2000-11-21 Novell, Inc. Resource management in a clustered computer system
US5958009A (en) 1997-02-27 1999-09-28 Hewlett-Packard Company System and method for efficiently monitoring quality of service in a distributed processing environment
US6067580A (en) 1997-03-11 2000-05-23 International Business Machines Corporation Integrating distributed computing environment remote procedure calls with an advisory work load manager
US5968126A (en) 1997-04-02 1999-10-19 Switchsoft Systems, Inc. User-based binding of network stations to broadcast domains
EP0972379A4 (en) 1997-04-04 2000-07-05 Ascend Communications Inc EXTREMELY FAST PACKET PROGRAMMING METHOD AND DEVICE
CA2202572C (en) 1997-04-14 2004-02-10 Ka Lun Eddie Law A scaleable web server and method of efficiently managing multiple servers
US6065058A (en) 1997-05-09 2000-05-16 International Business Machines Corp. Dynamic push filtering based on information exchanged among nodes in a proxy hierarchy
US6049528A (en) * 1997-06-30 2000-04-11 Sun Microsystems, Inc. Trunking ethernet-compatible networks
FR2765702B1 (fr) 1997-07-02 2001-07-06 Bull Sa Architecture de systeme de traitement de l'information
US6185308B1 (en) * 1997-07-07 2001-02-06 Fujitsu Limited Key recovery system
US6233610B1 (en) 1997-08-27 2001-05-15 Northern Telecom Limited Communications network having management system architecture supporting reuse
US5960371A (en) 1997-09-04 1999-09-28 Schlumberger Technology Corporation Method of determining dips and azimuths of fractures from borehole images
US6041054A (en) * 1997-09-24 2000-03-21 Telefonaktiebolaget Lm Ericsson Efficient transport of internet protocol packets using asynchronous transfer mode adaptation layer two
JP3649367B2 (ja) * 1997-09-26 2005-05-18 ソニー株式会社 パケット伝送制御方法および装置
EP0907145A3 (en) 1997-10-03 2003-03-26 Nippon Telegraph and Telephone Corporation Method and equipment for extracting image features from image sequence
US6192401B1 (en) * 1997-10-21 2001-02-20 Sun Microsystems, Inc. System and method for determining cluster membership in a heterogeneous distributed system
US6047325A (en) * 1997-10-24 2000-04-04 Jain; Lalit Network device for supporting construction of virtual local area networks on arbitrary local and wide area computer networks
US6178529B1 (en) * 1997-11-03 2001-01-23 Microsoft Corporation Method and system for resource monitoring of disparate resources in a server cluster
US6088734A (en) 1997-11-12 2000-07-11 International Business Machines Corporation Systems methods and computer program products for controlling earliest deadline first scheduling at ATM nodes
US6125447A (en) 1997-12-11 2000-09-26 Sun Microsystems, Inc. Protection domains to provide security in a computer system
US6035405A (en) * 1997-12-22 2000-03-07 Nortel Networks Corporation Secure virtual LANs
US6370584B1 (en) * 1998-01-13 2002-04-09 Trustees Of Boston University Distributed routing
US6086618A (en) 1998-01-26 2000-07-11 Microsoft Corporation Method and computer program product for estimating total resource usage requirements of a server application in a hypothetical user configuration
US6182275B1 (en) * 1998-01-26 2001-01-30 Dell Usa, L.P. Generation of a compatible order for a computer system
US6076108A (en) 1998-03-06 2000-06-13 I2 Technologies, Inc. System and method for maintaining a state for a user session using a web system having a global session server
US6208649B1 (en) * 1998-03-11 2001-03-27 Cisco Technology, Inc. Derived VLAN mapping technique
US6691148B1 (en) * 1998-03-13 2004-02-10 Verizon Corporate Services Group Inc. Framework for providing quality of service requirements in a distributed object-oriented computer system
TW374965B (en) 1998-03-17 1999-11-21 Winbond Electronics Corp Method of processing of transmission of confidential data and the network system
US6098093A (en) 1998-03-19 2000-08-01 International Business Machines Corp. Maintaining sessions in a clustered server environment
US6393386B1 (en) * 1998-03-26 2002-05-21 Visual Networks Technologies, Inc. Dynamic modeling of complex networks and prediction of impacts of faults therein
US6236901B1 (en) 1998-03-31 2001-05-22 Dell Usa, L.P. Manufacturing system and method for assembly of computer systems in a build-to-order environment
EP1068693B1 (en) * 1998-04-03 2011-12-21 Vertical Networks, Inc. System and method for transmitting voice and data using intelligent bridged tdm and packet buses
US6118785A (en) 1998-04-07 2000-09-12 3Com Corporation Point-to-point protocol with a signaling channel
US6059842A (en) 1998-04-14 2000-05-09 International Business Machines Corp. System and method for optimizing computer software and hardware
US6208345B1 (en) * 1998-04-15 2001-03-27 Adc Telecommunications, Inc. Visual data integration system and method
US6167052A (en) 1998-04-27 2000-12-26 Vpnx.Com, Inc. Establishing connectivity in networks
US6311144B1 (en) 1998-05-13 2001-10-30 Nabil A. Abu El Ata Method and apparatus for designing and analyzing information systems using multi-layer mathematical models
FR2779018B1 (fr) * 1998-05-22 2000-08-18 Activcard Terminal et systeme pour la mise en oeuvre de transactions electroniques securisees
US6269076B1 (en) 1998-05-28 2001-07-31 3Com Corporation Method of resolving split virtual LANs utilizing a network management system
US6360265B1 (en) * 1998-07-08 2002-03-19 Lucent Technologies Inc. Arrangement of delivering internet protocol datagrams for multimedia services to the same server
US6226788B1 (en) 1998-07-22 2001-05-01 Cisco Technology, Inc. Extensible network management system
US6266707B1 (en) 1998-08-17 2001-07-24 International Business Machines Corporation System and method for IP network address translation and IP filtering with dynamic address resolution
US6336138B1 (en) * 1998-08-25 2002-01-01 Hewlett-Packard Company Template-driven approach for generating models on network services
US6327622B1 (en) 1998-09-03 2001-12-04 Sun Microsystems, Inc. Load balancing in a network environment
US6311270B1 (en) 1998-09-14 2001-10-30 International Business Machines Corporation Method and apparatus for securing communication utilizing a security processor
US6253230B1 (en) 1998-09-22 2001-06-26 International Business Machines Corporation Distributed scalable device for selecting a server from a server cluster and a switched path to the selected server
US6167383A (en) 1998-09-22 2000-12-26 Dell Usa, Lp Method and apparatus for providing customer configured machines at an internet site
US6230312B1 (en) 1998-10-02 2001-05-08 Microsoft Corporation Automatic detection of per-unit location constraints
US6438652B1 (en) * 1998-10-09 2002-08-20 International Business Machines Corporation Load balancing cooperating cache servers by shifting forwarded request
CA2287813C (en) * 1998-10-22 2005-03-29 At&T Corp. System and method for network load balancing
US6212559B1 (en) * 1998-10-28 2001-04-03 Trw Inc. Automated configuration of internet-like computer networks
JP3820777B2 (ja) * 1998-11-12 2006-09-13 富士ゼロックス株式会社 秘密鍵寄託システムおよび方法
US6272522B1 (en) 1998-11-17 2001-08-07 Sun Microsystems, Incorporated Computer data packet switching and load balancing system using a general-purpose multiprocessor architecture
US6330605B1 (en) 1998-11-19 2001-12-11 Volera, Inc. Proxy cache cluster
US6108702A (en) 1998-12-02 2000-08-22 Micromuse, Inc. Method and apparatus for determining accurate topology features of a network
US6336171B1 (en) * 1998-12-23 2002-01-01 Ncr Corporation Resource protection in a cluster environment
US6570847B1 (en) * 1998-12-31 2003-05-27 At&T Corp. Method and system for network traffic rate control based on fractional tokens
US6691168B1 (en) * 1998-12-31 2004-02-10 Pmc-Sierra Method and apparatus for high-speed network rule processing
US6377996B1 (en) * 1999-02-18 2002-04-23 International Business Machines Corporation System for seamless streaming of data stored on a network of distributed primary and target servers using segmentation information exchanged among all servers during streaming
JP2000268012A (ja) * 1999-03-12 2000-09-29 Nec Corp クライアントサーバシステムにおけるサーバ負荷の分散方法ならびに装置
US6341356B1 (en) * 1999-03-25 2002-01-22 International Business Machines Corporation System for I/O path load balancing and failure which can be ported to a plurality of operating environments
JP2000322288A (ja) * 1999-05-06 2000-11-24 Fujitsu Ltd 分散オブジェクト開発システム、および、分散オブジェクト開発をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体
US6757744B1 (en) * 1999-05-12 2004-06-29 Unisys Corporation Distributed transport communications manager with messaging subsystem for high-speed communications between heterogeneous computer systems
ATE303690T1 (de) * 1999-06-10 2005-09-15 Alcatel Internetworking Inc System und verfahren zur regelbasierten netzverwaltung von virtuellen privaten netzen
US6539494B1 (en) * 1999-06-17 2003-03-25 Art Technology Group, Inc. Internet server session backup apparatus
US6505244B1 (en) * 1999-06-29 2003-01-07 Cisco Technology Inc. Policy engine which supports application specific plug-ins for enforcing policies in a feedback-based, adaptive data network
US6367010B1 (en) * 1999-07-02 2002-04-02 Postx Corporation Method for generating secure symmetric encryption and decryption
US6684335B1 (en) * 1999-08-19 2004-01-27 Epstein, Iii Edwin A. Resistance cell architecture
US7162427B1 (en) * 1999-08-20 2007-01-09 Electronic Data Systems Corporation Structure and method of modeling integrated business and information technology frameworks and architecture in support of a business
US6370573B1 (en) * 1999-08-31 2002-04-09 Accenture Llp System, method and article of manufacture for managing an environment of a development architecture framework
US6256773B1 (en) 1999-08-31 2001-07-03 Accenture Llp System, method and article of manufacture for configuration management in a development architecture framework
US6351685B1 (en) * 1999-11-05 2002-02-26 International Business Machines Corporation Wireless communication between multiple intelligent pickers and with a central job queue in an automated data storage library
US6598077B2 (en) * 1999-12-06 2003-07-22 Warp Solutions, Inc. System and method for dynamic content routing
US6529953B1 (en) * 1999-12-17 2003-03-04 Reliable Network Solutions Scalable computer network resource monitoring and location system
US6862613B1 (en) * 2000-01-10 2005-03-01 Sun Microsystems, Inc. Method and apparatus for managing operations of clustered computer systems
US6983317B1 (en) * 2000-02-28 2006-01-03 Microsoft Corporation Enterprise management system
US6701363B1 (en) * 2000-02-29 2004-03-02 International Business Machines Corporation Method, computer program product, and system for deriving web transaction performance metrics
US7506034B2 (en) * 2000-03-03 2009-03-17 Intel Corporation Methods and apparatus for off loading content servers through direct file transfer from a storage center to an end-user
US6678821B1 (en) * 2000-03-23 2004-01-13 E-Witness Inc. Method and system for restricting access to the private key of a user in a public key infrastructure
US6574195B2 (en) * 2000-04-19 2003-06-03 Caspian Networks, Inc. Micro-flow management
AU2001261141A1 (en) * 2000-05-02 2001-11-12 Sun Microsystems, Inc. Method and system for achieving high availability in a networked computer system
US6675308B1 (en) * 2000-05-09 2004-01-06 3Com Corporation Methods of determining whether a network interface card entry within the system registry pertains to physical hardware or to a virtual device
JP2002108910A (ja) * 2000-09-27 2002-04-12 Nec Soft Ltd 暗号化ファイルシステム及び暗号化ファイル検索方法並びにコンピュータ可読記録媒体
US7272653B2 (en) * 2000-09-28 2007-09-18 International Business Machines Corporation System and method for implementing a clustered load balancer
US6886038B1 (en) * 2000-10-24 2005-04-26 Microsoft Corporation System and method for restricting data transfers and managing software components of distributed computers
US6853841B1 (en) * 2000-10-25 2005-02-08 Sun Microsystems, Inc. Protocol for a remote control device to enable control of network attached devices
US7003574B1 (en) * 2000-11-01 2006-02-21 Microsoft Corporation Session load balancing and use of VIP as source address for inter-cluster traffic through the use of a session identifier
US6985956B2 (en) * 2000-11-02 2006-01-10 Sun Microsystems, Inc. Switching system
US6785707B2 (en) * 2000-11-14 2004-08-31 Bitfone Corp. Enhanced multimedia mobile content delivery and message system using cache management
US6856591B1 (en) * 2000-12-15 2005-02-15 Cisco Technology, Inc. Method and system for high reliability cluster management
US20030046615A1 (en) * 2000-12-22 2003-03-06 Alan Stone System and method for adaptive reliability balancing in distributed programming networks
US7383329B2 (en) * 2001-02-13 2008-06-03 Aventail, Llc Distributed cache for state transfer operations
US7003562B2 (en) * 2001-03-27 2006-02-21 Redseal Systems, Inc. Method and apparatus for network wide policy-based analysis of configurations of devices
US7162634B2 (en) * 2001-04-18 2007-01-09 Thomson Licensing Method for providing security on a powerline-modem network
US7194439B2 (en) * 2001-04-30 2007-03-20 International Business Machines Corporation Method and system for correlating job accounting information with software license information
US20030014644A1 (en) * 2001-05-02 2003-01-16 Burns James E. Method and system for security policy management
US7013462B2 (en) * 2001-05-10 2006-03-14 Hewlett-Packard Development Company, L.P. Method to map an inventory management system to a configuration management system
WO2002098526A1 (en) * 2001-06-04 2002-12-12 Playnet, Inc. System and method for distributing a multi-client game/application over a communications network
US20030009559A1 (en) * 2001-07-09 2003-01-09 Naoya Ikeda Network system and method of distributing accesses to a plurality of server apparatus in the network system
US7174379B2 (en) * 2001-08-03 2007-02-06 International Business Machines Corporation Managing server resources for hosted applications
WO2003017571A2 (en) * 2001-08-15 2003-02-27 Sheer Networks, Inc. Service provisioning in a distributed network management architecture
US20030041159A1 (en) * 2001-08-17 2003-02-27 David Tinsley Systems and method for presenting customizable multimedia presentations
US20030041142A1 (en) * 2001-08-27 2003-02-27 Nec Usa, Inc. Generic network monitoring tool
US6980978B2 (en) * 2001-09-07 2005-12-27 International Business Machines Corporation Site integration management system for operational support service in an internet data center
US7500069B2 (en) * 2001-09-17 2009-03-03 Hewlett-Packard Development Company, L.P. System and method for providing secure access to network logical storage partitions
US7769823B2 (en) * 2001-09-28 2010-08-03 F5 Networks, Inc. Method and system for distributing requests for content
US7200665B2 (en) * 2001-10-17 2007-04-03 Hewlett-Packard Development Company, L.P. Allowing requests of a session to be serviced by different servers in a multi-server data service system
US7194616B2 (en) * 2001-10-27 2007-03-20 International Business Machines Corporation Flexible temporary capacity upgrade/downgrade in a computer system without involvement of the operating system
US20030126464A1 (en) * 2001-12-04 2003-07-03 Mcdaniel Patrick D. Method and system for determining and enforcing security policy in a communication session
US6990666B2 (en) * 2002-03-18 2006-01-24 Surgient Inc. Near on-line server
US6681262B1 (en) * 2002-05-06 2004-01-20 Infinicon Systems Network data flow optimization
US20040002878A1 (en) * 2002-06-28 2004-01-01 International Business Machines Corporation Method and system for user-determined authentication in a federated environment
US7191344B2 (en) * 2002-08-08 2007-03-13 Authenex, Inc. Method and system for controlling access to data stored on a data storage device
US20040054791A1 (en) * 2002-09-17 2004-03-18 Krishnendu Chakraborty System and method for enforcing user policies on a web server
US8122106B2 (en) * 2003-03-06 2012-02-21 Microsoft Corporation Integrating design, deployment, and management phases for systems
US7689676B2 (en) * 2003-03-06 2010-03-30 Microsoft Corporation Model-based policy application
US7890543B2 (en) * 2003-03-06 2011-02-15 Microsoft Corporation Architecture for distributed computing system and automated design, deployment, and management of distributed applications
US7072807B2 (en) * 2003-03-06 2006-07-04 Microsoft Corporation Architecture for distributed computing system and automated design, deployment, and management of distributed applications
US7350186B2 (en) * 2003-03-10 2008-03-25 International Business Machines Corporation Methods and apparatus for managing computing deployment in presence of variable workload
US7603442B2 (en) * 2003-06-20 2009-10-13 Microsoft Corporation Method and system for maintaining service dependency relationships in a computer system
US7606929B2 (en) * 2003-06-30 2009-10-20 Microsoft Corporation Network load balancing with connection manipulation
US20060025984A1 (en) * 2004-08-02 2006-02-02 Microsoft Corporation Automatic validation and calibration of transaction-based performance models
US8627149B2 (en) * 2004-08-30 2014-01-07 International Business Machines Corporation Techniques for health monitoring and control of application servers
US7333000B2 (en) * 2004-11-12 2008-02-19 Afco Systems Development, Inc. Tracking system and method for electrically powered equipment
US7350068B2 (en) * 2005-04-22 2008-03-25 International Business Machines Corporation Server blade network boot method that minimizes required network bandwidth
US7805496B2 (en) * 2005-05-10 2010-09-28 International Business Machines Corporation Automatic generation of hybrid performance models

Also Published As

Publication number Publication date
KR101109218B1 (ko) 2012-01-30
EP1494421A1 (en) 2005-01-05
CN1578320B (zh) 2012-06-20
ATE407506T1 (de) 2008-09-15
NO20042744L (no) 2005-01-03
RU2004117220A (ru) 2006-01-10
CA2470300A1 (en) 2004-12-30
CO5590203A1 (es) 2005-12-30
AU2004202389B2 (en) 2009-12-10
BRPI0402591A (pt) 2005-02-09
KR20050002617A (ko) 2005-01-07
AU2004202389A1 (en) 2005-01-20
US20040268358A1 (en) 2004-12-30
TW200506646A (en) 2005-02-16
SG117505A1 (en) 2005-12-29
ZA200404375B (en) 2004-12-09
US7636917B2 (en) 2009-12-22
HK1073025A1 (en) 2005-09-16
MY142244A (en) 2010-11-15
NZ533148A (en) 2006-02-24
CN1578320A (zh) 2005-02-09
DE602004016255D1 (de) 2008-10-16
MXPA04006411A (es) 2005-03-31
JP2005025756A (ja) 2005-01-27
EP1494421B1 (en) 2008-09-03
JP4942921B2 (ja) 2012-05-30
BRPI0402591B1 (pt) 2018-10-16
TWI356311B (en) 2012-01-11
RU2380746C2 (ru) 2010-01-27
EG23984A (en) 2008-02-27
IL162164A0 (en) 2005-11-20

Similar Documents

Publication Publication Date Title
NO331320B1 (no) Balansering av nettverksbelastning ved bruk av informasjon om vertsmaskin-status
EP1494422B1 (en) Network load balancing with connection manipulation
US7613822B2 (en) Network load balancing with session information
US7590736B2 (en) Flexible network load balancing
US7567504B2 (en) Network load balancing with traffic routing
US10142226B1 (en) Direct network connectivity with scalable forwarding and routing fleets
Schroeder et al. Scalable web server clustering technologies
US7363347B2 (en) Method and system for reestablishing connection information on a switch connected to plural servers in a computer network
US7584262B1 (en) Method of and system for allocating resources to resource requests based on application of persistence policies
US6801949B1 (en) Distributed server cluster with graphical user interface
US6182139B1 (en) Client-side resource-based load-balancing with delayed-resource-binding using TCP state migration to WWW server farm
US7870258B2 (en) Seamless fail-over support for virtual interface architecture (VIA) or the like
US7627650B2 (en) Short-cut response for distributed services
RU2387002C2 (ru) Выравнивание сетевой нагрузки с помощью управления соединением
WO2023219709A1 (en) Efficient state replication in sdn networks
Barrenechea Transparent Distributed Web Caching Architecture

Legal Events

Date Code Title Description
MM1K Lapsed by not paying the annual fees