DE60127276T2 - Verfahren und vorrichtung zur erleichterung der peer-zu-peer anwendungskommunikation - Google Patents

Verfahren und vorrichtung zur erleichterung der peer-zu-peer anwendungskommunikation Download PDF

Info

Publication number
DE60127276T2
DE60127276T2 DE60127276T DE60127276T DE60127276T2 DE 60127276 T2 DE60127276 T2 DE 60127276T2 DE 60127276 T DE60127276 T DE 60127276T DE 60127276 T DE60127276 T DE 60127276T DE 60127276 T2 DE60127276 T2 DE 60127276T2
Authority
DE
Germany
Prior art keywords
address
application
network
translation
message
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Lifetime
Application number
DE60127276T
Other languages
English (en)
Other versions
DE60127276D1 (de
Inventor
Andrew T. Arden Hills MOLITOR
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nokia of America Corp
Original Assignee
Alcatel USA Sourcing Inc
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=24652085&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=DE60127276(T2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Alcatel USA Sourcing Inc filed Critical Alcatel USA Sourcing Inc
Application granted granted Critical
Publication of DE60127276D1 publication Critical patent/DE60127276D1/de
Publication of DE60127276T2 publication Critical patent/DE60127276T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/256NAT traversal
    • H04L61/2567NAT traversal for reachability, e.g. inquiring the address of a correspondent behind a NAT server
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/2557Translation policies or rules
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/256NAT traversal
    • H04L61/2575NAT traversal using address mapping retrieval, e.g. simple traversal of user datagram protocol through session traversal utilities for NAT [STUN]
    • 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/104Peer-to-peer [P2P] networks

Description

  • HINTERGRUND DER ERFINDUNG
  • 1. GEBIET DER ERFINDUNG
  • Diese Erfindung betrifft Einrichtungen zum Verarbeiten von Kommunikationen zwischen Anwendungen, die Daten über das Internet austauschen. Insbesondere betrifft diese Erfindung eine Netzadressen-Übersetzungseinrichtung (NAT = Network Address Translation) sowie ein System und ein Verfahren, die eine solche NAT-Einrichtung zum Erleichtern der Peer-zu-Peer Kommunikation von Daten über das Internet benutzen.
  • 2. BESCHREIBUNG DES STANDES DER TECHNIK
  • Wie in 1 gezeigt ist, wird eine Netzadressen-Übersetzungseinrichtung (NAT-Einrichtung) 20 der herkömmlichen Art normalerweise innerhalb eines Internetprotokollnetzes (IU-Netz) an die Grenze zwischen zwei disparaten Adressenbereichen 50 und 30 positioniert. Ein Bereich 50 kann das private Internnetz 10 einer Organisation sein, und der andere Bereich 30 kann das öffentliche globale Internet sein. Das von einer solchen herkömmlichen Einrichtung angegriffene Problem besteht darin, dass eine Organisation ein großes Internnetz benötigen kann, das viele Einrichtungen enthält, wobei jede Einrichtung eine eindeutige IU-Adresse benötigt. Im Hinblick auf den gegenwärtig verfügbaren Raum für eindeutige IP-Adressen (232 verfügbare Adressen) und gegenwärtige Adressenzuteilungsmuster, kann es dieser Organisation unmöglich sein, von den solche Adressen zuweisenden Behörden eine ausreichende Anzahl von offiziellen IU-Adressen zugeteilt zu bekommen. Deshalb wird die Organisation effektiv dazu gezwungen, intern gültige Adressen für ihr eigenes Internnetz zu bilden. Das ermöglicht dem Internnetz, korrekt zu funktionieren; es ist nicht erforderlich, in einem solchen Zusammenhang offiziell zugewiesene IU-Adressen zu verwenden. Die Schwierigkeit ergibt sich, wenn Einrichtungen oder Anwendungen (Programme, die auf einer bestimmten Einrichtung laufen) im großen Internnetz mit dem Globalen Internet (darunter verstehen wir irgendein IU-Netz, privat oder öffentlich, das offiziell zugewiesene IP-Adressen benutzt) kommunizieren müssen. Da die von der Organisation intern zugewiesenen IU-Adressen entweder mit offiziell zugewiesenen Adressen einer anderen Organisation überlappen oder offiziell nicht zugewiesen sind, kann das Globale Internet sie nicht benutzen, um Daten korrekt in das Internnetz der Organisation zu senden. Um beispielsweise Daten an eine netzverbundene Einrichtung zu senden, muss die versendende Anwendung eine Adresse für die Zielanwendung haben, und das die Daten empfangende Netz selbst muss wissen, wie die Zielanwendung lokalisiert wird. Diese Operationen funktionieren nur dann, wenn alle beteiligten Anwendungen darin übereinstimmen, welche Adressen zu welchen Einrichtungen und Anwendungen gehören.
  • Eine Lösung besteht für die Organisation darin, sich eine Menge offizieller IU-Adressen zuteilen zu lassen. Diese Adressen sind eindeutig. Jede Anwendung auf dem Globalen Internet, die Daten an diese Adressen sendet, kann sich darauf verlassen, dass diese Daten am Eingang zum Internnetz der Organisation ankommen. Das heißt, dass die Infrastruktur des Globalen Internets Daten korrekt an die Organisation liefert und sich dann (was für IP der Normalfall ist) auf die Organisation verlässt, die korrekte Endpunktanwendung für die Endlieferung innerhalb der Organisation zu lokalisieren.
  • Die Organisation könnte dann jede der irh zugewiesenen offiziellen IU-Adressen für einen unbestimmten Zeitraum einer einzelnen Anwendung zuteilen und einigen wenigen bevorzugten Anwendungen Internetzugriff erlauben. Eine bessere Lösung, die ausgedehnteren Zugriff erlaubt, besteht in der Verwendung einer Einrichtung, die effektiv die offiziell zugeteilten IP-Adressen jedweder Anwendung dynamisch zuweist, die zu einem gegebenen Zeitpunkt Zugriff auf das Globale Internet benötigt. Adressen werden von Anwendungen, die sie nicht mehr verwenden, zurückgewonnen und für Wiederzuweisung verfügbar gemacht. Dieses System der gemeinsamen Nutzung funktioniert sehr gut und ist in der einfachsten Form genau das, was ein herkömmlicher Netzadressen-Übersetzer (NAT) normalerweise macht. (Siehe RFC 2663 IP Network Address Translator (NAT) Terminology and Considerations, veröffentlicht von der Internet Engineering Task Force (IETF). Das ist das IETF-Grunddokument, das den Betrieb und die Probleme beschreibt, die die NAT-Einrichtungen betreffen.) Einer Organisation wird oft eine sehr kleine Anzahl von offiziellen IP-Adressen zugewiesen. Einer Organisation werden vielleicht nur 31 oder 255 solcher Adresse gegeben. Für eine Organisation mit Tausenden von Anwendungen auf ihrem Internnetz kann ein naiver NAT, der nur offizielle IP-Adressen zuweisen kann, möglicherweise nicht ausreichen. Können nur 31 von sagen wir mal 5000 Anwendungen (von denen jede einem einzelnen Mitarbeiter entsprechen könnte) das Globale Internet gleichzeitig benutzen, könnte man das Problem als nicht ausreichend gelöst ansehen.
  • Um die nützliche Größe des offiziell zugeteilten Adressenpools wirkungsvoll zu vergrößern, wird der NAT der Organisation normalerweise in der Lage sein, dieselbe offizielle IP-Adresse für mehrfache interne Anwendungen zu verwenden. An eine bestimmte offizielle IP-Adresse, sagen wir mal X, gerichtete Daten können weiter unterschieden werden, indem sie zu einem von mehreren Datenströmen gehören, sagen wir mal A, B und C. Der NAT kann die Adresse X, Strom A einem spezifischen Datenstrom für eine Anwendung zugewiesen haben, während Adresse X, Ströme B und C zwei verschiedenen anderen Anwendungen gehören.
  • Die Stromkennungen werden Portnummern genannt. Ein Datenstrom in einem IP-Netz ist eindeutig durch das sogenannte „5-Tupel" identifiziert, das aus 5 separaten numerischen Quantitäten besteht:
    • 1) Quell-IP-Adresse
    • 2) Ziel-IP-Adresse
    • 3) Quellportnummer
    • 4) Zielportnummer
    • 5) Transportprotokoll
  • Jedes Datenstück (Paket) in einem IP-Netz enthält diese 5 numerischen Kennungen. Die beiden IP-Adressen (die obigen Posten 1 und 2) identifizieren mehr oder weniger die Quell- und Zielanwendungen. Das Protokoll identifiziert, welche der Mechanismen zum Sichern eines zuverlässigen Transports benutzt werden. Für die gegenwärtigen Zwecke wird das Protokoll ignoriert, weil es von einem NAT nicht viel genutzt wird. Die Quell- und Zielports (die obigen Posten 3 und 4) identifizieren, welche Anwendung innerhalb des Netzes dieses Paket gesendet hat bzw. empfangen wird.
  • Ein herkömmlicher Netzadressenübersetzer (z. B. ein Private Internet Exchange (PLX), hergestellt von Cisco Systems, Inc., in San Jose, CA), wie er in diesem Dokument gesehen wird, arbeitet durch Änderung dieser fünf numerischen Kennungen innerhalb eines Pakets. Wie oben bemerkt, befindet sich eine NAT-Einrichtung an der Grenze zwischen zwei Adressenbereichen, und zwar normalerweise, aber nicht immer, dem Globalen Internet und dem privaten Netz einer Organisation, wo diese beiden Netze nichtkompatible IP-Adressenschemata haben. Eine NAT-Einrichtung benutzt intelligentes Neuschreiben der vier Quell-/Zielelemente innerhalb eines jeden sie durchlaufenden Pakets, um jedem der beiden Netze eine falsche, aber kompatible Ansicht des IP-Adressenschemas des anderen Netzes anzuzeigen. Jeder NAT muss eine Menge von Regeln haben, das die Paarung der Intern- und Externadressen definiert, die er für die Adressenübersetzung benutzten wird. Ein nützlicher NAT muss diese Paarungen aufbauen, um internen Anwendungen zu ermöglichen, die verfügbaren Externadressen wirkungsvoll zu benutzen, die begrenzt sein werden, wenn der externe Bereich offizielle IP-Adressen benötigt.
  • Eine mit einem Internnetz assoziierte herkömmliche NAT-Einrichtung unterstützt im Wesentlichen zwei gleichzeitige Modi Operandi. Der erste ermöglicht Datentransaktionen von Anwendungen auf dem Internnetz nach außen an das Globale Internet (beispielsweise ein Geschäftsbenutzer, der auf eine Webseite zugreift). Dies ist der Zugriff eines Internen Clienten auf einen Externen Server. Der zweite ermöglicht Anwendungen auf dem Globalen Internet auf spezifische Dienste auf spezifischen Einrichtungen auf dem Internnetz zuzugreifen (beispielsweise ein Kunde, der auf die Website einer Organisation zugreift). Dies ist der Zugriff eines Externen Clienten auf einen Internen Server. Die herkömmliche NAT-Einrichtung baut diese Adressenpaarung, die die erste und zweite Zugriffsart ermöglicht, auf etwas verschiedene Weisen auf.
  • Eine herkömmliche NAT-Einrichtung implementiert den ersten Modus wie folgt: Wenn das erste Datenpaket auf der NAT-Einrichtung ausgehend ankommt, untersucht die NAT-Einrichtung die Quelladresse und den Port (die die interne Einrichtung und die Anwendung identifizieren, die das Paket erzeugt haben). Der NAT wählt dann aus seinem Pool von verfügbaren offiziellen Adressen und Ports eine extern gültige IP-Adresse und einen Port aus, die anstelle der intern gültigen Quelladresse und des Ports im Paket benutzt werden. Die Figur von der intern gültigen Quelladresse und dem Port auf die extern gültige Quelladresse und den Port wird irgendwie im NAT gepflegt, beispielsweise in einer Tabelle, die die Zuordnungsregel definiert. Schließlich modifiziert der NAT die intern gültigen Quelladressen- und Portfelder im ausgehenden Paket und leitet es weiter. Wenn ein eingehendes Antwortpaket, das auf das erste Paket antwortet, von außen beim NAT ankommt, dann passen die Zieladresse und der Port im Antwortpaket zu der extern gültigen Quelladresse und dem Port (da in einer Antwort die Absenderadresse und Empfängeradresse natürlich ganz wie sagen wir mal bei einem Postbrief, ausgetauscht werden). Der NAT benutzt diese eingehende extern gültige Quelladresse und den Port, um die intern gültige Quelladresse und den Port aus dem ersten ausgehenden Paket zu lokalisieren. Der NAT benutzt dann die lokalisierte, intern gültige Quelladresse und den Port, um die Zieladresse und den Port in diesem eingehenden Antwortpaket zu ersetzen. Jetzt hat das eingehende Antwortpaket die korrekte intern gültige Zieladresse und den Port zur Lieferung an die Einrichtung und Anwendung, die das erste ausgehende Paket gesendet haben.
  • Eine herkömmliche NAT-Einrichtung implementiert den zweiten Modus unter Verwendung der vom NAT-Administrator definierten festen Konfigurationsinformation zur Zuordnung von Intern- und Externadressen. Für diesen Modus ist das erste Paket eingehend, es kommt von außen am NAT mit etwas Zielinformation an, die eine der offiziell zugeordneten IP-Adressen enthält, weil diese extern gültigen Adressen die einzigen IP-Adressen sind, die das Globale Internet benutzen kann, um Pakete mit dem NAT an die Zielorganisation zu liefern. Der NAT in der Zielorganisation zieht seine Konfigurationsinformation zurate, um zu bestimmen, welche (feste) intern gültige Ziel-IP-Adresse und welchen Port er benutzen sollte, um die im eingehenden Paket enthaltene extern gültige Zieladresse und den Port zu ersetzen. Wenn im Effekt eine Anwendung (sagen wir mal ein Webserver) bei der Zielorganisation auf der internen Einrichtung A (eine inoffizielle, aber intern gültige IP-Adresse) vorhanden ist, die Pakete am Port X erwartet, könnte der NAT dazu konfiguriert sein, zu erkennen, dass an IP-Adresse M (offiziell zugewiesen und extern gültig), Port Y adressierte Pakete an die intern gültige Adresse Einrichtung A/Port X zu readressieren sind. Eine andere Anwendung in der Zielorganisation könnte auf einer anderen internen Einrichtung laufen, die extern als Einrichtung B bei Port Z identifiziert ist, und der NAT könnte eine Paarung von Intern- und Extemadressen für diese Anwendung benutzen unter Verwendung derselben internen Adresse A und eines anderen Ports, wiederum gemäß einigen festen, vordefinierten Konfigurationsdaten.
  • Die Schwierigkeit besteht darin, dass der erste Modus nur Internen Clienten erlaubt, Daten an Externe Server zu senden (und danach von ihnen zu empfangen), während der zweite Modus Externen Clienten nur erlaubt, Daten an eine kleine Menge von Internen Servern an festen IP-Adressen und Ports zu senden (und danach von ihnen Antworten zu empfangen), die im NAT als mit den Internen Servern assoziiert vordefiniert sind. Transaktionen, in denen sich ein Externer Client an einen gerade erzeugten Internen Server an einer gerade zugeordneten Portnummer anbindet, werden nicht unterstützt.
  • Eine Vielfalt von Referenzen zum Stand der Technik erörtern NAT-Einrichtungen und Variationen ihrer elementaren Adressenübersetzungsfunktionen: U.S. Patent 6055236 betitelt „Method And System For Loacating Network Services With Distributed Network Address Translation" behandelt Verfahren, um einen Dienst auf sichere Weise effektiv bekannt zu machen. U.S. Patent 6055236 äußert sich nicht zum Symmetrieproblem des Bereitstellens von Adressen für clientseitige Information und konzentriert sich völlig auf die externe Bekanntmachung von nützlichen Adressen für Server, ohne etwas über die von Clienten zu benutzenden externen Adressen auszusagen.
  • U.S. Patent 5793763 betitelt „Security System For Network Address Translation Systems" ist ein Patent für eine Art von NAT-Einrichtung, die allerdings nur IP-Adressen übersetzt und sich mit Sicherheitsüberlegungen beschäftigt. Die Lehre enthält nichts zum Thema des Portnummerngebrauchs, um den verfügbaren „logischen" Adressenraum zu erweitern.
  • In „An Expanded NAT with Server Connection Ability" beschreiben Lee et al. einen erweiterten NAT, der die Anbindung von einem Externnetz an einen spezifischen internen Server ermöglicht, wobei nur eine Modifikation der NAT-Tabelle verwendet wird. Die NAT-Tabelle ist durch Konfigurieren der Portnummern modifiziert, sodass die externe Portnummer für jede in der NAT-Tabelle registrierte Anwendung mit der internen Portnummer übereinstimmt. So müssen verschiedene interne IP-Adressen verschiedene Portnummern für eine Anwendung benutzen, um einen Konflikt zu vermeiden. Inter-private Netzanbindung ist nur durch vorheriges Übereinkommen zwischen Netzmanagern unter Verwendung einer Verbindungstabelle für das inter-private Netz, virtueller IP-Köpfe und des erweiterten NAT-Algorithmus verfügbar.
  • SOCKS. SOCKS ist ein Standard der Internet Engineering Task Force (IETF), der einen Mechanismus bereitstellt, mit dem eine Anwendung eine Anwendungs-Firewall hinsichtlich einer extern nützlichen Adresse befragen kann, die sie einer Fernclientanwendung bekannt machen kann. SOCKS ist der Proxy dieser Anwendung, der ähnliche Dienste wie ein NAT bereitstellt, aber ganz anders funktioniert. SOCKS schreibt den durch die Einrichtung fließenden Paketinhalt nicht neu, sondern wird (wie jeder Anwendungsproxy) zwei Kommunikationskanäle schließen und auf höherer Ebene in sich selbst logisch miteinander verbinden. Beispielsweise könnte ein Server auf der Innenseite eines Netzes seinen Dienst starten und dann am Rande des Netzes an eine SOCKS-Anwendung eine Anforderung richten. Die SOCKS-Anwendung wird auf ihrem Host einen „dünnen" Server starten und dann dem ursprünglichen Server Adresse und Port mitteilen, wo der „dünne" Server aufgefunden werden kann. Der ursprüngliche Server kann diese Information an den Clienten weiterleiten, der an den „dünnen" Server anbindet, den SOCKS bedient. SOCKS wird dann an den ursprünglichen Server als Client anbinden und dann vom externen Clienten empfangene Daten an den ursprünglichen Server kopieren und außerdem vom ursprünglichen Server empfangene Daten nach außen zum externen Clienten zurückzukopieren. Insbesondere ist SOCKS kein NAT und arbeitet nicht Paket um Paket, was bestimmte Leistungs- und Skalierungsimplikationen hat. Für weitere Informationen über SOCKS siehe http://www.socks.nec.com.
  • Es wird eine Zunahme im Gebrauch von IP-Netzen erwartet, um Daten zu senden, die aus digitalisierter Sprache, Sound oder Video („Medien"-Inhalt) bestehen. Es besteht Bedarf an einem Verfahren und einer Vorrichtung für Netzadressenübersetzung, die den Peer-zu-Peer Datenaustausch erleichtert, einschließlich der Mediensendung über das Internet und andere IP-Netze.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Ein Aspekt der vorliegenden Erfindung stellte eine Netzadressen-Übersetzungseinrichtung bereit zum Erleichtern der Nachrichtenpaketkommunikation zwischen einer ersten Anwendung mit einer in einem Internadressenbereich gültigen Internadresse und einer oder mehreren Anwendungen in einem Externadressenbereich, wobei die Netzadressen-Übersetzungseinrichtung über eine Menge von verfügbaren Adressen verfügt, die zum Gebrauch im Externadressenbereich gültig sind, umfassend:
    einen Adressenübersetzer zum Übersetzen von Adressen, die in den Köpfen von in den Internadressenbereich eingehenden und von ihm ausgehenden Nachrichtenpaketen enthalten sind, gemäß Übersetzungsregeln, die die Unvereinbarkeit der Adressenschemata der Intern- und Externadressenbereiche auflösen;
    einen Adressenmanager zum Festlegen und Abspeichern der Übersetzungsregeln, wobei der Adressenmanager auf die Menge der verfügbaren Adressen Zugriff hat, die zum Gebrauch im Externadressenbereich gültig sind;
    dadurch gekennzeichnet, dass die Netzadressen-Übersetzungseinrichtung außerdem Folgendes umfasst:
    ein im Adressenmanager enthaltenes Mittel zur Kommunikation mit der ersten Anwendung über einen Steuerkanal, wobei die Kommunikation einschließt, dass der Adressenmanager von der ersten Anwendung eine Dienstanforderungsnachricht empfängt, die das Festlegen einer von der ersten Anwendung spezifizierten Adressenübersetzungsregel anfordert;
    worin der Adressenmanager Logik umfasst zum Bereitstellen von Diensten als Reaktion auf die Dienstanforderung der ersten Anwendung, eine von der ersten Anwendung in der Dienstanforderungsnachricht spezifizierte Übersetzungsregel festzulegen.
  • Ein weiterer Aspekt der vorliegenden Erfindung stellt ein Verfahren bereit zum Erleichtern der Nachrichtenpaketkommunikation zwischen einer ersten Anwendung mit einer in einem Internadressenbereich gültigen Internadresse und einer oder mehreren Anwendungen in einem Externadressenbereich, wobei die Netzadressen-Übersetzungseinrichtung über eine Menge von Adressen verfügt, die zum Gebrauch im Externadressenbereich gültig sind, die folgenden Verfahrensschritte umfassend:
    eine Netzadressen-Übersetzungseinrichtung im Internadressenbereich, Adressen übersetzend, die in den Köpfen von in den Internadressenbereich eingehenden und von ihm ausgehenden Nachrichtenpaketen enthalten sind, gemäß Übersetzungsregeln, die die Unvereinbarkeit der Adressenschemata der Intern- und Externadressenbereiche auflösen; und
    einen Adressenmanager, der die Übersetzungsregeln festlegt und abspeichert, wobei der Adressenmanager auf die Menge der verfügbaren Adressen Zugriff hat, die zum Gebrauch im Externadressenbereich gültig sind;
    gekennzeichnet durch:
    den Adressenmanager, mit der ersten Anwendung über einen Steuerkanal kommunizierend, wobei die Kommunikation einschließt, dass der Adressenmanager von der ersten Anwendung eine Dienstanforderungsnachricht empfängt, die das Festlegen einer von der ersten Anwendung spezifizierten Adressenübersetzungsregel anfordert; und
    worin die Logik des Adressenmanagers als Reaktion auf die Dienstanforderung der ersten Anwendung eine Übersetzungsregel festlegt, die durch die erste Anwendung in der Dienstanforderungsnachricht spezifiziert ist.
  • In einer erfindungsgemäßen Ausführungsart sind die Anwendungen für IP-Telefonie verbundene Entitäten. In einer anderen erfindungsgemäßen Ausführungsart legt der Adressenmanager komplexere Übersetzungsregeln fest, sodass eine extern gültige Zieladresse in eine intern gültige Adresse eines Werts oder eines anderen Werts übersetzt werden könnte, was von der eingehenden Quelladresse abhängt. Bestimmte Fernadressen, größere Mengen von Fernadressen oder irgendeine Fernadresse könnten als Auslöser zur Verwendung spezieller komplexerer NAT-Regeln benutzt werden. In einer weiteren Ausführungsart ist eine Anwendung dazu programmiert, die vom Adressenmanager festgelegten Übersetzungsregeln innerhalb spezifizierter Bereiche zu steuern.
  • BESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein Blockdiagramm, das eine NAT-Einrichtung zeigt, wie sie in einem dem Stand der Technik entsprechenden Netz benutzt wird, um ein Internnetz mit mehrfachen Einrichtungen oder Anwendungen an das Internet anzubinden.
  • 2 ist ein Blockdiagramm, das eine NAT-Einrichtung zeigt, die Adressenübersetzung nach dem Stand der Technik ausführt.
  • 3 ist ein Blockdiagramm, das eine NAT-Einrichtung nach einer Ausführungsart der vorliegenden Erfindung zeigt zum Erleichtern der Kommunikation zwischen einer Anwendung in dem vom NAT bedienten Adressenbereich und einer Anwendung in einem anderen Adressenbereich.
  • DETAILLIERTE BESCHREIBUNG
  • I. PEER-ZU-PEER ANWENDUNGEN
  • Ein System, das die vorliegende Erfindung benutzt, ist nützlich zumindest für die neue Klasse von Internetanwendungen, die auf eine Peer-zu-Peer Weise (zwei oder mehrere beliebig positionierte Einrichtungen, die im Wesentlichen symmetrisch kommunizieren) arbeitet, im Gegensatz zum traditionellen Modell, in dem eine Einrichtung einen bekannten Standort (IP-Adresse) hat und die andere einen bekannten Standort (IP-Adresse) haben kann, aber nicht haben muss.
  • Die neue Generation von Internetanwendungen wie IP-Telefonie, Instant Messaging usw. erlaubt Benutzern auf Netzen in verschiedenen Adressenbereichen, wechselseitig ihre Computer direkt zu verbinden, um Daten gemeinsam zu nutzen oder zusammenzuarbeiten oder nur in einer kontinuierlichen, echtzeitlichen Interaktion zu chatten. In diesen Protokollen wird jeder Benutzer eine Anwendung installieren, die als Mikroserver bezeichnet werden könnte, und dann an den anderen Computer, der in einem anderen Adressenbereich positioniert ist, eine IP-Adresse und einen Port kommunizieren, wo dieser Mikroserver erreicht werden kann. (Das ist der „gerade installierte interne Server" an der „gerade zugeordneten Portnummer", den eine herkömmliche NAT-Einrichtung nicht verarbeitet.) Um die Peer-zu-Peer Verbindung fertig zu stellen, lanciert dann der Computer eines jeden Benutzers eine Clientanwendung, um an den Mikroserver im Adressenbereich des anderen Computers anzubinden. Den jeweiligen Clientanwendungen muss dann eine Adresse gegeben werden, an der der Mikroserver auf dem anderen Computer im anderen Adressenbereich erreicht werden kann. Danach kann die Zweiwegkommunikation zwischen den zwei Client/Mikroserver-Paaren beginnen unter Verwendung des NAT zum Verarbeiten der verschiedenen Adressenbereiche.
  • Wie oben bemerkt ist, zeigt 1 den Kontext, in dem ein herkömmlicher NAT benutzt wird. Das normalerweise zu lösende Problem ist das eines großen Internnetzes 10, das in einem Bereich 50 inoffizieller oder nicht zugewiesener IP-Adressen existiert, die dem Globalen Internet nicht bekannt sind oder von ihm nicht korrekt geroutet werden. Die NAT-Einrichtung 20 wird am Interkonnektionspunkt (oder Punkten) des Internnetzes 10 an das Globale Internet 30 eingesetzt. Unter Verwendung eines kleinen Pools von offiziell zugewiesenen Adressen erzeugt der NAT 20 für das Globale Internet 30 die Illusion eines kleinen Netzes von Einrichtungen, das die offiziell zugewiesenen IP- Adressen benutzt, und gewährt vielen oder allen Einrichtungen innerhalb des Internnetzes 10 etwas Zugriff auf das Globale Internet 30.
  • Peer-zu-Peer Anwendungen werden nicht in der Lage sein, über eine NAT-Einrichtung der gegenwärtigen Generation zu arbeiten, teilweise wegen der beschränkten Weise, in der eine Anwendung und ihr entsprechender NAT kommunizieren. Normalerweise befasst sich eine NAT-Einrichtung nur mit den IP-Adressenfeldern von Nachrichtenpaketen und führt die Adressenübersetzung gemäß einer begrenzten Menge von Regeln aus. 2 zeigt die elementaren Adressenübersetzungsfunktionen eines herkömmlichen NAT 120. Der Host A 110 ist Teil eines Adressenbereichs 100, der vom herkömmlichen NAT 120 bedient wird. Die Anwendung A1 121 läuft auf dem Host A. Sie hat eine Ziel- oder Endadresse, die intern gültig ist und benutzt wird, um eingehende Nachrichten zu ihr zu routen. Anwendung A1 kann auch eine Ursprungsadresse haben, die dazu benutzt wird, Anwendung A1 als Quelle von Nachrichtenpaketen zu identifizieren, die Anwendung A1 erzeugt. Wie oben erörtert, enthält ein IP-Nachrichtenpaket einen fünfteiligen IP-Kopf. So enthält ein ausgehendes Paket 130, das Anwendung A1 an Rost R 210 in einem fernen Externadressenbereich senden will, die folgenden Komponenten in seinem IP-Kopf 140:
    • 1) Quell-IP-Adresse
    • 2) Ziel-IP-Adresse
    • 3) Quellportnummer
    • 4) Zielportnummer
    • 5) Transportprotokoll
  • Diesem IP-Kopf folgen Daten 142, bei denen es sich um Medien handeln kann. Wenn Anwendung A1 dem NAT 120 die ausgehende Nachricht 130 präsentiert, muss der NAT 120 irgendwelche intern gültigen Adressen und Portnummern durch extern gültige Adressen und Portnummern ersetzen. Der NAT 120 kann Hardware und Software 122 haben, die seine Übersetzungsregeln anwenden, die in einer beliebigen Form gespeichert sind, beispielsweise in einer Zuordnungstabelle 124. Typischerweise besitzt Anwendung A1 121 nur ihre intern gültige Quell-IP-Adresse und Quellportnummer (ihre Ursprungsadresse), und der NAT 120 muss diese als bei jeder ausgehenden Nachricht 130 in einen extern gültigen Adressenkopf 240 des Pakets 230 eingesetzt übersetzen, bevor er sie an den Host R 210 weiterleitet. Wenn wir der Einfachheit halber annehmen, dass sich der Host R in einem Adressenbereich 200 befindet, der offizielle IP-Adressen benutzt, dann werden NAT oder Adressenübersetzung nicht gebraucht, um das Paket 230 mit der extern gültigen Adresse 240 an die spezifizierte Ziel-IP-Adresse und den Port im Adressenbereich 200 von Host R zu liefern.
  • Das Antwortpaket 250 von Host R wird in seinem Adressenkopf 260 extern gültige IP-Adressen benutzen. Der NAT 120 wird diese extern gültigen Adressen in intern gültige IP-Adressen für seinen Adressenbereich 100 übersetzen müssen. Wieder wird der NAT Hardware und Software 122 benutzen, die seine Übersetzungsregeln anwenden, die in beliebiger Form gespeichert sind, beispielsweise als eine Zuordnungstabelle 124. Das von Host R an Host A gesendete Resultat ist ein intern gültiges Paket 150 mit passend übersetztem Adressenkopf 160, der eine intern gültige Zieladresse und einen Port hat (d. h. die Endadresse für Anwendung A1). Das ermöglicht dem intern gültigen Paket 150 mit Dateninhalt 162, die Anwendung A1 zu erreichen.
  • Die Mikroserver für die von der vorliegenden Erfindung erleichterte Peer-zu-Peer Kommunikation befinden sich potentiell auf irgendeiner Hosteinrichtung im Internnetz einer Organisation. Diesen Mikroservern werden im Allgemeinen vom unterliegenden Betriebssystem (auf eine für das Betriebssystem spezifischen Weise) eine stochastische, verfügbare Portnummer als Port zugewiesen, den er für seinen Dienst benutzt; dies wird eine Nummer sein, die gegenwärtig von keiner anderen Anwendung auf der Hosteinrichtung, wo der Mikroserver läuft, benutzt wird. Tatsächlich besteht kein Grund, dass sich der Mikroserver auf derselben Einrichtung befindet wie die Anwendung, die die Adresse des Mikroservers kommuniziert, und es ist auch nicht nötig, dass sich der Client des Mikroservers im anderen Adressenbereich auf derselben Einrichtung befindet wie die Einrichtung, an die die Adresse des Mikroservers kommuniziert werden soll, um Datenaustausch einzurichten. Wenn jedoch diese Trennung stattfindet, muss etwas Intranetzkommunikation stattfinden, damit alle Anwendungen alle Adressen- und Portinformationen kennen, die sie kennen müssen.
  • Wir werden uns auf die hierin erörterte Klasse der Anwendungen als „Peer-zu-Peer Anwendungen" beziehen, was alle Anwendungen einbeziehen soll, in denen zwei Anwendungen über ein Netz auf eine im Wesentlichen symmetrische Weise kommunizieren, wo keine der beiden Anwendungen eindeutig ein Server oder ein Client ist in dem Sinne, dass eine Anwendung einen Dienst gewährt bzw. empfängt; sondern beide Anwendungen führen dieselben oder ähnliche Funktionen für die andere aus. Man beachte, dass wir im Rest dieses Dokuments unter dem Terminus „Client" eine Anwendung verstehen, die eine Datenübertragungssitzung aufbaut und unter dem Terminus „Server" eine Anwendung verstehen, die den Aufbau einer Datenübertragungssitzung von einem Clienten annimmt. Das ist eine nützliche Terminologie, die dabei hilft, die Richtung zu definieren, in der das erste zwischen den beiden Anwendungen übergebene Datenpaket übergeben wird. Dieser Aufbauschritt ist wichtig für eine Erörterung des NAT-Verhaltens. Für unsere Zwecke soll der Terminus „Client", falls nicht anders interpretiert, die Anwendung oder Einrichtung bedeuten, die das erste Sitzungspaket einer Datenübertragung sendet, und „Server" bedeutet die Anwendung oder Einrichtung, an die das erste Paket gerichtet ist.
  • IP-Telefonie ist ein wichtiges Beispiel für eine Peer-zu-Peer Anwendung. In diesem Beispiel fungiert jede Endpunktanwendung als ein Client, indem sie eine so genannte „Medien"-Verbindung aufbaut, um digitalisierte Sprache enthaltende Pakete an die andere zu senden, die die digitalisierte Sprache enthaltenden Pakete als Server empfängt. Das Verhältnis ist mehr oder weniger symmetrisch, da digitalisierte Sprache normalerweise in beiden Richtungen übergeben wird.
  • In IP-Telefonie wird ein Mikroserver auf einem Internnetz (sagen wir mal einem IP-Telefon, das einen Strom von digitalisierten Sprachpaketen von einem entfernten Telefon erwartet) normalerweise die IP-Adresse seiner Hosteinrichtung an einen entfernten Clienten (das andere IP-Telefon oder eine andere für das andere Telefon agierende Einrichtung wie beispielsweise eine virtuelle PBX-Anlage oder ein anderes IP-Telefonie-Gateway) kommunizieren müssen. Die intern gültige Netzadresse des Mikroservers funktioniert nicht für einen Clienten im Globalen Internet, da diese Adresse keine offiziell zugewiesene IP-Adresse ist. Im Falle, dass der Mikroserver irgendwie selbständig eine offizielle IP-Adresse detektieren oder berechnen könnte, die er dem entfernten Clienten im ersten Paket mitteilen könnte, hätte der herkömmliche NAT immer noch keine Verfahren oder Regeln, um zu wissen, was er mit dem von der entfernten Clientanwendung geschickten ersten Antwortpaket anfangen soll. D. h. es sei denn, der NAT selbst beteiligt sich an dieser Detektion oder Berechnung der offiziellen IP-Adresse im ersten Paket, wird der NAT keine Übersetzungsregel haben, die die Internnetzadresse und irgendeine offizielle IP-Adresse in einer eingehenden Nachricht assoziiert.
  • II. EINE VERBESSERTE PEER-ZU-PEER NETZADRESSEN-ÜBERSETZUNGSEINRICHTUNG
  • Die folgende Diskussion bezieht sich auf 3, um zu beschreiben, wie die vorliegende Erfindung eine verbesserte NAT-Einrichtung und ein Verfahren benutzt, um Peer-zu-Peer Internetkommunikationen aufzubauen.
  • Effiziente Peer-zu-Peer Anwendungskommunikation zwischen verschiedenen Adressenbereichen erfordert, dass die Anwendungen (der Einfachheit halber beschränken wir unsere Diskussion auf zwei Anwendungen, die Daten untereinander austauschen, im Gegensatz zu einem einmehrdeutigem oder mehrmehrdeutigen Austausch) Zugriff auf die offizielle, extern gültige IP-Adresseninformation haben, die in ihrer Kommunikation benutzt werden wird. Im einfachsten Fall muss eine erste Anwendung Zugriff haben auf (1) die extern gültige Adresseninformation, die andere benutzen, um sie zu erreichen, sodass eine solche erste Anwendung diese Adresseninformation an eine zweite Anwendung in einem anderen Adressenbereich kommunizieren kann, und (2) die extern gültige Adresse der zweiten Anwendung. Wegen der Symmetrie und zum Erleichtern der Sicherheit und anderer Funktionen ist es tatsächlich besser, dass jede der ersten und zweiten Anwendungen zwei Adressen hat: eine Ursprungsadresse AO, die zum Identifizieren von Einrichtung und Port einer sendenden Anwendung als der Quelle eines ausgehenden Nachrichtenpakets benutzt wird, und eine separate Endadresse AT, die dazu benutzt wird, eine andere Einrichtung und einen Port zu identifizieren, von denen eingehende Nachrichtpakete empfangen werden. Idealerweise wird also die Kommunikation von jeder der ersten und zweiten Anwendungen aufgebaut, die zwei assoziierte offizielle Adressen haben und kommunizieren: die Ursprungs- und Endadressen. Außerdem hat jede der ersten und zweiten Anwendungen Zugriff auf die Ursprungs- und Endadressen des Pendants, mit dem sie Peer-zu-Peer Kommunikation aufnehmen will.
  • 3 zeigt ein System zum Erleichtern verbesserter Kommunikation zwischen zwei Peeranwendungen in verschiedenen Adressenbereichen. Host A 110 und Host B 310 sind beide Teil des Adressenbereichs 100. Auf Host A laufen eine oder mehrere Anwendungen. Um ein Beispiel zu geben, werden Anwendungen A1 121 und Anwendung A2 122 gezeigt. Jede hat eine intern gültige Endadresse und eine intern gültige Ursprungsadresse. Auf Host B können auch eine oder mehre Anwendungen laufen. Um ein Beispiel zu geben, werden Anwendungen B1 321 und Anwendung B2 322 gezeigt. Host A und Host B können auf demselben Netz sein oder anderweitig verbunden sein, sodass es einen Kanal 370 (z. B. Verbindung an ein gemeinsames Kommunikationsnetz) zur Kommunikation zwischen Host A und Host B gibt. In diesem Adressenbereich 100 können noch weitere Hosts vorhanden sein, werden aber nicht gezeigt.
  • Der verbesserte NAT 320 bedient den Adressenbereich 100. Der verbesserte NAT 320 hat zwei funktionale Abschnitte. Einer ist der Adressenübersetzungsabschnitt 322, der die herkömmlichen Adressenübersetzungsfunktionen ausübt, wie mit Bezug auf den NAT 120 in 2 erörtert ist. Der andere ist der Adressenmanagerabschnitt 324. Ein IP-Nachrichtenkanal 360 verbindet Host A 110 an den Adressenübersetzungsabschnitt. Dieser Kanal 360 wird benutzt, wenn eine Anwendung auf Host A oder irgendeinem anderen von NAT 320 bedienten Host eine ausgehende Nachricht senden muss und die Übersetzung intern gültiger Adressen in extern gültige Adressen benötigt. Der Kanal 360 wird auch benutzt, wenn eine eingehende Nachricht mit einer extern gültigen Adresse angekommen ist, der NAT 320 die extern gültigen Adressen in einer eingehenden Nachricht in intern gültige Adressen übersetzt hat und die Nachricht an die passende Anwendung im Adressenbereich 100 weiterleiten muss.
  • Der Adressenübersetzungsabschnitt 322 ist an die „Außen"-Adressenbereiche angebunden. 3 zeigt exemplarisch einen Globalen Internetbereich 400, der an den Adressenübersetzungsabschnitt 322 angebunden ist. Innerhalb des Adressenbereichs 400 befindet sich ein anderer Adressenbereich 200, der Host R 410 und Host S 510 enthält, die andere Anwendungen (Anwendungen R1, R2, S1 und S2 sind exemplarisch gezeigt) hosten können, mit denen Host A oder Host B kommunizieren kann. Kanal 470 (z. B. eine gemeinsame Netzverbindung) stellt Kommunikation zwischen Host R 410 und Host S 510 zur Verfügung.
  • Ein Steuerkanal 350 bindet Host A 110 (und indirekt Host B 310) an den Adressenmanagerabschnitt 324 an. Der Steuerkanal 350 wird benutzt, wenn eine Anwendung auf Host A oder irgendeinem anderen vom NAT 320 bedienten Host mit dem NAT 320 kommunizieren muss, um Dienste des Adressenmanagers 324 anzufordern. Der Adressenmanager kann für eine anfordernde Anwendung mehrere Dienste ausführen. Erstens kann eine anfordernde Anwendung eine intern gültige Adresse präsentieren (entweder eine Ursprungsadresse oder eine Endadresse) und den Adressenmanager 324 auffordern, eine extern gültige Adresse gepaart mit einer intern gültigen Adresse bereitzustellen und dem Adressenübersetzungsabschnitt 322 Zugriff auf diese Paarung zu geben. Dies kann so erfolgen, dass der Adressenübersetzungsbereich 322 diese Zuordnung als seine Übersetzungsregel für eingehende und ausgehende Nachrichtenpakete benutzen wird.
  • Zweitens kann eine Anwendung bewirken, dass der Adressenmanager 324 weitere oder komplexere Übersetzungsregeln, die über einfache Intern-Extern-Paarungen hinausgehen, den im NAT 320 benutzten hinzufügt. Anstatt beispielsweise nur eine in einer eingehenden Nachricht aufgefundene spezifizierte extern gültige Adresse oder einen Port durch eine entsprechende intern gültige Zieladresse oder einen Port bedingungslos zu ersetzen, kann der Adressenmanager 324 auf Aufforderung einer Anwendung eine komplexere Übersetzungsregel aufbauen. Eine Regel könnte formuliert werden, sodass der Adressenübersetzungsabschnitt 322 die eingehende Quelladresse und/oder den Port prüft und in Abhängigkeit vom Inhalt dieses Felds eine verschiedene Übersetzungsregel anwendet. Z. B. wird eine extern gültige Adresse AE in einem am NAT 320 empfangenen Paket in eine intern gültige Adresse AI1 übersetzt, wenn eine bestimmte Quelladresse im Paket vorhanden ist; die Übersetzung wird jedoch nicht ausgeführt und das Paket wird verworfen, falls diese Quelladresse nicht vorhanden ist. Das kann der Sicherheit nützen. Als Alternative könnte eine extern gültige Zielportnummer PE in Abhängigkeit von der eingehenden Quelladresse in eine intern gültige Portnummer eines Werts PI1 oder eines verschiedenen Werts PI2 übersetzt werden. Spezifische Fernadressen, größere Mengen von Fernadressen oder irgendeine beliebige Fernadresse könnten als Auslöser für den Gebrauch spezieller NAT-Regeln benutzt werden.
  • Drittens könnte eine Anwendung dem Adressenmanager 324 erforderliche oder erwünschte Charakteristiken für eine extern gültige Adresse zur Assoziation mit einer intern gültigen Adresse spezifizieren. Dies könnte nützlich sein, damit eine Anwendung spezifiziert, dass die externe LP-Adresse, die aus der Übersetzung resultieren soll, eine bestimmte IP-Adresse sein muss oder innerhalb eines spezifizierten Bereichs von IP-Adressen sein muss. So könnte bei passender Anforderung die Anwendung eine NAT-Regel festlegen, die verlangen würde, dass das Nachrichtenpaket zu einem bestimmten externen Server im Globalen Internet geschickt oder gezwungen wird, der seinerseits die Nachricht zu einem bestimmten privaten Netz leitet, wo eine bestimmte Art von Übertragung oder Fakturierung stattfinden könnte, bevor das Paket wieder in ein öffentliches Globales Internet weitergeleitet wird.
  • Man kann dann erkennen, dass der Steuerkanal 350 und der Adressenmanagerabschnitt 324 eine flexible Einrichtung darstellen, um Anwendungen sowohl Information zur Verfügung zu stellen, die sie bei einem herkömmlichen NAT nicht erhalten, als auch die Fähigkeit, bestimmte Übersetzungsregeln für den Adressenübersetzungsabschnitt 322 des NAT festzulegen. Der Adressenmanager 324 kann als Hardware oder Software oder eine Kombination aus beiden implementiert werden. Beispielsweise könnte wünschenswert sein, dass der Adressenmanager 324 seinen eigenen Mikroprozessor und Speicher zum Speichern des Codes hat, der bestimmt, welche Dienste und Funktionen als Reaktion auf Steuernachrichten von einer Anwendung verfügbar sind. Man wird außerdem erkennen, dass jede Anwendung, die mit dem Adressenmanager 324 kommuniziert, Hardware und/oder Software benötigt, die es ermöglicht, Anforderungen über den Steuerkanal 350 zu machen und angeforderte Information oder Statusinformation an die Anwendung zurückzusenden.
  • III. MUSTER ZUM PEER-ZU-PEER AUSTAUSCH UNTER VERWENDUNG DES STEUERKANALS
  • Die obige Diskussion der Server- und Clientrelationen wird wieder aufgenommen. Die Funktion des Steuerkanals 350 und Kommunikationen zwischen einer Anwendung und dem Adressenmanagerabschnitt 324 und Adressenübersetzungsabschnitt 322 können in mehreren verschiedenen Beispielsituationen erklärt werden. Jedes Beispiel wird mit Bezug auf 3 vorgetragen.
  • BEISPIEL ZUR ZUORDNUNG UND DETEKTION VON SERVERADRESSE/PORT:
  • Host A 110 im Adressenbereich 100 startet einen Mikroserver, eine Anwendung A1 121, die den Zweck hat, Adresseninformation an Host R 410 im Adressenbereich 200 außerhalb des Adressenbereichs 100 zu kommunizieren, wobei Host R 410 die Adresseninformation dazu benutzen kann, um an den Mikroserver, Anwendung A1 anzubinden. Um den Host R mit nützlicher Adresseninformation zu versorgen, finden folgende Schritte statt:
    • 1. Anwendung A1 121 kontaktiert die NAT-Einrichtung 320 über den Steuerkanal 350, um den Adressenmanager 324 über die intern gültige IP-Adresse und den Port zu informieren, die von Anwendung A1 benutzt werden.
    • 2. Anwendung A1 121 empfängt vom Adressenmanager 324 als Antwort eine extern gültige IP-Adresse und Portnummer, die die NAT-Einrichtung 320 in die intern gültige Endadresse übersetzt, die Anwendung A1 in ihrer Anforderung bereitgestellt hat.
    • 3. Anwendung A1 (von der wir annehmen müssen, dass sie die Fähigkeit hat, ein IP-Nachrichtenpaket an Host R, Anwendung R1 421 zu adressieren) schickt dann ein IP-Nachrichtenpaket über den Adressenübersetzungsabschnitt 322 des NAT 320. Der Datenteil des Pakets enthält die extern gültige IP-Adresse und eine Portnummer, um Host R 410, Anwendung R1 421 mitzuteilen, wie Pakete an Anwendung A1 zu senden sind.
    • 4. Anwendung R1 421 in Host R 410 sendet eine Verbindungsanforderung über die extern gültige IP-Adresse und eine Portnummer, die ihr Anwendung A1 gegeben hat, die (da korrekt an eine offizielle IP-Adresse adressiert) beim NAT 320 ankommt, wo die extern gültige Adresse in die intern gültige Adresse und den Port der Anwendung A1 übersetzt wird.
    • 5. NAT 320 sendet das Antwortpaket von Anwendung R1 421 weiter an Anwendung A1 121 auf Host A.
  • BEISPIEL ZUR ZUORDNUNG UND DETEKTION VON CLIENTADRESSE/PORT:
  • Der externe Host R 410 im Adressenbereich 200 startet einen Mikroserver, z. B. eine Anwendung R1 421. Anwendung A1 hat die Absicht, Adresseninformation an Host R im Adressenbereich 200 außerhalb des Adressenbereichs 100 zu kommunizieren, wobei Host R die Adresseninformation dazu benutzen kann, eine eingehende Verbindung von Host A zu validieren. Um Host R 420 mit nützlicher Adresseninformation zu versorgen, finden folgende Schritte statt:
    • 1. Anwendung R1 421 sendet ein Paket an Host A, Anwendung A1 121, um Information darüber anzufordern, von welcher IP-Adresse und welchem Port die Verbindung von Anwendung A1 121 ausgehen wird. Diese Ursprungsadresseninformation nützt der Sicherheit und kann von Anwendung R1 für ihre eigenen Zwecke, beispielsweise Compliance mit einem Kommunikationsprotokoll, angefordert werden.
    • 2. Anwendung A1 121 auf Host A kontaktiert die NAT-Einrichtung 320 über den Steuerkanal 350, um den Adressenmanager 324 über die intern gültige IP-Adresse und den Port zu informieren, die Anwendung A1 benutzen wird, um mit dem Mikroserver auf Host R zu kommunizieren.
    • 3. Anwendung A1 121 empfängt vom Adressenmanager 324 als Antwort eine extern gültige IP-Adresse und eine Portnummer, in die die NAT-Einrichtung 320 die intern gültige Ursprungsadresse übersetzen wird, die von der Anwendung A1 in ihrer Anforderung geliefert wurde.
    • 4. Anwendung A1 121 (von der wir annehmen müssen, dass sie die Fähigkeit hat, ein IP-Nachrichtenpaket an Host R, Anwendung R1 zu adressieren) sendet dann ein IP-Nachrichtenpaket über den Adressenübersetzungsabschnitt 322 des NAT 320. Der Datenteil des Pakets enthält die extern gültige IP-Adresse und eine Portnummer, um Host R, Anwendung R1 421 zu informieren, von welcher IP-Adresse und welchem Port Pakete von Anwendung A1 121 ankommen werden.
    • 5. Anwendung A1 121 baut dann die Verbindung auf durch Senden eines ausgehenden Pakets, das an Host R, Anwendung R1 421 adressiert ist, wobei das Paket am Adressenübersetzungsabschnitt 322 der NAT-Einrichtung 320 ankommt.
    • 6. Der Adressenübersetzungsabschnitt 322 der NAT-Einrichtung 320 übersetzt die Quelladresse und den Port des Pakets (die die interne IP-Adresse und den Port der Anwendung A1 angeben) in deren extern gültige Version (die in Schritt 3 an Anwendung A1 weitergeleitet wurde und die Anwendung A1 in Schritt 4 an Anwendung R1 gesendet hat).
    • 7. Der Adressenübersetzungsabschnitt 322 sendet das Paket an Host R, Anwendung R1 mit der Quellinformation, die Anwendung R1 jetzt erwartet.
  • BEISPIEL ZUR ZUORDNUNG UND DETEKTION VON SERVERADRESSE/PORT MIT SEPARATEM ANFORDERER/SERVER:
  • In diesem Beispiel nutzen Host A und Host B einen zwischen ihnen verlaufenden Kommunikationskanal 370. Dies erlaubt einer Anwendung auf Host A als Proxy für eine Anwendung auf Host B zu fungieren. Wenn beispielsweise Anwendungen auf Host B wenig intelligente IP-Telefone sind, dann könnte Host A eine virtuelle PBX-Anlage mit Anwendungen sein, die eine Reihe von Diensten adressieren könnten (z. B. Fernsprechauskunft, Assoziation von Telefonnummer mit IP-Adresse), die von einem IP-Telefon benötigt werden oder könnte eine andere Form von IP-Telefonie-Gateway sein. Durch den Gebrauch eines Proxy wird deutlich, dass es kein Verhältnis zwischen den Adressen und Ports, die der anfordernden Entität tatsächlich gehören oder von ihr benutzt werden, und den in der Anforderung an den Adressenmanager 324 abgerufenen Adressen und Ports geben muss.
  • Host B 310 im Adressenbereich 100 startet einen Mikroserver, z. B. eine Anwendung B1 321, die den Zweck hat, Adresseninformation an den Host R im Adressenbereich 200 außerhalb des Adressenbereichs 100 zu kommunizieren, wobei Host R (der auch als der Client dient) die Adresseninformation dazu benutzen kann, um an den Mikroserver, Anwendung B1 anzubinden. Um Host R mit nützlicher Adresseninformation zu versorgen, finden folgende Schritte statt:
    • 1. Anwendung A1 121 kommuniziert mit Anwendung B1 über Kanal 370, um zu detektieren, welche intern gültige Adresse und welcher Port benutzt werden können, um Anwendung B1 321 zu kontaktieren.
    • 2. Anwendung A1 121 muss Anwendung R1 im Adressenbereich 200 kontaktieren, um die Anwendung R1 mit extern gültiger Adresseninformation für Anwendung B1 zu versorgen. Anwendung A1 kontaktiert die NAT-Einrichtung 320 über den Steuerkanal 350, um den Adressenmanager 324 über die intern gültige IP-Adresse und den Port zu informieren, die von Anwendung B1 benutzt werden.
    • 3. Anwendung A1 121 empfangt vom Adressenmanager 324 als Antwort eine extern gültige IP-Adresse und eine Portnummer, die die NAT-Einrichtung 320 in die von Anwendung A1 in ihrer Anforderung bereitgestellte intern gültige Endadresse für Anwendung B1 übersetzten wird.
    • 4. Anwendung A1 121 (von der wir annehmen müssen, dass sie die Fähigkeit hat, ein IP-Nachrichtenpaket an Host R, Anwendung R1 421 zu adressieren) sendet dann ein IP-Nachrichtenpaket über den Adressenübersetzungsabschnitt 322 des NAT 320. Der Datenteil des Pakets enthält die extern gültige IP-Adresse und eine Portnummer, um Host R, Anwendung R1 421 zu informieren, wie Pakete an Anwendung B1 321 zu senden sind.
    • 5. Anwendung R1 421 in Host R sendet ein Verbindungsanforderung über die extern gültige LP-Adresse und eine Portnummer, die ihr Anwendung A1 121 gegeben hat, die (da korrekt an eine offizielle LP-Adresse adressiert) beim NAT 320 ankommt, wo die extern gültige Adresse in die intern gültige Adresse und den Port der Anwendung B1 übersetzt wird.
    • 6. NAT 320 leitet die Antwort von Anwendung R1 weiter an Anwendung B1 auf Host B.
  • BEISPIEL ZUR ZUORDNUNG UND DETEKTION VON CLIENTADRESSEN/PORT MIT VON VERHANDELNDEN ENTITÄTEN SEPARIERTEN CLIENT/SERVERN:
  • In diesem Beispiel nutzen Host R 410 und Host S 510 einen zwischen ihnen verlaufenden Kommunikationskanal 470. Dadurch wird einer Anwendung auf Host R 410 ermöglicht, als Proxy für eine Anwendung auf Host S 510 zu fungieren. Wenn beispielsweise Anwendungen auf Host S wenig intelligente IP-Telefone sind, dann könnte Host R 410 eine virtuelle PBX-Anlage mit Anwendungen sein, die eine Reihe von Diensten adressieren könnten (z. B. Fernsprechauskunft, Assoziation von Telefonnummer mit IP-Adresse), die von einem IP-Telefon benötigt werden oder könnte eine andere Form von IP-Telefonie-Gateway sein.
  • Host S 510 im Adressenbereich 100 startet einen Mikroserver, z. B. eine Anwendung S1. Anwendung B1 hat die Absicht, Adresseninformation an Host S 510 im Adressenbereich 200 außerhalb des Adressenbereichs 100 zu kommunizieren, wobei Host S 510 die Adresseninformation dazu benutzen kann, eine eingehende Verbindung von Host B zu validieren. Um Host S 510 mit nützlicher Adresseninformation zu versorgen, finden folgende Schritte statt:
    • 1. Anwendung R1 421 sendet ein Paket an Host A 110, das von Host A, Anwendung A1 121 Information anfordert, von welcher IP-Adresse und welchem Port die Verbindung mit Anwendung B1 321 ausgehen wird. Diese Ursprungsadresseninformation nützt der Sicherheit und kann von Anwendung S1 für ihre eigenen Zwecke, beispielsweise Compliance mit einem Kommunikationsprotokoll, angefordert werden.
    • 2. Anwendung A1 121 kommuniziert mit Anwendung B1 321 über Kanal 370, um zu detektieren, welche intern gültige Adresse und welcher Port von Anwendung B1 321 benutzt werden wird, um Anwendung S1 521 zu kontaktieren.
    • 3. Anwendung A1 121 auf Host A kontaktiert die NAT-Einrichtung 320 über den Steuerkanal 350, um den Adressenmanager 324 darüber zu unterrichten, welche IP-Adresse und welcher Port von Anwendung B1 benutzt werden wird, um mit dem Mikroserver auf Host S 510 zu kommunizieren.
    • 4. Anwendung A1 121 empfängt als Antwort vom Adressenmanager 324 eine extern gültige IP-Adresse und eine Portnummer, in die die NAT-Einrichtung 320 die in ihrer Anforderung von Anwendung A1 121 bereitgestellte intern gültige Ursprungsadresse übersetzt.
    • 5. Anwendung A1 121 (von der wir annehmen müssen, dass sie die Fähigkeit hat, ein IP-Nachrichtenpaket an Host R, Anwendung R1 421 zu adressieren) sendet dann ein IP-Nachrichtenpaket über den Adressenübersetzungsabschnitt 322 des NAT 320. Der Datenteil des Pakets enthält die extern gültige IP-Adresse und eine Portnummer, um Host R, Anwendung R1 421 zu informieren, von welcher IP-Adresse und welchem Port Pakete von Anwendung B1 321 ausgehen werden.
    • 6. Anwendung R1 421 wird mit Anwendung S1 521 über Kommunikationskanal 470 kommunizieren, um Anwendung S1 521 die IP-Adresse und den Port zu kommunizieren, die Anwendung B1 321 benutzen wird, um an Anwendung S1 521 zu kommunizieren.
    • 7. Anwendung B1 321 baut dann die Verbindung auf, indem sie ein an Host S, Anwendung S1 521 adressiertes ausgehendes Paket sendet, wobei das Paket am Adressenübersetzungsabschnitt 322 der NAT-Einrichtung 320 ankommt.
    • 8. Der Adressenübersetzungsabschnitt 322 der NAT-Einrichtung 320 übersetzt die Quelladresse und den Port (die die interne IP-Adresse und den Port der Anwendung B1 bezeichnen) in deren extern gültige Version (die in Schritt 4 an Anwendung A1 121 weitergeleitet wurde und die Anwendung A1 in Schritt 5 an Anwendung R1 421 gesendet hat).
    • 9. Der Adressenübersetzungsabschnitt 322 sendet das Paket über Host R 410 an Host S, Anwendung S1 521 mit der Quellinformation, die Anwendung S1 jetzt erwartet.
  • IV. EINE SPRACHKOMMUNIKATIONSANWENDUNG
  • A. OHNE NAT
  • Um die Anwendung der vorliegenden Erfindung auf IP-Telefonie detaillierter zu erklären, hilft eine Erklärung, wie ein einfacher Telefonanruf unter Verwendung eines SIP genannten Protokolls funktionieren könnte. SIP ist das Protokoll zum Aufbau einer Sitzung (Session Initiation Protocol), es wird aber allgemein als eine Kurzbezeichnung für SIP und alle dazugehörigen Protokolle akzeptiert, die zusammenarbeiten, um Benutzern zu ermöglichen, Telefonie (und einige andere Sachen) über Datennetze wie IP zu betreiben.
  • In einem einfachen Beispiel gibt es im Wesentlichen zwei Nachrichten, die gesendet werden, um einen Telefonanruf aufzubauen. (Diese Erörterung unterdrückt gewisse Details; tatsächlich könnte sich sehr viel mehr abspielen.) Die zwei Nachrichten, mit denen wir befasst sind, sind die INVITE-Nachricht und die OK-Antwort darauf.
  • Man nehme an, dass jemand unter Verwendung eines als Telefon A bezeichneten SIP-Telefons jemand anders anrufen will, der möglicherweise durch eine Telefonnummer oder eine andere Kennung wie beispielsweise eine Emailadresse identifiziert ist. Die anrufende Person würde den erwünschten Zielteilnehmer durch Eintippen der Telefonnummer oder anderen Kennung eingeben. Natürlich weiß Telefon A nicht, wo der Zielteilnehmer ist, aber es weiß, wo eine intelligentere Einrichtung, Proxyserver genannt, ist. Telefon A formuliert deshalb eine INVITE-Nachricht, die Information darüber enthält, wer das Ziel ist, einige andere Informationen und – bezeichnenderweise – Zielinformation darüber, wo Telefon A Medienpakete vom Ziel zu empfangen erwartet jedes Mal, wenn das Ziel lokalisiert ist, angerufen wird und das Telefon abnimmt. Telefon A wird typischerweise diese Information in Form von seiner eigenen IP-Adresse und einer Portnummer zur Verfügung stellen. Nehmen wir an, dass dies 1.1.1.1 bzw. 1111 ist.
  • Der durch Telefon A kontaktierte Proxyserver wird wahrscheinlich das INVITE an andere Proxyservereinrichtungen weiterleiten, wobei einem Netzsuchpfad gefolgt wird, bis das Ziel lokalisiert ist. An dieser Stelle wird die ursprünglich von Telefon A formulierte INVITE-Nachricht an das Ziel geliefert, das wir mit Telefon B bezeichnen wollen. Telefon B wird wahrscheinlich eine Weile rufen und wird dann (wenn alles gut geht) von jemandem abgenommen. An dieser Stelle antwortet Telefon B mit einer OK-Nachricht, die eine Vielfalt von Informationen enthält, einschließlich der Zieladresse, an der Telefon B die Medien zu empfangen erwartet. Nehmen wir an, dass es sich dabei um die IP-Adresse 2.2.2.2 bzw. Portnummer 2222 handelt.
  • Telefon B kann damit beginnen, Medienpakete mit digitalisierter Sprache sofort an 1.1.1.1/1111 zu senden, weil es diese Information in der INVITE-Nachricht erhalten hat. Kommt die OK-Nachricht (durch die Proxyserver) zurück zu Telefon A, dann kann dieses Telefon damit beginnen, ähnliche Medienpakete an 2.2.2.2/2222 zu schicken. Digitale Audiodaten werden an dieser Stelle in beiden Richtungen gesendet, und vermutlich folgt darauf ein Gespräch.
  • B. MIT NAT
  • Beim Betrachten einer NAT-Einrichtung müssen wir drei Fälle erörtern. Im ersten Fall wird das Zieltelefon schließlich durch den Proxyserver innerhalb einer NAT-Einrichtung lokalisiert. Im zweiten Fall wird das Quelltelefon innerhalb einer NAT-Einrichtung lokalisiert. Im dritten Fall wird keines der Telefone „innerhalb" einer NAT-Einrichtung lokalisiert, aber der Medienverkehr zwischen beiden muss ein innerhalb der NAT-Einrichtung lokalisiertes Netz durchqueren. In den unten erörterten Beispielen sind alle NAT-Einrichtungen von der in 3 erörterten Art.
  • Die verschiedenen Fälle können natürlich kombiniert werden. Im Allgemeinen wird irgendein Proxyserver anderen Proxyservern im Netz sowie den beteiligten Telefonen die Illusion geben, dass es keine NAT-Einrichtungen gibt. Weil dies erfolgreich gemacht werden kann, kann man tatsächlich viele NAT-Einrichtungen mit vielen Proxyservern arbeiten lassen und alle davon überzeugt sind, der einzige NAT zu sein und alle den Rest des Netzes davon überzeugen, dass es im Effekt „hier keinen NAT gibt".
  • 1. DAS ZIELTELEFON IST IM INNEREN EINES NAT
  • In diesem Fall hat das Zieltelefon, Telefon B, das innerhalb des Adressenbereichs eines NAT ist, keine Schwierigkeiten, Daten an das Ursprungstelefon zu senden, weil der NAT im Allgemeinen Objekte „im Inneren” mit der Fähigkeit ausstattet, Verkehr an jedes Ziel einfach durch Adressieren an die Außenadresse nach draußen zu schicken. Die Schwierigkeit besteht darin, zu klären, was dem Ursprungstelefon mitzuteilen ist; da das das Zieltelefon „im Inneren" des NAT ist, kann es nicht ohne etwas Hilfe vom NAT von außen erreicht werden. Das Zieltelefon benutzt keine global routbare IP-Adresse; es benutzt wahrscheinlich eine private IP-Adresse, eine Adresse, von der der Rest der Welt nicht weiß, wie man ein Paket dorthin schicken kann. Nur Einrichtungen auf dem Lokalnetz des Zieltelefons können Daten an die tatsächliche IP-Adresse des Zieltelefons adressieren und dürfen dabei hoffen, dass die Daten dort hingeschickt werden.
  • In diesem Fall muss ein Proxyserver innerhalb des Zieltelefonnetzes beteiligt werden. Natürlich wird er ja immer beteiligt sein, weil er für das Routen des INVITE an das richtige Telefon innerhalb des Lokalnetzes verantwortlich ist, um den Ruf fertig zu stellen. Dieser Proxyserver wird auch die OK-Antwort des Zieltelefons verarbeiten. Man erinnere sich daran, dass das Zieltelefon seine Adresse und seinen Port 2.2.2.2/2222 in diese OK-Nachricht schreibt. In diesem Fall ist 2.2.2.2, weil privat und nur intern gültig, für das Ursprungstelefon keine nützliche Adresse. Der Proxyserver muss deshalb eine verschiedene, extern gültige Adresse beschaffen und die in der OK-Nachricht enthaltene Adresse (und möglicherweise den Port) vor dem Zurücksenden an das Ursprungstelefon ersetzen.
  • Der Proxyserver wird eine Anforderung an die NAT-Einrichtung des Zieltelefons richten, eine „Serveradresse/Portzuweisung/Detektion"-Anforderung. Der NAT wird darauf mit einer Adresse und einem Port antworten, sagen wir mal mit 3.3.3.3/3333, womit Einrichtungen auf der andere Seite (der „Außenseite") der NAT-Einrichtung eine Einrichtung bei 2.2.2.2/2222 (dem Zieltelefon) erreichen können. Der Proxyserver schreibt die OK-Nachricht neu, um 3.3.3.3/3333 anstelle von 2.2.2.2/2222 anzugeben, und schickt diese neue OK-Nachricht an Telefon A ab.
  • Wenn jetzt Telefon B ein Medienpaket an Telefon A sendet, ist es an 1.1.1.1/1111 adressiert, und der NAT lässt das ohne weiteres funktionieren – Außenverkehr kann einfach an die „richtige", extern gültige Adresse adressiert werden. Wenn jedoch Telefon A ein Medienpaket an Telefon B sendet, wird es dieses an 3.3.3.3/3333 senden – die Zielendpunktinformation, die es in der OK-Nachricht empfangen hat. Geht man davon aus, dass die Konfiguration korrekt ist, wird dieses Paket bei der NAT-Einrichtung eintreffen, die es so übersetzt, dass es jetzt gemäß der Anforderung durch den Proxyserver an 2.2.2.2/2222 adressiert ist und ins Netzinnere gesendet wird. Das Medienpaket ist jetzt korrekt adressiert und befindet sich im Lokalnetz, das weiß, wie dieses „privat adressierte" Medienpaket zu verschicken ist, sodass das Medienpaket wie erwünscht am Telefon B ankommt.
  • 2. DAS ZIELTELEFON IST AUSSERHALB DES NAT
  • Dies ist fast mit dem vorhergehenden Beispiel identisch, bis auf den Proxyserver in der Nähe von Telefon A (das jetzt das Telefon im Inneren" des NAT ist und eine private IP-Adresse hat, die nur in seinem Lokalnetz nützlich ist), der in diesem Fall die INVITE-Nachricht neu schreiben muss, nachdem er die NAT-Einrichtung nach einer extern gültigen Adresse abgefragt hat. Vielleicht wird die Adresse 1.1.1.1/1111 gemäß der angeforderten NAT-Regel als 4.4.4.4/4444 neu geschrieben (es wird angenommen, dass 1.1.1.1 eine private IP-Adresse ist, während 4.4.4.4 das in diesem Fall nicht ist).
  • Ein Medienpaket von Telefon A geht durch die NAT-Einrichtung unverändert nach außen ab, während ein Medienpaket von Telefon B außerhalb des NAT an 4.4.4.4/4444 adressiert wird, an der NAT- Einrichtung eintrifft und in 1.1.1.1/1111 übersetzt wird und schließlich im Inneren an Telefon A abgeliefert wird.
  • 3. BEIDE TELEFONE SIND AUSSERHALB – DAS TRANSITNETZ HAT NATS
  • In diesem Fall nehmen wir an, dass beide Telefone irgendwo „da draußen" sind und das Netz mit den NAT-Einrichtungen ein Transitnetz ist – vielleicht ein Fernnetzbetreiber für IP-Telefone. Wir nehmen außerdem an, dass dieses Netz am Verarbeiten und Routen von INVITE- und OK-Nachrichten beteiligt ist. Vielleicht stellt dieses Netz sowohl Personenortungsdienste als auch Medienverarbeitung zur Verfügung.
  • Wir belassen Telefon A und Telefon B bei 1.1.1.1/1111 bzw. 2.2.2.2/2222.
  • Man nehme an, dass das INIVTE von Telefon A bei einem Proxyserver in dem mit NAT ausgerüsteten Transitnetz ankommt, das in Betracht gezogen wird. Wir können diesen den Eingangs-Proxyserver nennen, weil er in unserem Beispiel das „eingehende" INVITE verarbeitet. Der Eingangs-Proxyserver führt dieselbe „Serveradressen-/Portdetektion" aus wie in vorhergehenden Beispielen, um eine Adresse zu detektieren, die eine Einrichtung innerhalb des Transitnetzes benutzen könnte, um das Telefon A zu erreichen. Wir wollen annehmen, dass er diese Operation auf einer spezifischen, als NAT A bezeichneten NAT-Einrichtung ausführt, die sich am Ausgangspunkt vom Transitnetz zum Telefon A befindet. Sagen wir mal NAT A gibt eine Adresse/Port zurück, und zwar 10.10.10.10/1010. Dies ist eine innerhalb des Transitnetzes nützliche private Adresse, die Objekte innerhalb dieses Transitnetzes benutzen könnten, um Telefon A zu erreichen. Das heißt irgendwelche Nachrichtenpakete innerhalb des Transitnetzes, die an 10.10.10.10/1010 adressiert sind, würden vom Netz nach NAT A geroutet werden, der die Adresse in 1.1.1.1/1111 übersetzen und die Nachrichtenpakete an das Telefon A senden würde.
  • Die INVITE-Nachricht (die jetzt angibt, dass Telefon A an 10.10.10.10/1010 Medien empfangen will) wird über das Transitnetz weitergeschickt. An einer gewissen Stelle wird ein anderer Proxyserver, den wir Ausgangs-Proxyserver nennen wollen, weil er das INVITE auf dem Weg aus dem Transitnetz heraus verarbeitet, dieses INVITE empfangen. Dieser Ausgangs-Proxyserver wird noch eine andere Anforderung auf einer anderen NAT-Einrichtung (sagen wir mal NAT B) ausführen, die für das Bereitstellen von Verkehr nach und von Telefon B gut platziert ist, um eine Adresse zu detektieren, über die Objekte „außerhalb" NAT B den gegenwärtig im INVITE enthaltenen Endpunkt erreichen können – 10.10.10.10/1010. NAT B sollte darauf mit einer Adresse antworten, sagen wir mal mit 20.20.20.20/2020. Der Zweck dieser Adresse ist, dass Pakete, die von Außenobjekten (sagen wir mal beispielsweise von Telefon B) an 20.20.20.20/2020 adressiert gesendet werden und am NAT B ankommen, neu adressiert werden, genau gesagt übersetzt werden, um an 10.10.10.10/1010 adressiert zu sein. Dann wird das Transitnetz diese Daten (weil es eingerichtet ist, auf diese Weise zu routen) an NAT A routen, der die Daten wieder an 1.1.1.1/1111 neu adressiert, wie im vorigen Absatz angegeben ist.
  • Das INVITE wird dann an Telefon B weitergeleitet, das Medienpakete an die Adresse 20.20.20.20/2020 sendet gemäß dem Inhalt des INVITE. Die Medienpakete werden an die Adresse 20.20.20.20 gehen, die dafür sorgt, dass sie, korrekte Netzkonfiguration vorausgesetzt, bei NAT B ankommt, wo sie in 10.10.10.10/1010 übersetzt wird und dann nach NAT A geht. NAT A wird sie in 1.1.1.1/1111 übersetzen und an Telefon A weiterleiten.
  • Genau dieselbe Gruppe von Operationen, wenn auch in verschiedene Adressen resultierend, wird auf das OK angewendet, das von Telefon B zurückkommt, aber in der entgegengesetzten Richtung. Zuerst wird der Ausgangs-Proxyserver von NAT B eine Adresse abfragen, mit der Objekte innerhalb des Transitnetzes Telefon B (bei 2.2.2.2/2222) erreichen können. Vielleicht wird NAT B die Adresse 40.40.40.40/4040 zurückschicken. Die OK-Nachricht wird durch den Ausgangs-Proxyserver neu geschrieben, um dies zu kennzeichnen, und an den Eingangs-Proxyserver weitergeleitet. Dieser Proxyserver wird von NAT A eine Adresse abfragen, mit der Außenobjekte (sagen wir mal Telefon A) die Adresse 40.40.40.40/4040 erreichen können. NAT A könnte die Adresse 50.50.50.50/5050 zurückgeben. Das OK wird wieder neu geschrieben, um dies anzuzeigen, und an Telefon A weiterleitet, das dann alle seine Medienpakete an die Adresse 50.50.50.50/5050 senden wird.
  • Daraus ergibt sich, dass Telefon B seine Medienpakete an 20.20.20.20/2020 sendet und Telefon A seine Medienpakete an 50.50.50.50/5050 sendet, und dass alle Adressen schließlich so übersetzt werden, dass die Medienpakete zu guter Letzt am richtigen Ort ankommen.
  • Die Vorteile dieser Handhabung liegen darin, dass IP-Adressen wie 20.20.20.20 und 50.50.50.50 von Anwendungen mit der Fähigkeit, einen NAT zu steuern, gezwungen werden können, als Adressen ausgewählt zu werden, die zum Transitnetz selbst gehören, wodurch garantiert wird, dass die Pakete von den beiden Telefonen an passenden Eingangpunkten zum Transitnetz selbst ankommen, wodurch garantiert wird, dass das Transitnetz die Mediendaten tatsächlich verarbeit, und wodurch außerdem der Eingangpunkt für jeden Medienstrom garantiert wird. Ohne dies ist es unmöglich, dass das Transitnetz über eine A-priori-Steuerung verfügt, wie die Medienpakete von einem der Telefone zum anderen gelangen.
  • IV. SCHLUSSFOLGERUNG UND ALTERNATIVE AUSFÜHRUNGSARTEN
  • Fachleuten wird deutlich sein, dass unzählige Variationen, Modifikationen, Anwendungen und Erweiterungen dieser Ausführungsarten und Grundsätze geschaffen werden können. Dementsprechend ist beabsichtigt, dass der Schutzbereich der Erfindung nur beschränkt ist, wie es die beigefügten Patenansprüche erfordern.

Claims (44)

  1. Netzadressen-Übersetzungsvorrichtung (320) zum Erleichtern der Nachrichtenpaketkommunikation zwischen einer ersten Anwendung (121) mit einer in einem Internadressenbereich (100) gültigen Internadresse und einer oder mehreren Anwendungen (421) in einem Externadressenbereich (200), wobei die Netzadressen-Übersetzungsvorrichtung über eine Menge von verfügbaren Adressen verfügt, die zum Gebrauch im Extemadressenbereich (200) gültig sind, umfassend: einen Adressenübersetzer (322) zum Übersetzen von Adressen, die in den Köpfen von in den Internadressenbereich (100) eingehenden und von ihm ausgehenden Nachrichtenpaketen enthaltenen sind, gemäß den Übersetzungsregeln, die die Unvereinbarkeit der Adressenschemata der Intern- und Externadressenbereiche auflösen; einen Adressenmanager (324) zum Festlegen und Abspeichern der Übersetzungsregeln, wobei der Adressenmanager auf die Menge der verfügbaren Adressen Zugriff hat, die zum Gebrauch im Externadressenbereich gültig sind; dadurch gekennzeichnet, dass die Netzadressen-Übersetzungsvorrichtung außerdem Folgendes umfasst: ein im Adressenmanager (324) enthaltenes Mittel zur Kommunikation mit der ersten Anwendung über einen Steuerkanal, wobei die Kommunikation einschließt, dass der Adressenmanager von der ersten Anwendung (121) eine Dienstanforderungsnachricht empfängt, die das Festlegen einer von der ersten Anwendung spezifizierten Adressenübersetzungsregel anfordert; worin der Adressenmanager (324) Logik umfasst zum Bereitstellen von Diensten als Reaktion auf die Dienstanforderung der ersten Anwendung, eine von der ersten Anwendung in der Dienstanforderungsnachricht spezifizierte Übersetzungsregel festzulegen.
  2. Netzadressen-Übersetzungsvorrichtung nach Anspruch 1, worin die Logik im Adressenmanager dazu konfiguriert ist, die Internadresse der ersten Anwendung mit einer verfügbaren Externadresse zu assoziieren und der ersten Anwendung Zugriff zu gewähren auf die assoziierte verfügbare Externadresse zum Gebrauch als Daten für ein ausgehendes Nachrichtenpaket.
  3. Netzadressen-Übersetzungsvorrichtung nach Anspruch 1, worin die Logik im Adressenmanager dazu konfiguriert ist, die Internadresse der ersten Anwendung mit einer verfügbaren Externadresse zu assoziieren, die eine bestimmte IP-Adresse ist oder in einem spezifizierten Bereich von IP-Adressen liegt.
  4. Netzadressen-Übersetzungsvorrichtung nach Anspruch 1, worin die Logik im Adressenmanager dazu konfiguriert ist, eine Übersetzungsregel festzulegen, was die Auswahl einer Übersetzungsregel aus zwei oder mehreren auf ein eingehendes Nachrichtenpaket anwendbaren Übersetzungsregeln umfasst, wobei die Auswahl der Übersetzungsregel, die angewandt wird, von Adresseninformation im eingehenden Nachrichtenpaket abhängt.
  5. Netzadressen-Übersetzungsvorrichtung nach Anspruch 2, worin die von der ersten Anwendung angeforderte verfügbare Externadresse eine Zieladresse ist.
  6. Netzadressen-Übersetzungsvorrichtung nach Anspruch 2, worin die von der ersten Anwendung angeforderte verfügbare Externadresse eine Ursprungsadresse ist.
  7. Netzadressen-Übersetzungsvorrichtung nach Anspruch 1, worin der Internadressenbereich ein Privatnetz ist und der Extemadressenbereich das Internet ist.
  8. Netzadressen-Übersetzungsvorrichtung nach Anspruch 1, worin der Internadressenbereich ein Privatnetz ist und der Externadressenbereich das Internet ist und der Adressenmanager eine Übersetzungsregel festlegt, indem er eine im Privatnetzbereich gültige Adresse mit einer im Internet gültigen Adresse assoziiert.
  9. Netzadressen-Übersetzungsvorrichtung nach Anspruch 4, worin die Auswahl der Übersetzungsregel, die angewandt wird, als Reaktion auf das Vorhandensein oder Nichtvorhandensein spezifizierter Ursprungsadresseninformation in der eingehenden Nachricht getroffen wird.
  10. Netzadressen-Übersetzungsvorrichtung nach Anspruch 1, worin die erleichterte Kommunikation eine Peer-zu-Peer Anwendungskommunikation ist.
  11. Netzadressen-Übersetzungsvorrichtung nach Anspruch 1, worin die erleichterte Kommunikation eine Peer-zu-Peer Telefonkommunikation ist.
  12. Netzadressen-Übersetzungsvorrichtung nach Anspruch 3, worin die festzulegende Übersetzungsregel das ausgehende Nachrichtenpaket dazu zwingt, eine Zieladresse in einem Transitnetz zu haben.
  13. Netzadressen-Übersetzungsvorrichtung nach Anspruch 3, worin die festzulegende Übersetzungsregel mindesten einen Teil der Paketkommunikation zwischen der ersten Anwendung und der zweiten Anwendung dazu zwingt, über ein spezifiziertes Netz zu laufen.
  14. Netzadressen-Übersetzungsvorrichtung nach Anspruch 2, worin das ausgehende Nachrichtenpaket eine SIP-Nachricht ist.
  15. Netzadressen-Übersetzungsvorrichtung nach Anspruch 14, worin die SIP-Nachricht eine SIP-INVITE-Nachricht ist.
  16. Netzadressen-Übersetzungsvorrichtung nach Anspruch 14, worin die erste Anwendung veranlasst, dass die SIP-Nachricht an eine zweite Anwendung im Externadressenbereich gesendet wird.
  17. Netzadressen-Übersetzungsvorrichtung nach Anspruch 14, worin der ersten Anwendung Zugriff auf eine assoziierte Externadresse gewährt wird, die eine IP-Adresse und eine Portnummer enthält.
  18. Netzadressen-Übersetzungsvorrichtung nach Anspruch 14, worin beim Senden der SIP-Nachricht an eine zweite Anwendung im Externadressenbereich ein SIP-Proxyserver aufgerufen wird.
  19. Netzadressen-Übersetzungsvorrichtung nach Anspruch 14, worin die SIP-Nachricht dazu benutzt wird, eine Peer-zu-Peer Kommunikationssitzung aufzubauen.
  20. Netzadressen-Übersetzungsvorrichtung nach Anspruch 14, worin die SIP-Nachricht dazu benutzt wird, eine IP-Telefon Kommunikationssitzung aufzubauen.
  21. Netzadressen-Übersetzungsvorrichtung nach Anspruch 14, worin die SIP-Nachricht dazu benutzt wird, eine Instant-Messaging-Sitzung aufzubauen.
  22. Netzadressen-Übersetzungsvorrichtung nach Anspruch 14, worin die SIP-Nachricht eine SIP-OK-Nachricht ist.
  23. Verfahren zum Erleichtern der Nachrichtenpaketkommunikation zwischen einer ersten Anwendung (121) mit einer in einem Internadressenbereich (100) gültigen ersten Internadresse und einer oder mehreren Anwendungen (421) in einem Extemadressenbereich (200), wobei die Netzadressen-Übersetzungsvorrichtung über eine Menge von Adressen verfügt, die zum Gebrauch im Extemadressenbereich (200) gültig sind, die folgenden Verfahrensschritte umfassend: eine Netzadressen-Übersetzungsvorrichtung (320) im Internadressenbereich (100), Adressen übersetzend, die in den Köpfen von in den Internadressenbereich eingehenden und von ihm ausgehenden Nachrichtenpaketen enthalten sind, gemäß Übersetzungsregeln, die die Unvereinbarkeit der Adressenschemata der Intern- und Externadressenbereiche auflösen; und einen Adressenmanager (324), der die Übersetzungsregeln festlegt und abspeichert, wobei der Adressenmanager auf die Menge der verfügbaren Adressen Zugriff hat, die zum Gebrauch im Extemadressenbereich gültig sind; gekennzeichnet durch: den Adressenmanager (324), mit der ersten Anwendung über einen Steuerkanal (350) kommunizierend, wobei die Kommunikation einschließt, dass der Adressenmanager von der ersten Anwendung (121) eine Dienstanforderungsnachricht empfängt, die das Festlegen einer von der ersten Anwendung spezifiziertren Adressenübersetzungsregel anfordert; und worin die Logik des Adressenmanagers (324) als Reaktion auf die Dienstanforderung der ersten Anwendung eine Übersetzungsregel festlegt, die durch die erste Anwendung in der Dienstanforderungsnachricht spezifiziert ist.
  24. Verfahren nach Anspruch 23, worin die Logik im Adressenmanager von der ersten Anwendung eine Anforderung empfängt, die spezifiziert, dass die festzulegende Übersetzungsregel die Internadresse der ersten Anwendung mit einer verfügbaren Externadresse assoziiert und der ersten Anwendung Zugriff gewährt auf die assoziierte verfügbare Externadresse als Daten für ein ausgehendes Nachrichtenpaket.
  25. Verfahren nach Anspruch 23, worin die Logik im Adressenmanager von der ersten Anwendung eine Anforderung empfängt und eine Übersetzungsregel festlegt, die die Internadresse der ersten Anwendung mit einer verfügbaren Externadresse assoziiert, die eine bestimmte IP-Adresse ist oder in einem spezifizierten Bereich von IP-Adressen liegt.
  26. Verfahren nach Anspruch 23, worin die Logik im Adressenmanager von der ersten Anwendung eine Anforderung empfängt und eine Übersetzungsregel festlegt, die eine Übersetzungsregel von zwei oder mehreren auf ein eingehendes Nachrichtenpaket anwendbaren Übersetzungsregeln ist, wobei die Auswahl der Übersetzungsregel, die angewandt wird, von Adresseninformation im eingehenden Nachrichtenpaket abhängt.
  27. Verfahren nach Anspruch 23, worin die Logik im Adressenmanager von der ersten Anwendung eine Anforderung nach einer Übersetzungsregel für eine Zieladresse empfängt.
  28. Verfahren nach Anspruch 23, worin die Logik im Adressenmanager von der ersten Anwendung eine Anforderung nach einer Übersetzungsregel für eine Ursprungsadresse empfängt.
  29. Verfahren nach Anspruch 23, worin der Internadressenbereich ein Privatnetz ist und der Adressenmanager auf eine Menge von verfügbaren, im Internet gültigen Adressen zugreift.
  30. Verfahren nach Anspruch 23, worin der Internadressenbereich ein Privatnetz ist und der Extemadressenbereich das Internet ist und der Adressenmanager eine Übersetzungsregel festlegt, indem er eine im Privatnetzbereich gültige Adresse mit einer im Internet gültigen Adresse assoziiert.
  31. Verfahren nach Anspruch 23, worin die Logik im Adressenmanager von der ersten Anwendung eine Anforderung empfängt und eine Übersetzungsregel festlegt, die eine Übersetzungsregel von zwei oder mehreren auf eine eingehende Nachricht anwendbare Übersetzungsregeln ist, wobei die Auswahl der Übersetzungsregel, die angewandt wird, als Reaktion auf das Vorhandensein oder Nichtvorhandensein spezifizierter Ursprungsadresseninformation in der eingehenden Nachricht getroffen wird.
  32. Verfahren nach Anspruch 23, worin die erleichterte Kommunikation eine Peer-zu-Peer Anwendungskommunikation ist.
  33. Verfahren nach Anspruch 23, worin die erleichterte Kommunikation eine Peer-zu-Peer Telefonkommunikation ist.
  34. Verfahren nach Anspruch 24, worin die Logik im Adressenmanager von der ersten Anwendung eine Anforderung empfängt und eine Übersetzungsregel festlegt, die das ausgehende Nachrichtenpaket dazu zwingt, eine Zieladresse in einem Transitnetz zu haben.
  35. Verfahren nach Anspruch 23, worin die Logik im Adressenmanager von der ersten Anwendung eine Anforderung empfängt und eine Übersetzungsregel festlegt, die mindesten einen Teil der Paketkommunikation zwischen der ersten Anwendung und der zweiten Anwendung dazu zwingt, über ein spezifiziertes Netz zu laufen.
  36. Verfahren nach Anspruch 24, worin das an den Externadressenbereich gesendete ausgehende Nachrichtpaket eine SIP-Nachricht ist.
  37. Verfahren nach Anspruch 36, worin die SIP-Nachricht eine SIP-INVITE-Nachricht ist.
  38. Verfahren nach Anspruch 24, worin die verfügbare Externadresse im ausgehenden Nachrichtenpaket an eine SIP-bewusste Anwendung im Externadressenbereich gesendet wird.
  39. Verfahren nach Anspruch 24, worin die verfügbare Externadresse eine IP-Adresse und eine Portnummer enthält.
  40. Verfahren nach Anspruch 24, worin beim Senden der verfügbaren Externadresse an eine SIP-bewusste Anwendung im Extemadressenbereich ein SIP-Proxyserver aufgerufen wird.
  41. Verfahren nach Anspruch 36, worin die SIP-Nachricht dazu benutzt wird, eine Peer-zu-Peer Kommunikationssitzung aufzubauen.
  42. Verfahren nach Anspruch 36, worin die SIP-Nachricht dazu benutzt wird, eine IP-Telefon Kommunikationssitzung aufzubauen.
  43. Verfahren nach Anspruch 36, worin die SIP-Nachricht dazu benutzt wird, eine Instant-Messaging-Sitzung aufzubauen.
  44. Verfahren nach Anspruch 36, worin die SIP-Nachricht eine SIP-OK-Nachricht ist.
DE60127276T 2000-09-13 2001-09-04 Verfahren und vorrichtung zur erleichterung der peer-zu-peer anwendungskommunikation Expired - Lifetime DE60127276T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US661070 2000-09-13
US09/661,070 US6661799B1 (en) 2000-09-13 2000-09-13 Method and apparatus for facilitating peer-to-peer application communication
PCT/US2001/027382 WO2002023822A1 (en) 2000-09-13 2001-09-04 Method and apparatus for facilitating peer-to-peer application communication

Publications (2)

Publication Number Publication Date
DE60127276D1 DE60127276D1 (de) 2007-04-26
DE60127276T2 true DE60127276T2 (de) 2007-12-20

Family

ID=24652085

Family Applications (2)

Application Number Title Priority Date Filing Date
DE60138058T Expired - Lifetime DE60138058D1 (de) 2000-09-13 2001-09-04 Verfahren und Vorrichtung zur Unterstützung von Peer-to-Peer-Anwendungskommunikationen
DE60127276T Expired - Lifetime DE60127276T2 (de) 2000-09-13 2001-09-04 Verfahren und vorrichtung zur erleichterung der peer-zu-peer anwendungskommunikation

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE60138058T Expired - Lifetime DE60138058D1 (de) 2000-09-13 2001-09-04 Verfahren und Vorrichtung zur Unterstützung von Peer-to-Peer-Anwendungskommunikationen

Country Status (7)

Country Link
US (3) US6661799B1 (de)
EP (3) EP1793533B8 (de)
JP (1) JP4908724B2 (de)
CN (2) CN101668051B (de)
AU (1) AU2001287054A1 (de)
DE (2) DE60138058D1 (de)
WO (1) WO2002023822A1 (de)

Families Citing this family (114)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2800224B1 (fr) * 1999-10-21 2002-12-27 Ibm Procede et systeme de mise en antememoire de donnees http transportees avec des donnees de socks dans des datagrammes ip
AU2001271263A1 (en) * 2000-06-30 2002-01-14 Net2Phone System, method, and computer program product for resolving addressing in a network including a network address translator
US6661799B1 (en) 2000-09-13 2003-12-09 Alcatel Usa Sourcing, L.P. Method and apparatus for facilitating peer-to-peer application communication
US6870841B1 (en) * 2000-09-18 2005-03-22 At&T Corp. Controlled transmission across packet network
US7594030B2 (en) * 2000-11-22 2009-09-22 Microsoft Corporation Locator and tracking service for peer to peer resources
US20020062336A1 (en) * 2000-11-22 2002-05-23 Dan Teodosiu Resource coherency among resources cached in a peer to peer environment
US7072982B2 (en) * 2000-11-22 2006-07-04 Microsoft Corporation Universal naming scheme for peer to peer resources
US20020085550A1 (en) * 2000-12-28 2002-07-04 Steven Rhodes Scalable switch
US7054304B2 (en) * 2001-01-19 2006-05-30 Terited International , Inc. Method and protocol for managing broadband IP services in a layer two broadcast network
US7293108B2 (en) * 2001-03-15 2007-11-06 Intel Corporation Generic external proxy
US20020138552A1 (en) * 2001-03-21 2002-09-26 Debruine Timothy S. Method and system for optimizing private network file transfers in a public peer-to-peer network
US6983319B1 (en) * 2001-04-06 2006-01-03 Permeo Technologies, Inc. Dynamic port management
US7272650B2 (en) * 2001-04-17 2007-09-18 Intel Corporation Communication protocols operable through network address translation (NAT) type devices
US20030041175A2 (en) * 2001-05-03 2003-02-27 Singhal Sandeep K Method and System for Adapting Short-Range Wireless Access Points for Participation in a Coordinated Networked Environment
US7283526B2 (en) * 2001-07-19 2007-10-16 International Business Machines Corporation Method and system for providing a symmetric key for more efficient session identification
US7426208B2 (en) * 2001-08-30 2008-09-16 Siemens Aktiengesellschaft Pre-processing of NAT addresses
US7228337B1 (en) * 2001-09-11 2007-06-05 Cisco Technology, Inc. Methods and apparatus for providing a network service to a virtual machine
US7269663B2 (en) * 2001-09-28 2007-09-11 Intel Corporation Tagging packets with a lookup key to facilitate usage of a unified packet forwarding cache
US8095668B2 (en) * 2001-11-09 2012-01-10 Rockstar Bidco Lp Middlebox control
US7006436B1 (en) * 2001-11-13 2006-02-28 At&T Corp. Method for providing voice-over-IP service
US7278157B2 (en) * 2002-03-14 2007-10-02 International Business Machines Corporation Efficient transmission of IP data using multichannel SOCKS server proxy
KR100496734B1 (ko) * 2002-05-02 2005-06-22 김철동 네트워크를 통한 이미지 전송 방법
US7243141B2 (en) 2002-05-13 2007-07-10 Sony Computer Entertainment America, Inc. Network configuration evaluation
US7676579B2 (en) 2002-05-13 2010-03-09 Sony Computer Entertainment America Inc. Peer to peer network communication
KR20030088253A (ko) * 2002-05-14 2003-11-19 (주)크라베르 피투피 기반의 원격지 컴퓨터 관리를 위한 연결요청중계시스템 및 그 방법
US6801528B2 (en) * 2002-07-03 2004-10-05 Ericsson Inc. System and method for dynamic simultaneous connection to multiple service providers
DE10230684A1 (de) * 2002-07-08 2004-01-29 Siemens Ag Netzwerk mit in Kommunikationskomponenten integrierten Suchfunktionen
US7836205B2 (en) * 2002-07-11 2010-11-16 Hewlett-Packard Development Company, L.P. Method and device for use with a virtual network
EP1383294A1 (de) * 2002-07-16 2004-01-21 Siemens Aktiengesellschaft Verfahren zur Adressumsetzung in Paketnetzen und Steuerelement für Kommunikationsnetzwerke
US8224985B2 (en) * 2005-10-04 2012-07-17 Sony Computer Entertainment Inc. Peer-to-peer communication traversing symmetric network address translators
DE10244710A1 (de) * 2002-09-25 2004-04-08 Siemens Ag Verfahren zur Protokollauswahl für eine Übermittlung von Datennpaketen
TW200412101A (en) * 2002-12-23 2004-07-01 Shaw-Hwa Hwang Directly peer-to peer transmission protocol between two virtual network
WO2004063843A2 (en) * 2003-01-15 2004-07-29 Matsushita Electric Industrial Co., Ltd. PEER-TO-PEER (P2P) CONNECTION DESPITE NETWORK ADDRESS TRANSLATOR (NATs) AT BOTH ENDS
US7899932B2 (en) * 2003-01-15 2011-03-01 Panasonic Corporation Relayed network address translator (NAT) traversal
JP4110977B2 (ja) * 2003-01-21 2008-07-02 松下電器産業株式会社 サーバ
KR100514196B1 (ko) * 2003-02-14 2005-09-13 삼성전자주식회사 네트웍 어드레스 변환 및 세션 관리 시스템 및 그 방법
DE10321227A1 (de) 2003-05-12 2004-12-09 Siemens Ag Verfahren zum Datenaustausch zwischen Netzelementen
US7251745B2 (en) * 2003-06-11 2007-07-31 Availigent, Inc. Transparent TCP connection failover
JP4115354B2 (ja) * 2003-07-04 2008-07-09 富士フイルム株式会社 ピア・ツー・ピア通信システム
SG148210A1 (en) * 2003-12-01 2008-12-31 Interdigital Tech Corp Session initiation protocol (sip) based user initiated handoff
CN100454882C (zh) * 2003-12-19 2009-01-21 华为技术有限公司 多isp局域网的出口选择方法及装置
JP2007528677A (ja) * 2004-03-09 2007-10-11 クリーク コミュニケーションズ エルエルシー シンメトリック・ファイアウォールの背後のクライアントのピアツーピア接続のためのシステムおよび方法
US20060007912A1 (en) * 2004-07-06 2006-01-12 Heng-Chien Chen Ip-based pbx system and connecting method thereof
US8990311B2 (en) * 2004-07-27 2015-03-24 International Business Machines Corporation Enhanced instant message connectivity
US20060023727A1 (en) * 2004-07-30 2006-02-02 George David A Method and apparatus for anonymous data transfers
US20060023646A1 (en) * 2004-07-30 2006-02-02 George David A Method and apparatus for anonymous data transfers
US8542813B2 (en) * 2004-11-02 2013-09-24 Cisco Technology, Inc. Method and system for providing a camp-on service in telecommunications
US20060104259A1 (en) * 2004-11-15 2006-05-18 Cisco Technology, Inc. System and method for executing a multi-modal transfer in a session initiation protocol (SIP) environment
US7853696B2 (en) * 2004-11-19 2010-12-14 Cisco Technology, Inc. System and method for providing an eCamp feature in a session initiation protocol (SIP) environment
US7639681B2 (en) * 2004-11-23 2009-12-29 Microsoft Corporation System and method for a distributed server for peer-to-peer networks
US7656878B2 (en) * 2004-12-03 2010-02-02 Cisco Technology, Inc. System and method for providing enhanced caller ID in a session initiation protocol (SIP) environment
US20060146790A1 (en) * 2004-12-30 2006-07-06 Cisco Technology, Inc. System and method for providing reach me cover me feature in a session initiation protocol (SIP) environment
US8254552B2 (en) * 2005-01-06 2012-08-28 Cisco Technology, Inc. System and method for providing a recovery mode in a session initiation protocol (SIP) environment
CN100426769C (zh) * 2005-01-12 2008-10-15 腾讯科技(深圳)有限公司 一种建立对等直连通道的方法
JP4708036B2 (ja) * 2005-01-21 2011-06-22 パナソニック株式会社 通信システム、情報処理装置、サーバ、及び情報処理方法
US7899175B2 (en) * 2005-01-27 2011-03-01 Cisco Technology, Inc. System and method for providing a dial plan conversion in a session initiation protocol (SIP) environment
US7778404B2 (en) * 2005-01-27 2010-08-17 Cisco Technology, Inc. System and method for providing a dial plan conversion in a session initiation protocol (SIP) environment
US7912046B2 (en) * 2005-02-11 2011-03-22 Microsoft Corporation Automated NAT traversal for peer-to-peer networks
US7853001B2 (en) * 2005-04-08 2010-12-14 Cisco Technology, Inc. Method and system for providing a camp-on service
US7769156B2 (en) * 2005-04-27 2010-08-03 Cisco Technology, Inc. System and method for providing a reverse camp-on feature in a communications environment
US7684434B2 (en) * 2005-05-03 2010-03-23 Cisco Technology, Inc. System and method for providing a presence based Camp-On feature in a communications environment
KR100743055B1 (ko) 2005-05-16 2007-07-26 주식회사 프리챌 방화벽 내 검색을 위한 p2p 검색 방법 및 p2p 검색시스템
US7894597B2 (en) 2005-10-12 2011-02-22 Cisco Technology, Inc. Categorization of telephone calls
WO2007048344A1 (fr) * 2005-10-28 2007-05-03 Huawei Technologies Co., Ltd. Procede d’etablissement de la connexion poste a poste, procede, dispositif et systeme de realisation de nat de traversee de communication reseau
US8102985B2 (en) * 2005-11-11 2012-01-24 Cisco Technology, Inc. Method and system for providing a camp-on hold service
EP1793564A1 (de) * 2005-11-30 2007-06-06 Thomson Telecom Belgium Vorrichtung und Methode zum Erkennen von Anwendungen die in einem lokalen Netz ablaufen, um eine automatische Übersetzung von Netzadressen durchzuführen
US20070162552A1 (en) * 2006-01-10 2007-07-12 Cisco Technology, Inc. Method and system for providing an instant messaging camp-on service
US20070189294A1 (en) * 2006-01-28 2007-08-16 Sadler Jonathan B Methods and Apparatus for Signaling Between Independent Control Networks
US8280961B2 (en) * 2006-02-09 2012-10-02 Cisco Technology, Inc. Method and system for providing a camp-on service for a network service
US20070189329A1 (en) * 2006-02-14 2007-08-16 Nokia Corporation System for combining networks of different addressing schemes
US20070201367A1 (en) * 2006-02-27 2007-08-30 Cisco Technology, Inc. System and method for interworking H.323 flow control with SIP
US7701971B2 (en) * 2006-02-27 2010-04-20 Cisco Technology, Inc. System and method for providing a compatibility feature in a session initiation protocol (SIP) environment
US7596150B2 (en) * 2006-02-27 2009-09-29 Cisco Technology, Inc. System and method for consolidating media signaling to facilitate internet protocol (IP) telephony
US20070201459A1 (en) * 2006-02-27 2007-08-30 Cisco Technology, Inc. System and method for providing status notification for conventional telephony devices in a session initiation protocol environment
US7729482B2 (en) * 2006-02-27 2010-06-01 Cisco Technology, Inc. Method and system for providing communication protocol interoperability
US7995559B2 (en) * 2006-02-27 2011-08-09 Cisco Technology, Inc. System and method for interworking communication protocols to provide supplementary services
US7764669B2 (en) * 2006-02-27 2010-07-27 Cisco Technology, Inc. System and method providing for interoperability of session initiation protocol (SIP) and H.323 for secure realtime transport protocol (SRTP) session establishment
US7778274B2 (en) * 2006-02-27 2010-08-17 Cisco Technology, Inc. System and method for providing a compatibility feature in a session initiation protocol (SIP) environment
US9967129B1 (en) 2006-03-09 2018-05-08 Cisco Technology, Inc. System and method for communicating call information in a sessions initiation protocol (SIP) environment
US20070226299A1 (en) * 2006-03-24 2007-09-27 Cisco Technology, Inc. Method and system for providing an instant messaging quorum monitoring service
US8036360B1 (en) 2006-04-28 2011-10-11 Cisco Technology, Inc. System and method for hook state notification
US8495231B1 (en) 2006-05-16 2013-07-23 Cisco Technology, Inc. System and method for remote call control
US8015305B1 (en) 2006-06-28 2011-09-06 Cisco Technology, Inc. System and method for implementing a session initiation protocol feature
US9712667B2 (en) * 2006-07-07 2017-07-18 Genband Us Llc Identifying network entities in a peer-to-peer network
US8139566B2 (en) * 2006-07-21 2012-03-20 Cisco Technology, Inc. System and method for establishing a communication session between two endpoints that do not both support secure media
US7769009B1 (en) * 2006-12-11 2010-08-03 Sprint Communications Company L.P. Automatic peer to peer mobile device data replication
CA2612920A1 (en) * 2006-12-21 2008-06-21 Bce Inc. Method and system for managing internal and external calls for a group of communication clients sharing a common customer identifier
US7995478B2 (en) 2007-05-30 2011-08-09 Sony Computer Entertainment Inc. Network communication with path MTU size discovery
US7933273B2 (en) * 2007-07-27 2011-04-26 Sony Computer Entertainment Inc. Cooperative NAT behavior discovery
US8112516B2 (en) * 2007-08-23 2012-02-07 Cisco Technology, Inc. Selective user notification based on IP flow information
CN101127720B (zh) * 2007-09-25 2010-09-01 中兴通讯股份有限公司 保证网络地址转换负载均衡内部本地地址可达的方法
CN101132424B (zh) * 2007-09-29 2011-08-31 杭州华三通信技术有限公司 网络地址转换的方法及装置
EP2048847A1 (de) * 2007-10-08 2009-04-15 Nokia Siemens Networks Oy Verfahren, Vorrichtungen, System und entsprechendes Computerprogrammprodukt für Richtlinienkontrolle
US7856501B2 (en) * 2007-12-04 2010-12-21 Sony Computer Entertainment Inc. Network traffic prioritization
JP5222573B2 (ja) * 2008-01-29 2013-06-26 株式会社日立製作所 サーバ計算機及びネットワーク処理方法
US7856506B2 (en) 2008-03-05 2010-12-21 Sony Computer Entertainment Inc. Traversal of symmetric network address translator for multiple simultaneous connections
US8239550B2 (en) 2008-05-14 2012-08-07 Nokia Corporation Methods, apparatuses, and computer program products for facilitating establishing a communications session
US8560604B2 (en) 2009-10-08 2013-10-15 Hola Networks Ltd. System and method for providing faster and more efficient data communication
CN102137171A (zh) * 2010-01-22 2011-07-27 正文科技股份有限公司 用于多媒体串流的网络地址转换方法、转换器及通信系统
KR101696210B1 (ko) * 2010-05-11 2017-01-13 가부시키가이샤 체프로 양방향 통신 시스템 및 이에 사용하는 서버 장치
JP2012156957A (ja) * 2011-01-28 2012-08-16 Hitachi Ltd ネットワークシステム、制御装置、計算機、及び、ネットワーク装置
US9667713B2 (en) * 2011-03-21 2017-05-30 Apple Inc. Apparatus and method for managing peer-to-peer connections between different service providers
US20130138813A1 (en) * 2011-11-28 2013-05-30 Microsoft Corporation Role instance reachability in data center
US20150381387A1 (en) * 2012-06-27 2015-12-31 Ciphergraph Networks, Inc. System and Method for Facilitating Communication between Multiple Networks
US9621495B1 (en) * 2012-12-10 2017-04-11 Jeffrey Brian Shumate Anonymous messaging proxy
US9241044B2 (en) 2013-08-28 2016-01-19 Hola Networks, Ltd. System and method for improving internet communication by using intermediate nodes
EP2991281B1 (de) * 2014-06-30 2019-08-07 Huawei Technologies Co., Ltd. Push-verfahren für webseiten, vorrichtung und endgerät
US11057446B2 (en) 2015-05-14 2021-07-06 Bright Data Ltd. System and method for streaming content from multiple servers
LT3770773T (lt) 2017-08-28 2024-03-12 Bright Data Ltd. Būdas pagerinti turinio parsisiuntimą, pasirenkant tunelinius įrenginius
LT3780547T (lt) 2019-02-25 2023-03-10 Bright Data Ltd. Turinio parsisiuntimo, naudojant url bandymų mechanizmą, sistema ir būdas
EP4027618A1 (de) 2019-04-02 2022-07-13 Bright Data Ltd. Verwaltung eines indirekten url-abrufdienstes
US10986173B1 (en) * 2019-04-25 2021-04-20 Edjx, Inc. Systems and methods for locating server nodes for edge devices using latency-based georouting
US11916995B1 (en) * 2019-11-04 2024-02-27 Edjx, Inc. Systems and methods for locating microserver nodes in proximity to edge devices using georouting
US11089083B1 (en) * 2019-11-04 2021-08-10 Edjx, Inc. Systems and methods for locating microserver nodes in proximity to edge devices using georouting

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5227778A (en) 1991-04-05 1993-07-13 Digital Equipment Corporation Service name to network address translation in communications network
US5793763A (en) 1995-11-03 1998-08-11 Cisco Technology, Inc. Security system for network address translation systems
US5732078A (en) 1996-01-16 1998-03-24 Bell Communications Research, Inc. On-demand guaranteed bandwidth service for internet access points using supplemental user-allocatable bandwidth network
US5781550A (en) * 1996-02-02 1998-07-14 Digital Equipment Corporation Transparent and secure network gateway
CN1216657A (zh) * 1996-04-24 1999-05-12 北方电讯有限公司 互联网协议过滤器
US5883891A (en) 1996-04-30 1999-03-16 Williams; Wyatt Method and apparatus for increased quality of voice transmission over the internet
JP3531367B2 (ja) * 1996-07-04 2004-05-31 株式会社日立製作所 トランスレータ
JP3178350B2 (ja) * 1996-08-12 2001-06-18 日本電信電話株式会社 インタワーク装置
US6477179B1 (en) * 1997-05-09 2002-11-05 Sony Corporation Data receiving device and data receiving method
US6094676A (en) 1997-05-30 2000-07-25 Hilgraeve Incorporated Method and apparatus for peer-to-peer communication
US6141749A (en) 1997-09-12 2000-10-31 Lucent Technologies Inc. Methods and apparatus for a computer network firewall with stateful packet filtering
JPH11122301A (ja) * 1997-10-20 1999-04-30 Fujitsu Ltd アドレス変換接続装置
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
ES2267194T3 (es) * 1997-11-04 2007-03-01 Koninklijke Philips Electronics N.V. Red de comunicacion con flexibilidad en encaminamiento aumentada.
JPH11150566A (ja) * 1997-11-14 1999-06-02 Hitachi Ltd インタネットワーク装置
US6006272A (en) 1998-02-23 1999-12-21 Lucent Technologies Inc. Method for network address translation
US6055236A (en) 1998-03-05 2000-04-25 3Com Corporation Method and system for locating network services with distributed network address translation
US6058431A (en) 1998-04-23 2000-05-02 Lucent Technologies Remote Access Business Unit System and method for network address translation as an external service in the access server of a service provider
JP2000059430A (ja) * 1998-08-07 2000-02-25 Matsushita Electric Works Ltd ネットワークアドレス変換方法及びその装置
US6717949B1 (en) * 1998-08-31 2004-04-06 International Business Machines Corporation System and method for IP network address translation using selective masquerade
US6141341A (en) 1998-09-09 2000-10-31 Motorola, Inc. Voice over internet protocol telephone system and method
JP3327225B2 (ja) * 1998-10-29 2002-09-24 三菱マテリアル株式会社 ネットワークアドレス変換装置およびその記録媒体
JP2000209278A (ja) * 1999-01-12 2000-07-28 Fujitsu Ltd ル―タ及びル―タを用いたパケット中継システム
US6615357B1 (en) * 1999-01-29 2003-09-02 International Business Machines Corporation System and method for network address translation integration with IP security
US6581108B1 (en) 1999-11-30 2003-06-17 Lucent Technologies Inc. Managing multiple private data networks using network and payload address translation
US6779035B1 (en) 2000-03-06 2004-08-17 Microsoft Corporation Application programming interface and generalized network address translator for translation of transport-layer sessions
US6772210B1 (en) * 2000-07-05 2004-08-03 Nortel Networks Limited Method and apparatus for exchanging communications between telephone number based devices in an internet protocol environment
US6661799B1 (en) 2000-09-13 2003-12-09 Alcatel Usa Sourcing, L.P. Method and apparatus for facilitating peer-to-peer application communication
US7224687B2 (en) 2002-02-28 2007-05-29 Lucent Technologies Inc. Method and apparatus for voice over IP network address translation
FR2866497B1 (fr) 2004-02-18 2006-08-18 Cit Alcatel Controleur de bande passante, reseau et procede de gestion de sous-reseau ip
EP1613024A1 (de) 2004-06-29 2006-01-04 Alcatel Alsthom Compagnie Generale D'electricite Verfahren und Anrufserver zum Aufbau einer bidirektionellen, gleichrangigen Kommunikationsverbindung
FR2908001B1 (fr) 2006-10-26 2009-04-10 Alcatel Sa Traversee d'un equipement de traduction d'adresse nat pour messages de signalisation conformes au protocole sip par redondance d'informations d'adresses.

Also Published As

Publication number Publication date
CN1531801A (zh) 2004-09-22
WO2002023822A1 (en) 2002-03-21
EP2068499A1 (de) 2009-06-10
DE60138058D1 (de) 2009-04-30
JP2004509517A (ja) 2004-03-25
EP1323261A1 (de) 2003-07-02
EP1793533B1 (de) 2009-03-18
JP4908724B2 (ja) 2012-04-04
EP2068499B1 (de) 2015-08-26
EP1793533A1 (de) 2007-06-06
AU2001287054A1 (en) 2002-03-26
CN101668051B (zh) 2014-07-02
CN100512165C (zh) 2009-07-08
EP1323261A4 (de) 2005-02-23
EP1793533B8 (de) 2009-07-01
USRE43057E1 (en) 2012-01-03
US6661799B1 (en) 2003-12-09
DE60127276D1 (de) 2007-04-26
CN101668051A (zh) 2010-03-10
USRE44593E1 (en) 2013-11-12
EP1323261B1 (de) 2007-03-14

Similar Documents

Publication Publication Date Title
DE60127276T2 (de) Verfahren und vorrichtung zur erleichterung der peer-zu-peer anwendungskommunikation
DE10245330B4 (de) Softwareschalter der verteilte Firewalls für eine Lastteilung von Internet-Telefonie-Verkehr in einem IP-Netz verwendet
DE602004007301T2 (de) Adressierungs-verfahren und -vorrichtung zum aufbau von hip-verbindungen zwischen gewöhnlichen und hip-fähigen netzknoten
DE10296660B4 (de) Über Netzwerkadressübersetzungs(NAT) -Einrichtungen hinweg betreibbare Kommunikationsprotokolle
DE102007046627B4 (de) Verfahren und Vorrichtung zum Organisieren von Internet-Kommunikationsvorgängen unter Nutzung einer dynamischen STUN-Infrastrukturkonfiguration
DE69726701T2 (de) Verfahren zur Übertragung von Verbindungsverwaltungsinformationen in World Wide Web Anforderungen und Antworten
DE60224356T2 (de) Adressenübersetzer, Verfahren und Vorrichtung zur Nachrichtenverarbeitung
DE102008010145B4 (de) Peer-to-Peer-Kommunikationssystem und -verfahren
CA2678714C (en) Bootstrapping in peer-to-peer networks with network address translators
EP2193649B1 (de) Verfahren und Vorrichtung zur Verbindung paketorientierter Kommunikationsendgeräte
DE60113435T2 (de) Audio-video-telefonie mit firewalls und netzwerkadressübersetzung
DE60210927T2 (de) Verfahren und Vorrichtung zur Zulassung der Datenübertragung über Firewalls
DE10353925B4 (de) Verfahren zum Austausch von Daten zwischen zwei Hosts
DE102005062771A1 (de) Multimedia-Konferenzsystem und -verfahren
DE602004009947T2 (de) Netzwerkentität zur verbindung von sip-endpunkten verschiedener fähigkeiten
DE10392494T5 (de) Mechanismen zum Bereitstellen von Verbindbarkeit zwischen Netzen unterschiedlicher Adressbereiche
DE60036848T2 (de) Verfahren und Vorrichtungen zur Überwachung eines Internetprotokollnetzwerkes
DE10329084A1 (de) Verfahren und Anordnung zum Zugriff auf ein erstes Endgerät eines ersten Kommunikationsnetzwerkes durch einen Kommunikationsknoten in einem zweiten Kommunikationsnetzwerk
DE60211270T2 (de) Vorrichtung und Verfahren zur Erbringung von Rechnernetzwerken
DE60118334T2 (de) Steuerung und verfahren zur anrufleitweglenklung innerhalb privater, über geografisch entfernte zonen verteilte netzwerke
EP1282280A1 (de) Verfahren, Steuereinrichtung und Programmmodul zur Steuerung und Lenkung von Datenströmen einer Kommunikationsverbindung zwischen Teilnehmern eines Paketdatennetzes
EP1841164B1 (de) System, Verfahren und Verbindungseinheit zum dynamischen Konfigurieren von NAT-Routern
DE102006030591A1 (de) Verfahren zur Verwaltung von Kommunikationsverbindungen
EP1520389B1 (de) Netzwerk mit in kommunikationskomponenten integrierten suchfunktionen
EP3959850B1 (de) Verfahren zum bereitstellen von verbindungsherstellungsdaten sowie anordnung mit einer mehrzahl von kommunikationsservern und einem vermittler

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: ALCATEL-LUCENT USA INC. (N. D. GES. D. STAATES, US

8328 Change in the person/name/address of the agent

Representative=s name: EISENFUEHR, SPEISER & PARTNER, 28195 BREMEN