-
QUERVERWEIS AUF VERWANDTE ANMELDUNGEN
-
Diese Anmeldung beansprucht den Nutzen und die Priorität der zuvor eingereichten US-Patentanmeldung Seriennummer 15/279,380, die am 28. September 2016 eingereicht wurde und deren Gegenstand hier durch Rückbezug in seiner Gänze aufgenommen ist.
-
TECHNISCHES GEBIET
-
Ausführungsformen, die hier beschrieben werden, betreffen im Allgemeinen ein Kommunizieren von Paketen über einen Virtual-Machine-Monitor, um Latenz und Jitter zu bestimmen.
-
HINTERGRUND
-
Die Verwendung von virtuellen Umgebungen zum Bereitstellen von Diensten und Fähigkeiten gewinnt in der heutigen Rechenumgebung immer mehr an Bedeutung. Virtuelle Umgebungen werden verwendet, um Dienste mit hohen Anforderungen bezüglich Verfügbarkeit und Verkehrslatenz bereitzustellen. Zum Beispiel verwenden Telekommunikationsunternehmen diese Umgebungen, um Benutzern Telekommunikationsdienste anzubieten. Systeme, die diese Dienste bereitstellen, werden dauerhaft überwacht, um sicherzustellen, dass die Dienste bereitgestellt werden und die von den Kunden geforderten strikten Anforderungen erfüllen. Ausführungsformen richten sich auf das Lösen dieser und anderer Probleme.
-
Figurenliste
-
Ausführungsformen der Erfindung werden als Beispiel und nicht eine Beschränkung in den Figuren der begleitenden Zeichnungen dargestellt, in denen gleiche Bezugszeichen auf ähnliche Elemente verweisen.
- 1A zeigt ein Beispiel eines Systems.
- 1B zeigt ein Beispiel eines Systems.
- 1C zeigt ein Beispiel eines Systems.
- 2A bis 2C zeigen Beispiele von logischen Abläufen.
- 3 zeigt ein Beispiel eines Verarbeitungsablaufs.
- 4 zeigt ein Beispiel eines logischen Ablaufs.
- 5 zeigt ein Beispiel eines Rechensystems.
- 6 zeigt ein Beispiel einer Rechnerarchitektur.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Verschiedene hier besprochene Ausführungsformen können Verfahren, Vorrichtungen, Geräte und Systeme zum Bestimmen von Latenz und Jitter umfassen, die durch einen Virtual-Machine-Monitor, wie z.B. Hypervisor®, verursacht werden. Zum Beispiel können Ausführungsformen ein Veranlassen vorsehen, dass ein oder mehrere „Tracer“-Pakete zwischen Netzwerkschnittstellen über den Virtual-Machine-Monitor kommuniziert werden. Die Netzwerkschnittstellen können virtuelle Netzwerkschnittstellen umfassen und mit einer virtuellen Machine assoziiert sein, die über den Virtual-Machine-Monitor arbeitet. In einigen Ausführungsformen kann die virtuelle Maschine einen oder mehrere Dienste, wie z.B. virtuelle Netzwerkfunktionen (VNFs), die Netzwerkdienste bereitstellen können, unterstützen und betreiben.
-
Ausführungsform können außerdem ein Verwenden der kommunizierten Pakete zum Bestimmen von Latenz und Jitter für einen Virtual-Machine-Monitor umfassen. Zum Beispiel kann die Latenz auf einer Differenz zwischen dem Zeitpunkt, zu dem ein Paket durch eine Netzwerkschnittstelle gesendet wurde, und dem Zeitpunkt, zu dem es durch eine andere Netzwerkschnittstelle empfangen wurde, basieren. Die Messungen zeigen die durch den Virtual-Machine-Monitor verursachte Latenz an. Der Jitter oder die Paketverzögerungsschwankung kann auch auf der Grundlage der Latenz und historischer Latenzmessungen für den Virtual-Machine-Monitor berechnet werden. Der Jitter kann eine Schwankung von Latenz zwischen verschiedenen Latenzberechnungen anzeigen.
-
In manchen Fällen können Ausführungsformen auch ein Durchführen einer Korrekturmaßname auf der Grundlage dessen umfassen, dass die Latenz oder der Jitter eine spezifizierte Anforderung oder einen definierten Parameter für die virtuelle Maschine nicht erfüllt. Zum Beispiel kann eine Dienstgütevereinbarung einen oder mehrere definierte Parameter, die Latenz- und Jitter-Anforderungen umfassen, für die virtuelle Maschine festlegen. Ausführungsformen können eine Gewährleistung umfassen, dass diese Anforderungen durch den Virtual-Machine-Monitor erfüllt werden, und mildernde oder korrigierende Maßnahmen ergreifen, wenn sie nicht erfüllt werden. Zum Beispiel können eine virtuelle Maschine und Anwendungen an einen anderen Virtual-Machine-Monitor migriert werden. In anderen Beispielen können Ausführungsformen ein Initiieren einer virtuellen Maschine und Anwendungen auf einem anderen Virtual-Machine-Monitor umfassen. Diese und andere Einzelheiten werden in der nachstehenden Beschreibung diskutiert.
-
Nun wird Bezug auf die Zeichnungen genommen, wobei durchgehend gleiche Bezugszeichen zum Verweisen auf ähnliche Elemente verwendet werden. In der nachstehenden Beschreibung sind zum Zweck der Erklärung zahlreiche spezifische Einzelheiten angeführt, um ein gründliches Verständnis davon bereitzustellen. Es kann jedoch offensichtlich sein, dass die neuartigen Ausführungsformen ohne diese konkreten Einzelheiten praktiziert werden können. In anderen Fällen werden allgemein bekannte Strukturen und Vorrichtungen in Blockdiagrammform gezeigt, um eine Beschreibung davon zu erleichtern. Es ist beabsichtigt, alle Modifikationen, Äquivalente und Alternativen abzudecken, die mit dem beanspruchten Gegenstand übereinstimmen.
-
1A zeigt eine allgemeine Übersicht eines Systems 100, das einen Teil einer virtuellen Umgebung darstellen kann. In Ausführungsformen kann das in einigen der Figuren gezeigte System 100 in verschiedenen Ausgestaltungen bereitgestellt werden. In einigen Ausführungsformen können die Systeme als ein verteiltes System konfiguriert sein, wobei eine oder mehrere Komponenten des Systems über ein oder mehrere Netzwerke in einem Cloud-Rechensystem verteilt sind. Außerdem können die Systeme virtuelle Umgebungen verwenden. Daher müssen eine oder mehrere Komponenten des Systems nicht notwendigerweise an eine bestimmte Maschine oder Vorrichtung gebunden sein, sondern sie können auf einer Ansammlung oder Gruppierung von Maschinen oder Vorrichtungen arbeiten, die verfügbare Ressourcen aufweisen, um zum Beispiel bestimmte Leistungsanforderungen zu erfüllen. Das System 100 kann eine oder mehrere virtuelle Umgebungen aktivieren, um in der Dienstgüte definierte Parameter zu erfüllen. Diese und andere Einzelheiten werden in der nachstehenden Beschreibung offensichtlicher werden.
-
Das System 100 kann eine Verarbeitungsschaltung 102, einen Speicher 104, eine oder mehrere Netzwerkschnittstellen 106 und einen Speicher 108 umfassen. In einigen Ausführungsformen kann die Verarbeitungsschaltung 102 eine Logik umfassen und kann eines oder mehrere von beliebigen Arten von Rechenelementen sein, wie z.B., jedoch nicht beschränkt auf: ein Mikroprozessor, ein Prozessor, eine zentrale Verarbeitungseinheit, eine Digitalsignalverarbeitungseinheit, ein Dual-Core-Prozessor, ein Prozessor einer mobilen Vorrichtung, ein Desktop-Prozessor, ein Single-Core-Prozessor, eine System-on-Chip-Vorrichtung (SoC), ein CISC-Mikroprozessor (CISC: komplexer Befehlssatz), ein RISC-Mikroprozessor (RISC: reduzierter Befehlssatz), ein VLIW-Mikroprozessor (VLIW: sehr langes Befehlswort), eine FPGA-Schaltung (Field Programmable Gate Array) oder eine andere Art von Prozessor oder einer Verarbeitungsschaltung auf einem einzelnen Chip oder einer integrierten Schaltung. Die Verarbeitungsschaltung 102 kann mit den anderen Elementen des Peer-Systems 105 über Verbindungen (nicht dargestellt), wie z.B. einen oder mehrere Busse, Steuerleitungen und Datenleitungen, verbunden sein und mit ihnen kommunizieren. In einigen Ausführungsformen kann die Verarbeitungsschaltung 102 Prozessorregister oder eine kleine Menge an Speicherplatz umfassen, der für die Verarbeitungseinheiten zum Speichern von Informationen, die Befehle umfassen, auf die während einer Ausführung zugegriffen werden kann, verfügbar ist. Des Weiteren befinden sich Prozessorregister in der Regel oben in der Speicherhierarchie und bieten den schnellsten Weg, auf Daten zuzugreifen.
-
Wie erwähnt, kann das System 100 den Speicher 104 zum Speichern von Informationen umfassen. Außerdem kann der Speicher 104 unter Verwendung von maschinenlesbaren oder computerlesbaren Medien, die in der Lage sind, Daten zu speichern, einschließlich von sowohl flüchtigen und nichtflüchtigen Speichern, implementiert sein. In einigen Ausführungsformen kann das maschinenlesbare oder computerlesbare Medium ein nicht flüchtiges Medium umfassen. Die Ausführungsformen sind nicht in diesem Kontext begrenzt.
-
Der Speicher 104 kann Daten für einen Moment, vorübergehend oder dauerhaft speichern. Der Speicher 104 speichert Befehle und Daten für das System 100. Der Speicher 104 kann auch vorübergehend Variablen oder andere Zwischeninformationen speichern, während die Verarbeitungsschaltung 102 Befehle ausführt. In einigen Ausführungsformen können Informationen und Daten aus dem Speicher 104 in die Rechenregister während einer Verarbeitung von Befehlen geladen werden. Manipulierte Daten werden dann oft zurück im Speicher 104 entweder durch denselben oder einen anschließenden Befehl gespeichert. Der Speicher 104 ist nicht auf das Speichern der vorstehend besprochenen Daten begrenzt; der Speicher 104 kann jeglichen Typ von Daten speichern.
-
Die eine oder die mehreren Netzwerkschnittstellen 106 umfassen eine beliebige Vorrichtung und Schaltung zum Verarbeiten von Informationen oder Kommunikationen über drahtlose oder drahtgebundene Verbindungen. Zum Beispiel können die eine oder die mehreren Netzwerkschnittstellen 106 einen Empfänger, einen Sender, eine oder mehrere Antenne(n) und eine oder mehrere Ethernet-Verbindungen umfassen. Das konkrete Design und die konkrete Implementierung der einen oder der mehreren Netzwerkschnittstellen 106 können von dem Kommunikationsnetzwerk abhängen, in dem das System 100 arbeiten soll.
-
Das System 100 kann den Speicher 108 umfassen, der als eine nichtflüchtige Speichervorrichtung implementiert sein kann, wie z.B., jedoch nicht beschränkt auf: ein Magnetplattenlaufwerk, ein optisches Plattenlaufwerk, ein Bandlaufwerk, eine interne Speichervorrichtung, eine angeschlossene Speichervorrichtung, ein Flash-Speicher, batteriegepuffertes SDRAM (synchrones DRAM) und/oder eine über ein Netzwerk zugängliche Speichervorrichtung. In Ausführungsformen kann der Speicher 108 eine Technologie umfassen, um den verbesserten Speicherleistungsfähigkeitsschutz für wertvolle digitale Medien, wenn zum Beispiel mehrere Festplatten aufgenommen sind, zu erhöhen. Weitere Beispiele des Speichers 108 können eine Festplatte, eine Diskette, ein CD-ROM (Compact Disk Read Only Memory), beschreibbare CD (CD-R), wiederbeschreibbare CD (CD-RW), optische Platten, magnetische Medien, magnetooptische Medien, Wechselspeicherkarten oder Platten, verschiedene Arten von DVD-Vorrichtungen, eine Bandvorrichtung, eine Kassettenvorrichtung oder dergleichen umfassen. Die Ausführungsformen sind nicht auf diesen Kontext begrenzt.
-
Außerdem kann der Speicher 108 Befehle umfassen, die veranlassen können, dass Informationen vorübergehend im Speicher 104 gespeichert und durch die Verarbeitungsschaltung 102 verarbeitet werden. Insbesondere kann der Speicher 108 ein oder mehrere Betriebssysteme (OS), eine oder mehrere virtuelle Umgebungen und eine oder mehrere Anwendungen umfassen.
-
In Ausführungsformen kann das eine oder die mehreren Betriebssysteme eine beliebige Art von Betriebssystem sein, wie z.B. ein auf Android® basierendes Betriebssystem, ein auf Apple iOS® basierendes Betriebssystem, ein auf Symbian® basierendes Betriebssystem, ein auf Blackberry OS® basierendes Betriebssystem, ein auf Windows OS® basierendes Betriebssystem, ein auf Palm OS® basierendes System, ein auf Linux® basierendes Betriebssystem, ein auf FreeBSD® basierendes Betriebssystem und so weiter. Das Betriebssystem kann andere virtuelle Umgebungen und Anwendung zum Arbeiten aktivieren.
-
In einigen Ausführungsformen kann das System 100 eine oder mehrere virtuelle Umgebungen umfassen, die eine oder mehrere virtuelle Maschinen umfassen können, die über einen Virtual-Machine-Monitor 110, wie z.B. Hypervisor, arbeiten. Die virtuellen Maschinen können bestimmte Teile eines Rechnersystems, wie z.B. eine Hardware, einen Speicher und Schnittstellen, und eine Software, die ein Betriebssystem umfasst, nachbilden. Zum Beispiel und wie nachstehend ausführlicher besprochen sein wird, kann das System 100 eine virtuelle Verarbeitungsschaltung 122, einen virtualisierten Speicher 124, eine oder mehrere virtuelle Netzwerkschnittstellen 126 und einen virtuellen Speicher 128 umfassen.
-
In einigen Ausführungsformen kann die virtuelle Verarbeitungsschaltung 122 eine physische zentrale Verarbeitungseinheit (CPU), wie z.B. die Verarbeitungsschaltung 102, sein, welche einer virtuellen Maschine zugewiesen ist. In manchen Fällen kann jeder virtuellen Maschine eine virtuelle Verarbeitungsschaltung 122 zugewiesen werden. In manchen Fällen, wenn das System 100 mehrere CPU-Kerne zur Verfügung hat, dann kann jedoch ein CPU-Scheduler (Computer Processing Unit) Ausführungskontexte zuweisen, und die virtuelle Verarbeitungsschaltung 122 ermöglicht eine Verarbeitung über eine Reihe von Zeitschlitzen auf logischen Prozessoren. Ausführungsformen sind in dieser Hinsicht nicht begrenzt.
-
Auf eine ähnliche Weise kann das System 100 einen virtualisierten Speicher 124 umfassen, der einen Abschnitt des Speichers 104, der einer virtuellen Maschine zugewiesen ist, umfassen kann. Der virtualisierte Speicher 124 kann durch die virtuelle Maschine auf eine selbe Weise verwendet werden, wie der Speicher 104 verwendet wird. Zum Beispiel kann der virtualisierte Speicher 124 Befehle, die mit der virtuellen Maschine assoziiert sind, für eine Verarbeitung speichern. In einigen Ausführungsformen kann der virtualisierte Speicher 124 durch einen Manager des virtuellen Speichers (nicht dargestellt) gesteuert werden, der ein Teil des Virtual-Machine-Monitors 110 sein kann.
-
Das System 100 kann auch eine oder mehrere virtuelle Netzwerkschnittstellen 126 umfassen. Eine virtuelle Netzwerkschnittstelle 126 ist eine abstrakte virtualisierte Repräsentation einer Rechnernetzwerkschnittstelle, wie z.B. der Netzwerkschnittstelle 106. Eine virtuelle Netzwerkschnittstelle 126 kann für eine virtuelle Maschine als ein vollwertiger Ethernet-Controller, der seine eigene MAC-Adresse (Media Access Control) aufweist, erscheinen. Eine virtuelle Netzwerkschnittstelle 126 kann mit einer Netzwerkschnittstelle 106 verbunden sein. Pakete, die durch eine virtuelle Maschine kommuniziert werden, können zum Beispiel durch die virtuelle(n) Netzwerkschnittstelle(n) 126 und eine überbrückte physische Netzwerkschnittstelle(n) 106 für eine Kommunikation an ein Ziel gesendet werden. In einigen Ausführungsformen können Pakete über den Virtual-Machine-Monitor 110 kommuniziert werden.
-
Das System 100 kann außerdem einen virtuellen Speicher 128 umfassen. Der virtuelle Speicher 128 kann ein Abschnitt des physischen Speichers 108 sein, der zum Beispiel einer virtuellen Maschine zugewiesen ist. Der virtuelle Speicher 128 kann Informationen für eine virtuelle Maschine speichern. In manchen Fällen kann der virtuelle Speicher 128 einer virtuellen Maschine zum Zeitpunkt der Erzeugung der virtuellen Maschine zugeordnet werden.
-
In manchen Fällen kann das System 100 virtuelle Netzwerkfunktionen (VFNs) 132-n umfassen und/oder verwenden, die die Verantwortung für die Handhabung spezifischer Netzwerkfunktionen übernehmen, die auf einer oder mehreren virtuellen Maschinen ausgeführt werden, zum Beispiel auf der Hardware-Netzwerkinfrastruktur - Router, Switches usw. Einzelne VNFs können als Bausteine verbunden oder kombiniert werden, um umfassende Netzwerkkommunikationsdienste für das System 100 anzubieten. Zum Beispiel kann in einigen Ausführungsformen das System 100 ein Teil eines Telekommunikationssystems zum Verarbeiten zellulärer und Paket-basierter Kommunikationen in LTE-(Long-Term Evolution)- und späteren 5G-Standardsystemen sein. Die verschiedenen VNFs 132-n können verschiedene Kommunikationsfähigkeiten für das System 100 bereitstellen. Daher kann erwartet werden, dass die VNFs 132-n strikte Leistungsanforderungen auf der Grundlage von Verkehrsklassen und durch die Dienstgütevereinbarungen definiert aufweisen. Wie ausführlicher besprochen sein wird, richten sich Ausführungsformen auf ein Aufrechterhalten dieser strikten Leistungsanforderungen durch Überwachen einer Paketkommunikation durch den Virtual-Machine-Monitor 110, um Echtzeit-, Durchschnitts- und mittlere Latenz und Jitter zu bestimmen, die zumindest teilweise durch die virtuelle Umgebung und den Virtual-Machine-Monitor 110 verursacht werden.
-
Der Virtual-Machine-Monitor 110 oder Hypervisor kann ein Teil einer Rechnersoftware, einer Firmware, einer Hardware sein, die virtuelle Maschinen erzeugt und ausführt. In manchen Fällen präsentiert der Virtual-Machine-Monitor 110 die virtuelle Schaltung 122, den virtualisierten Speicher 124, die virtuellen Netzwerkschnittstellen 126 und den virtuellen Speicher 128 für eine virtuelle Maschine zur Nutzung. Daher kann der Virtual-Machine-Monitor 110 es ermöglichen, dass eine virtuelle Maschine eine Hardware und Komponenten des Systems 100 verwendet. Zum Beispiel ermöglicht der Virtual-Machine-Monitor 110 es einer Anwendung, die in einer Umgebung einer virtuellen Maschine ausgeführt wird, die Verarbeitungsschaltung 102 über die virtuelle Verarbeitungsschaltung 122, den Speicher 104 über den virtualisierten Speicher 124 und den Speicher 108 über den virtuellen Speicher 128 zu verwenden. Gleichermaßen kann der Virtual-Machine-Monitor 110 es ermöglichen, dass Pakete zwischen Anwendungen einer virtuellen Maschine und einer externen Rechenumgebung über die virtuelle Netzwerkschnittstelle 126 und eine Netzwerkschnittstelle 106 kommuniziert werden. Diese Pakete können an eine oder mehrere andere Vorrichtungen über drahtgebundene oder drahtlose Verbindungen kommuniziert werden. In einigen Ausführungsformen kann der Virtual-Machine-Monitor 110 ein Gast-Betriebssystem mit einer virtuellen Betriebsplattform für eine virtuelle Maschine bieten und verwaltet die Ausführung des Gast-Betriebssystems.
-
Wie vorstehend erwähnt können Ausführungsformen ein Überwachen von Latenz und Jitter von Paketen über den Virtual-Machine-Monitor 110 umfassen. Zum Beispiel können ein oder mehrere Pakete, wie z.B. Tracer-Pakete, zwischen jeder der Netzwerkschnittstellen 106 und jeder der virtuellen Netzwerkschnittstellen 126 kommuniziert werden. Die Pakete werden durch die Netzwerkschnittstellen 106 und die virtuellen Netzwerkschnittstellen 126, die durch den Virtual-Machine-Monitor 110 gehostet werden, generiert und periodisch oder halbperiodisch kommuniziert. Insbesondere können die Pakete durch die Netzwerkschnittstellen 106 und die virtuellen Netzwerkschnittstellen 126 mit einer festen Inter-Frame-Verzögerung (Periode) injiziert werden, um eine leichte Latenz- und Jitter-Detektion zu erlauben. Außerdem können verschiedene Injektionspfad-Granularitäten unterstützt werden, einschließlich auf der Ebene der virtuellen Maschinen, der Ebene des virtuellen Ports/der virtuellen Brücke, der Ebene der virtuellen Verbindung und der Ebene der Dienstklasse. Die Ebene der Dienstklasse kann die Verkehrsklasse, wie z.B. Echtzeitverkehr und Best-Effort-Verkehr, sein. Der Virtual-Machine-Monitor 110 kann die momentane Latenz und den momentanen Jitter zwischen den Netzwerkschnittstellen 106 und den virtuellen Netzwerkschnittstellen 126 auf der Grundlage der Kommunikation der Pakete bestimmen. Außerdem kann der Virtual-Machine-Monitor 110 diese Information, z.B. die momentane Latenz- und Jitter-Information, an den Controller 140 der virtuellen Maschine für eine weitere Verarbeitung kommunizieren.
-
In Ausführungsformen kann das System 100 auch einen Controller 140 der virtuellen Maschine, wie z.B. VMware® Orchestrator® oder OpenStack®, umfassen. Der Controller 140 der virtuellen Maschine kann es einem Benutzer ermöglichen, administrative Aufgaben für eine oder mehrere virtuelle Maschinen durchzuführen. Außerdem kann der Controller 140 der virtuellen Maschine eine Latenz- und Jitter-Information von einem oder mehreren Virtual-Machine-Monitoren 110 empfangen, um Latenz- und Jitter-Verteilungsmodelle über einer Cloud-Rechenumgebung zu generieren und aktualisieren. Daher kann der Controller 140 der virtuellen Maschine Latenz und Jitter auf der Cloud-Ebene überwachen und Echtzeit-Entscheidungen treffen, ob konkrete Dienstgütevereinbarungen für verschiedene Benutzer und Benutzeranwendungen erfüllt werden oder nicht. Zum Beispiel kann der Controller 140 der virtuellen Maschine bestimmen, ob ein Virtual-Machine-Monitor 110 und assoziierte virtuelle Maschinen in der Lage sind, die definierten Parameter, einschließlich von Latenz- und Jitter-Anforderungen, auf der Grundlage einer Dienstgütevereinbarung, zu erfüllen. Wenn dies nicht der Fall ist, kann der Controller 140 der virtuellen Maschine veranlassen, dass eine oder mehrere Milderungs- oder Korrekturmaßnahmen durchgeführt werden. Wenn zum Beispiel Anwendungen bereits auf einem System arbeiten, das die spezifizierten Latenz- und Jitter-Anforderungen nicht unterstützt, kann der Controller 140 der virtuellen Maschine eine virtuelle Maschine und die Anwendungen, wie z.B. die VNFs 132-n, dazu veranlassen, zu einem anderen Virtual-Machine-Monitor 110 zu migrieren, der in der Lage ist, die Anforderungen zu erfüllen. In einem anderen Beispiel kann der Controller 140 der virtuellen Maschine veranlassen, dass eine virtuelle Maschine und Anwendungen, die zurzeit nicht ausgeführt werden, auf einem Virtual-Machine-Monitor 110 initiiert werden, der in der Lage ist, spezifizierte Anforderungen zu erfüllen. In einem anderen Beispiel kann der Controller 140 der virtuellen Maschine eine oder mehrere Konfigurationsänderungen in einem Virtual-Machine-Monitor 110 veranlassen, um Leistungseigenschaften zu verbessern. Ausführungsformen sind nicht auf diese Beispiele beschränkt.
-
1B zeigt ein Beispiel eines Systems 150 zum Überwachen und Mildern von Latenz und Jitter in einer Cloud-basierten Rechenumgebung. Wie vorstehend erwähnt, können Ausführungsformen jede Netzwerkschnittstelle 106-p und virtuelle Netzwerkschnittstelle 126-m, wobei p und m beliebige positive Ganzzahlen sind, umfassen, die Paketen zwischen einander kommunizieren. Daher können Pakete an alle der Schnittstellen (106 und 126) und von ihnen in intermittierenden Intervallen gesendet werden. Diese Netzwerkschnittstellen 106 und die virtuellen Netzwerkschnittstellen 126 können Netzwerkdienste für eine virtuelle Maschine bereitstellen, die durch den Virtual-Machine-Monitor 110 unterstützt wird. Der Virtual-Machine-Monitor 110 kann eine momentane Latenz und einen momentanen Jitter auf der Grundlage der Pakete, die zwischen den Netzwerkschnittstellen 106 und den virtuellen Netzwerkschnittstellen 126 kommuniziert werden, bestimmen.
-
Die Pakete können in das System 150 während „aktiven Sitzungen“ eingeführt werden, z.B. wenn das System 150 Information für eine Anwendung, wie z.B. eine VNF(s) 132, verarbeitet, um eine Netzwerkfunktionvirtualisierung (NVV) zu ermöglichen. Daher können Pakete in reale Pfade durch die Verarbeitungsschaltung 102 eingefügt werden, um Pfade, die von Sitzungspaketen durchlaufen werden, genau wiederzugeben. Daher kann in einer NFV-Umgebung, die die VNFs 132 umfasst, der Virtual-Machine-Monitor 110 die Pakete, z.B. Tracer-Pakete, als Real-Verkehr behandeln. Jedoch können die Pakete vor einer Endstufe der virtuellen Netzwerkschnittstellen 126 vor der Auslieferung an eine Anwendung entfernt oder an eine Anwendung übergeben werden. In manchen Fällen können die Pakete vor dem Verlassen der Verarbeitungsschaltung 102 entfernt werden. Daher ist die Ablaufverfolgung aus Leistungsfähigkeitssicht nicht störend, da die Paketplanung gewährleistet, dass die periodische Paketeinfügung über die Netzwerkschnittstellen 106 und die virtuellen Netzwerkschnittstellen 126 derart geplant werden kann, dass sie den Durchsatz nicht beeinflusst. Zum Beispiel veranlasst ein Paket-Scheduler eine Kommunikation der Verfolgungspakete während einer Zeitdauer oder Intervallen, von denen er weiß, dass Sitzungspakete nicht kommuniziert werden. Ausführungsformen sind in dieser Hinsicht nicht begrenzt.
-
Der Virtual-Machine-Monitor 110 kann eine Latenz- und Jitter-information bestimmen und sendet sie an den Controller 140 der virtuellen Maschine. Der Virtual-Machine-Monitor 110 überwacht auch Paketverluste und behält einen Überblick über diese, die auch an den Controller 140 der virtuellen Maschine gesendet und zur Durchführung von Korrekturmaßnahmen verwendet werden können. In einigen Ausführungsformen kann der Virtual-Machine-Monitor 110 die Information an den Controller 140 der virtuellen Maschine auf der Grundlage eines Auslöseereignisses kommunizieren. Zum Beispiel kann die Information kommuniziert werden, wenn eine momentane Latenz über einem Latenzschwellenwert liegt. Der Latenzschwellenwert kann auf einer Latenzanforderung basieren, die zum Beispiel in einer Dienstgütevereinbarung begründet ist. In einem anderen Beispiel kann der Virtual-Machine-Monitor 110 Informationen kommunizieren, wenn bestimmt wird, dass eine durchschnittliche Latenz über einem Latenzschwellenwert liegt, z.B. einem Latenzschwellenwert, der auch auf einer Latenzanforderung in einer Dienstgütevereinbarung basieren kann. Ausführungsformen sind nicht auf diese Weise beschränkt und in manchen Fällen kann der Controller 140 der virtuellen Maschine die Informationen periodisch, halbperiodisch oder nicht periodisch abfragen. In manchen Fällen kann der Controller 140 der virtuellen Maschine eine beliebige Anzahl von virtuellen Maschinen in einer Cloud-basierten Rechenumgebung überwachen und Bestimmungen für sie treffen.
-
1C zeigt ein Beispielsystem 175 zum Überwachen und Mildern von Latenz und Jitter in einer Cloud-basierten Rechenumgebung. Das System 175 umfasst eine Anzahl von Virtual-Machine-Monitoren 110-q, wobei q eine beliebige positive Ganzzahl sein kann, die durch den Controller 140 der virtuellen Maschine überwacht werden können. Der Controller 140 der virtuellen Maschine ist nicht auf ein Überwachen der Virtual-Machine-Monitore 110-q beschränkt und kann andere Aktionen durchführen, wie nachstehend ausführlicher besprochen sein wird.
-
Jeder der Virtual-Machine-Monitore 110-q kann mit einer virtuellen Umgebung oder einer virtuellen Maschine assoziiert werden, um eine virtuelle Umgebung bereitzustellen. Zum Beispiel kann ein Virtual-Machine-Monitor 110 eine virtuelle Maschine unterstützen, um eine Netzwerkfunktionvirtualisierung zu ermöglichen und VNFs 132-Anwenungen zu umfassen. Diese VNFs 132-Anwendungen umfassen typischerweise strikte Latenz- und Jitter-Anforderungen. Jeder der Virtual-Machine-Monitore 110-q kann eine Latenz- und Jitter-Information an den Controller 140 der virtuellen Maschine melden, der sicherstellt, dass die Latenz- und Jitter-Anforderungen für die Anwendungen, wie z.B. VNFs 132, erfüllt werden. Der Controller 140 der virtuellen Maschine kann zum Beispiel Anwendungen und eine virtuelle Maschine an einen anderen Virtual-Machine-Monitor 110 verschieben, wenn die Anforderungen nicht erfüllt werden. Es ist zu beachten, dass die Virtual-Machine-Monitore 110-q und der Controller 140 der virtuellen Maschine eine einzelne Rechenvorrichtung oder einen einzelnen Server oder quer über mehreren Rechenvorrichtungen und Servern arbeiten können. Daher kann ein Verschieben der Anwendungen und der virtuellen Maschine ein Verschieben von diesen von einer Vorrichtung an eine andere Vorrichtung umfassen. Jedoch sind Ausführungsformen nicht auf diese Weise begrenzt. In manchen Fällen können die Anwendungen und die virtuelle Maschine zwischen Virtual-Machine-Monitoren 110 auf derselben Vorrichtung verschoben werden.
-
In einigen Ausführungsformen kann der Controller 140 der virtuellen Maschine eine Latenz- und Jitter-Information von jedem der Virtual-Machine-Monitore 110-q empfangen und statistische Modelle für jeden der Virtual-Machine-Monitore 110-q generieren. Die statistischen Modelle können einen Überblick über eine Latenz- und Jitter-Statistik für jeden der Virtual-Machine-Monitore 110-q über eine Zeitdauer behalten. Die Modelle können eine Gaußverteilung umfassen, die verwendet werden kann, um einen Mittelwert und eine Standardabweichung in Bezug auf Latenz und Jitter für jeden der Virtual-Machine-Monitore zu bestimmen. Diese Modelle können durch den Controller 140 der virtuellen Maschine verwendet werden, um zu bestimmen, ob ein bestimmter Virtual-Machine-Monitor 110-q die Anforderungen einer virtuellen Maschine und Anwendungen erfüllen kann. Wenn der bestimmte Virtual-Machine-Monitor 110-q eine virtuelle Maschine und Anwendungen auf der Grundlage der Modelle unterstützen kann, unternimmt der Controller 140 der virtuellen Maschine möglicherweise keine Korrekturmaßnahmen. Wenn jedoch der bestimmte Virtual-Machine-Monitor 110-q die virtuelle Maschine und die Anwendungen nicht unterstützen kann, kann der Controller 140 der virtuellen Maschine die virtuelle Maschine und die Anwendungen an einen anderen Virtual-Machine-Monitor 110-q verschieben oder auf ihm instanziieren.
-
2A zeigt ein Beispiel eines ersten logischen Ablaufs 200 zur Verarbeitung in einer virtuellen Umgebung. Der Logische Ablauf 200 kann einige oder alle der Operationen repräsentieren, die durch eine oder mehrere der hier beschriebenen Ausführungsformen ausgeführt werden. Zum Beispiel kann der logische Ablauf 200 Operationen darstellen, die durch einen in 1A bis 1C gezeigten Virtual-Machine-Monitor 110 durchgeführt werden. Verschiedene Ausführungsformen sind nicht auf diese Weise beschränkt und eine oder mehrere Operationen können durch andere Komponenten, die einen Controller 140 der virtuellen Maschine umfassen, durchgeführt werden.
-
Bei Block 202 kann ein Virtual-Machine-Monitor eine oder mehrere Netzwerkschnittstellen und virtuelle Netzwerkschnittstellen dazu veranlassen, Pakete zwischen einander zu kommunizieren. In einigen Ausführungsformen können die Pakete Tracer-Pakete sein, die in eine aktive Sitzung eingeführt werden, die reale Pfade durch die Verarbeitungsschaltung eines Systems repräsentieren. Die aktive Sitzung kann eine Sitzung sein, in der eine Information, die durch eine oder mehrere Anwendungen zu verarbeiten ist oder verarbeitet wird, auch zwischen einer virtuellen Maschine und Client-Vorrichtungen kommuniziert wird. Zum Beispiel können während einer aktiven Sitzung ein oder mehrere Pakete der aktiven Sitzung, die Telekommunikationen betreffen, auch zwischen den Netzwerkschnittstellen und virtuellen Netzwerkschnittstellen kommuniziert werden. Diese Pakete der aktiven Sitzung können Informationen umfassen, die durch Anwendungen, wie z.B. VNFs, verarbeitet werden.
-
In Ausführungsformen stören Tracer-Pakete nicht die Pakete der aktiven Sitzung, die Informationen aufweisen, die durch Anwendungen verarbeitet werden. Zum Beispiel können die Tracer-Pakete zwischen Kommunikationen von Paketen der aktiven Sitzung kommuniziert werden. Jedoch können die Tracer-Pakete denselben Pfaden wie die Pakete der aktiven Sitzung durch die Verarbeitungsschaltung folgen, können aber vor dem Verlassen der Verarbeitungsschaltung entfernt werden. Die Tracer-Pakete können auch an verschiedenen Punkten der Kommunikationspipeline entfernt werden. Zum Beispiel können sie auch durch eine Endstufe einer virtuellen Netzwerkschnitte vor einer Auslieferung an eine Anwendung stelle abgewürgt werden.
-
Die Tracer-Pakete können auch periodisch oder halbperiodisch kommuniziert werden, so dass sie die Pakete der aktiven Sitzung nicht stören. Zum Beispiel können die Tracer-Pakete mit einer festen Inter-Frame-Verzögerung (Periode) kommuniziert werden. Daher beeinflussen die Tracer-Pakete nicht den Durchsatz der Pakete der aktiven Sitzung.
-
In Ausführungsformen kann jede Netzwerkschnittstelle und jede virtuelle Netzwerkschnittstelle ein Tracer-Paket an jede andere Netzwerkschnittstelle und jede andere virtuelle Netzwerkschnittstelle kommunizieren. Weiter und bei Block 204 kann der Virtual-Machine-Monitor eine momentane Latenz und einen momentanen Jitter auf der Grundlage der Kommunikation der Tracer-Pakete bestimmen. Der Virtual-Machine-Monitor kann die momentane Latenz und den momentanen Jitter jedes Mal bestimmen, nachdem die Netzwerkschnittstellen und die virtuellen Netzwerkschnittstellen die Tracer-Pakete kommunizieren. Die Latenz kann auf der Grundlage einer Differenz zwischen dem Zeitpunkt, zu dem ein Tracer-Paket durch eine Schnittstelle kommuniziert wurde, und einem Zeitpunkt, zu dem es durch eine Schnittstelle empfangen wurde, bestimmt werden. In einigen Ausführungsformen kann der Virtual-Machine-Monitor diese Information von den Schnittstellen empfangen. Außerdem kann der Virtual-Machine-Monitor die momentane Latenz auf der Grundlage der Kommunikation eines einzelnen Tracer-Pakets, mehrerer Tracer-Pakete und aller Tracer-Pakete, die während einer Inter-Frame-Periode kommuniziert werden, bestimmen. Der Jitter kann auch auf der Grundlage dieser Tracer-Pakete, die während der Inter-Frame-Periode kommuniziert werden, bestimmt werden.
-
Bei Block 206 kann der Virtual-Machine-Monitor die momentane Latenz und den momentanen Jitter an einen Controller der virtuellen Maschine kommunizieren. In einigen Ausführungsformen kann der Virtual-Machine-Monitor die Latenz- und Jitter-Information kommunizieren, wenn die Latenz- und Jitter-Anforderungen durch den Virtual-Machine-Monitor nicht erfüllt werden. Wie vorstehend erwähnt, können diese Anforderungen auf einer Dienstgütevereinbarung basieren, die Leistungsfähigkeitsanforderungen für eine oder mehrere Anwendungen, die durch den Virtual-Machine-Monitor unterstützt werden, definiert. Ausführungsformen sind nicht auf diese Weise begrenzt. Zum Beispiel kann der Virtual-Machine-Monitor die Latenz- und Jitter-Information nach jeder Bestimmung und/oder jeder Inter-Frame-Periode kommunizieren.
-
2B zeigt ein Beispiel eines zweiten logischen Ablaufs 220 zur Verarbeitung in einer virtuellen Umgebung. Der Logische Ablauf 220 kann einige oder alle der Operationen repräsentieren, die durch eine oder mehrere der hier beschriebenen Ausführungsformen ausgeführt werden. Zum Beispiel kann der logische Ablauf 220 Operationen darstellen, die durch einen in 1A bis 1C gezeigten Controller der virtuellen Maschine durchgeführt werden. Verschiedene Ausführungsformen sind nicht auf diese Weise begrenzt. Ausführungsformen sind nicht beschränkt und eine oder mehrere Operationen können durch andere Komponenten, die einen Virtual-Machine-Monitor umfassen, durchgeführt werden.
-
Bei Block 222 kann der Controller der virtuellen Maschine ein oder mehrere Pakete, wie z.B. Tracer-Pakete, dazu veranlassen, dass sie durch Netzwerkschnittstellen und virtuelle Netzwerkschnittstellen für einen oder mehrere Virtual-Machine-Monitore kommuniziert werden. Zum Beispiel kann der Controller der virtuellen Maschine einen Scheduler (nicht dargestellt) umfassen, um zu bestimmen, wenn Schnittstellen für jeden von einem oder mehreren Virtual-Machine-Monitoren die Tracer-Pakete kommunizieren sollen, so dass sie die Pakete der aktiven Sitzung nicht stören.
-
Bei Block 224 kann der Controller der virtuellen Maschine eine Latenz- und Jitter-Information von einem Virtual-Machine-Monitor empfangen. Es ist zu beachten, dass der Controller der virtuellen Maschine eine Latenz- und Jitter-Information von jedem der Virtual-Machine-Monitore innerhalb der virtuellen Umgebung, die durch den Controller der virtuellen Maschine gesteuert wird, empfängt. Jedoch kann die Information zu verschiedenen Zeitpunkten oder Intervallen auf der Grundlage der Zeitplanung der Kommunikation der Tracer-Pakete für jeden der Virtual-Machine-Monitore empfangen werden. Die Latenz- und Jitter-Information kann die momentane Latenz und der momentane Jitter sein, die durch den Virtual-Machine-Monitor auf der Grundlage einer Kommunikation von Tracer-Paketen während einer einzelnen oder mehrerer Inter-Frame-Perioden bestimmt werden.
-
Bei Block 226 kann der Controller der virtuellen Maschine Latenz- und Jitter-Modelle aktualisieren, die eine Latenz- und Jitter-Statistik über eine Zeitdauer für jeden der Virtual-Machine-Monitore umfassen können. Zum Beispiel kann ein Latenz- und Jitter-Modell eine durchschnittliche Latenz über eine Zeitdauer für einen Virtual-Machine-Monitor, eine höchste Latenz für einen Virtual-Machine-Monitor, eine mit der höchsten Latenz assoziierte Zeit und so weiter anzeigen. Diese Information und die momentane Latenz und der momentane Jitter können bei Block 228 verwendet werden, um zu bestimmen, ob Latenz- und Jitter-Anforderungen für jede der Anwendungen, die durch virtuelle Maschinen und Virtual-Machine-Monitore gehostet werden, erfüllt werden. Wenn die Anforderungen erfüllt werden, kann der Controller der virtuellen Maschine weiterhin die Modelle für die Virtual-Machine-Monitore überwachen und aktualisieren.
-
Bei Block 230 kann der Controller der virtuellen Maschine eine Korrekturmaßnahme unternehmen, um sicherzustellen, dass Latenz- und Jitter-Anforderungen für eine oder mehrere Anwendungen erfüllt werden. Zum Beispiel kann der Controller der virtuellen Maschine eine virtuelle Maschine und Anwendungen von einem Virtual-Machine-Monitor, der die Anforderungen nicht erfüllt, an einen Virtual-Machine-Monitor, der die Anforderungen erfüllen wird, migrieren. In manchen Fällen kann der Controller der virtuellen Maschine auf der Grundlage der Latenz- und Jitter-Modelle und/oder der Information über momentane Latenz und den momentanen Jitter auswählen, an welchen Virtual-Machine-Monitor die virtuelle Maschine und Anwendungen bewegt werden sollen. In einigen Ausführungsformen kann die durch den Controller der virtuellen Maschine durchgeführte Aktion ein Bestimmen umfassen, wo eine virtuelle Maschine instanziiert werden soll, wie nachstehend ausführlicher in 2C besprochen.
-
2C zeigt ein Beispiel eines dritten logischen Ablaufs 240 zur Verarbeitung in einer virtuellen Umgebung. Der Logische Ablauf 240 kann einige oder alle der Operationen repräsentieren, die durch eine oder mehrere der hier beschriebenen Ausführungsformen ausgeführt werden. Zum Beispiel kann der logische Ablauf 240 Operationen darstellen, die durch einen in 1A bis 1C gezeigten Controller 140 der virtuellen Maschine durchgeführt werden. Verschiedene Ausführungsformen sind nicht auf diese Weise begrenzt. Verschiedene Ausführungsformen sind nicht beschränkt und eine oder mehrere Operationen können durch andere Komponenten, die einen Virtual-Machine-Monitor 110 umfassen, durchgeführt werden.
-
Bei Block 242 kann der Controller der virtuellen Maschine eine Anfrage empfangen, um eine virtuelle Maschine zu instanziieren, die eine oder mehrere Anwendungen zum Verarbeiten von Informationen umfasst. In einigen Ausführungsformen kann die Anfrage von einem Benutzer generiert werden und auf einer Benutzerinteraktion mit einer Benutzereingabe basieren. Jedoch sind Ausführungsformen nicht auf diese Weise beschränkt und in manchen Fällen kann die Anfrage von einem Rechner generiert werden.
-
Bei Block 244 kann der Controller der virtuellen Maschine die Anforderungen für die virtuelle Maschine und Anwendungen mit den Latenz- und Jitter-Modellen für die Virtual-Machine-Monitore vergleichen. Der Vergleich kann verwendet werden, um bei Block 246 zu bestimmen, auf welchem Virtual-Machine-Monitor die virtuelle Maschine und die Anwendungen instanziiert werden sollen. Zum Beispiel kann der Controller der virtuellen Maschine einen verfügbaren Virtual-Machine-Monitor auswählten, der in der Lage ist, die Latenz- und Jitter-Anforderungen für die virtuelle Maschine und die Anwendungen zu erfüllen. In manchen Fällen kann der „beste“ oder der Virtual-Machine-Monitor mit der niedrigsten Latenz auf der Grundlage der Modelle ausgewählt werden. Jedoch sind Ausführungsformen nicht auf diese Weise begrenzt. Weiter und bei Block 248 kann der Controller der virtuellen Maschine veranlassen, dass die virtuelle Maschine und die Anwendungen auf dem ausgewählten Virtual-Machine-Monitor instanziiert werden.
-
3 zeigt ein Beispiel eines ersten Verarbeitungsablaufs 300 zur Verarbeitung in einer virtuellen Umgebung, der ein Überwachen von Latenz- und Jitter umfasst. Der Verarbeitungsablauf 300 kann einige oder alle der Operationen repräsentieren, die durch eine oder mehrere der hier beschriebenen Ausführungsformen ausgeführt werden. Zum Beispiel kann der Verarbeitungsablauf 300 Operationen darstellen, die durch einen Controller der virtuellen Maschine und den Virtual-Machine-Monitor, die in 1A bis 1C gezeigt sind, durchgeführt werden. Obwohl bestimmte Operationen derart dargestellt sind, dass sie in einer bestimmten Reihenfolge stattfinden, sind die Ausführungsformen in dieser Hinsicht nicht beschränkt. Eine oder mehrere Operationen können vor, während oder nach anderen Operationen stattfinden.
-
Bei Block 302 umfassen Ausführungsformen einen Controller 140 der virtuellen Maschine, der eine Kommunikation von einem oder mehreren Paketen, wie z.B. Tracer-Paketen, veranlasst, so dass sie durch Schnittstellen, die mit einem Virtual-Machine-Monitor 110 assoziiert sind, kommuniziert werden. Zum Beispiel kann der Controller 140 der virtuellen Maschine eine Kommunikation der Tracer-Pakete planen, die über die Schnittstellen kommuniziert werden sollen. Bei Block 304 kann der Virtual-Machine-Monitor 110 das eine oder die mehreren Tracer-Pakete kommunizieren oder eine Kommunikation von ihnen veranlassen. Insbesondere kann der Virtual-Machine-Monitor 110 veranlassen, dass jede Netzwerkschnittstelle und virtuelle Netzwerkschnittstelle Tracer-Pakete aneinander kommunizieren.
-
In Ausführungsformen kann der Virtual-Machine-Monitor 110 bei Block 306 die momentane Latenz und den momentanen Jitter auf der Grundlage der Tracer-Pakete bestimmen. Weiter und bei Block 308 kann der Virtual-Machine-Monitor die Ergebnisse der Latenz- und Jitter-Information an die Koordinate 140 der virtuellen Maschine kommunizieren. Die Ergebnisse können als ein oder mehrere Pakete zum Beispiel über eine oder mehrere drahtgebundene oder drahtlose Kommunikationsverknüpfungen kommuniziert werden.
-
Bei Block 310 kann der Controller 140 der virtuellen Maschine ein Latenz- und Jitter-Modell auf der Grundlage der Ergebnisse und der Latenz- und Jitter-Information aktualisieren. Weiter und bei Block 312 bestimmt der Controller 140 der virtuellen Maschine, ob der Virtual-Maschine-Monitor 110, der eine virtuelle Maschine und eine oder mehrere Anwendungen betreibt, die Latenz- und Jitter-Anforderungen für die virtuelle Maschine und die Anwendungen erfüllt und/oder übertrifft. Wenn der Virtual-Machine-Monitor 110 die Anforderungen erfüllt, unternimmt der Controller 140 der virtuellen Maschine möglicherweise keine Aktion. Wenn der Virtual-Machine-Monitor 110 die Anforderungen für die virtuelle Maschine und Anwendungen nicht bereitstellt oder unterstützt, kann jedoch und bei Block 314 der Controller 140 der virtuellen Maschine eine Aktion unternehmen. Zum Beispiel kann der Controller 140 der virtuellen Maschine veranlassen, dass eine virtuelle Maschine und Anwendungen an einen anderen Virtual-Machine-Monitor 110 migrieren, der zum Unterstützen der Anforderungen in der Lage ist. In einem anderen Beispiel kann der Controller 140 der virtuellen Maschine eine virtuelle Maschine und Anwendungen auf einem anderen Virtual-Machine-Monitor 110 auf der Grundlage der Ergebnisse instanziieren. Ausführungsformen sind in dieser Hinsicht nicht beschränkt und andere Aktionen können durchgeführt werden. Zum Beispiel kann eine Benutzerbenachrichtigung an einen Benutzer kommuniziert werden, die die Form einer Warnmeldung aufweisen kann.
-
4 zeigt eine Ausführungsform eines vierten logischen Ablaufdiagramms 400. Der logische Ablauf 400 kann einige oder alle der Operationen repräsentieren, die durch eine oder mehrere der hier beschriebenen Ausführungsformen ausgeführt werden. Zum Beispiel kann der logische Ablauf 400 Operationen darstellen, die durch ein oder mehrere Systeme oder Vorrichtungen in 1A bis 1C durchgeführt werden. Verschiedene Ausführungsformen sind nicht auf diese Weise begrenzt.
-
In verschiedenen Ausführungsformen kann der logische Ablauf 400 vorsehen, dass bei Block 405 eine Kommunikation eines oder mehrerer Pakete von einer oder mehreren Netzwerkschnittstellen an eine oder mehrere andere Netzwerkschnittstellen über einen Virtual-Machine-Monitor veranlasst wird. Zum Beispiel kann ein Scheduler veranlassen, dass ein oder mehrere Tracer-Pakete zwischen jeder Netzwerkschnittstelle und virtuellen Netzwerkschnittstelle, die mit einer virtuellen Maschine, die über den Virtual-Machine-Monitor arbeitet, assoziiert sind, kommuniziert werden. In einigen Ausführungsformen kann die virtuelle Maschine eine oder mehrere Anwendungen, wie z.B. VNFs, unterstützen und betreiben.
-
Bei Block 410 kann der logische Ablauf 400 ein Bestimmen von mindestens einem von einer Latenz und einem Jitter für den Virtual-Machine-Monitor zumindest teilweise auf der Grundlage von jedem des einen oder der mehreren Pakete, die durch den Virtual-Machine-Monitor kommuniziert werden, vorsehen. Zum Beispiel kann der Controller der virtuellen Maschine eine Latenz- und Jitter-Information auf der Grundlage der Kommunikation der Pakete empfangen, um die Latenz für einen Virtual-Machine-Monitor zu bestimmen.
-
Bei Block 415 umfasst der logische Ablauf ein Durchführen einer Korrekturmaßnahme, wenn mindestens eines von der Latenz und dem Jitter einen definierten Parameter für eine virtuelle Maschine auf dem Virtual-Machine-Monitor nicht erfüllt. Zum Beispiel kann eine Dienstgütevereinbarung einen oder mehrere definierte Parameter, die Latenz- und Jitter-Anforderungen umfassen, für die virtuelle Maschine festlegen. Ausführungsformen können eine Gewährleistung umfassen, dass diese Anforderungen durch den Virtual-Machine-Monitor erfüllt werden, und mildernde oder korrigierende Maßnahmen ergreifen, wenn sie nicht erfüllt werden. Zum Beispiel können eine virtuelle Maschine und Anwendungen an einen anderen Virtual-Machine-Monitor migriert werden. In anderen Beispielen können Ausführungsformen ein Initiieren einer virtuellen Maschine und Anwendungen auf einem anderen Virtual-Machine-Monitor umfassen. Ausführungsformen sind nicht auf diese Beispiele beschränkt.
-
5 veranschaulicht eine Ausführungsform eines Systems 500. In verschiedenen Ausführungsformen kann das System 500 ein System oder eine Architektur repräsentieren, die geeignet für einen Gebrauch mit einer oder mehreren der hier beschriebenen Ausführungsformen sind, wie z.B. Systemen und Vorrichtungen, die in 1A bis 1C dargestellt sind. Die Ausführungsformen sind in dieser Hinsicht nicht begrenzt.
-
Wie in 5 dargestellt, kann das System 500 mehrere Elemente umfassen. Ein oder mehrere Elemente können unter Verwendung einer oder mehrerer Schaltungen, Komponenten, Register, Prozessoren, Software-Teilabläufe, Module, oder einer beliebigen Kombination davon, wie für einen gegebenen Satz von Design- und Leistungsbeschränkungen gewünscht, implementiert werden. Obwohl 5 eine begrenzte Anzahl von Elementen in einer bestimmten Topologie als Beispiel zeigt, versteht es sich, dass mehr oder weniger Elemente in einer beliebigen geeigneten Topologie im System 500 verwendet werden können, wie für eine gegebene Implementierung gewünscht. Die Ausführungsformen sind nicht in diesem Kontext begrenzt.
-
In verschiedenen Ausführungsformen kann das System 500 eine Rechenvorrichtung 505 umfassen, die eine beliebige Art von Rechner oder einer Verarbeitungsvorrichtung sein kann, einschließlich eines Personal-Computers, eines Desktop-Computers, eines Tablet-Computers, eines Netbook-Computers, eines Notebook-Computers, eines Laptop-Computers, eines Servers, einer Serverfarm, eines Blade-Servers oder eines beliebigen anderen Typs von Server und so weiter.
-
In verschiedenen Ausführungsformen kann die Rechenvorrichtung 505 eine Prozessorschaltung 502 umfassen. Die Prozessorschaltung 502 kann unter Verwendung eines beliebigen Prozessors oder einer beliebigen Logikvorrichtung implementiert werden. Die Verarbeitungsschaltung 502 kann eines oder mehrere von beliebigen Arten von Rechenelementen sein, wie z.B., jedoch nicht beschränkt auf: ein Mikroprozessor, ein Prozessor, eine zentrale Verarbeitungseinheit, eine Digitalsignalverarbeitungseinheit, ein Dual-Core-Prozessor, ein Prozessor einer mobilen Vorrichtung, ein Desktop-Prozessor, ein Single-Core-Prozessor, eine System-on-Chip-Vorrichtung (SoC), ein CISC-Mikroprozessor (CISC: komplexer Befehlssatz), ein RISC-Mikroprozessor (RISC: reduzierter Befehlssatz), ein VLIW-Mikroprozessor (VLIW: sehr langes Befehlswort) oder eine andere Art von Prozessor oder einer Verarbeitungsschaltung auf einem einzelnen Chip oder einer integrierten Schaltung. Die Verarbeitungsschaltung 502 kann mit den anderen Elementen des Rechensystems über eine Verbindung 543, wie z.B. einen oder mehrere Busse, Steuerleitungen und Datenleitungen, verbunden sein und mit ihnen kommunizieren.
-
In einer Ausführungsform kann die Rechenvorrichtung 505 eine Speichereinheit 504 umfassen, die mit der Prozessorschaltung 502 gekoppelt wird. Die Speichereinheit 504 kann mit der Prozessorschaltung 502 über einen Kommunikationsbus 543 oder mithilfe eines dedizierten Kommunikationsbusses zwischen der Prozessorschaltung 502 und der Speichereinheit 504 gekoppelt werden, wie für eine gegebene Implementierung gewünscht. Die Speichereinheit 504 kann unter Verwendung von maschinenlesbaren oder computerlesbaren Medien, die in der Lage sind, Daten zu speichern, einschließlich von sowohl flüchtigen und nichtflüchtigen Speichern, implementiert werden. In einigen Ausführungsformen kann das maschinenlesbare oder computerlesbare Medium ein nicht flüchtiges Medium umfassen. Die Ausführungsformen sind nicht in diesem Kontext begrenzt.
-
Die Rechenvorrichtung 505 kann in verschiedenen Ausführungsformen eine Grafikverarbeitungseinheit (GPU) 506 umfassen. Die GPU 506 kann eine beliebige Verarbeitungseinheit, Logik oder Schaltung, die optimiert ist, um Grafik-bezogene Operationen durchzuführen, sowie Videodecoder-Engines und die Frame-Korrelations-Engines umfassen. Die GPU 506 kann verwendet werden, um 2-dimensionale (2D) und/oder 3-dimensionale (3D) Bilder für verschiedene Anwendungen zu erzielen, wie z.B. Videospiele, Grafiken, computergestütztes Design (CAD), Simulations- und Visualisierungswerkzeuge, Bildgebung usw. Verschiedene Ausführungsformen sind in dieser Hinsicht nicht beschränkt; die GPU 506 kann einen beliebigen Typ von Grafikdaten verarbeiten, wie z.B. Bilder, Videos, Programme, Animationen, 3D, 2D Objektbilder und so weiter.
-
In manchen Ausführungsformen kann die Rechenvorrichtung 505 eine Anzeigesteuerung 508 umfassen. Die Anzeigesteuerung 508 kann ein beliebiger Typ von Prozessor, Controller, Schaltung, Logik und so weiter zum Verarbeiten von Grafikinformationen und Anzeigen der Grafikinformationen sein. Die Anzeigesteuerung 508 kann Grafikinformationen von einem oder mehreren Puffern empfangen oder abrufen. Nach einer Verarbeitung der Information kann die Anzeigesteuerung 508 die Grafikinformation an eine Anzeige senden.
-
In verschiedenen Ausführungsformen kann das System 500 einen Transceiver 544 umfassen. Der Transceiver 544 kann eine oder mehrere Funkvorrichtungen umfassen, die in der Lage sind, Signale unter Verwendung verschiedener geeigneter drahtlosen Kommunikationstechniken zu senden und zu empfangen. Solche Techniken können Kommunikationen zwischen einem oder mehreren drahtlosen Netzwerken umfassen. Beispiele für drahtlose Netzwerke umfassen (sind jedoch nicht beschränkt auf): drahtlose lokale Netze (WLANs), drahtlose Personal Area Networks (WPANs), drahtlose Metropolitan Area Networks (WMANs), Mobilfunknetze und Satellitennetze. Es kann auch einen Transceiver für ein drahtgebundenes Netzwerk umfassen, das Ethernet, Packet Optical Networks, (Rechenzentrum)-Netzwerk usw. umfassen kann, aber nicht darauf beschränkt ist. Bei der Kommunikation über solche Netzwerke kann der Transceiver 544 gemäß einem oder mehreren anwendbaren Standards in einer beliebigen Version arbeiten. Die Ausführungsformen sind nicht in diesem Kontext begrenzt.
-
In verschiedenen Ausführungsformen kann die Rechenvorrichtung 505 eine Anzeige 545 umfassen. Die Anzeige 545 kann eine beliebige Anzeigevorrichtung bilden, die in der Lage ist, Informationen, die von der Prozessorschaltung 502, der Grafikverarbeitungseinheit 506 und der Anzeigesteuerung 508 empfangen werden, anzuzeigen.
-
In verschiedenen Ausführungsformen kann die Rechenvorrichtung 505 einen Speicher 546 umfassen. Der Speicher 546 kann als eine nichtflüchtige Speichervorrichtung implementiert sein, wie z.B., jedoch nicht beschränkt auf: ein Magnetplattenlaufwerk, ein optisches Plattenlaufwerk, ein Bandlaufwerk, eine interne Speichervorrichtung, eine angeschlossene Speichervorrichtung, ein Flash-Speicher, ein batteriegepuffertes SDRAM (synchrones DRAM) und/oder eine über ein Netzwerk zugängliche Speichervorrichtung. In Ausführungsformen kann der Speicher 546 eine Technologie umfassen, um den verbesserten Speicherleistungsfähigkeitsschutz für wertvolle digitale Medien, wenn zum Beispiel mehrere Festplatten aufgenommen sind, zu erhöhen. Weitere Beispiele für den Speicher 546 können eine Festplatte, eine Diskette, eine CD-ROM (Compact Disk Read Only Memory), eine beschreibbare CD (CD-R), eine wiederbeschreibbare CD (CD-RW), eine optische Disc, magnetische Medien, magnetooptische Medien, Wechselspeicherkarten oder Platten, verschiedene Arten von DVD-Vorrichtungen, eine Bandvorrichtung, eine Kassettenvorrichtung oder dergleichen umfassen. Die Ausführungsformen sind nicht in diesem Kontext begrenzt.
-
In verschiedenen Ausführungsformen kann die Rechenvorrichtung 505 einen oder mehrere I/O-Adapter 547 umfassen. Beispiele für I/O-Adapter 547 können USB-Ports/Adapters (Universal Serial Bus), IEEE 1394-Firewire-Ports/Adapters und so weiter umfassen. Die Ausführungsformen sind nicht in diesem Kontext begrenzt.
-
6 zeigt eine Ausführungsform eines Beispiels einer Rechenarchitektur 600 die zum Implementieren verschiedener Ausführungsformen, wie vorstehend beschrieben, geeignet ist. In einer Ausführungsform kann die Rechenarchitektur 600 ein oder mehrere Systeme und Vorrichtungen, die vorstehend besprochen wurden, umfassen oder als diese implementiert sein.
-
Wie in dieser Anmeldung verwendet, sollen die Begriffe „System“ und „Komponente“ auf eine Rechner-bezogene Einheit, entweder Hardware, eine Kombination von Hardware und Software, Software oder Software in Ausführung verweisen, von denen Beispiele durch das Beispiel der Rechenarchitektur 600 bereitgestellt sind. Zum Beispiel kann eine Komponente ein ausgeführter Prozess auf einem Prozessor, ein Prozessor, ein Festplattenlaufwerk, mehrere Speicherlaufwerke (eines optischen und/oder magnetischen Speichermediums), ein Objekt, eine ausführbare Datei, ein Ausführungsstrang, ein Programm und/oder ein Rechner sein, ist aber nicht darauf beschränkt. Als eine Veranschaulichung können sowohl eine auf einem Server ausgeführte Anwendung als auch der Server eine Komponente sein. Eine oder mehrere Komponenten können sich innerhalb eines Prozesses und/oder eines Ausführungsstrangs befinden, und eine Komponente kann auf einem Rechner angeordnet sein und/oder zwischen zwei oder mehreren Rechnern verteilt sein. Außerdem können Komponenten miteinander mithilfe verschiedener Arten von Kommunikationsmedien kommunikativ gekoppelt sein, um Operationen zu koordinieren. Die Koordination kann den unidirektionalen oder bidirektionalen Informationsaustausch umfassen. Zum Beispiel können die Komponenten Informationen in Form von Signalen kommunizieren, die über die Kommunikationsmedien kommuniziert werden. Die Information kann als Signale implementiert werden, die verschiedenen Signalleitungen zugeordnet werden. Bei solchen Zuordnungen ist jede Nachricht ein Signal. Weitere Ausführungsformen können jedoch alternativ Datennachrichten verwenden. Solche Datennachrichten können über verschiedene Verbindungen gesendet werden. Beispielverbindungen umfassen parallele Schnittstellen, serielle Schnittstellen und Busschnittstellen.
-
Die Rechenarchitektur 600 umfasst verschiedene übliche Rechenelemente, wie z.B. einen oder mehrere Prozessoren, Mehr-Kern Prozessoren, Co-Prozessoren, Speichereinheiten, Chipsätze, Steuerungen, Peripherievorrichtungen, Schnittstellen, Oszillatoren, Timing-Vorrichtungen, Videokarten, Audiokarten, Multimedia-Eingabe-/Ausgabe-Komponenten (I/O), Netzteile und so weiter. Die Ausführungsformen sind jedoch nicht auf eine Implementierung durch die Rechenarchitektur 600 beschränkt.
-
Wie in 6 dargestellt, umfasst die Rechenarchitektur 600 eine Verarbeitungseinheit 604, einen Systemspeicher 606 und einen Systembus 608. Die Verarbeitungseinheit 604 kann beliebige von verschiedenen im Handel erhältlichen Prozessoren sein, wie z.B. diejenigen, die unter Bezugnahme auf die in 1A gezeigte Verarbeitungsschaltung beschrieben wurden.
-
Der Systembus 608 stellt eine Schnittstelle für Systemkomponenten bereit, die den Systemspeicher 606 bis zur Verarbeitungseinheit 604 umfassen, aber nicht darauf beschränkt sind. Der Systembus 608 kann eine beliebige von verschiedenen Typen einer Busstruktur sein, die weiter mit einem Speicherbus (mit oder ohne eine Speichersteuerung), einem Peripherievorrichtungsbus, einem lokalen Bus unter Verwendung einer beliebigen von einer Vielzahl von handelsüblichen Busarchitekturen verbunden sein kann. Schnittstellenadapter können mit dem Systembus 608 über eine Schlitzarchitektur verbunden sein. Beispiele für Schlitzarchitekturen können umfassen: Accelerated Graphics Port (AGP), Card Bus, (Extended) Industry Standard Architecture ((E)ISA), Micro Channel Architecture (MCA), NuBus, Peripheral Component Interconnect (Extended) (PCI(X)), PCI Express, Personal Computer Memory Card International Association (PCMCIA) und dergleichen, sind aber nicht darauf beschränkt.
-
Die Rechenarchitektur 600 kann verschiedene Herstellungsartikel umfassen oder implementieren. Ein Herstellungsartikel kann ein computerlesbares Speichermedium zum Speichern von einer Logik umfassen. Beispiele für ein computerlesbares Speichermedium können beliebige materielle Medien umfassen, die in der Lage sind, elektronische Daten zu speichern, einschließlich von flüchtigen Speichern oder nichtflüchtigen Speichern, entfernbaren oder nicht entfernbaren Speichern, löschbaren oder nicht löschbaren Speichern, wiederbeschreibbaren oder nicht wiederbeschreibbaren Speichern und so weiter. Beispiele einer Logik können ausführbare Computerprogrammbefehle umfassen, die unter Verwendung eines beliebigen geeigneten Typs von Code implementiert sind, wie z.B. eines Quellcodes, eines kompilierten Codes, eines interpretierten Codes, eines ausführbaren Codes, eines statischen Codes, eines dynamischen Codes, eines objektorientierten Codes, eines visuellen Codes und dergleichen. Ausführungsformen können auch zumindest teilweise als Befehle implementiert sein, die in oder auf einem nichtflüchtigen computerlesbaren Medium enthalten sind, welches durch einen oder mehrere Prozessoren gelesen und ausgeführt werden kann, um ein Durchführen der hier beschriebenen Operationen zu ermöglichen.
-
Der Systemspeicher 606 kann verschiedene Arten von computerlesbaren Speichermedien in Form einer oder mehrerer Speichereinheiten mit höherer Geschwindigkeit umfassen, wie z. B. eines Festwertspeichers (ROM), eines Direktzugriffsspeichers (RAM), eines dynamischen RAM (DRAM), eines Double-Data-Rate-DRAM (DDRAM), eines synchronen DRAM (SDRAM), eines statischen RAM (SRAM), eines programmierbaren ROM (PROM), eines löschbaren programmierbaren ROM (EPROM), eines elektrisch löschbaren programmierbaren ROM (EEPROM), eines Flash-Speichers, eines Polymerspeichers, wie z.B. eines ferroelektrischen Polymerspeichers, eines ovonischen Speichers, eines Phasenwechsel- oder ferroelektrischen Speichers, eines Siliziumoxid-Nitridoxid-Silizium-(SONOS)-Speichers, magnetischer oder optischer Karten, eines Arrays von Vorrichtungen, wie z.B. RAID-Laufwerken (Redundant Array of Independent Disks), Festkörper-Speichervorrichtungen (z.B. USB-Speicher, Solid-State-Laufwerke (SSD) und andere Arten von Speichermedien, die zum Speichern von Informationen geeignet sind. In der dargestellten, in 6 gezeigten Ausführungsform kann der Systemspeicher 606 einen nichtflüchtigen Speicher 610 und/oder einen flüchtigen Speicher 612 umfassen. Ein BIOS (Basic Input/Output System) kann in dem nichtflüchtigen Speicher 610 gespeichert sein.
-
Der Rechner 602 kann verschiedene Typen von computerlesbaren Speichermedien in Form einer oder mehrerer Speichereinheiten mit geringerer Geschwindigkeit umfassen, einschließlich eines internen (oder externen) Festplattenlaufwerks (HDD) 614, eines magnetischen Diskettenlaufwerks (FDD) 616 zum Lesen von einer entfernbaren Magnetplatte 618 oder zum Schreiben auf sie, und eines optischen Plattenlaufwerks 620 zum Lesen oder Schreiben in eine entfernbare optische Platte 622 (z.B. eine CD-ROM oder eine DVD). Das HDD 614, das FDD 616 und das optische Plattenlaufwerk 620 können mit dem Systembus 608 jeweils durch eine HDD-Schnittstelle 624, eine FDD-Schnittstelle 626 und eine Schnittstelle 628 des optischen Laufwerks verbunden werden. Die HDD-Schnittstelle 624 für externe Laufwerkimplementierungen kann mindestens eine oder beide von einer USB-Schnittstellentechnologie (Universal Serial Bus) und einer IEEE-1394-Schnittstellentechnologie umfassen.
-
Die Laufwerke und assoziierte computerlesbare Medien stellen flüchtige und/oder nichtflüchtige Speicher von Daten, Datenstrukturen, von einem Rechner ausführbaren Befehlen und so weiter bereit. Zum Beispiel können viele Programmmodule in den Laufwerken und Speichereinheiten 610, 612 gespeichert werden, einschließlich eines Betriebssystems 630, eines oder mehrerer Anwendungsprogramme 632, anderer Programmmodule 634 und Programmdaten 636. In einer Ausführungsform können das eine oder die mehreren Anwendungsprogramme 632, andere Programmmodule 634 und Programmdaten 636 zum Beispiel die verschiedenen Anwendungen und/oder Komponenten des Systems 105 umfassen.
-
Ein Benutzer kann Befehle und Informationen in den Rechner 602 über eine oder mehrere drahtgebundene/drahtlose Eingabevorrichtungen, zum Beispiel eine Tastatur 638 und eine Zeigevorrichtung, wie z.B. eine Maus 640, eingeben. Andere Eingabevorrichtungen können umfassen: Mikrofone, Infrarot-(IR)-Fernbedienungen, Hochfrequenz-(HF)-Fernbedienungen, Gamepads, Eingabestifte, Kartenleser, Dongles, Fingerabdruckleser, Handschuhe, Grafiktabletts, Joysticks, Tastaturen, Retina-Lesegeräte, Berührungsbildschirme (z.B. kapazitive, resistive usw.), Trackballs, Trackpads, Sensoren, Eingabestifte und dergleichen. Diese und andere Eingabevorrichtungen werden oft mit der Verarbeitungseinheit 604 über eine Eingabevorrichtungsschnittstelle 642 verbunden, die mit dem Systembus 608 gekoppelt ist, aber sie können durch andere Schnittstellen, wie z.B. einen parallelen Port, einen seriellen IEEE-1394-Port, einen Game-Port, einen USB-Port, eine IR-Schnittstelle und so weiter, verbunden werden.
-
Ein Bildschirm 644 oder ein anderer Typ einer Anzeigevorrichtung ist ebenfalls mit dem Systembus 608 über eine Schnittstelle, wie z.B. einen Video-Adapter 646, verbunden. Der Bildschirm 644 kann sich innerhalb oder außerhalb des Rechners 602 befinden. Zusätzlich zu dem Bildschirm 644 umfasst ein Rechner in der Regel andere periphere Ausgabevorrichtungen, wie z.B. Lautsprecher, Drucker und so weiter.
-
Der Rechner 602 kann in einer vernetzten Umgebung unter Verwendung logischer Verbindungen über drahtgebundene und/oder drahtlose Kommunikationen mit einem oder mehreren Remote-Rechnern, wie z.B. einem Remote-Rechner 648, arbeiten. Der Remote-Rechner 648 kann eine Workstation, ein Servercomputer, ein Router, ein Personal-Computer, ein tragbarer Computer, ein auf einem Mikroprozessor basierendes Unterhaltungsgerät, eine Peer-Vorrichtung oder ein anderer gemeinsamer Netzwerkknoten sein und umfasst typischerweise viele oder alle der Elemente, die in Bezug auf den Rechner 602 beschrieben wurden, obwohl aus Gründen der Kürze lediglich eine Speicher-/Speicherungsvorrichtung 650 dargestellt ist. Die dargestellten logischen Verbindungen umfassen eine drahtgebundene/drahtlose Verbindungsfähigkeit mit einem lokalen Netzwerk (LAN) 652 und/oder größeren Netzwerken, zum Beispiel einem Weitverkehrsnetz (WAN) 654. Solche LAN- und WAN-Netzwerkumgebungen sind in Büros und Unternehmen üblich und erleichtern unternehmensweite Rechnernetzwerke wie Intranets, die alle eine Verbindung mit einem globalen Kommunikationsnetzwerk, zum Beispiel dem Internet, herstellen können.
-
Wenn in einer LAN-Netzwerkumgebung verwendet, ist der Rechner 602 mit dem LAN 652 über eine drahtgebundene und/oder drahtlose Kommunikationsnetzwerkschnittstelle oder einen Adapter 656 verbunden. Der Adapter 656 kann drahtgebundene und/oder drahtlose Kommunikationen mit dem LAN 652 erleichtern, das auch einen drahtlosen Zugriffspunkt umfassen kann, der zum Kommunizieren mit der drahtlosen Funktionalität des Adapters 656 darauf angeordnet ist.
-
Wenn in einer WAN-Netzwerkumgebungen verwendet, kann der Rechner 602 ein Modem 658 umfassen oder ist mit einem Kommunikationsserver auf dem WAN 654 verbunden, oder weist andere Einrichtungen zum Herstellen von Kommunikationen über das WAN 654, wie z.B. mithilfe des Internets, auf. Das Modem 658, das eine interne oder externe und drahtlose und/oder drahtgebundene Vorrichtung sein kann, ist mit dem Systembus 608 über die Eingabevorrichtungsschnittstelle 642 verbunden. In einer vernetzten Umgebung können Programmmodule, die in Bezug auf den Rechner 602 dargestellt sind, oder Abschnitte davon, in der Remote-Speicher-/Speicherungsvorrichtung 650 gespeichert werden. Es versteht sich, dass die gezeigten Netzwerkverbindungen Beispiele sind und andere Einrichtungen zum Herstellen einer Kommunikationsverknüpfung zwischen den Rechnern verwendet werden können.
-
Der Rechner 602 ist betriebsfähig, um mit drahtgebundenen und drahtlosen Vorrichtungen oder Einheiten unter Verwendung der IEEE 802-Familie von Standards zu kommunizieren, wie z.B. drahtlosen Vorrichtungen, die betriebsbereit in drahtloser Kommunikation angeordnet sind (z.B. IEEE 802.11-Over-the-Air-Modulationstechniken). Dies umfasst unter anderem mindestens die drahtlosen Technologien WiFi (oder Wireless Fidelity), WiMAX und Bluetooth™, drahtlose 3G-, 4G-, LTE-Technologien. Daher kann die Kommunikation eine vordefinierte Struktur, wie in einem herkömmlichen Netzwerk, oder einfach eine kurzfristige Kommunikation zwischen mindestens zwei Vorrichtungen sein. WiFi-Netzwerke verwenden Funktechnologien, die als IEEE 802.11x (a, b, g, n usw.) bezeichnet werden, um eine sichere, zuverlässige, schnelle drahtlose Verbindungsfähigkeit bereitzustellen. Ein WiFi-Netzwerk kann verwendet werden, um Rechner miteinander, mit dem Interner, mit drahtgebundenen Netzwerken (die IEEE 802.3.verwandte Medien und Funktionen verwenden) zu verbinden.
-
Die verschiedenen Elemente und Komponenten, wie vorstehend unter Bezugnahme auf 1 bis 5 beschrieben, können verschiedene Hardware-Elemente, Software-Elemente oder eine Kombination von beiden umfassen.
-
Beispiele für Hardware-Elemente können umfassen: Vorrichtungen, Logikvorrichtungen, Komponenten, Prozessoren, Mikroprozessoren, Schaltungen, Prozessoren, Schaltungselemente (z.B. Transistoren, Widerstände, Kondensatoren, Induktivitäten und so weiter), integrierte Schaltungen, anwendungsspezifische integrierte Schaltungen (ASIC), programmierbare Logikvorrichtungen (PLD), digitale Signalprozessoren (DSP), Field Programmable Gate Array (FPGA), Speichereinheiten, Logikgatter, Register, Halbleiterbauelemente, Chips, Mikrochips, Chipsätze und so weiter. Beispiele für Software-Elemente können umfassen: Software-Komponenten, Programme, Anwendungen, Rechnerprogramme, Anwendungsprogramme, Systemprogramme, Softwareentwicklungsprograme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Teilroutinen, Funktionen, Verfahren, Prozeduren, Software-Schnittstellen, Anwendungsprogramm-Schnittstellen (API), Befehlssätze, Rechencode, Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder eine beliebige Kombination davon. Jedoch kann ein Bestimmen, ob eine Ausführungsform unter Verwendung von Hardware-Elementen und/oder Software-Elementen implementiert wird, gemäß einer Vielzahl von Faktoren variieren, wie z.B. der gewünschten Berechnungsrate, Leistungsniveaus, Wärmetoleranzen, Verarbeitungszyklusbudget, Eingangsdatenraten, Ausgangsdatenraten, Speicherressourcen, Datenbusgeschwindigkeiten und anderen Entwurfs- oder Leistungseinschränkungen, wie für eine bestimmte Implementierung gewünscht.
-
Die ausführliche Offenbarung wendet sich nun dem Bereitstellen von Beispielen, die sich auf weitere Ausführungsformen beziehen. Beispiele eins bis zweiunddreißig (1 bis 32), die nachstehend bereitgestellt sind, sollen als Beispiele und nicht als eine Beschränkung dienen.
-
In einem ersten Beispiel kann ein System, eine Vorrichtung, ein Gerät umfassen: einen oder mehrere Netzwerkschnittstellenspeicher, Verarbeitungsschaltungen, die mit dem Speicher gekoppelt sind, und eine Logik, die zumindest teilweise durch die Verarbeitungsschaltung implementiert ist. Die Logik veranlasst eine Kommunikation eines oder mehrerer Pakete von einer oder mehreren Netzwerkschnittstellen über einen Virtual-Machine-Monitor, bestimmt eine Latenz oder einen Jitter für den Virtual-Machine-Monitor zumindest teilweise auf der Grundlage des einen oder der mehreren Pakete, die durch den Virtual-Machine-Monitor kommuniziert werden, und führt eine Korrekturmaßnahme durch, wenn die Latenz oder der Jitter einen definierten Parameter für eine virtuelle Maschine auf dem Virtual-Machine-Monitor nicht erfüllt.
-
In einem zweiten Beispiel und zur Förderung des ersten Beispiels kann ein System, eine Vorrichtung, ein Gerät die Logik umfassen, um die virtuelle Maschine auf dem Virtual-Machine-Monitor an einen anderen Virtual-Machine-Monitor für die Korrekturmaßnahme zu verschieben.
-
In einem dritten Beispiel und zur Förderung der vorhergehenden Beispiele kann ein System, eine Vorrichtung, ein Gerät die Logik umfassen, um die virtuelle Maschine auf einem anderen Virtual-Machine-Monitor für die Korrekturmaßnahme zu initiieren.
-
In einem vierten Beispiel und zur Förderung der vorhergehenden Beispiele kann ein System, eine Vorrichtung, ein Gerät den definierten Parameter umfassen, der eine oder mehrere von einer Latenzanforderung und einer Jitter-Anforderung, die in einer Dienstgütevereinbarung für die virtuelle Maschine spezifiziert sind, umfasst.
-
In einem fünften Beispiel und zur Förderung der vorhergehenden Beispiele kann ein System, eine Vorrichtung, ein Gerät die Logik umfassen, die eine Latenz und einen Jitter für jeden von mehreren Virtual-Machine-Monitoren bestimmt und ein Latenz- und Jitter-Modell zumindest teilweise auf der Grundlage der bestimmten Latenzen und Jitter generiert.
-
In einem sechsten Beispiel und zur Förderung der vorhergehenden Beispiele kann ein System, eine Vorrichtung, ein Gerät die Logik umfassen, die die virtuelle Maschine auf einem der mehreren Virtual-Machine-Monitore auf der Grundlage des Latenz- und Jitter-Modells und einer Dienstgütevereinbarung für die virtuelle Maschine initiiert.
-
In einem siebten Beispiel und zur Förderung der vorhergehenden Beispiele kann ein System, eine Vorrichtung, ein Gerät die Logik umfassen, die veranlasst, dass jede Netzwerkschnittstelle ein Paket an jede andere Netzwerkschnittstelle über den Virtual-Machine-Monitor kommuniziert, um eine momentane Latenz zwischen den Netzwerkschnittstellen zu bestimmen.
-
In einem achten Beispiel und zur Förderung der vorhergehenden Beispiele kann ein System, eine Vorrichtung, ein Gerät vorsehen: Veranlassen, dass jede Netzwerkschnittstelle periodisch ein Paket an jede andere Netzwerkschnittstelle über den Virtual-Machine-Monitor kommuniziert, Bestimmen einer momentanen Latenz nach jeder Kommunikation, und Aktualisieren eines Latenz- und Jitter-Modells nach jeder Periode unter Verwendung von mindestens der momentanen Latenz.
-
In einem neunten Beispiel und zur Förderung der vorhergehenden Beispiele kann ein System, eine Vorrichtung, ein Gerät umfassen, wobei mindestens eine der Netzwerkschnittstellen eine virtuelle Netzwerkschnittstelle einer virtuellen Maschine, die durch den Virtual-Machine-Monitor unterstützt wird, umfasst.
-
In einem zehnten Beispiel und zur Förderung der vorhergehenden Beispiele ein computerlesbares Speichermedium, das mehrere Befehle umfasst, welche, wenn sie durch eine Verarbeitungsschaltung ausgeführt werden, die Verarbeitungsschaltung zu Folgendem befähigen: Veranlassen einer Kommunikation eines oder mehrerer Pakete von einer oder mehreren Netzwerkschnittstellen an eine oder mehrere andere Netzwerkschnittstellen über einen Virtual-Machine-Monitor, Bestimmen einer Latenz oder eines Jitters für den Virtual-Machine-Monitor zumindest teilweise auf der Grundlage jedes des einen oder der mehreren Pakete, die durch den Virtual-Machine-Monitor kommuniziert werden, und Durchführen einer Korrekturmaßnahme, wenn die Latenz oder der Jitter einen definierten Parameter für eine virtuelle Maschine auf dem Virtual-Machine-Monitor nicht erfüllt.
-
In einem elften Beispiel und zur Förderung der vorhergehenden Beispiele ein computerlesbares Speichermedium, das mehrere Befehle umfasst, die bei einer Ausführung durch eine Verarbeitungsschaltung, die Verarbeitungsschaltung zum Verschieben der virtuellen Maschine auf dem Virtual-Machine-Monitor an einen anderen Virtual-Machine-Monitor für die Korrekturmaßnahme befähigen.
-
In einem zwölften Beispiel und zur Förderung der vorhergehenden Beispiele ein computerlesbares Speichermedium, das mehrere Befehle umfasst, die bei einer Ausführung durch eine Verarbeitungsschaltung, die Verarbeitungsschaltung zum Initiieren der virtuellen Maschine auf einem anderen Virtual-Machine-Monitor für die Korrekturmaßnahme befähigen.
-
In einem dreizehnten Beispiel und zur Förderung der vorhergehenden Beispiele ein computerlesbares Speichermedium, das mehrere Befehle umfasst, die einen definierten Parameter aufweisen, der mindestens eines von einer Latenzanforderung und einer Jitter-Anforderung, die in einer Dienstgütevereinbarung für die virtuelle Maschine spezifiziert sind, umfasst.
-
In einem vierzehnten Beispiel und zur Förderung der vorhergehenden Beispiele ein computerlesbares Speichermedium, das mehrere Befehle umfasst, die bei einer Ausführung durch eine Verarbeitungsschaltung die Verarbeitungsschaltung dazu befähigen, eine Latenz und einen Jitter für jeden von mehreren Virtual-Machine-Monitoren zu bestimmen und ein Latenz- und Jitter-Modell zumindest teilweise auf der Grundlage der bestimmten Latenzen zu generieren.
-
In einem fünfzehnten Beispiel und zur Förderung der vorhergehenden Beispiele ein computerlesbares Speichermedium, das mehrere Befehle umfasst, die bei einer Ausführung durch eine Verarbeitungsschaltung die Verarbeitungsschaltung dazu befähigen, die virtuelle Maschine auf einem der mehreren Virtual-Machine-Monitore auf der Grundlage des Latenz- und Jitter-Modells und einer Dienstgütevereinbarung für die virtuelle Maschine zu initiieren.
-
In einem sechzehnten Beispiel und zur Förderung der vorhergehenden Beispiele ein computerlesbares Speichermedium, das mehrere Befehle umfasst, die bei einer Ausführung durch eine Verarbeitungsschaltung, die Verarbeitungsschaltung zu Folgendem befähigen: Veranlassen, dass jede Netzwerkschnittstelle ein Paket an jede andere Netzwerkschnittstelle über den Virtual-Machine-Monitor kommuniziert, um eine momentane Latenz zwischen den Netzwerkschnittstellen zu bestimmen.
-
In einem siebzehnten Beispiel und zur Förderung der vorhergehenden Beispiele ein computerlesbares Medium, das mehrere Befehle umfasst, die bei einer Ausführung durch eine Verarbeitungsschaltung die Verarbeitungsschaltung zu Folgendem befähigen: Veranlassen, dass jede Netzwerkschnittstelle periodisch ein Paket an jede andere Netzwerkschnittstelle über den Virtual-Machine-Monitor kommuniziert, Bestimmen einer momentanen Latenz nach jeder Kommunikation, und Aktualisieren eines Latenz- und Jitter-Modells nach jeder Periode unter Verwendung von mindestens der momentanen.
-
In einem achtzehnten Beispiel und zur Förderung der vorhergehenden Beispiele ein computerlesbares Speichermedium, das mehrere Befehle umfasst, die bei einer Ausführung durch eine Verarbeitungsschaltung, die Verarbeitungsschaltung zur Aufnahme mindestens einer der Netzwerkschnittstellen befähigen, die eine virtuelle Netzwerkschnittstelle einer virtuellen Maschine, die durch den Virtual-Machine-Monitor unterstützt wird, umfasst.
-
In einem neunzehnten Beispiel und zur Förderung der vorhergehenden Beispiele kann ein auf einem Rechner implementiertes Verfahren umfassen: Veranlassen einer Kommunikation eines oder mehrerer Pakete von einer oder mehreren Netzwerkschnittstellen an eine oder mehrere andere Netzwerkschnittstellen über einen Virtual-Machine-Monitor, Bestimmen einer Latenz oder eines Jitters für den Virtual-Machine-Monitor zumindest teilweise auf der Grundlage jedes des einen oder der mehreren Pakete, die durch den Virtual-Machine-Monitor kommuniziert werden, und Durchführen einer Korrekturmaßnahme, wenn die Latenz oder der Jitter einen definierten Parameter für eine virtuelle Maschine auf dem Virtual-Machine-Monitor nicht erfüllt.
-
In einem zwanzigsten Beispiel und zur Förderung der vorhergehenden Beispiele kann ein auf einem Rechner implementiertes Verfahren die Korrekturmaßnahme umfassen, die eines oder mehrere von einem Verschieben der virtuellen Maschine auf dem Virtual-Machine-Monitor an einen anderen Virtual-Machine-Monitor, und einem Initiieren der virtuellen Maschine auf einem anderen Virtual-Machine-Monitor für die Korrekturmaßnahme umfasst.
-
In einem einundzwanzigsten Beispiel und zur Förderung der vorhergehenden Beispiele kann ein auf einem Rechner implementiertes Verfahren den definierten Parameter umfassen, der mindestens eines von einer Latenzanforderung und einer Jitter-Anforderung, die in einer Dienstgütevereinbarung für die virtuelle Maschine spezifiziert sind, umfasst.
-
In einem zweiundzwanzigsten Beispiel und zur Förderung der vorhergehenden Beispiele kann ein auf einem Rechner implementiertes Verfahren umfassen: Bestimmen einer Latenz und eines Jitters für jeden von mehreren Virtual-Machine-Monitoren, und Generieren eines Latenz- und Jitter-Modells zumindest teilweise auf der Grundlage der bestimmten Latenzen und Jitter.
-
In einem dreiundzwanzigsten Beispiel und zur Förderung der vorhergehenden Beispiele kann ein auf einem Rechner implementiertes Verfahren umfassen: Initiieren der virtuellen Maschine auf einem der mehreren Virtual-Machine-Monitore auf der Grundlage des Latenz- und Jitter-Modells und einer Dienstgütevereinbarung für die virtuelle Maschine.
-
In einem vierundzwanzigsten Beispiel und zur Förderung der vorhergehenden Beispiele kann ein auf einem Rechner implementiertes Verfahren umfassen: Veranlassen, dass jede Netzwerkschnittstelle ein Paket an jede andere Netzwerkschnittstelle über den Virtual-Machine-Monitor kommuniziert, um eine momentane Latenz zwischen den Netzwerkschnittstellen zu bestimmen.
-
In einem fünfundzwanzigsten Beispiel und zur Förderung der vorhergehenden Beispiele kann ein auf einem Rechner implementiertes Verfahren umfassen: Veranlassen, dass jede Netzwerkschnittstelle periodisch ein Paket an jede andere Netzwerkschnittstelle über den Virtual-Machine-Monitor kommuniziert, Bestimmen einer momentanen Latenz nach jeder Kommunikation, und Aktualisieren eines Latenz- und Jitter-Modells nach jeder Periode unter Verwendung von mindestens der momentanen Latenz.
-
In einem sechsundzwanzigsten Beispiel und zur Förderung der vorhergehenden Beispiele können ein System und eine Vorrichtung umfassen: eine Einrichtung zum Veranlassen einer Kommunikation eines oder mehrerer Pakete von einer oder mehreren Netzwerkschnittstellen an eine oder mehrere andere Netzwerkschnittstellen über einen Virtual-Machine-Monitor, eine Einrichtung zum Bestimmen einer Latenz oder eines Jitter für den Virtual-Machine-Monitor zumindest teilweise auf der Grundlage jedes des einen oder der mehreren Pakete, die durch den Virtual-Machine-Monitor kommuniziert werden, und eine Einrichtung zum Durchführen einer Korrekturmaßnahme, wenn die Latenz oder der Jitter einen definierten Parameter für eine virtuelle Maschine auf dem Virtual-Machine-Monitor nicht erfüllt.
-
In einem siebenundzwanzigsten Beispiel und zur Förderung der vorhergehenden Beispiele können ein System und eine Vorrichtung umfassen: eine Einrichtung zum Verschieben der virtuellen Maschine auf dem Virtual-Machine-Monitor an einen anderen Virtual-Machine-Monitor, und eine Einrichtung zum Initiieren der virtuellen Maschine auf einem anderen Virtual-Machine-Monitor für die Korrekturmaßnahme.
-
In einem neunundzwanzigsten Beispiel und zur Förderung der vorhergehenden Beispiele kann eine Vorrichtung oder ein System umfassen: eine Einrichtung zum Bestimmen einer Latenz und eines Jitters für jeden von mehreren Virtual-Machine-Monitoren, und eine Einrichtung zum Generieren eines Latenz- und Jitter-Modells zumindest teilweise auf der Grundlage der bestimmten Latenzen und Jitter.
-
In einem dreißigsten Beispiel und zur Förderung der vorhergehenden Beispiele kann ein System oder eine Vorrichtung eine Einrichtung zum Initiieren der virtuellen Maschine auf einem der mehreren Virtual-Machine-Monitore auf der Grundlage des Latenz- und Jitter-Modells und einer Dienstgütevereinbarung für die virtuelle Maschine umfassen.
-
In einem einunddreißigsten Beispiel und zur Förderung der vorhergehenden Beispiele kann ein System oder eine Vorrichtung eine Einrichtung zum Veranlassen, dass jede Netzwerkschnittstelle ein Paket an jede andere Netzwerkschnittstelle über den Virtual-Machine-Monitor kommuniziert, um eine momentane Latenz zwischen den Netzwerkschnittstellen zu bestimmen, umfassen.
-
In einem zweiunddreißigsten Beispiel und zur Förderung der vorhergehenden Beispiele kann ein System oder eine Vorrichtung umfassen: eine Einrichtung zum Veranlassen, dass jede Netzwerkschnittstelle periodisch ein Paket an jede andere Netzwerkschnittstelle über den Virtual-Machine-Monitor kommuniziert, eine Einrichtung zum Bestimmen einer momentanen Latenz nach jeder Kommunikation, und eine Einrichtung zum Aktualisieren eines Latenz- und Jitter-Modells nach jeder Periode unter Verwendung von mindestens der momentanen Latenz.
-
Einige Ausführungsformen können unter Verwendung des Ausdrucks „eine Ausführungsform“ zusammen mit seinen Ableitungen beschrieben werden. Diese Begriffe bedeuten, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder Charakteristik, die in Verbindung mit der Ausführungsform beschrieben wird, in mindestens einer Ausführungsform aufgenommen ist. Die Verwendung des Ausdrucks „in einer Ausführungsform“ an verschiedenen Stellen in der Beschreibung bezieht sich nicht notwendigerweise immer auf dieselbe Ausführungsform. Außerdem können einige Ausführungsformen unter Verwendung des Ausdrucks „gekoppelt“ und „verbunden“ zusammen mit ihren Ableitungen beschrieben werden. Diese Begriffe sind nicht notwendigerweise als Synonyme füreinander gedacht. Zum Beispiel können einige Ausführungsformen unter Verwendung der Begriffe „verbunden“ und/oder „gekoppelt“ beschrieben werden, um anzuzeigen, dass zwei oder mehr Elemente in direktem physischem oder elektrischem Kontakt miteinander stehen. Jedoch kann der Begriff „gekoppelt“ auch bedeuten, dass zwei oder mehr Elemente nicht in direktem Kontakt miteinander stehen, trotzdem aber miteinander zusammenarbeiten oder interagieren.
-
Es wird betont, dass die Zusammenfassung der Offenbarung bereitgestellt wird, um es einem Leser zu ermöglichen, den Charakter der technischen Offenbarung schnell zu ermitteln. Die Zusammenfassung wird mit dem Verständnis eingereicht, dass sie nicht dazu verwendet wird, den Umfang oder die Bedeutung der Ansprüche zu interpretieren oder einzuschränken. Außerdem kann in der vorstehenden ausführlichen Beschreibung gesehen werden, dass verschiedene Merkmale in einer einzelnen Ausführungsform zum Zweck der Straffung der Offenbarung miteinander gruppiert sind. Dieses Verfahren der Offenbarung soll nicht derart verstanden werden, dass es eine Absicht widerspiegelt, dass die beanspruchten Ausführungsformen mehr Merkmale als ausdrücklich in jenem Anspruch genannt erfordern. Vielmehr liegt der erfindungsgemäße Gegenstand, wie in den folgenden Ansprüchen niedergelegt, in weniger als allen Merkmalen einer einzelnen offenbarten Ausführungsform. Somit sind die nachstehenden Ansprüche ausdrücklich in der Beschreibung aufgenommen, wobei jeder Anspruch selbstständig als separate Ausführungsform steht. In den unabhängigen Ansprüchen werden die Begriffe „umfassend“ und„ in dem“ als einfache englische Äquivalente der jeweiligen Ausdrücke „aufweisend“ bzw. „wobei“ verwendet. Des Weiteren werden die Begriffe „erster“, „zweiter“, „dritter“ und so weiter lediglich als Beschriftungen verwendet und sollen keine nummerische Anforderungen ihren Objekten auferlegen.
-
Was vorstehend beschrieben wurde, umfasst Beispiele der offenbarten Architektur. Es ist selbstverständlich nicht möglich, jede denkbare Kombination von Komponenten und/oder Methodologien zu beschreiben, aber ein Durchschnittsfachmann kann erkennen, dass weitere Kombinationen und Permutationen möglich sind. Dementsprechend soll diese neuartige Architektur alle solche Änderungen, Modifikationen und Abwandlungen umfassen, die innerhalb des Erfindungsgedankens und Umfangs der beigefügten Ansprüche liegen.