KR20060070529A - 라우팅 힌트를 제공하기 위한 방법, 장치 및프로세서-액세스가능 매체 - Google Patents

라우팅 힌트를 제공하기 위한 방법, 장치 및프로세서-액세스가능 매체 Download PDF

Info

Publication number
KR20060070529A
KR20060070529A KR1020067001629A KR20067001629A KR20060070529A KR 20060070529 A KR20060070529 A KR 20060070529A KR 1020067001629 A KR1020067001629 A KR 1020067001629A KR 20067001629 A KR20067001629 A KR 20067001629A KR 20060070529 A KR20060070529 A KR 20060070529A
Authority
KR
South Korea
Prior art keywords
session
identifier
host
message
processor
Prior art date
Application number
KR1020067001629A
Other languages
English (en)
Other versions
KR101026600B1 (ko
Inventor
존 에이. 밴스
죠셉 엠. 죠이
데이비드 알. 모워즈
켐 파야
펭 선
Original Assignee
마이크로소프트 코포레이션
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
Priority claimed from US10/639,516 external-priority patent/US7882251B2/en
Priority claimed from US10/639,727 external-priority patent/US8266294B2/en
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20060070529A publication Critical patent/KR20060070529A/ko
Application granted granted Critical
Publication of KR101026600B1 publication Critical patent/KR101026600B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1017Server selection for load balancing based on a round robin mechanism
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1019Random or heuristic server selection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1023Server selection for load balancing based on a hash applied to IP addresses or costs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1027Persistence of sessions during load balancing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/10015Access to distributed or replicated servers, e.g. using brokers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/561Adding application-functional data or data for application control, e.g. adding metadata
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/564Enhancement of application control based on intercepted application data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Transfer Between Computers (AREA)
  • Telephonic Communication Services (AREA)

Abstract

제1 예시적인 매체 구현은, 장치가 호스트 식별자를 이용하여 세션 식별자를 생성하는 단계; 및 생성된 세션 식별자를 갖는 호스트 세션 개시 메시지를 공식화하는 단계를 수행하도록 지시하는 프로세서-실행가능 명령어들을 포함한다. 예시적인 장치 구현은, 적어도 하나의 프로세서; 및 장치가 호스트 식별자에 응답하여 생성되는 세션 식별자를 갖는 호스트 세션 메시지를 공식화하는 단계, 및 세션 식별자를 포함하는 공식화된 호스트 세션 메시지를 장치로부터 송신하는 단계를 수행하도록 지시하는 프로세서-실행가능 명령어들을 더 포함하는 하나 이상의 매체를 포함한다. 제2 예시적인 매체 구현은, 기기가 세션 메시지의 세션 식별자 필드로부터 호스트 식별자를 확인하는 단계; 및 확인된 호스트 식별자에 응답하여 세션 메시지를 라우팅하는 단계를 수행하도록 지시하는 프로세서-실행가능 명령어들을 포함한다.
호스트 식별자, 세션 식별자, 호스트 세션 메시지, 호스트 세션 개시 메시지

Description

라우팅 힌트를 제공하기 위한 방법, 장치 및 프로세서-액세스가능 매체{ROUTING HINTS}
본 발명은 일반적으로 라우팅 힌트에 관한 것으로서, 특히, 예를 들어, 네트워크 게이트웨이에서 그러한 라우팅 힌트를 이용하여 인터넷 라우팅을 용이하게 하기 위해, 호스트로부터 라우팅 힌트를 제공하는 것에 관한 것이지만, 이것으로 제한되는 것은 아니다.
통신은 인터넷의 성능에 의해 크게 영향을 받았다. 인터넷은 패킷을 이용하여 두 명의 사람 또는 다른 엔티티들 사이에서 정보가 빨리 그리고 비교적 쉽게 통신될 수 있게 한다. 인터넷은 정보를 포함한 패킷이 그들 사이에서 전송될 수 있도록 함께 링크되어 있는 다수의 네트워크 노드들을 포함한다. 몇몇 네트워크 노드는 한 링크에서 다른 링크로 패킷을 전달하는 라우터일 수 있고, 다른 노드들은 개별적인 클라이언트 컴퓨터일 수 있고, 또 다른 노드들은 (예를 들어, 특정 엔티티를 위한) 완전한 개인 네트워크일 수 있다.
제1 엔티티와 제2 엔티티 간의 인터넷을 통한 통신은 그들 간의 접속을 형성함으로써 수행된다. 이러한 접속은 때때로 세션을 포함한다. 세션은 대응 접속 또는 접속들을 통해 일어나는 통신 교환에 문맥을 제공하도록 설정된다. 세션 설 정은 보통, 제1 엔티티와 제2 엔티티 간의 정보의 일방향 또는 양방향 교환을 포함한다. 세션의 설정 단계의 복잡도와 지속기간은 보통, 세션의 유형에 따라 다르다.
각각의 세션 설정은 프로세싱 자원을 이용하고, 사용자가 경험하는 딜레이로 변환되는 기간을 소비한다. 세션 설정 단계 후, 제1 엔티티와 제2 엔티티는 설정된 세션 문맥에 따라 통신한다. 통신뿐만 아니라 접속도 세션의 종료없이 중지할 수 있다. 그 이후에, 몇몇 경우에서, 그러한 기존 세션은 이전의 세션 설정 단계 동안 두개의 엔티티 사이에서 미리 교환된 정보를 보유하는 경우, 그러한 정보를 이용하여 지속될 수 있다.
다시 말하면, 미리-교환된 정보는 기존 세션을 지속하는 데 사용된다. 따라서, 기존 세션을 지속하는 것은 일반적으로, 이전에 세션을 설정했던 동일한 제1 및 제2 엔티티가 그 세션을 지속하기를 시도하는 상황에 속한다. 따라서, 제2 엔티티가 알려져 있지 않고/않거나 식별하거나 접촉하기에 곤란한 경우, 제1 엔티티가 기존 세션을 지속하기를 시도할 때 문제가 발생한다.
따라서, 두 개의 엔티티 간의 세션 지속을 개선하고, 단순화하고/하거나 용이하게 하는 스킴 및/또는 기술이 필요하다.
제1 예시적인 매체 구현에서, 하나 이상의 프로세서-액세스가능 매체는 실행 시, 장치가 호스트 식별자를 이용하여 세션 식별자를 생성하는 단계; 및 생성된 세션 식별자를 갖는 호스트 세션 개시 메시지를 공식화하는 단계를 수행하도록 지시하는 프로세서-실행가능 명령어들을 포함한다.
제1 예시적인 장치 구현에서, 장치는 적어도 하나의 프로세서; 및 적어도 하나의 프로세서에 의해 실행될 수 있는 프로세서-실행가능 명령어들을 포함하는 하나 이상의 매체를 포함하고, 프로세서-실행가능 명령어들은 장치에, 호스트 식별자에 응답하여 생성되는 세션 식별자를 갖는 호스트 세션 메시지를 공식화하는 단계; 및 세션 식별자를 포함하는 공식화된 호스트 세션 메시지를 장치로부터 송신하는 단계를 수행할 것을 지시하도록 적응된다.
제2 예시적인 매체 구현에서, 하나 이상의 프로세서-액세스가능 매체는 데이터 구조를 포함하고, 데이터 구조는 세션 식별자 필드를 포함하는 메시지를 포함하고, 세션 식별자 필드의 적어도 일부분은 호스트 식별자를 포함한다.
제2 예시적인 장치 구현에서, 장치는 호스트 식별자; 및 호스트 식별자를 이용하여 세션 식별자를 생성하도록 적응된 세션 식별자 생성자를 포함한다.
예시적인 네트워크 게이트웨이 구현에서, 네트워크 게이트웨이는 세션 식별자 필드를 갖는 세션-관련 메시지를 수용할 수 있고; 네트워크 게이트웨이는 세션 식별자 필드를 채우는 값으로부터 호스트 식별자를 추출하도록 적응되고; 네트워크 게이트는 또한, 호스트 식별자를 이용하여 세션-관련 메시지에 대한 라우팅 동작을 수행하도록 적응된다.
제3 예시적인 매체 구현에서, 하나 이상의 프로세서-액세스가능 매체는 실행 시, 기기가 세션 메시지의 세션 식별자 필드로부터 호스트 식별자를 확인하는 단계; 및 확인된 호스트 식별자에 응답하여 세션 메시지를 라우팅하는 단계를 수행하도록 지시하는 프로세서-실행가능 명령어들을 포함한다.
예시적인 기기 구현에서, 기기는 적어도 하나의 프로세서; 및 적어도 하나의 프로세서에 의해 실행될 수 있는 프로세서-실행가능 명령어들을 포함하는 하나 이상의 매체를 포함하고, 프로세서-실행가능 명령어들은 기기에, 호스트 식별자를 포함하는 세션 식별자를 갖는 세션 메시지를 수신하는 단계; 및 호스트 식별자에 응답하여 세션 메시지를 라우팅하는 단계를 수행할 것을 지시하도록 적응된다.
다른 방법, 시스템, 접근, 기기, 어플리케이션 프로그래밍 인터페이스(API), 장치, 매체, 프로시저, 배열 등의 구현이 본 명세서에서 설명된다. 도면 전체에 있어서, 유사한 참조 및/또는 대응하는 양태들, 특징들 및 컴포넌트들에 동일한 번호가 사용된다.
도 1은 세션을 설정하는 제1 접속, 및 세션을 지속하는 제2 접속을 도시하는 예시적인 통신 환경.
도 2는 세션 메시지에 라우팅 힌트를 제공하고 이용하는 예시적인 접근을 도시.
도 3은 라우팅 힌트를 포함할 수 있는 예시적인 세션 메시지를 도시.
도 4는 라우팅 힌트를 제공하기 위한 예시적인 방법을 도시하는 순서도.
도 5는 세션 메시지에 라우팅 힌트를 제공하고 이용하는 다른 예시적인 접근을 도시.
도 6a 및 도 6b는 라우팅 힌트에서 이용하기 위한 호스트 식별자와 네트워크 주소의 링크를 도시하는 예시적인 테이블.
도 7은 라우팅 힌트를 사용하기 위한 예시적인 방법을 도시하는 순서도.
도 8은 본원에 개시된 라우팅 힌트의 적어도 하나의 양태를 (전체 또는 부분적으로) 구현할 수 있는 예시적인 컴퓨팅(또는 일반 장치) 오퍼레이팅 환경을 도시.
도 1은 세션을 설정하는 제1 접속(114(1)), 및 세션을 지속하는 제2 접속(114(2))을 도시하는 예시적인 통신 환경(100)이다. 도시된 바와 같이, 예시적인 통신 환경(100)은 복수의 클라이언트(102(1), 102(2), ..., 102(m)) 및 복수의 호스트(108(1), 108(2), ..., 108(n)) 뿐만 아니라, 네트워크(104) 및 네트워크 게이트웨이(NG)(106)도 포함한다. 네트워크 게이트웨이(106)는 네트워크(104)와 인트라넷(110) 간의 게이트웨이로서 서비스를 제공한다. 호스트(108)는 인트라넷(110)에 연결된다.
설명된 구현에서, 클라이언트(102(1), 102(2), ..., 102(m))는 각각 주소 "C1", "C2", ..., "Cm"에 대응한다. 클라이언트(102) 각각은 컴퓨터, 이동국, 오락 기기, 다른 네트워크 등과 같은 네트워크 통신이 가능한 임의의 장치일 수 있다. 클라이언트(102)는 또한, 클라이언트 장치를 동작시키는 사람 또는 다른 엔티티에 대응할 수 있다. 다시 말하면, 클라이언트(102)는 사용자 및/또는 기계인 논리 클라이언트를 포함할 수 있다.
네트워크(104)는 인터넷, 다른 인트라넷, 유선 또는 무선 전화 네트워크, 무 선 광대역 네트워크 등과 같은 하나 이상의 네트워크로부터 형성될 수 있다. 클라이언트(102)를 위한 장치, 및 네트워크(104)를 위한 네트워크 유형/토폴로지의 추가적인 예는 도 8을 참조하여 이하에 설명된다. 각각의 클라이언트(102)는 네트워크 게이트웨이(106)를 통해 네트워크(104)를 거쳐 하나 이상의 호스트(108)와 통신할 수 있고, 그 반대도 가능하다.
호스트(108(1), 108(2), ..., 108(n))는 각각 주소 "H1", "H2", ..., "Hn"에 대응한다. 호스트 주소 H1, H2, ..., Hn은 인트라넷(110) 상에 존재한다. 호스트(108)는 일반적으로 하나 이상의 어플리케이션(도시되지 않음)을 호스트한다. 이들 어플리케이션은 예를 들어, (ⅰ)클라이언트(102)와의 상호작용 및/또는 통신을 위한 서비스를 제공하거나, (ⅱ)클라이언트(102)에 의해 사용된다. 예를 들어, 그러한 어플리케이션은 파일 전달 프로그램, 웹 사이트 관리/서버 프로그램, 원격 액세스 프로그램, 전자 메일 프로그램, 데이터베이스 액세스 프로그램 등을 포함할 수 있다.
각각의 호스트(108)는 하나의 서버 및/또는 하나의 장치, 복수의 서버 및/또는 복수의 장치, 서버의 일부분 및/또는 장치의 일부분, 그것의 임의의 결합 등에 대응할 수 있다. 호스트(108)에 대한 특정 예시적인 구현은 도 2, 도 4 및 도 5를 참조하여 이하에서 더 상세히 설명된다. 또한, 호스트(108)에 대한 추가의 예시적인 장치 구현은 도 8을 참조하여 이하에 설명된다.
네트워크 게이트웨이(106)는 하나 이상의 주소 "NGN"에서 네트워크(104)를 통해 접근할 수 있거나 위치를 알아낼 수 있고, 네트워크 게이트웨이(106)는 또한, 적어도 하나의 주소 "NGI"를 가지고 인트라넷(110) 상에 존재한다. 네트워크 게이트웨이(106)의 주소 NGN에 전달되는 클라이언트(102)(또는 다른 노드)로부터의 통신은 네트워크 게이트웨이(106)에서 수신되고, 그 후, 호스트들(108(1), 108(2), ..., 108(n)) 중 하나의 호스트(108)에 라우팅된다. 네트워크 게이트웨이(106)는 하나 이상의 네트워크 게이트웨이 구성요소(도 1에서는 따로 도시되지 않음)로 구성된다. 각각의 네트워크 게이트웨이 구성요소(106)는 라우터, 프록시, 부하 균형기, 방화벽 장치, 그것의 임의의 결합 등의 전부 또는 일부를 포함할 수 있다. 네트워크 게이트웨이 구성요소(106)에 대한 예시적인 비-특정 장치 구현도 도 8을 참조하여 이하에 설명된다.
일반적으로, 네트워크 게이트웨이(106)를 통해 네트워크(104)를 거쳐 클라이언트(102)와 호스트(108) 간의 접속(114)이 형성된다. 클라이언트(102)가 보통 접속(114)을 개시하지만, 다르게, 호스트(108)가 개시자일 수 있다. 특히, 이 예에서, 클라이언트(102(1))는 호스트(108(2))와의 접속(114(1))을 개시한다. 그러나, 클라이언트(102(1))는 호스트(108(2))의 주소 H2를 개인소유하지 않는다. 대신에, 클라이언트(102(1))는 접속(예를 들어, 접속을 요구하는 패킷)을 네트워크 게이트웨이(106)의 주소 NGN에 전달한다.
네트워크 게이트웨이(106)는 몇몇 디폴트 정책(예를 들어, 규칙)에 따라 접속(114(1))에 대한 라우팅 동작(116(1))을 수행한다. 결과적으로, 네트워크 게이트웨이(106)는 이 예에서, 접속(114(1))을 인트라넷(110)을 통해 호스트(108(2))에 라우팅한다. 일반적으로, 네트워크 게이트웨이(106)는 단순히, 클라이언트 (102(1))로부터 네트워크 주소 H2의 호스트(108(2))로 접속(114)의 패킷을 송신할 수 없다. 왜냐하면, 패킷은 네트워크 게이트웨이(106)의 주소 NGN에 목적-주소매김된 것이기 때문이다. 대신에, 네트워크 게이트웨이(106)는 전형적으로, 네트워크 주소 번역(NAT), 반-NAT(half-NAT), 터널링, 그것의 임의의 결합 등의 예시적인 옵션들 중 하나 이상을 채용하여, 인트라넷(110)을 거쳐 패킷을 라우팅한다.
전송 제어 프로토콜/인트라넷 프로토콜(TCP/IP) 환경에서, NAT는 (ⅰ)소스(즉, 클라이언트(102(1))) IP 주소 C1 및 포트 번호를 네트워크 게이트웨이(106)의 IP 주소 NGI 및 NAT-생성된 포트 번호로 오버라이트하고, (ⅱ)목적 IP 주소 NGN을 호스트(108(2))의 IP 주소 H2로 오버라이트함으로써 수행된다. 반-HAT는 목적 IP 주소 NGN을 호스트(108(2))의 IP 주소 H2로 오버라이트함으로써 수행되어, 소스 IP 주소 C1 및 포트 번호가 보존되도록 한다. 터널링은 호스트(108(2))의 주소 H2에 주소매김되는 새로운 IP 패킷 내에 각각의 패킷을 캡슐화하고 그 캡슐화된 패킷을 네트워크 게이트웨이(106)로부터 호스트(108(2))로 전송함으로써 수행되는데, 여기서 캡슐화된 패킷은 역캡슐화될 수 있다.
접속(114(1)) 동안, 클라이언트(102(1))와 호스트(108(2)) 간의 세션이 설정된다. 접속(114(1))의 설정된 세션 동안, 호스트(108(2))에서 세션 문맥(112)이 생성된다. 아날로그형의, 유사한 및/또는 상호간의 세션 문맥(도시되지 않음)도 보통 클라이언트(102(1))에서 생성된다. 세션 문맥(112)은 클라이언트(102(1))와 호스트(108(2)) 간의 통신을 용이하게 한다.
따라서, 접속(114(1))은 다수의 서로 다른 유형의 세션들 중 임의의 하나 이 상이 설정될 수도 있고, 설정되어 있을 수도 있다. 예시적인 유형의 세션으로는 (ⅰ)보안 소켓 계층(SSL) 세션; (ⅱ)전송 계층 보안(TLS) 세션; (ⅲ)보안 인터넷 프로토콜(IPsec) 세션; (ⅳ)하이퍼 텍스트 전송 프로토콜(HTTP) 쿠키-기반 세션; (ⅴ)포인트-대-포인트 터널링 프로토콜(PPTP) 세션; (ⅵ)IPSec/계층-2 터널링 프로토콜(L2TP) 세션; (ⅶ)사유 세션; (ⅷ)터미널 서버 세션, (ⅸ)운영자-정의 세션; 및 (ⅹ)그 밖의 것이 있다. 이러한 서로 다른 세션 유형의 예는 세션의 계층들이 설정되고 사용될 수 있는 방법도 나타낸다.
세션 문맥(112)의 컨텐츠는 그것이 생성된 세션의 유형에 적어도 부분적으로 근거하여 변할 수 있다. 예를 들어, 특정 세션 문맥(112)은 (예를 들어, TCP 접속으로 설정된 세션 동안의) TCP 4-튜플; 세션 식별자; 대응하는 세션에 대한 영구 상태를 유지하는 하나 이상의 데이터베이스 엔트리에 대한 위치; 호스트(108(2))에 제공되는 클라이언트(102(1))의 공용 키; 교섭된 개인 암호 키(들); 다른 보안-관련 파라미터(들) 등 중 하나 이상을 포함할 수 있다. TCP 4-튜플은 소스 IP 주소, 소스 TCP 포트, 목적 IP 주소 및 목적 TCP 포트를 포함한다. 현재 표준 하에서의 SSL 세션에 대한 예를 들면, 세션 식별자는 길이가 32 바이트까지일 수 있다.
상술된 바와 같이, 접속(114(1))이 형성된 후, 현재 예에서, 클라이언트(102(1))와 호스트(108(2)) 간의 세션이 설정된다. 더 상세하게, 클라이언트(102(1))는 호스트(108(2))에 상주하고/하거나 호스트(108(2)) 상에서 실행되는 적어도 하나의 어플리케이션을 갖는 세션을 설정한다. 그러나, 명확성을 위해, 그러한 어플리케이션은 일반적으로 호스트(108(2))를 참조할 때 포함될 수 있다.
세션 설정 단계는 세션 문맥(112)을 생성하거나 그것으로 귀결된다. 세션 문맥(112)은 클라이언트(102(1))와 호스트(108(2)) 간의 통신 교환(들)을 위한 문맥을 제공한다. 세션 문맥(112)은 실제로 중요하거나, 단지 이롭거나, 아니면 이러한 통신 교환(들)과 어떻게든 관련이 있는 정보를 포함할 수 있다.
클라이언트(102(1))가 논리 클라이언트일 수 있다는 상황에서, 세션 문맥(112)은 (ⅰ) 특정 장치 및/또는 장치의 특정 사용자와 (ⅱ)호스트(108(2)) 간의 통신 교환에 관련될 수 있다. 따라서, 사용자 클라이언트(102(1))에 관련된 세션 문맥(112)은 사용자 클라이언트(102(1))가 서로 다른 장치들로부터 호스트(108)에 액세스할 때 조차도, 그것에 계속해서 관련될 수 있다. 장치는 클라이언트(102(1))에 대한 로컬 레벨, 네트워크(104) 레벨 등에서 상이할 수 있다. 그러한 상이한 장치 시나리오들의 예로는 프록시 시나리오(예를 들어, 몇몇 인터넷 서비스 제공자(ISP)의 시나리오), 터미널 서버 세션 시나리오 등이 있다.
세션 문맥(112)은 호스트(108(2))에서 저장되며/되거나 그로부터 액세스가능하다. 접속(114(1))이 완료되거나 달리 중단될 때, 세션 문맥(112)은 다시 사용될 수 없다. 반대로, 세션 문맥(112)은 클라이언트(102(1))가 동일하거나 유사하거나 관련있는 등의 세션 동안 호스트(108)와의 다른 접속을 개시하기를 시도하면, 다시 사용될 수 있다. 이러한 다른 접속이 세션 문맥(112)을 저장하는 동일한 호스트(108(2))에 라우팅되지 않으면, 클라이언트(102(1))는 새로운 세션을 설정해야 하며, 이것은 시간 소모적이고, 데이터/프로세싱 집약적이고/이거나, 사용자(특히, 클라이언트(102(1))에 대응하는 사용자)를 좌절시키는 것일 수 있다. 네트워크 게 이트웨이(106)에서의 몇몇 세션 동질 보존 메커니즘(session affinity preservation machanism) 없이는, 일반적으로, 제2 접속도 호스트(108(2))에 라우팅되는 것은 무작위 기회 이상의 가능성이 없다.
세션 동질 보존 메커니즘 또는 기능은 (패킷-레벨 및 논리-레벨 요구를 포함한) 접속을 그 접속과 함께 지속될 기존의 세션 동안 세션 문맥(112)에 관련되는 호스트(108)에 다시 라우팅하도록 적응된다. 예를 들어, 세션 동질 보존 기능은 클라이언트(102(1))에 대한 접속(114(2))이 세션 문맥(112)이 관련되는 호스트(108(2))에 다시 라우팅될 수 있게 하도록 시도한다. 그러한 세션 동질 보존 메커니즘은 하나 이상의 예시적인 전략에 따라 구현될 수 있다. 이러한 예시적인 전략은 일반적으로 네트워크 게이트웨이(106)에 적용될 수 있지만, 부하 균형 구현의 관점에서 설명된다.
제1 전략은, 전부가 아니더라도 예를 들어, 주어진 IP 주소로부터 들어오는 대부분의 요구가 단일의 호스트(108)에 라우팅되는 "스티키(sticky)" 모드를 갖는 부하 균형에 관한 것이다. 그러나, 이 전략은 주어진 IP 주소가 단일의 클라이언트(102)를 나타낸다는 가정 하에 놓이며, 이것은 명백하게 프록시에 대해 참이 아니다. 프록시는 부하 균형기에 단일의 IP 주소로서 나타나지만, 그것은 실제로, 다수의, 잠재적으로는 수천의 클라이언트(102)에 대한 요구를 나타낸다. 결과적으로, 단일의 호스트(108)에 이러한 요구 전부를 라우팅하는 것은 장치들 간의 매우 고르지 못한 부하 균형을 유도할 수 있다. 보통, 프록시로부터 들어오는 요구를 수신하는 장치는 결과적으로 훨씬 더 많은 개수의 클라이언트(102)를 할당받는다. 또한, 변하는 IP 주소를 갖는 클라이언트(102)로부터의 요구도 이 제1 전략을 이용하여 잘못 라우팅된다. IP 주소 풀(pool)로부터 주소가 임시적으로 할당된 경우 등에, IP 주소는 모바일 환경에서 변할 수 있다.
제2 전략은 세션 식별자를 사용하는 부하-균형 발견적 방법을 채용하는 것에 관한 것이다. 기존 세션을 지속하고자 하는 요구는 특정의 개별적 세션 식별자를 이용하여 그 세션을 미리 설정(예를 들어, 교섭)한 호스트(108)에 라우팅된다. 동작 시, 특정 클라이언트(102)와 특정 호스트(108) 사이에 특정 세션이 설정된 후, 그 특정 호스트(108)를 그 특정 세션에 링크시키는 매핑이 저장되며, 그 세션은 특정 세션 식별자에 의해 식별된다. 그 특정 클라이언트(102)로부터 그 특정 세션 식별자를 포함하는 요구가 수신될 때, 요구는 매핑을 이용하여 그 특정 호스트(108)에 다시 라우팅될 수 있다. 따라서, 이 제2 전략은 세션 동질의 보존을 가능하게 한다.
그러나, 제2 전략은 효율성 관점에서 다수의 상대적인 결점을 갖는다. 우선, 부하 균형기는 세션 식별자와 호스트(108) 간의 이러한 매핑의 테이블을 유지한다. 각각의 기존 세션에 대해 별도의 엔트리가 존재하기 때문에, 이 테이블의 크기는 거대할 수 있다. 예를 들어, 각각의 호스트(108)가 10,000개의 세션을 캐싱하고 500개의 호스트(108)가 존재한다면, 테이블은 이들 세션에 대한 요구를 최적의 효율로 라우팅하는 데 5백만 개의 엔트리를 이용한다. 둘째로, 각각의 새로-설정된 세션에 대하여, 부하 균형기는 세션 식별자가 검출되고 엔트리가 테이블에 추가될 수 있을 때까지 세션 설정 단계를 모니터링한다. 셋째로, 세션을 다시 시 작하고자 하는 요구가 수신될 때마다, 부하 균형기는 라우팅을 수행하기 위해 (매우 클지도 모르는) 그 테이블을 참고한다.
네번째로, 세션은 수명이 있고, 급진적으로 노화되거나, 과밀로 인해 호스트(108) 캐시로부터 회수되기 때문에, 부하 균형기 테이블은 또한, 각각의 호스트(108)가 자기 자신의 캐시를 이용하여 무엇을 하는지, 또는 무엇을 하기로 예상되는지를 반영하는 몇몇 노화 시스템을 구현한다. 호스트(108) 및 부하 균형기 메커니즘이 동기화되지 않으면, 부하 균형기는 호스트(108) 상에서 여전히 유효한 세션에 대한 상태 정보를 조기에 삭제할 수도 있고, 반대로, 임의의 호스트(108)에서 더 이상 존재하지 않는 세션에 대한 상태 정보를 보유할 수 있다.
세션 동질 보존 기능에 대한 제3 전략은 새로 설정되는 세션에 대한 세션 식별자의 선택적 생성/결정을 통해, 및 각각의 개별 세션에 대해 엔트리를 요구하는 테이블 없이, 네트워크 게이트웨이(106)에서 세션 동질 보존을 성취할 수 있다. 세션 식별자를 결정할 때, 호스트(108)는 호스트 식별자를 내포한다.
네트워크 게이트웨이(106)는 세션 식별자로부터 호스트 식별자를 추출하고, 호스트 식별자에 응답하여 세션 식별자가 할당되는 세션에 대한 트래픽을 라우팅한다. 따라서, 제3 전략은 제한된 개수의 엔트리(예를 들어, 호스트(108) 개수와 동일한 다수의 엔트리)를 갖는 테이블을 이용하여 세션 지속 요구를 라우팅하고/하거나 그러한 세션별 엔트리를 갖는 테이블을 이용하지 않고서 세션 지속 요구를 라우팅하는 비교적 지정되지 않은(stateless) 접근을 채용할 수 있다. 이 제3 전략의 양태는 이하에 더 상세히 설명된다.
통신 환경(100)에 대한 예에서, 세션 설정 단계가 접속(114(1))의 일부분으로서 완료된 후, 세션 문맥(112)이 호스트(108(2))에서 생성된다. 그 후, 접속(114(1))이 중단된다. 접속(114(2))에 대한 요구가 네트워크 게이트웨이(106)에 도달할 때, 라우팅 동작(116(2))이 수행된다. 이 접속(114(2))은 할당된 세션 식별자에 의해, 세션 문맥(112)에 대응하는 미리-설정된 세션의 지속을 위한 것으로 나타난다. 세션 식별자는 제3 전략에 따른 호스트(108(2))의 식별자를 포함한다. 세션 지속 요구의 세션 식별자로부터 추출되는 호스트(108(2))에 대한 호스트 식별자를 이용하여, 접속(114(2))은 라우팅 동작(116(2))에서 호스트(108(2))에 라우팅되며, 이것은 세션 문맥(112)과 관련된다.
아이템(114(1) 및 114(2))은 또한, 단일의 접속 내에서 일어나는 세션-관련된 메시지(예를 들어, 요구) 뿐만 아니라, 둘 이상의 접속 동안 일어나는 메시지도 나타낼 수 있다. 또한, 본원에서 클라이언트(102)와 호스트(108) 간의 특정 통신은 메시지로서 설명된다. 메시지는 보통, 하나 이상의 패킷으로서 클라이언트(102)에서 호스트(108)로 전달되며, 그 반대도 가능하다. 클라이언트 메시지는 클라이언트(102)로부터 송신되며, 호스트 메시지는 호스트(108)로부터 송신된다. 세션 메시지는 세션에 관한 메시지(예를 들어, 세션의 설정, 지속/재시작, 폐기 등에 관한 메시지)이다. 예시적인 세션 메시지는 도 3을 참조하여 이하에 더 상세히 설명된다.
세션 개시 메시지는 세션을 개시하는 것에 관한 클라이언트(102) 및/또는 호스트(108)에 의해 송신된 메시지이다. 세션 지속 메시지는 기존 세션을 지속하는 것에 관한 클라이언트(102) 및/또는 호스트(108)에 의해 송신된 메시지이다. 세션 개시 메시지 및 세션 지속 메시지는 현저하게 상이한 포맷들, 유사한 포맷들, 동일한 포맷들 등을 가질 수 있다. 그러나, 설명된 구현예에서, 세션 개시 메시지 및 세션 지속 메시지는 적어도 유사한 포맷을 가지며, 여기서, 세션 식별자의 존재는 클라이언트 세션 메시지가 클라이언트 세션 지속 메시지임을 나타내고, 세션 식별자의 부재는 클라이언트 세션 메시지가 클라이언트 세션 개시 메시지임을 나타낸다.
본원의 설명이 그렇게 제한되는 것은 아니지만, 이하에 설명되는 구현예는 때때로, 네트워크 게이트웨이(106)에 대한 부하 균형 구현을 강조하거나 그것에 초점을 둔다. 또한, 다른 프로토콜들 및 프로토콜들의 결합이 적용가능하고 다르게 사용될 수 있지만, 이하의 설명은 명확성을 위해 주로, TCP/IP 접속 및 SSL/TLS 세션을 사용한다.
예를 들어, 클라이언트 세션 개시 메시지 또는 클라이언트 세션 지속 메시지는 TLS 프로토콜 버전 1.0 사양(1999년 1월)에 따라 "Client Hello" 메시지일 수 있지만, 이것으로 제한되지는 않는다. Client Hello 메시지는 세션 식별자를 포함하면, 클라이언트 세션 지속 메시지일 수 있고, 세션 식별자를 포함하지 않으면, 클라이언트 세션 개시 메시지일 수 있다. 마찬가지로, 호스트 세션 개시 메시지 또는 호스트 세션 지속 메시지는 TLS 프로토콜 버전 1.0 사양에 따라 "Server Hello" 메시지일 수 있다. Server Hello 메시지가 자신이 응답해 주는 Client Hello 메시지 내의 클라이언트에 의해 제공된 세션 식별자를 포함하면, 그것은 호 스트 세션 지속 메시지일 수 있다. Server Hello 메시지가 세션 식별자를 포함하지 않는 Client Hello 메시지에 응답하면, 그것은 호스트 세션 개시 메시지일 수 있다. 이하에서는, 그러한 호스트 세션 개시 메시지에 대한 세션 식별자를 생성하고 그러한 호스트 세션 개시 메시지를 공식화하는 것을 설명한다.
도 2는 세션 메시지에 힌트를 제공하고 이용하는 예시적인 접근을 나타낸다. 세션 메시지(202, 204 및 206)는 네트워크 게이트웨이 구성요소(106)를 통해 네트워크(104)를 거쳐 클라이언트(102)로부터 호스트(108)에 송신되고, 그 반대도 성립된다. 네트워크 게이트웨이 구성요소(106)는 네트워크 게이트웨이(도 1의 106)의 구성요소를 나타낸다. 세션 메시지(202, 204 및 206) 각각은 네트워크 게이트웨이 구성요소(106)에 의해 라우팅되는 것으로 도시되어 있지만, 각각의 개별적 세션 메시지는 다르게, 네트워크 게이트웨이(106)의 서로 다른 개별적 구성요소들에 의해 라우팅될 수 있다.
도시된 바와 같이, 호스트(108)는 클라이언트(102)에 송신되고 클라이언트(102)로부터 수신되는 메시지를 핸들링하는 메시지 핸들러(208)를 포함한다. 메시지 핸들러(208)는 입력 메시지 핸들러 부분(incoming message handler portion)(208IC) 및 출력 메시지 핸들러 부분(outgoing message handler portion)(208OG)을 포함한다. 호스트(108)는 호스트 식별자(214)와 관련되는데, 호스트 식별자(214)는 호스트(108)에 저장되거나 호스트(108)로부터 액세스가능하다. 호스트 식별자(214)에 대한 예는 도 3과 관련하여 이하에 더 상세히 설명된다. 호스트(108)는 호스트 식별자(214)를 이용하여 세션 식별자(예를 들어, 세션 식별자(210))를 생성하는 세션 식별자 생성기(212)도 포함한다.
설명된 구현예에서, 클라이언트(102)는 주소 "C"를 가지며, 네트워크 게이트웨이 구성요소(106)는 주소 NGN 및 NGI를 갖는데, 주소 C 및 NGN은 네트워크(104) 상에 배치된다. 호스트(108)는 주소 "H"를 갖는데, 이것은 주소 NGI와 함께 인트라넷(110) 상에 배치된다. 클라이언트(102)로부터의 세션 메시지는 네트워크 게이트웨이 구성요소(106)에서 네트워크(104)를 통해 수신된다. 네트워크 게이트웨이 구성요소(106)는 라우팅 동작(216)을 이용하여 인트라넷(110)을 통해 이들 세션 메시지를 호스트(108)를 향해 라우팅한다. 반대의 경로에서, 호스트(108)로부터의 세션 메시지는 인트라넷(110)을 거쳐 네트워크 게이트웨이 구성요소(106)에 송신/전송되는데, 네트워크 게이트웨이 구성요소(106)는 라우팅 동작(216)을 이용하여 세션 메시지를 클라이언트(102)에 다시 라우팅한다.
특히, 클라이언트(102)는 네트워크(104)를 통해 네트워크 게이트웨이 구성요소(106)에 클라이언트 세션 개시 메시지(SIM)(202)를 송신한다. 클라이언트 세션 개시 메시지(202)는 새로운 세션에 대한 요구를 포함하기 때문에, 세션 식별자를 포함하지 않는다. 클라이언트 세션 개시 메시지(202)는 기존 세션을 위한 것이 아니기 때문에, 네트워크 게이트웨이 구성요소(106)는 라우팅 동작(216(A))에서 일반적인 정책을 이용하여 클라이언트 세션 개시 메시지(202)를 호스트(108)에 라우팅한다. 예를 들어, 네트워크 게이트웨이 구성요소(106)는 현재 및/또는 관련된 부하 균형 정책(예를 들어, 들어오는 새로운 세션 요구의 순환식 배포(round robin distribution))에 따라 클라이언트 세션 개시 메시지(202)를 라우팅할 수 있다.
호스트(108)는 입력 메시지 핸들러 부분(208(IC))에서 인트라넷(110)을 통해 클라이언트 세션 개시 메시지(202)를 수신한다. 세션 식별자가 없으면, 입력 메시지 핸들러 부분(208(IC))은 클라이언트 세션 개시 메시지(202)를 새로운 세션을 위한 것으로서 인식한다. 세션 식별자 생성기(212)는 요구된 새로운 세션에 대한 새로운 세션 식별자를 생성하기 위해 활성화된다. 세션 식별자 생성기(212)는 호스트 식별자(214)를 확인/검색한다.
세션 식별자 생성기(212)는 호스트 식별자(214)를 이용하여 세션 식별자(210)를 생성한다. 예를 들어, 세션 식별자 생성기(212)는 호스트 식별자(214)를 세션 식별자(210)에 삽입한다. 세션 식별자(210)는 호스트 식별자(214)의 값 이상의 다른 값도 포함할 수 있다. 세션 식별자(210)의 추가적 값은 하나 이상의 기술들 중 임의의 것을 이용하여 생성될 수 있다. 그러한 기술은 무작위로 선택된 값, 증가하는 카운터로부터의 값, 보안-관련된 값, 해싱된 값, 이들의 임의의 결합 등을 포함하지만, 이것으로 제한되지 않는다.
설명된 구현예에서, 세션 식별자(210)의 제1 부분(즉, 호스트 식별자(214))은 현재 대응하는 세션을 소유하는 호스트(108)를 식별하는 데 사용된다. 이 제1 부분은 주어진 클러스터의 호스트들(108)에 걸쳐 유일하다(즉, 어떤 호스트(108)도 동일한 클러스터 내의 다른 어떤 호스트(108)와 자신의 호스트 식별자(214)를 공유하지 않음). 제1 부분은 호스트(108)에 의해 소유된 IP 주소, 운영자에 의해 할당된 정수 등일 수 있다. 세션 식별자(210)의 제2 부분은 세션 식별자(210)의 유일성(및 예측불가능성)을 증가시킬 수 있다. (0으로의 롤오버(rollover)를 이용하 여) 각각의 새로운 세션에 대해 한번 증가되는 글로벌 카운터를 이용하는 것과, 의사난수 및/또는 해싱 기술을 이용하는 것의 결합과 같은 다양한 기술이 이러한 제2 부분에 대해 사용될 수 있다.
세션 식별자 생성기(212)는 세션 식별자(210)를 메시지 핸들러(208)에 제공한다. 출력 메시지 핸들러 부분(208OG)은 세션 식별자(210)를 포함하는 호스트 세션 개시 메시지(204)를 준비/공식화한다. 호스트 세션 개시 메시지(204)는 인트라넷(110)을 통해 네트워크 게이트웨이 구성요소(106)에 송신된다. 네트워크 게이트웨이 구성요소(106)는 역 라우트(route back) 라우팅 동작(216(B))을 이용하여, 네트워크(104)를 통해 클라이언트(102)에 호스트 세션 개시 메시지(204)를 송신한다. 그렇게 도시되어 있지는 않지만, 특히, 네트워크 게이트웨이 구성요소(106)는 세션별 상태 정보를 저장하지 않고서 후속하는 클라이언트 메시지들을 라우팅할 수 있기 때문에, 호스트 세션 개시 메시지(204)는 다르게 네트워크 게이트웨이 구성요소(106)를 포함하지 않는 경로를 따라 역 라우팅(route back)될 수 있다.
클라이언트(102)는 호스트 세션 개시 메시지(204)로부터 세션 식별자(210)를 추출하고, 설정된 세션을 지속하기 위한 가능한 미래의 사용을 위해(및, 설정된 세션을 이용한 임의의 현재의 사용을 위해) 세션 식별자(210)를 보유한다. 어떤 점에서는, 설정된 세션의 실제 사용이 중단된다(예를 들어, 접속이 종료됨). 호스트(108)와 함께 설정되고 기존하는 세션을 지속하기 위해, 클라이언트(102)는 클라이언트 세션 지속 메시지(SCM)(206)를 공식화한다. 클라이언트(102)는 그 보유된 세션 식별자(210)를 클라이언트 세션 지속 메시지(206) 내에 포함시킨다. 클라이언 트 세션 지속 메시지(206)는 네트워크(104)를 거쳐 클라이언트(102)로부터 네트워크 게이트웨이 구성요소(106)에 송신된다.
네트워크 게이트웨이 구성요소(106)가 클라이언트 세션 지속 메시지(206)를 수신할 때, 그것은 클라이언트(102)가 그 포함된 세션 식별자(210)에 의해 나타나는 기존 세션을 지속하려고 한다는 것을 검출한다. 라우팅 동작(216(C))에서, 네트워크 게이트웨이 구성요소(106)는 세션 식별자(210)를 이용하여 클라이언트 세션 지속 메시지(206)를 라우팅한다. 특히, 네트워크 게이트웨이 구성요소(106)는 세션 식별자(210)의 일부분이고 그로부터 추출되는 호스트 식별자(214)를 이용하여 클라이언트 세션 지속 메시지(206)를 라우팅한다.
호스트 식별자(214)는 관련되는 호스트(108)를 식별한다. 따라서, 네트워크 게이트웨이 구성요소(106)는 호스트 식별자(214)에 의해 나타난 호스트(108)의 식별을 이용하여, 라우팅 동작(216(C))에서 클라이언트 세션 지속 메시지(206)를 라우팅한다. 따라서, 클라이언트 세션 지속 메시지(206)는 인트라넷(110)을 통해 네트워크 게이트웨이 구성요소(106)로부터 호스트(108)로 송신된다. 호스트(108)에서, 입력 메시지 핸들러 부분(208(IC))은 클라이언트 세션 지속 메시지(206)를 수신하고, 저장된 세션 문맥(예를 들어, 도 1에 도시된 세션 문맥(112))을 이용하여 미리 설정된 세션의 지속을 시작할 수 있다.
호스트 식별자(214)는 여러 방식으로 관련되는 호스트(108)를 식별할 수 있다. 예를 들어, 호스트 식별자(214)는 호스트(108)의 네트워크(인트라넷) 주소 H를 포함할 수 있다. 이 경우에, 네트워크 게이트웨이 구성요소(106)는 세션-관련 된 테이블 또는 호스트 식별자 테이블을 이용하지 않고서 클라이언트 세션 지속 메시지(206)를 호스트(108)에 라우팅할 수 있다. 다시 말하면, 클라이언트 세션 지속 메시지(206)는 호스트 식별자(214) 또는 그것의 적어도 일부분을 클라이언트 세션 지속 메시지(206)에 대해 인트라넷(110) 상에 배치되는 하나 이상의 패킷들의 목적 주소로서 이용하여, 호스트(108)에 전달될 수 있다.
다르게, 호스트 식별자(214)는 호스트(108)에 대한 주소 H에 매핑될 수 있다. 이 매핑 방식은 테이블(또는 계산)에 관련될 수 있지만, 테이블 내의 엔트리 "n"의 개수는 서버 클러스터, 인트라넷(110), 웹 팜(web farm) 등의 호스트(108)의 개수와 동일할 수 있다. 따라서, 이 테이블은 제한된 개수의 엔트리를 가지며, 세션별 상태 정보를 포함하지 않는다. 위에서 사용된 예를 참조하여, 각각의 호스트(108)가 10,000개의 세션을 캐싱하고 500개의 호스트(108)가 존재하면, 테이블은 이들 세션에 대한 요구를 효율적으로 라우팅하는 데 (5백만 대신에) 500개의 엔트리를 사용할 수 있다.
이하의 표 1은 호스트(108)의 주소를 이용하여 호스트 식별자(214)를 호스트(108)에 링크시키는 예시적인 링크 데이터 구조이다.
호스트 식별자(214)를 호스트 주소(H)에 매핑하기 위한 데이터 구조
엔트리 번호 호스트 식별자 [214] 호스트 주소 [H]
1 호스트 식별자 214(1) 호스트 주소 H1
2 호스트 식별자 214(2) 호스트 주소 H2
: : :
n 호스트 식별자 214(n) 호스트 주소 Hn
동작 시, 네트워크 게이트웨이 구성요소(106)는 클라이언트(102)로부터 수신된 클라이언트 세션 지속 메시지(206)의 세션 식별자(210)로부터 호스트 식별자(214(#))를 추출한다. 네트워크 게이트웨이 구성요소(106)는 링크되어 있는 호스트 주소(H#)를 확인하기 위해 호스트 식별자(214(#))를 이용하여, 표 1의 구조와 같은 링크 데이터 구조에 액세스한다. 이 호스트 주소(H#)는 인트라넷(110) 상의 호스트(108(#))의 주소에 대응하고, 클라이언트 세션 지속 메시지(206)를 호스트(108(#))에 라우팅하는 목적 주소로서 사용된다. 예시적인 호스트 식별자-대-네트워크 주소 링크 테이블은 도 6a 내지 6b를 참조하여 이하에 더 상세히 설명된다.
도 3은 라우팅 힌트를 포함할 수 있는 예시적인 세션 메시지(302)를 도시한다. 세션 메시지(302)는 하나 이상의 세션에 관련된 메시지이다. 도시된 바와 같이, 세션 메시지(302)는 복수의 필드를 포함한다. 이러한 복수의 필드는 세션 식별자(210), 및 기타 필드(들)(304)로 표시된 하나 이상의 다른 필드를 포함한다.
세션 식별자(210)는 적어도 하나의 호스트 식별자(214)를 포함한다. 호스트 식별자(214)는 장치 식별자(306)를 포함하고, 선택적으로는 어플리케이션 식별자(308)를 포함한다. 장치 식별자(306)는 네트워크 주소(310) 또는 키(312(A))를 포함할 수 있다. 다르게, 호스트 식별자(214)는 키(312(B))를 포함할 수 있다.
설명된 구현예에서, 세션 메시지(302)에 대한 포맷 또는 포맷들은 SSL/TLS와 같은 네트워크 또는 통신 표준 또는 프로토콜에 의해 정의된다. 세션 식별자(210)는 특히, 적용가능한 표준 또는 프로토콜에 의해 정의된 세션 메시지(302) 내의 어느 곳이나 배치될 수 있다. 기타 필드(304)는 소스 및/또는 목적 주소, 일반 헤더 정보, 보안 유형 정보, 기타 세션-관련된 정보, 데이터, 이것들의 임의의 결합 등을 포함할 수 있다. 예를 들어, 세션 메시지(302)는 TLS 프로토콜 버전 1.0 표준에 의해 정의된 Client Hello 또는 Sever Hello 메시지일 수 있고, 세션 식별자(210)는 Client Hello 또는 Sever Hello의 TLS Hello 메시지의 "SessionID" 필드에 대응할 수 있다. 보안 유형 정보를 포함하는 필드(304)의 예는, 세션 메시지(302)를 공식화하는 세션 참여자(예를 들어, 클라이언트 또는 호스트)에 의해 어느 암호 옵션이 지원되는지를 나타내는 암호 필드이다.
세션 식별자(210)는 호스트 식별자(214), 선택적으로는, 세션 식별자를 함께 형성하는 다른 값을 포함한다. 이 세션 식별자는 세션 메시지(302)의 세션 식별자(210) 필드를 채운다. 호스트 식별자(214)는 세션 식별자(210) 필드를 통해 분할되고, 분산(dispersing)되고/되거나, 확산(spreading)되는 것을 포함하여, 세션 식별자(210)에 대한 필드 내의 어느 곳이나 배치될 수 있다.
추출의 용이성에 대해 설명된 구현예에서, 호스트 식별자(214)에 대응하는 세션 식별자(210)의 서브-필드는 일련의 바이트 시퀀스로서 실현된다. 일련의 바이트 시퀀스는 세션 식별자(210)의 최상위 바이트로부터의 고정 오프셋에서 나타난다. 그러나, 고정 오프셋은 대신에, 최하위 바이트로부터일 수 있다.
추가적인 유연성을 위해, 호스트 식별자(214)는 예를 들어, SSL/TLS 컴포넌트에 의해 선택되는 것 대신에, 외부적으로 구성가능할 수 있다. 예를 들어, 호스트 식별자(214)는 레지스트리 키로부터의 값으로서 판독됨으로써 외부적으로 구성될 수 있다. 상술된 바와 같이, 운영자는 예를 들어, 레지스트리 키 값을 설정함으로써, 또는 어떤 다른 메커니즘을 통해 호스트 식별자(214)를 결정할 수 있다.
호스트 식별자(214)는 다르게, 세션 식별자(210)의 필드와는 다른 필드 내에 내장될 수 있다. 예를 들어, 클라이언트(102)에 송신되고, 기존 세션의 재시작을 요구할 때 해당 클라이언트(102)로부터 변경되지 않고서 반환되는 특정 필드가 사용될 수 있다. 이 대안은 특히, 메시지 포맷 및 기저 프로토콜이 요구된 세션 문맥(112)을 갖는 호스트(108)가 이 특정 필드에 대한 값을 생성/선택하기를 허용 또는 요구하는 경우 적용가능하다. 이 대안에 있어서, 네트워크 게이트웨이 구성요소(106)는 적어도 이 특정 필드의 컨텐츠 부분을 이용하여 라우팅 동작(216)을 수행한다.
호스트 식별자(214)는 장치 식별자(306)를 포함하고, 또한, 어플리케이션 식별자(308)도 포함할 수 있다. 장치 식별자(306)는 호스트 식별자(214)가 관련되는 호스트(108)의/호스트(108)에 대한 장치에 대응한다. 도시된 바와 같이, 장치 식별자(306)는 호스트(108)의 장치를 식별하는 네트워크 주소(310) 또는 키(312(A))를 포함한다.
네트워크 주소(310)는 호스트(108)에 대한 장치의 인트라넷(110) 상의 네트워크 주소이다. 따라서, 장치 식별자(306)가 네트워크 주소(310)를 포함하면, 네트워크 게이트웨이 구성요소(106)는 호스트(108)에 전송될 패킷 또는 패킷들을 위해 장치 식별자(306)를 목적 필드에 삽입할 수 있다.
키(312(A))는 호스트(108)에 대한 장치의 인트라넷(110) 상의 네트워크 주소에 매핑되는 값이다. 이 매핑은 테이블에서 네트워크 주소를 룩업하거나, 계산을 수행(예를 들어, 공식에 따르기, 알고리즘을 구현하기 등)하는 등을 행함으로써 실행될 수 있다. 예를 들어, 키(312(A))는 표 1을 참조하여 상술된 구조와 같은 데이터 구조 내의 호스트 주소(H)에 링크될 수 있다. 키(312(A))가 네트워크 주소(310)에 링크되어 있는 예시적인 테이블이 도 6a를 참조하여 이하에 더 상세히 설명된다.
호스트 식별자(214)가 장치 식별자(306) 및 어플리케이션 식별자(308)를 포함할 때, 호스트 식별자(214)는 어플리케이션 엔드포인트를 포함한다. 어플리케이션 식별자(308)는 장치 식별자(306)에 의해 식별되는 호스트 장치 상의 특정 어플리케이션을 식별한다. 따라서, 장치 식별자(306) 및 어플리케이션 식별자(308)를 포함하는 호스트 식별자(214)는 단일의 호스트(108) 상에 있고/있거나 복수의 호스트(108)에 걸쳐 복제되는 복수의 어플리케이션들 중에서 특정 어플리케이션을 식별할 수 있다.
장치 식별자(306)를 포함하지만 어플리케이션 식별자(308)는 포함하지 않는 호스트 식별자(214)도 어플리케이션 엔드포인트를 포함할 수 있다. 이것은 특히, 예를 들어, 장치가 유일한 어플리케이션을 갖거나, 장치가 멀티-홈(multi-homed)이거나, 장치의 NIC가 2개의 IP 주소를 갖는 등일 때 일어나기 쉽다. 어느 경우든, 호스트 식별자(214)는 특정 어플리케이션 뿐만 아니라 특정 호스트(108)도 식별하도록 서비스를 제공한다. 결과적으로, 클라이언트 세션 지속 메시지(206)의 라우팅은, 요구하는 클라이언트(102)와 유사한 세션을 갖는 요구된 어플리케이션으로 신속하게 수행될 수 있다.
호스트 식별자(214)는 다르게, 키(312(B))를 포함할 수 있다. 키(312(B))는 (ⅰ)호스트(108)에 대한 장치의 인트라넷(110) 상의 네트워크 주소, 및 (ⅱ)그곳의 특정 어플리케이션에 매핑되는 값이다. 그러한 매핑은 별도의 어플리케이션 식별자(308)를 이용하지 않고서, 키(312(B))가 어플리케이션 엔드포인트에 매핑될 수 있게 한다. 이 매핑은 테이블에서 네트워크 주소/어플리케이션 식별자 쌍을 룩업하거나, 계산을 수행(예를 들어, 공식에 따르기, 알고리즘을 구현하기 등)하는 등을 행함으로써 수행될 수 있다. 예를 들어, 키(312(B))는 데이터 구조에서 네트워크 주소(310) 및 어플리케이션 식별자(308)에 링크될 수 있다. 키(312(B))가 네트워크 주소(310) 및 어플리케이션 식별자(308)에 링크되어 있는 예시적인 테이블은 도 6b를 참조하여 이하에서 더 상세히 설명된다.
다른 대안적인 구현예에서, 세션 메시지(302)의 세션 식별자(210)에 대한 필드 내에 코드가 내장될 수 있다. 코드는 세션 식별자(210) 필드의 일부분 또는 전체를 차지할 수 있다. 코드는 호스트(108)로부터 네트워크 게이트 구성요소(106) 및/또는 클라이언트(102)에 정보(예를 들어, 데이터, 명령어 등)를 전달하는 데 사용될 수 있다. 세션 메시지(302)의 세션 식별자 필드는 코드 자체, 및/또는 코드를 이용하여 생성되는 세션 식별자(210)로 채워질 수 있다. 클라이언트(102) 및/또는 네트워크 게이트웨이 구성요소(106)는 코드를 추출하고, 코드의 매핑(예를 들어, 룩업, 계산 등) 등의 이후에, 현상대로 전달된 정보를 이용할 수 있다.
도 4는 라우팅 힌트를 제공하기 위한 예시적인 방법을 도시하는 순서도(400)이다. 순서도(400)는 7개의 블럭(402 내지 414)을 포함한다. 순서도(400)의 단계는 다른 환경에서 다양한 하드웨어 아키텍처 및 소프트웨어 스킴으로 수행될 수 있지만, 이 방법의 특정 양태 및 예를 설명하기 위해 특별히 도 1 내지 도 3(및 도 5)이 사용된다. 예를 들어, 호스트(108)가 설명된 단계들을 수행할 수 있다.
블럭(402)에서, 클라이언트 세션 메시지가 수신된다. 예를 들어, 호스트(108)는 클라이언트(102)로부터 (예를 들어, 메시지 핸들러(208)의 입력 메시지 핸들러 부분(208IC)에서) 클라이언트 세션 메시지(202 또는 206)를 수신할 수 있다. 블럭(404)에서, 수신된 클라이언트 세션 메시지가 세션 식별자를 포함하는지를 판정한다. 예를 들어, 그것이 세션 식별자 필드 내에 세션 식별자(210)를 갖는지를 판정하기 위해, (예를 들어, 세션 메시지(302)와 같은 포맷의) 수신된 클라이언트 세션 메시지(202 또는 206)를 검사할 수 있다.
수신된 클라이언트 세션 메시지가 세션 식별자(210)를 포함하면, 수신된 클라이언트 세션 메시지는 클라이언트 세션 지속 메시지(SCM)(206)이며, 이 방법은 블럭(412)으로 진행한다. 한편, 수신된 클라이언트 세션 메시지가 세션 식별자(210)를 포함하지 않으면, 수신된 클라이언트 세션 메시지는 클라이언트 세션 개시 메시지(SIM)(202)이며, 이 방법은 블럭(406)으로 진행한다.
블럭(406)에서, 세션 식별자는 호스트 식별자를 이용하여 생성된다. 예를 들어, 호스트(108)에 대한 호스트 식별자(214)가 세션 식별자 생성기(212)에 의해 세션 식별자(210)를 생성하는 데 사용된다. 세션 식별자 생성기(212)는 다른 값과 함께 호스트 식별자(214)를 세션 식별자(210)에 삽입할 수 있다.
블럭(408)에서, 호스트 세션 개시 메시지는 생성된 세션 식별자로 공식화된다. 예를 들어, 출력 메시지 핸들러 부분(208OG)은 세션 식별자(210)로 채워지는 호스트 세션 개시 메시지(204)를 (예를 들어, 세션 메시지(302)의 포맷과 같은 포맷을 이용하여) 공식화할 수 있는데, 이것은 호스트 식별자(214)를 포함한다. 블럭(410)에서, 호스트 세션 개시 메시지가 송신된다. 예를 들어, 호스트(108)는 네트워크 게이트웨이 구성요소(106)를 통해 네트워크(104)를 통해 호스트 세션 개시 메시지(204)를 클라이언트(102)에 전송할 수 있다.
한편, (블럭 404에서) 수신된 클라이언트 세션 메시지가 세션 식별자를 포함한다고 결정되면, 블럭(412)에서, 수신된 세션 식별자를 이용하여 호스트 세션 지속 메시지가 공식화된다. 예를 들어, 출력 메시지 핸들러 부분(208OG)은 (예를 들어, 세션 메시지(302)의 포맷과 같은 포맷을 이용하여) (미리-내장된 호스트 식별자(214)를 포함할 수 있는) 수신된 세션 식별자(210)로 채워지는 호스트 세션 지속 메시지(도 2에 도시되지 않음)를 공식화할 수 있다. 블럭(414)에서, 호스트 세션 지속 메시지가 송신된다. 예를 들어, 호스트(108)는 네트워크 게이트웨이 구성요소(106)를 통해 네트워크(104)를 통해 호스트 세션 지속 메시지를 클라이언트(102)에 전송될 수 있다.
도 5는 세션 메시지에 라우팅 힌트를 제공하고 이용하는 다른 예시적인 접근을 도시한다. 이 예시적인 접근은 네트워크 게이트웨이 구성요소(106)에서 라우팅 힌트를 사용하는 것에 초점을 둔다. 도시된 바와 같이, 클라이언트(102(1), 102(2), ..., 102(n))는 네트워크(104)를 통해 NGN에서 네트워크 게이트웨이 구성요소(106)에 주소매김되는 요구를 제출한다.
네트워크 게이트웨이 구성요소(106)는 이러한 요구를 호스트(108(1), 108(2), ..., 108(n))에 라우팅한다. 각각의 호스트(108(1), 108(2), ..., 108(n))는 개별적인 호스트 식별자(214(1), 214(2), ..., 214(n))와 관련된다. 호스트 식별자(214)는 예를 들어, 특정 유형의 세션이 잠재적으로 전달될 수 있는 엔드포인트들의 집합 중에서 어플리케이션 엔드포인트를 유일하게 식별할 수 있다.
설명된 구현예에서, 네트워크 게이트웨이 구성요소(106)는 네트워크 부하 균형에 관련된다. 네트워크 부하 균형(또는, 라우팅 기능을 갖는 다른 네트워크 게이트웨이)으로, 하나 이상의 라우팅 정책(508)이 채용될 수 있다. 라우팅 정책(508)은 예를 들어, 네트워크 부하 균형기가 들어오는 패킷 및/또는 요구를 미리 정해진 방식으로 라우팅하게 하도록 운영자가 스크립트 또는 설정할 수 있는 라우팅 정책을 포함할 수 있다. 라우팅 정책(508)은 또한, 호스트(108)에 관한 건강 및 부하 정보와 같은 실시간 파라미터에 의존하는 보다 더 유연하고/유연하거나 값비싼 라우팅 정책을 포함할 수 있다.
네트워크 게이트웨이 구성요소(106)에 대한 네트워크 부하 균형 구현은 통합된 네트워크 부하 균형 기능으로 실현될 수 있다. 이 구현은 클라이언트 세션 지속 메시지(206(A)) 및 라우팅 동작(216(C))에 관하여 설명된다. 네트워크 게이트웨이 구성요소(106)에 대한 네트워크 부하 균형 구현은 또한, 분리된 네트워크 부하 균형 기능으로 실현될 수 있다. 이 구현은 클라이언트 세션 지속 메시지(206(B)) 및 라우팅 동작(512)에 관하여 설명된다.
분리된 기능을 이용한 이 예시적인 네트워크 부하 균형 구현에서, 네트워크 게이트웨이 구성요소(106)는 전송기(502), 분류기(504), 및 호스트 식별자(HI)-대-네트워크 주소(NA) 링크 테이블(506)를 포함한다. 전송기(502)는 각각, 네트워크(104) 및 인트라넷(110)을 이용하여 클라이언트(102)와 호스트(108) 사이에서 패킷을 전송한다. 분류기(504)는 네트워크 부하 균형 기능 및/또는 세션 동질 보존 기능을 실시하기 위해 패킷, 유구, 접속 등을 분류하여 라우팅 동작을 수행한다.
전송기(502) 및 분류기(504)는 네트워크 게이트웨이(106)의 서로 다른 장치들 또는 단일의 장치 상에 상주하고 실행할 수 있다. 또한, 전송기(502) 및 분류기(504) 각각은 둘 이상의 장치에 분산될 수 있다. 또한, 네트워크 게이트웨이(106) 내에 복수의 전송기(502) 컴포넌트 및/또는 분류기(504) 컴포넌트가 존재할 수 있다. 도시된 바와 같이, 각각의 분류기(504)는 호스트 식별자-대-네트워크 주소 링크 테이블(506)을 포함한다. 다르게, 네트워크 게이트웨이(106)는 유일한 호스트 식별자-대-네트워크 주소 링크 테이블(506)을 가질 수 있다. 호스트 식별자-대-네트워크 주소 링크 테이블(506)은 또한, 서로 다른 기능 컴포넌트(들)에 배치되고/되거나 그것에 관련될 수 있다.
통합된 네트워크 부하 균형 구현의 동작에서, 클라이언트(102(1))는 네트워크(104)를 통해 클라이언트 세션 지속 메시지(206(A))를 주소 NGN의 네트워크 게이트웨이 구성요소(106)에 송신한다. 클라이언트(102(1))는 호스트(108(1))에서 세션을 미리 설정하고, 미리 설정된 세션에 할당된 세션 식별자(210(1))를 보유하였다. 이 세션 식별자(210(1))는 호스트(108(1))에 관련된 호스트 식별자(214(1))를 포함한다. 클라이언트 세션 지속 메시지(206(A))는 세션 식별자(210(1))를 포함한다.
통합된 네트워크 부하 균형 기능을 이용한 구현에서, 네트워크 게이트웨이 구성요소(106)는 클라이언트 세션 지속 메시지(206(A))에 대한 라우팅 동작(216(C))을 수행한다. 클라이언트 세션 지속 메시지(206(A))는 호스트 식별자(214(1))를 포함하는 세션 식별자(210(1))를 갖기 때문에, 네트워크 게이트웨이 구성요소(106)는 세션 식별자(210(1))의 호스트 식별자(214(1)) 부분을 이용하여 클라이언트 세션 지속 메시지(206(A))를 라우팅한다. 일반적으로, 네트워크 게이트웨이 구성요소(106)는 세션 식별자(210(1))로부터 추출된 호스트 식별자(214(1))를 이용하여 클라이언트 세션 지속 메시지(206(A))를 호스트(108(1))에 라우팅한다.
특히, 네트워크 게이트웨이 구성요소(106)는 호스트(108(1))에 라우팅되는 클라이언트 세션 지속 메시지(206(A))에 대한 패킷(들)의 목적 주소 필드에 호스트 식별자(214(1))를 삽입할 수 있다. 이 접근은 호스트 식별자(214(1))가 호스트(108(1))에 대한 네트워크 주소 H1를 포함할 때 효력이 있다.
다르게, 네트워크 게이트웨이 구성요소(106)는 또한, 호스트 식별자(214(1))를 네트워크 주소 H1에 매핑하는 것을 수행할 수 있다. 예를 들어, 그러한 매핑에 대해 계산 동작 또는 룩업 동작이 수행될 수 있다. 계산 동작에 있어서, 호스트 식별자(214(1))는 몇몇 공식, 알고리즘 등을 통해 네트워크 주소 H1에 매핑된다. 룩업 동작에 있어서, 호스트 식별자(214(1))는 호스트 식별자-대-네트워크 주소 링크 테이블(506)과 같이 호스트 식별자(214(1))를 네트워크 주소 H1에 링크시키는 엔트리를 포함하는 호스트 식별자-대-네트워크 주소 테이블에 액세스함으로써 네트워크 주소 H1에 매핑된다. 그러한 테이블의 예는 도 6a를 참조하여 이하에 더 상세히 설명된다.
분리된 네트워크 부하 균형 구현에서, 클라이언트(102(2))는 네트워크(104)를 통해 클라이언트 세션 지속 메시지(206(B))를 주소 NGN의 네트워크 게이트웨이 구성요소(106)에 송신한다. 클라이언트(102(2))는 호스트(108(2))에 세션을 미리 설정하고, 미리 설정된 세션에 할당된 세션 식별자(210(2))를 보유하였다. 이 세션 식별자(210(2))는 호스트(108(2))에 관련된 호스트 식별자(214(2))를 포함한다. 클라이언트 세션 지속 메시지(206(B))는 세션 식별자(210(2))를 포함한다.
분리된 네트워크 부하 균형 기능을 이용한 구현에서, 전송기((502)는 클라이언트 세션 지속 메시지(206(B))를 수신한다. 클라이언트 세션 지속 메시지(206(B))는 전송기(502)에 알려져 있지 않은 세션(및, 가능하게는 새로운 접속)에 대한 것이기 때문에, 전송기(502)는 통신 교환(510)에서 클라이언트 세션 지속 메시지(206(B))를 분류기(504)에 전송한다. 클라이언트 세션 지속 메시지(206(B))는 호스트 식별자(214(2))를 포함하는 세션 식별자(210(2))를 가지며, 따라서, 분류기(504)는 라우팅 동작(512) 시에 세션 식별자(210(2))의 호스트 식별자(214(2)) 부분을 이용하여 클라이언트 세션 지속 메시지(206(B))를 분류한다. 또한, 통신 교환(510)에서, 분류기(504)는 클라이언트 세션 지속 메시지(206(B))를 반환하고/하거나 전송기(502)의 라우팅 엔트리를 추가하여, 이 세션에 대한 메시지/패킷이 호스트(108(2))에 전송된다는 것을 나타낸다.
따라서, 분류기(504) 및 전송기(502)는 함께, 세션 식별자(210(2))로부터 추출된 호스트 식별자(214(2))를 이용하여 클라이언트 세션 지속 메시지(206(B))를 호스트(108(2))에 라우팅한다. 라우팅 동작(216(C))에 관하여 상술된 바와 같이, 전송기(502) 및 분류기(504)는 (ⅰ)호스트 식별자(214(2))를 목적 주소 필드에 삽입하고, (ⅱ)네트워크 주소 H2로의 호스트 식별자(214(2))의 매핑(예를 들어, 계산, 룩업 등)을 수행하는 등을 수행할 수 있다.
호스트 식별자-대-네트워크 주소 링크 테이블(506)은 분류기(504)의 일부분으로서 또는, 다르게 분류기(504)에 관련되는 것으로서 설명된다. 호스트 식별자-대-네트워크 주소 링크 테이블(506)은 네트워크 게이트웨이 구성요소(106)에 배치되는 것으로 도시되어 있지만, 그것은 대신에, 서로 다른 장치(예를 들어, 프록시 장치)에 상주할 수 있다. 그러한 프록시 장치에 배치될 때, 분리되거나 통합된(예를 들어, 네트워크-부하-균형 관련된) 기능을 갖는 네트워크 게이트웨이 구성요소(106)는 호스트 식별자-대-네트워크 주소 링크 테이블(506)에 액세스할 수 있다.
도 6a 및 6b는 각각, 라우팅 힌트에서 이용할 호스트 식별자(214)와 네트워크 주소(310)의 링크를 설명하는 예시적인 테이블(506(A) 및 506(B))이다. 호스트 식별자-대-네트워크 주소 링크 테이블(506(A))은 일반적으로, 호스트 식별자(214)가 장치에 매핑하는 구현에 대응한다. 호스트 식별자-대-네트워크 주소 링크 테이블(506(B))은 일반적으로, 호스트 식별자(214)가 어플리케이션 엔드포인트에 매핑하는 구현에 대응한다. 그러나, 호스트 식별자-대-네트워크 주소 링크 테이블(506(A))은 또한, 도 3을 참조하여 상술된 어플리케이션 엔드포인트에 매핑할 수 있다.
설명된 바와 같이, 호스트 식별자-대-네트워크 주소 링크 테이블(506(A))은 각각의 호스트 식별자(214)를 각각의 네트워크 주소(310)에 링크시킨다. 테이블(506(A))은 복수의 엔트리(602(1A), 602(2A), ..., 602(nA))를 포함한다. 각각의 개별 엔트리(602(1A), 602(2A), ..., 602(nA))는 각각의 호스트 식별자(214(1), 214(2), ..., 214(n)) 및 그에 링크되어 있는 각각의 네트워크 주소(310(1), 310(2), ..., 310(n))를 포함한다.
설명된 구현에서, 테이블(506(A))은 "n"개의 엔트리를 포함하고, 여기서 n은 호스트(108)의 개수와 같고, 각각의 호스트 식별자(214(1), 214(2), ..., 214(n))는 키(도 3의 312(A))에 대응한다. 그러한 구현에서, 네트워크 주소(310(1), 310(2), ..., 310(n))는 각각, (예를 들어, 도 5의) 호스트 주소 H1, H2, ..., Hn에 대응한다. 동작 시, 네트워크 게이트웨이 구성요소(106)는 그에 관련되는 엔트리(602(#A))의 위치를 알아내기 위해 호스트 식별자(214(#))를 이용하여 테이블(506(A))에 액세스한다. 클라이언트 세션 지속 메시지(206(A) 또는 206(B))를 호스트(108(#))에 라우팅하는 데 사용하기 위해, 해당 엔트리(602(#A))로부터, 호스트 식별자(214(#))에 링크되는 네트워크 주소(310(#))가 추출된다.
설명된 바와 같이, 호스트-대-네트워크 주소 링크 테이블(506(B))은 각각의 호스트 식별자(214)를 각각의 네트워크 주소(310) 및 어플리케이션 식별자(308)에 링크시킨다. 테이블(506(B))은 복수의 엔트리(602(1B), 602(2B), 602(3B), ..., 602(wB))를 포함한다. 각각의 개별 엔트리(602(1B), 602(2B), 602(3B), ..., 602(wB))는 (ⅰ)각각의 호스트 식별자(214(1*), 214(2*), 214(3*), ..., 214(w)) 및 (ⅱ)각각의 네트워크 주소(310(1), 310(2), 310(3), ... 310(n)) 뿐만 아니라, 호스트 식별자(214)에 링크되는 각각의 어플리케이션 식별자(308(1), 308(2), 308(3), ..., 308(z))를 포함한다.
설명된 구현에서, 테이블(502(B))은 "w"개의 엔트리를 포함하는데, 여기서, w는 호스트(108) 상의 어플리케이션 엔드포이트의 개수와 같고, 각각의 호스트 식별자(214(1*), 214(2*), 214(3*), ..., 214(w))는 키(도 3의 315(B))에 대응한다. 예를 들어, 도 5를 참조하면, 도시된 호스트 식별자-대-네트워크 주소 링크 테이블(506(B))은 다음의 예시적인 환경에서 사용될 수 있다. 그 환경에서는, 호스트(108(1))가 호스트 식별자(214(1*))에 관련되고, 어플리케이션 식별자(308(1))에 대응하는 하나의 어플리케이션을 가지며, 주소 H1은 네트워크 주소(310(1))에 대응한다. 호스트(108(2))는 호스트 식별자(214(2*) 및 214(3*))에 관련되고, 어플리케이션 식별자(308(2) 및 308(3))에 대응하는 2개의 어플리케이션을 가지며, 주소 H2는 네트워크 주소(310(2))에 대응한다.
또한, 호스트(108(n))는 호스트 식별자(214(w))에 관련되고, 어플리케이션 식별자(308(z))에 대응하는 하나의 어플리케이션을 가지며, 주소 Hn은 네트워크 주소(310(n))에 대응한다. 각각의 어플리케이션 식별자(308)가 각각의 어플리케이션 설치와 동일한 경우, Z변수 "z"는 w(어플리케이션 엔드포인트의 개수)와 동일할 수 있다. 한편, 어플리케이션 식별자(308)가 동일한 어플리케이션 유형의 어플리케이션 설치들 사이에서 공유되는 경우, z는 w보다 작을 수 있다.
도 7은 라우팅 힌트를 사용하기 위한 예시적인 방법을 도시하는 순서도(700)이다. 순서도(700)는 8개의 블럭(702 내지 716)을 포함한다. 다른 환경에서 다양한 하드웨어 아키텍처 및 소프트웨어 스킴을 이용하여 순서도(700)의 단계가 수행될 수 있지만, 특별히 도 1 내지 3, 및 도 5 내지 6가 본 방법의 특정 양태 및 예를 설명하는 데 사용된다. 예를 들어, 하나 이상의 네트워크 게이트웨이 구성요소(106)가 설명된 단계를 수행할 수 있다.
블럭(702)에서, 클라이언트 메시지가 수신된다. 예를 들어, 네트워크 게이트웨이 구성요소(106)는 네트워크(104)를 통해 클라이언트(102)로부터 클라이어트 메시지를 수신할 수 있다. 블럭(704)에서, 수신된 클라이언트 메시지의 컨텐츠가 검사된다. 예를 들어, 네트워크 게이트웨이 구성요소(106)는 세션 식별자(210)에 대한 필드와 같은 세션 메시지(302)의 하나 이상의 필드를 검사할 수 있다.
블럭(706)에서, 수신된 클라이언트 메시지가 세션-관련된 것인지를 판정한다. 예를 들어, 수신된 클라이언트 메시지가 세션 식별자(210)에 대한 필드를 갖는 세션 메시지(302)를 포함하면, 수신된 클라이언트 메시지는 세션-관련된 것이다. 한편, 수신된 클라이언트 메시지가 세션 식별자(210)에 대한 필드를 갖지 않으면, 수신된 클라이언트 메시지는 세션-관련된 것이 아니고, 방법은 블럭(708)으로 진행한다.
블럭(708)에서, 수신된 클라이언트 메시지는 디폴트 정책을 이용하여 라우팅된다. 예를 들어, 네트워크 게이트웨이 구성요소(106)는 디폴트 네트워크-부하-균형 정책과 같은 라우팅 정책(508)의 일반적 라우팅 정책을 이용하여 그 수신된 클라이언트 메시지를 라우팅할 수 있다. 점선의 화살표(718A)로 표시한 바와 같이, 네트워크 게이트웨이 구성요소(106)는 다음의 클라이언트 메시지의 수신을 기다릴 수 있다.
한편, (블럭 706에서)수신된 클라이언트 메시지가 세션-관련된 것임이 판정되는 경우, 세션 식별자 필드는 블럭(710)에서 검사된다. 예를 들어, 네트워크 게이트웨이 구성요소(106)는 수신된 클라이언트 세션 메시지(302)의 세션 식별자 필드를 검사할 수 있다. 블럭(712)에서, 클라이언트가 세션 식별자 필드를 이용하여 세션 식별자를 검사했는지를 판정한다. 예를 들어, 네트워크 게이트웨이 구성요소(106)는 세션 식별자(210)가 세션 메시지(302)의 세션 식별자 필드를 채우는지를 판정할 수 있다.
(블럭(712)에서) 어떤 세션 식별자도 지정되지 않았다고 판정되면, 수신된 클라이언트 세션 개시 메시지(202)는 블럭(708)에서, 디폴트 정책을 이용하여 라우팅될 수 있다. 한편, (블럭(712)에서) 세션 식별자가 클라이언트에 의해 지정되었다고 판정되면, 호스트 식별자는 블럭(714)에서, 지정된 세션 식별자로부터 추출된다. 예를 들어, 네트워크 게이트웨이 구성요소(106)는 수신된 클라이언트 세션 지속 메시지(206) 내에 지정된 세션 식별자(210)로부터 호스트 식별자(214)를 추출할 수 있다.
블럭(716)에서, 수신된 클라이언트 메시지는 추출된 호스트 식별자를 이용하여 라우팅된다. 예를 들어, 수신된 클라이언트 세션 지속 메시지(206)는 네트워크 게이트웨이 구성요소(106)에 의해, 호스트 식별자(214)와 관련된 호스트(108)에 라우팅될 수 있다. 이 라우팅은 호스트(108)에 전송되는 패킷 또는 패킷들, 또는 호스트 식별자(214)의 적어도 하나의 네트워크 주소(310)로의 매핑에 대해, 목적 필드로의 호스트 식별자(214)의 변경되지 않은 삽입을 수반할 수 있다. 매핑은 네트워크 주소가 되는 호스트 식별자(214)에 대한 계산을 수행하거나(예를 들어, 공식을 따르거나 알고리즘을 구현하는 등을 수행함으로써), 호스트 식별자(214)를 이용하여 테이블(506)에서 네트워크 주소(310)를 룩업하는 등을 수행함으로써 효력이 있을 수 있다.
특히, 네트워크 게이트웨이 구성요소(106)가 네트워크 부하 균형기인 구현에서, 네트워크 게이트웨이 구성요소(106)는 복수의 호스트(108)에 관한 건강 및/또는 부하 정보로의 액세스를 가질 수 있다. 이 건강 및/또는 부하 정보는, 추출된 호스트 식별자(214)에 관련된 목적(예를 들어, 호스트(108) 및/또는 그것의 어플리케이션 엔드포인트)이 건강 및/또는 부하로 인해 세션 지속을 핸들링하는 데 적합하지 않거나 아예 핸들링할 수 없다는 것을 나타낼 수 있다. 그러한 경우에, 네트워크 게이트웨이 구성요소(106)는 클라이언트(102)가 호스트 식별자(214)를 포함하는 세션 식별자(210)를 지정했을 때에도, 디폴트 라우팅 정책에 대한 블럭(708)의 단계(들)를 수행할 수 있다.
블럭(716)의 단계(들) 후에, 점선의 화살표(718B)로 표시한 바와 같이, 네트워크 게이트웨이 구성요소(106)는 다음의 클라이언트 메시지의 수신을 기다릴 수 있다. 네트워크 게이트웨이 구성요소(106)는 추출된 호스트 식별자(214)의 유형에 따른 다수의 방법으로 그 추출된 호스트 식별자(214)를 이용하여 그 수신된 클라이언트 세션 지속 메시지를 라우팅할 수 있다.
예를 들어, 네트워크 게이트웨이 구성요소(106)는 호스트 식별자(214)가 장치 식별자(306) 및 어플리케이션 식별자(308)를 포함하는 경우, 또는 키(312(B))가 호스트(108)에 대한 장치 또는 어플리케이션에 매핑되는 경우, 직접, 수신된 클라이언트 세션 지속 메시지(206)를 의도된 어플리케이션에 라우팅할 수 있다. 또한, 네트워크 게이트웨이 구성요소(106)는 호스트 식별자(214)의 장치 식별자(306)의 네트워크 주소(310) 구현을 이용하여 수신된 클라이언트 세션 지속 메시지(206)를 동질화된 호스트(108)에 라우팅할 수 있으며, 이 때, 네트워크 주소(310)는 라우팅된 패킷 또는 패킷들에 대한 목적 주소로서 사용된다.
다르게, 네트워크 게이트웨이 구성요소(106)는 호스트 식별자(214)의 장치 식별자(306)의 키(312(A)) 구현을 이용하여, 동질화된 호스트(108)의 장치에 대한 네트워크 주소(310)를 룩업할 수 있다. 예를 들어, 키(312(#))는 키(312(A))를 호스트(108)의 네트워크 주소(310)에 매핑하는 테이블(506(A))(예를 들어, 데이터 구조)에 액세스하는 데 사용될 수 있다. 키(312(#))를 갖는 엔트리(602(#A))는 데이터 구조 내에 배치된다. 그 배치된 엔트리(602(#A)) 내의 키(312(#))에 링크되는 네트워크 주소(310(#))가 추출되어, 클라이언트 세션 지속 메시지(206)를 동질화된 호스트(108)에 라우팅하는 데 사용된다.
또한, 네트워크 게이트웨이 구성요소(106)는 호스트 식별자(214)의 장치 식별자(306) 및 어플리케이션 식별자(308)의 어플리케이션-엔드포인트-지정 키(312(B)) 구현을 이용하여, 동질화된 호스트(108)의 장치에 대한 네트워크 주소(310), 및 그것의 어플리케이션에 대한 어플리케이션 식별자(308)를 룩업할 수 있다. 예를 들어, 키(312(#))는 키(312(B))를 호스트(108)의 어플리케이션 엔드포인트에 매핑하는 테이블(506(B))(예를 들어, 데이터 구조)에 액세스하는 데 사용될 수 있다. 키(312(#))를 갖는 엔트리(602(#B))는 데이터 구조 내에 배치된다. 그 배치된 엔트리(#B) 내의 키(312(#))에 링크되는 어플리케이션 엔드포인트(예를 들어, 네트워크 주소(310(#)) 및 어플리케이션 식별자(308(#)))가 추출되어, 클라이언트 세션 지속 메시지(206)를 동질화된 호스트(108)의/호스트를 위한 특정 장치 상의 특정 어플리케이션에 라우팅하는 데 사용된다.
도 1 내지 도 7의 단계, 양태, 특징, 컴포넌트 등은 복수의 블럭들로 나뉘어지는 도면에서 도시된다. 그러나, 도 1 내지 도 7의 이들 복수의 블럭들이 설명되고/되거나 도시되는 순서, 개수, 배치, 상호접속, 레이아웃 등은 제한으로서 해석되는 것으로 의도되지 않으며, 임의의 개수의 블럭은 임의의 방식으로 결합, 재배열, 확대, 생략 등이 수행되어, 라우팅 힌트에 대한 하나 이상의 시스템, 방법, 장치, 프로시저, 매체, 어플리케이션 프로그래밍 인터페이스(API), 기기, 배열 등을 구현할 수 있다. 또한, 본 명세서의 설명은 특정 구현(및, 도 8의 예시적인 오퍼레이팅 환경)에 대한 참조를 포함하지만, 예시되고/예시되거나 설명된 구현은 임의의 적합한 하드웨어, 소프트웨어, 펌웨어 또는 이들의 결합으로, 및 임의의 적합한 네트워크 조직(들), 전송/통신 프로토콜(들), 클라이언트-서버 아키텍처(들) 등을 이용하여 구현될 수 있다.
도 8은 본 명세서에 설명된 라우팅 힌트에 대한 적어도 하나의 시스템, 장치, 기기, 컴포넌트, 배열, 프로토콜, 접근, 방법, 프로시저, 매체, API, 이들의 임의의 결합 등을 (전체 또는 부분적으로) 구현할 수 있는 예시적인 컴퓨팅(또는 일반 장치) 오퍼레이팅 환경(800)을 도시한다. 오퍼레이팅 환경(800)은 이하에 설명된 컴퓨터 및 네트워크 아키텍처에서, 또는 독립형 상황에서 이용될 수 있다.
예시적인 오퍼레이팅 환경(800)은 환경의 일례일 뿐이며, 적용가능한 장치(컴퓨터, 네트워크 노드, 엔터테인먼트 장치, 이동 설비, 일반 전기 장치 등을 포함함) 아키텍처의 사용 또는 기능의 범위에 대한 임의의 제한을 제안하는 것으로 의도되지 않는다. 오퍼레이팅 환경(800)(또는 그것의 장치)은 도 8에 도시된 어떠한 컴포넌트 또는 그것의 어떠한 결합에 관하여 어떤한 의존 또는 요구를 갖는 것으로 해석되어서는 안된다.
추가적으로 라우팅 힌트는 수많은 다른 범용 또는 특수 목적 장치(컴퓨팅 시스템을 포함함) 환경 또는 구성으로 구현될 수 있다. 사용하기 적합할 수 있는 잘 알려진 장치, 시스템, 환경 및/또는 구성의 예로는, 개인용 컴퓨터, 서버 컴퓨터, 씬 클라이언트, PDA 또는 이동 전화, 시계, 핸드헬드 또는 랩탑 장치, 멀티프로세서 시스템, 마이크로프로세서-기반의 시스템, 셋톱 박스, 프로그램가능한 전자제품, 비디오 게임 머신, 게임 콘솔, 휴대용 또는 핸드헬드 게이밍 유닛, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 네트워크 노드, 상술된 시스템 또는 장치들 중 임의의 것, 이것들의 임의의 결합 등을 포함하는 분산 또는 멀티-프로세싱 컴퓨팅 환경 등이 있지만, 이것으로 제한되지 않는다.
라우팅 힌트에 대한 구현은 프로세서-실행가능 명령어의 일반적 문맥으로 설명될 수 있다. 일반적으로, 프로세서-실행가능 명령어로는, 특정 태스크를 수행 및/또는 가능하게 하고/하거나 특정 추상 데이터 타입을 구현하는 루틴, 프로그램, 프로토콜, 오브젝트, 인터페이스, 컴포넌트, 데이터 구조 등이 있다. 본 명세서의 특정 구현에서 설명된 라우팅 힌트는 또한, 통신 링크 및/또는 네트워크를 통해 접속되는 원격으로 링크된 프로세싱 장치에 의해 태스크가 수행되는 분산 프로세싱 환경에서 실시될 수 있다. 특히, 분산 컴퓨팅 환경에서, 프로세서-실행가능 명령어는 서로 다른 프로세서들에 의해 실행되고/실행되거나 전송 매체를 통해 전달되는 별도의 저장 매체 내에 배치될 수 있다.
예시적인 오퍼레이팅 환경(800)은 컴퓨팅/프로세싱 능력을 갖는 임의의 (예를 들어, 전자) 장치를 포함할 수 있는 컴퓨터(802) 형태의 범용 컴퓨팅 장치를 포함한다. 컴퓨터(802)의 컴포넌트는 하나 이상의 프로세서 또는 프로세싱 유닛(804), 시스템 메모리(806), 및 프로세서(804)를 포함한 다양한 시스템 컴포넌트를 시스템 메모리(806)에 연결하는 시스템 버스(808)를 포함할 수 있지만, 이것으로 제한되지 않는다.
프로세서(804)는 그것이 형성되거나 프로세싱 메커니즘이 채용되는 재료에 의해 제한되지 않는다. 예를 들어, 프로세서(804)는 반도체(들) 및/또는 트랜지스터(예를 들어, 전자 통합 회로(IC))로 구성될 수 있다. 그러한 문맥에서, 프로세서-실행가능 명령어는 전자식으로-실행가능한 명령어일 수 있다. 다르게, 프로세서(804), 따라서, 컴퓨터(802)의/컴퓨터(802)에 대한 메커니즘은 양자 컴퓨팅, 광 컴퓨팅, (예를 들어, 나노기술을 사용하는) 기계 컴퓨터 등을 포함할 수 있지만, 이것으로 제한되지 않는다.
시스템 버스(808)는 메모리 버스 또는 메모리 제어기, 포인트-대-포인트 접속, 스위칭 섬유, 주변장치 버스, 가속된 그래픽 포트, 및 다양한 버스 아키텍처들 중 임의의 것을 사용한 프로세서 또는 로컬 버스를 포함하여, 다수의 유형의 유선 또는 무선 버스 구조들 중 임의의 하나 이상을 나타낸다. 예를 들어, 그러한 아키텍처는 ISA(Industry Standard Architecture) 버스, MCA(Micro Channel Architecture) 버스, EISA(Enhanced ISA) 버스, VESA(Video Electronics Standards Association) 로컬 버스, 메자닌 버스로도 알려진 PCI(Peripheral Component Interconnects) 버스, 이들의 임의의 결합 등을 포함할 수 있다.
컴퓨터(802)는 일반적으로, 다양한 프로세서-액세스가능한 매체를 포함한다. 그러한 매체는 컴퓨터(802) 또는 다른 (예를 들어, 전자) 장치에 의해 액세스가능한 임의의 이용가능한 매체일 수 있으며, 그것은 휘발성과 비휘발성 매체, 분리형과 비분리형 매체, 및 저장과 전송 매체 둘 다를 포함한다.
시스템 메모리(806)는 RAM(810)과 같은 휘발성 메모리, 및/또는 ROM(812)과 같은 비휘발성 메모리 형태의 프로세서-액세스가능한 저장 매체를 포함한다. 시작 동안 등에, 컴퓨터(802) 내의 구성요소들 간의 정보의 전송을 돕는 기본 루틴을 포함하는 기본 입/출력 시스템(BIOS)(814)은 일반적으로 ROM 내에 저장된다. RAM(810)은 일반적으로, 프로세싱 유닛(804)에 의해 즉시 액세스가능하고/하거나 현재 동작중인 데이터 및/또는 프로그램 모듈/명령어를 포함한다.
컴퓨터(802)는 또한, 다른 분리형/비분리형 및/또는 휘발성/비휘발성 저장 매체를 포함할 수 있다. 예를 들어, 도 8은, (일반적으로) 비분리형 비휘발성 자기 매체(별도로 도시되지 않음)에 대해 판독 및 기록하기 위한 하드 디스크 드라이브 또는 디스크 드라이브 배열(816); (일반적으로) 분리형, 비휘발성 자기 디스크(820)(예를 들어, "플로피 디스크")에 대해 판독 및 기록하기 위한 자기 디스크 드라이브(818); (일반적으로) CD, DVD 또는 그 외의 광 매체와 같은 분리형, 비휘발성 광 디스크(824)에 대해 판독 및/또는 기록하기 위한 광 디스크 드라이브(822)를 도시한다. 하드 디스크 드라이브(816), 자기 디스크 드라이브(818) 및 광 디스크 드라이브(822)는 각각, 하나 이상의 저장 매체 인터페이스(826)에 의해 시스템 버스(808)에 접속된다. 다르게, 하드 디스크 드라이브(816), 자기 디스크 드라이브(818) 및 광 디스크 드라이브(822)는 하나 이상의 다른 분리되거나 결합된 인터페이스(도시되지 않음)에 의해 시스템 버스(808)에 접속될 수 있다.
디스크 드라이브 및 관련된 프로세서-액세스가능한 매체는 데이터 구조, 프로그램 모듈, 및 컴퓨터(802)에 대한 다른 데이터와 같은 프로세서-실행가능 명령어의 비휘발성 저장을 제공한다. 예시적인 컴퓨터(802)는 하드 디스크(816), 분리형 자기 디스크(820) 및 분리형 광 디스크(824)를 도시하지만, 자기 카세트 또는 다른 자기 저장 장치, 플래시 메모리, 컴팩트 디스크(CD), DVD 또는 다른 광 저장장치, RAM, ROM, EEPROM(electrically-erasable programmable read-only memories) 등과 같은 다른 유형의 프로세서-액세스가능한 매체가 장치에 의해 액세스가능한 명령어를 저장할 수 있다는 것을 이해해야 한다. 그러한 매체는 또한, 소위 특수 목적 또는 유선 IC 칩을 포함할 수 있다. 다시 말하면, 임의의 프로세서-액세스가능한 매체는 예시적인 오퍼레이팅 환경(800)의 저장 매체를 실현하는 데 이용될 수 있다.
임의의 수의 프로그램 모듈(또는, 명령어/코드의 다른 유닛 또는 집합)은 하드 디스크(816), 자기 디스크(820), 광 디스크(824), ROM(812) 및/또는 RAM(810) 상에 저장될 수 있다. 이들 프로그램 모듈은 일반적인 예로, 오퍼레이팅 시스템(828), 하나 이상의 어플리케이션 프로그램(830), 다른 프로그램 모듈(832) 및 프로그램 데이터(834)를 포함할 수 있다.
사용자는 키보드(836) 및 포인팅 장치(838)(예를 들어, "마우스")와 같은 입력 장치를 통해 명령어 및/또는 정보를 컴퓨터(802)에 입력할 수 있다. 기타 입력 장치(840)(특별히 도시되지 않음)로는, 마이크로폰, 조이스틱, 게임 패드, 위성 접시, 직렬 포트, 스캐너 등이 있다. 이러한 입력 장치 및 그 외의 입력 장치는 시스템 버스(808)에 연결되는 입/출력 인터페이스(842)를 통해 프로세싱 유닛(804)에 접속된다. 그러나, 입력 장치 및/또는 출력 장치는 대신에, 병렬 포트, 게임 포트, USB 포트, 적외선 포트, IEEE 1394("파이어와이어")포트, IEEE 802.11 무선 인터페이스, 블루투스® 무선 인터페이스 등과 같은 다른 인터페이스 및 버스 구조에 의해 접속될 수 있다.
모니터/뷰 스크린(844) 또는 다른 유형의 디스플레이 장치도 비디오 어댑터(846)와 같은 인터페이스를 통해 시스템 버스(808)에 접속될 수 있다. 비디오 어댑터(846)(또는 다른 컴포넌트)는 그래픽-집약적 계산을 프로세싱하고, 요구하는 디스플레이 요건을 핸들링하기 위한 그래픽 카드일 수도 있고 그것을 포함할 수도 있다. 일반적으로, 그래픽 카드는 그래픽의 신속한 디스플레이 및 그래픽 동작의 수행을 용이하게 하기 위해, GUP(graphics processing unit) VRAM(video RAM) 등을 포함한다. 모니터(844) 외에, 다른 출력 주변 장치는 입/출력 인터페이스(842)를 통해 컴퓨터(802)에 접속될 수 있는 스피커(도시되지 않음) 및 프린터(848)와 같은 컴포넌트를 포함할 수 있다.
컴퓨터(802)는 원격 컴퓨팅 장치(850)와 같은 하나 이상의 원격 컴퓨터로의 로컬 접속을 이용하여 네트워크 환경에서 동작할 수 있다. 예를 들어, 원격 컴퓨팅 장치(850)는 개인용 컴퓨터, 휴대용 컴퓨터(예를 들어, 랩탑 컴퓨터, 태블릿 컴퓨터, PDA, 이동국 등), 팜 또는 포켓-크기의 컴퓨터, 시계, 게이밍 장치, 서버, 라우터, 네트워크 컴퓨터, 피어 장치, 다른 네트워크 노드, 또는 상기 나열된 다른 장치 유형 등일 수 있다. 그러나, 원격 컴퓨팅 장치(850)는 컴퓨터(802)에 관하여 본 명세서에서 설명된 구성요소 및 특징들 중 다수 또는 전부를 포함할 수 있는 휴대용 컴퓨터로서 도시된다.
컴퓨터(802)와 원격 컴퓨터(850) 간의 논리적 접속은 LAN(852)과 일반적인 WAN(854)으로서 도시된다. 그러한 네트워크 환경은 사무실, 기업형, 컴퓨터 네트워크, 인트라넷, 인터넷, 고정 및 이동 전화 네트워크, 애드-혹(ad-hoc) 및 인프라구조 무선 네트워크, 다른 무선 네트워크, 게이밍 네트워크, 이들의 임의의 결합 등에서 흔하다. 그러한 네트워크 및 통신 접속은 전송 매체의 예이다.
LAN 네트워크 환경에서 구현될 때, 컴퓨터(802)는 보통, 네트워크 인터페이스 또는 어댑터(856)를 통해 LAN(852)에 접속된다. WAN 네트워크 환경에서 구현될 때, 컴퓨터(802)는 일반적으로, WAN(854)을 통한 통신을 설정하기 위한 모뎀(858) 또는 다른 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(858)은 입/출력 인터페이스(842) 또는 임의의 다른 적절한 메커니즘(들)을 통해 시스템 버스(808)에 접속될 수 있다. 도시된 네트워크 접속은 예시적이며, 컴퓨터(802)와 컴퓨터(850) 간의 통신 링크(들)를 설정하기 위한 다른 수단이 채용될 수 있음을 이해해야 한다.
또한, 특별히 서버에 대해 설계된 다른 하드웨어가 채용될 수 있다. 예를 들어, SSL 가속 카드는 SSL 계산을 오프로드(offload)하는 데 사용될 수 있다. 또한, 특히 네트워크 부하 균형 오퍼레이팅 환경에서, 네트워크 인터페이스 또는 어댑터(856) 상의(예를 들어, 네트워크 인터페이스 카드 상의) TCP 오프로드 하드웨어 및/또는 패킷 분류기가 서버 장치에 설치되고 사용될 수 있다.
오퍼레이팅 환경(800)으로 설명된 것과 같은 네트워크 환경에서, 컴퓨터(802) 및 그것의 일부분에 관해 설명된 프로그램 모듈 또는 다른 명령어는 원격 매체 저장 장치 내에 전체 또는 부분적으로 저장될 수 있다. 예를 들어, 원격 어플리케이션 프로그램(860)은 원격 컴퓨터(850)의 메모리 컴포넌트 상에 상주하지만, 컴퓨터(802)를 통해 사용가능하거나 액세스가능할 수 있다. 또한, 설명의 목적상, 어플리케이션 프로그램(830), 및 오퍼레이팅 시스템(828)과 같은 다른 프로세서-실행가능 명령어는 본 명세서에서 분리된 블럭으로서 도시되지만, 그러한 프로그램, 컴포넌트 및 다른 명령어들은 여러 번, 컴퓨팅 장치(802)(및/또는 원격 컴퓨팅 장치(850))의 서로 다른 저장 컴포넌트 내에 상주되고, 컴퓨터(802)의 프로세서(들)(804)(및/또는 원격 컴퓨팅 장치(850)의 프로세서들)에 의해 실행된다는 것을 인지해야 한다.
시스템, 매체, 장치, 방법, 프로시저, 기기, 기술, 스킴, 접근, 프로세저, 배열 및 다른 구현이 구조적, 논리적, 알고리즘적, 기능적 특징 및/또는 도면에 특정적인 언어로 설명되었지만, 첨부된 청구범위에 정의된 본 발명은 반드시, 설명된 특정 특징 또는 도면에 제한되는 것은 아님을 이해해야 한다. 오히려, 특정 특징 및 도면은 주장된 발명을 구현하는 예시적인 형태로서 개시된다.

Claims (89)

  1. 프로세서-실행가능 명령어들을 포함하는 하나 이상의 프로세서-액세스가능 매체로서,
    상기 프로세서-실행가능 명령어들은 실행 시, 장치가
    호스트 식별자를 이용하여 세션 식별자를 생성하는 단계, 및
    상기 생성된 세션 식별자를 갖는 호스트 세션 개시 메시지를 공식화(formulating)하는 단계
    를 수행하도록 지시하는 하나 이상의 프로세서-액세스가능 매체.
  2. 제1항에 있어서,
    상기 프로세서-실행가능 명령어들은 실행 시, 상기 장치가
    상기 생성된 세션 식별자를 포함하는 공식화된 호스트 세션 개시 메시지를 상기 장치로부터 송신하는 단계
    를 더 수행하도록 지시하는 하나 이상의 프로세서-액세스가능 매체.
  3. 제1항에 있어서,
    상기 프로세서-실행가능 명령어들은 실행 시, 상기 장치가
    클라이언트 세션 메시지를 수신하는 단계, 및
    상기 수신된 클라이언트 세션 메시지가 수신된 세션 식별자를 포함하는지를 판정하는 단계
    를 더 수행하도록 지시하는 하나 이상의 프로세서-액세스가능 매체.
  4. 제3항에 있어서,
    상기 프로세서-실행가능 명령어들은 실행 시, 상기 장치가
    상기 수신된 클라언트 세션 메시지가 수신된 세션 식별자를 포함하지 않는 것으로 판정되는 경우, 상기 생성하는 단계 및 공식화하는 단계를 수행하는 단계
    를 더 수행하도록 지시하는 하나 이상의 프로세서-액세스가능 매체.
  5. 제3항에 있어서,
    상기 프로세서-실행가능 명령어들은 실행 시, 상기 장치가
    상기 수신된 클라이언트 세션 메시지가 수신된 세션 식별자를 포함하는 것으로 판정되는 경우,
    상기 수신된 세션 식별자를 갖는 호스트 세션 지속 메시지를 공식화하는 단계, 및
    상기 수신된 세션 식별자를 포함하는 공식화된 호스트 세션 지속 메시지를 송신하는 단계
    를 더 수행하도록 지시하는 하나 이상의 프로세서-액세스가능 매체.
  6. 제1항에 있어서,
    상기 공식화하는 단계는, 상기 생성된 세션 식별자를 호스트 세션 메시지의 세션 식별자 필드 내에 삽입하여, 상기 공식화된 호스트 세션 개시 메시지를 생성하는 단계를 포함하는 하나 이상의 프로세서-액세스가능 매체.
  7. 제6항에 있어서,
    상기 공식화하는 단계는, 상기 호스트 세션 메시지의 복수의 다른 필드들을 채워서, 상기 공식화된 호스트 세션 개시 메시지를 생성하는 단계를 더 포함하는 하나 이상의 프로세서-액세스가능 매체.
  8. 제1항에 있어서,
    상기 생성하는 단계는, 상기 호스트 식별자를 상기 생성된 세션 식별자의 적어도 일부분으로서 포함시킴으로써 상기 세션 식별자를 생성하는 단계를 포함하는 하나 이상의 프로세서-액세스가능 매체.
  9. 제1항에 있어서,
    상기 생성하는 단계는, 상기 호스트 식별자를 상기 생성된 세션 식별자의 일부분으로서 포함시킴으로써 상기 세션 식별자를 생성하는 단계를 포함하고,
    상기 호스트 식별자는 장치 식별자를 포함하는 하나 이상의 프로세서-액세스가능 매체.
  10. 제9항에 있어서,
    상기 장치 식별자는 네트워크 주소, 및 상기 네트워크 주소에 매핑되는 키 중 적어도 하나를 포함하는 하나 이상의 프로세서-액세스가능 매체.
  11. 제1항에 있어서,
    상기 생성하는 단계는, 상기 호스트 식별자를 상기 생성된 세션 식별자의 일부분으로서 포함시킴으로써 상기 세션 식별자를 생성하는 단계를 포함하고,
    상기 호스트 식별자는 장치 식별자 및 어플리케이션 식별자를 포함하는 하나 이상의 프로세서-액세스가능 매체.
  12. 제1항에 있어서,
    상기 생성하는 단계는, 상기 호스트 식별자를 상기 생성된 세션 식별자의 일부분으로서 포함시킴으로써 상기 세션 식별자를 생성하는 단계를 포함하고,
    상기 호스트 식별자는 네트워크 주소에 매핑되는 키, 및 어플리케이션 식별자를 포함하는 하나 이상의 프로세서-액세스가능 매체.
  13. 제1항에 있어서,
    상기 생성하는 단계는, 상기 생성된 세션 식별자의 최상위 부분 또는 최하위 부분으로부터의 소정의 오프셋에 상기 호스트 식별자를 삽입함으로써 상기 세션 식별자를 생성하는 단계를 포함하는 하나 이상의 프로세서-액세스가능 매체.
  14. 제1항에 있어서,
    상기 생성하는 단계는, 상기 생성된 세션 식별자에 상기 호스트 식별자를 분산(dispersing)시키는 것과 확산(spreading)하는 것 중 적어도 하나를 행함으로써 상기 세션 식별자를 생성하는 단계를 포함하는 하나 이상의 프로세서-액세스가능 매체.
  15. 제1항에 있어서,
    상기 프로세서-실행가능 명령어들 중 적어도 일부분은 서버 프로그램의 적어도 일부분을 포함하는 하나 이상의 프로세서-액세스가능 매체.
  16. 제1항에 있어서,
    상기 프로세서-실행가능 명령어들 중 적어도 일부분은 오퍼레이팅 시스템 프로그램의 적어도 일부분을 포함하는 하나 이상의 프로세서-액세스가능 매체.
  17. 제1항에 있어서,
    상기 하나 이상의 프로세서-액세스가능한 매체는 (ⅰ) 하나 이상의 저장 매체와 (ⅱ)하나 이상의 전송 매체 중 적어도 하나를 포함하는 하나 이상의 프로세서-액세스가능 매체.
  18. 적어도 하나의 프로세서; 및
    상기 적어도 하나의 프로세서에 의해 실행될 수 있는 프로세서-실행가능 명령어들을 포함하는 하나 이상의 매체
    를 포함하고,
    상기 프로세서-실행가능 명령어들은 장치에
    호스트 식별자에 응답하여 생성되는 세션 식별자를 갖는 호스트 세션 메시지를 공식화하는 단계; 및
    상기 세션 식별자를 포함하는 공식화된 호스트 세션 메시지를 상기 장치로부터 송신하는 단계
    를 수행할 것을 지시하도록 적응된 장치.
  19. 제18항에 있어서,
    상기 호스트 세션 메시지는 호스트 세션 개시 메시지를 포함하는 장치.
  20. 제18항에 있어서,
    상기 호스트 세션 메시지는 호스트 세션 지속 메시지를 포함하는 장치.
  21. 제18항에 있어서,
    상기 호스트 식별자는 상기 장치에 관련지어지는 장치.
  22. 제18항에 있어서,
    상기 프로세서-실행가능 명령어들은 상기 장치에,
    상기 호스트 식별자에 응답하여 상기 세션 식별자를 생성하는 단계
    를 더 수행할 것을 지시하도록 적응된 장치.
  23. 제22항에 있어서,
    상기 생성하는 단계는, 상기 호스트 식별자, 및 무작위 선택된 값, 증가하는 카운터로부터의 값, 보안-관련된 값 및 해싱된 값을 포함하는 그룹으로부터 선택된 적어도 하나의 값을 이용하여, 상기 세션 식별자를 생성하는 단계를 포함하는 장치.
  24. 제18항에 있어서,
    상기 송신하는 단계는, 상기 세션 식별자를 포함하는 공식화된 호스트 세션 메시지를 상기 장치로부터 클라이언트를 향해 송신하는 단계를 포함하는 장치.
  25. 제18항에 있어서,
    상기 송신하는 단계는, 네트워크 게이트웨이를 통해, 상기 장치가 접속되어 있는 인트라넷을 거쳐, 상기 세션 식별자를 포함하는 공식화된 호스트 세션 메시지를 상기 장치로부터 클라이언트를 향해 송신하는 단계를 포함하는 장치.
  26. 제18항에 있어서,
    상기 프로세서-실행가능 명령어들은 상기 장치에
    클라이언트 세션 메시지를 수신하는 단계; 및
    상기 수신된 클라이언트 세션 메시지가 수신된 세션 식별자를 포함하는지를 판정하는 단계
    를 더 수행할 것을 지시하도록 적응된 장치.
  27. 제26항에 있어서,
    상기 프로세서-실행가능 명령어들은 상기 장치에
    상기 수신된 클라이언트 세션 메시지가 수신된 세션 식별자를 포함하지 않는 것으로 판정되는 경우, 상기 공식화하는 단계 및 송신하는 단계를 수행하는 단계
    를 더 수행할 것을 지시하도록 적응된 장치.
  28. 제26항에 있어서,
    상기 프로세서-실행가능 명령어들은 상기 장치에
    상기 수신된 클라이언트 세션 메시지가 수신된 세션 식별자를 포함하는 것으로 판정되는 경우,
    상기 수신된 세션 식별자를 갖는 호스트 세션 지속 메시지를 공식화하는 단계; 및
    상기 수신된 세션 식별자를 포함하는 상기 공식화된 호스트 세션 지속 메시 지를 상기 장치로부터 송신하는 단계
    를 더 수행할 것을 지시하도록 적응된 장치.
  29. 제18항에 있어서,
    상기 공식화하는 단계는, 상기 세션 식별자를 상기 호스트 세션 메시지의 세션 식별자 필드에 삽입하여 상기 공식화된 호스트 세션 메시지를 생성하는 단계를 포함하는 장치.
  30. 제18항에 있어서,
    상기 장치는 호스트 장치 및/또는 서버 장치를 포함하는 장치.
  31. 제18항에 있어서,
    상기 하나 이상의 매체는 상기 호스트 식별자를 저장하는 장치.
  32. 제18항에 있어서,
    상기 공식화된 호스트 세션 메시지는 (ⅰ) 보안 소켓 계층(SSL) 표준과 (ⅱ) 전송 계층 보안(TLS) 중 적어도 하나에 적합한 장치.
  33. 데이터 구조를 포함하는 하나 이상의 프로세서-액세스가능 매체로서,
    상기 데이터 구조는 세션 식별자 필드를 포함하는 메시지를 포함하고,
    상기 세션 식별자 필드의 적어도 일부분은 호스트 식별자를 포함하는 하나 이상의 프로세서-액세스가능 매체.
  34. 제33항에 있어서,
    상기 메시지는 복수의 필드를 더 포함하고,
    상기 복수의 필드는 소스 주소 필드 및 목적 주소 필드를 갖는 하나 이상의 프로세서-액세스가능 매체.
  35. 제33항에 있어서,
    상기 메시지는 복수의 필드를 더 포함하고,
    상기 복수의 필드는 상기 메시지를 공식화하는 세션 참가자에 의해 어떤 암호 옵션이 지원되는지를 나타내는 암호 필드를 갖는 하나 이상의 프로세서-액세스가능 매체.
  36. 제33항에 있어서,
    상기 호스트 식별자는 장치 식별자 및 어플리케이션 식별자를 포함하는 하나 이상의 프로세서-액세스가능 매체.
  37. 제36항에 있어서,
    상기 장치 식별자는 네트워크 주소를 포함하는 하나 이상의 프로세서-액세스 가능 매체.
  38. 제36항에 있어서,
    상기 장치 식별자는 네트워크 주소에 매핑될 수 있는 키를 포함하는 하나 이상의 프로세서-액세스가능 매체.
  39. 제33항에 있어서,
    상기 호스트 식별자는 상기 세션 식별자 필드의 최상위 부분으로부터의 소정의 오프셋에 배치되는 하나 이상의 프로세서-액세스가능 매체.
  40. 제33항에 있어서,
    상기 호스트 식별자는 장치 식별자를 포함하는 하나 이상의 프로세서-액세스가능 매체.
  41. 제40항에 있어서,
    상기 장치 식별자는 네트워크 주소를 포함하는 하나 이상의 프로세서-액세스가능 매체.
  42. 제41항에 있어서,
    상기 네트워크 주소는 인트라넷 주소를 포함하는 하나 이상의 프로세서-액세 스가능 매체.
  43. 제40항에 있어서,
    상기 장치 식별자는 네트워크 주소에 매핑될 수 있는 키를 포함하는 하나 이상의 프로세서-액세스가능 매체.
  44. 제33항에 있어서,
    상기 호스트 식별자는 네트워크 주소 및 어플리케이션 식별자에 매핑될 수 있는 키를 포함하는 하나 이상의 프로세서-액세스가능 매체.
  45. 제33항에 있어서,
    상기 호스트 식별자는 상기 세션 식별자 필드에 분산된 것 및 확산된 것 중 적어도 하나인 하나 이상의 프로세서-액세스가능 매체.
  46. 제33항에 있어서,
    상기 데이터 구조의 적어도 일부분은 세션-기반의 프로토콜에 따라 공식화된 통신의 적어도 일부분을 포함하는 하나 이상의 프로세서-액세스가능 매체.
  47. 제33항에 있어서,
    상기 데이터 구조의 적어도 일부분은 보안 프로토콜에 따라 공식화된 통신의 적어도 일부분을 포함하는 하나 이상의 프로세서-액세스가능 매체.
  48. 제47항에 있어서,
    상기 보안 프로토콜은 (ⅰ) 보안 소켓 계층(SSL) 표준과 (ⅱ)전송 계층 보안(TLS) 표준 중 적어도 하나에 적합한 하나 이상의 프로세서-액세스가능 매체.
  49. 제33항에 있어서,
    상기 메시지는 클라이언트 헬로우 메시지와 서버 헬로우 메시지 중 적어도 하나를 포함하는 하나 이상의 프로세서-액세스가능 매체.
  50. 제33항에 있어서,
    상기 하나 이상의 프로세서-액세스가능 매체는 (ⅰ) 하나 이상의 저장 매체와 (ⅱ) 하나 이상의 전송 매체 중 적어도 하나를 포함하는 하나 이상의 프로세서-액세스가능 매체.
  51. 적어도 하나의 프로세서; 및
    상기 적어도 하나의 프로세서에 의해 실행될 수 있는 프로세서-실행가능 명령어들을 포함하는 하나 이상의 매체
    를 포함하고,
    상기 프로세서-실행가능 명령어들은 상기 장치에
    호스트로부터 호스트 세션 개시 메시지를 수신하는 단계 - 상기 호스트 세션 개시 메시지는 호스트 식별자를 포함하는 세션 식별자 필드를 가짐 - ; 및
    상기 호스트를 향해 클라이언트 세션 지속 메시지를 송신하는 단계 - 상기 클라이언트 세션 지속 메시지는 상기 호스트 식별자를 포함하는 세션 식별자 필드를 가짐 -
    를 수행할 것을 지시하도록 적응된 장치.
  52. 제51항에 있어서,
    상기 프로세서-실행가능 명령어들은 상기 장치에
    상기 수신하는 단계 전에 상기 호스트를 향해 클라이언트 세션 개시 메시지를 송신하는 단계
    를 수행할 것을 지시하도록 적응된 장치.
  53. 제51항에 있어서,
    상기 세션 식별자 필드는 상기 호스트 식별자를 포함하는 세션 식별자로 채워지고,
    상기 프로세서-실행가능 명령어들은 상기 장치에 상기 호스트 식별자를 포함하는 상기 세션 식별자를 보유하는 단계를 더 수행할 것을 지시하도록 적응된 장치.
  54. 제53항에 있어서,
    상기 하나 이상의 매체는 상기 호스트 식별자를 포함하는 상기 보유된 세션 식별자를 저장하는 장치.
  55. 제51항에 있어서,
    상기 장치는 클라이언트 장치를 포함하는 장치.
  56. 라우팅 힌트(routing hint)를 위한 방법으로서,
    수신된 세션 식별자를 포함하지 않는 세션 메시지를 클라이언트로부터 수신하는 단계;
    상기 수신된 세션 메시지에 응답하여, 호스트 식별자를 이용하여 세션 식별자를 생성하는 단계;
    상기 생성된 세션 식별자가 할당되는 세션을 설정하는 단계; 및
    상기 생성된 세션 식별자를 포함하는 세션 메시지를 공식화하는 단계
    를 포함하는 방법.
  57. 제56항에 있어서,
    상기 생성된 세션 식별자를 포함하는 상기 공식화된 세션 메시지를 네트워크 게이트웨이를 통해 상기 클라이언트를 향해 송신하는 단계를 더 포함하는 방법.
  58. 제57항에 있어서,
    상기 수신된 세션 식별자를 포함하지 않는 상기 세션 메시지를 상기 클라이언트로부터 송신하는 단계;
    상기 클라이언트에서, 상기 생성된 세션 식별자를 포함하는 상기 공식화된 세션 메시지를 수신하는 단계;
    상기 클라이언트에서 상기 생성된 세션 식별자를 보유하는 단계; 및
    상기 생성되고 보유된 세션 식별자를 포함하는 세션 메시지를 상기 클라이언트로부터 송신하는 단계
    를 더 포함하는 방법.
  59. 제57항에 있어서,
    상기 생성된 세션 식별자를 포함하는 세션 메시지를 상기 클라이언트로부터 수신하는 단계;
    상기 생성되고 수신된 세션 식별자가 할당된 세션을 재시작하는 단계;
    상기 생성된 세션 식별자를 포함하는 상기 수신된 세션 메시지에 응답하여,상기 생성되고 수신된 세션 식별자를 포함하는 세션 메시지를 공식화하는 단계; 및
    상기 세션이 지속될 수 있음을 나타내기 위해, 상기 네트워크 게이트웨이를 통해 상기 클라이언트를 향해 상기 생성되고 수신된 세션 식별자를 포함하는 상기 공식화된 세션 메시지를 송신하는 단계
    를 더 포함하는 방법.
  60. 실행 시, 기기가 제56항에 따른 방법을 수행하도록 지시하는 프로세서-실행가능 명령어들을 포함하는 하나 이상의 프로세서-액세스가능 매체.
  61. 호스트 식별자; 및
    상기 호스트 식별자를 이용하여 세션 식별자를 생성하도록 적응된 세션 식별자 생성자
    를 포함하는 장치.
  62. 제61항에 있어서,
    들어오는 세션 메시지를 수용하고, 상기 들어오는 세션 메시지가 기존 세션에 대한 기존의 세션 식별자를 포함하는지를 판정할 수 있는 메시지 핸들러 - 상기 메시지 핸들러는, 들어오는 세션 메시지가 기존 세션 식별자를 갖지 않다고 판정될 때, 상기 세션 식별자 생성자를 활성화하도록 적응됨 -
    를 더 포함하는 장치.
  63. 제62항에 있어서,
    상기 메시지 핸들러는 상기 생성된 세션 식별자를 호스트 세션 개시 메시지에 대한 세션 식별자 필드에 삽입함으로써 상기 호스트 세션 개시 메시지를 적어도 부분적으로 공식화하도록 적응된 장치.
  64. 제61항에 있어서,
    상기 생성된 세션 식별자가 할당되는 세션 문맥을 더 포함하는 장치.
  65. 프로세서-실행가능 명령어들을 포함하는 하나 이상의 프로세서-액세스가능 매체로서,
    상기 프로세서-실행가능 명령어들은 실행 시, 기기가
    세션 메시지의 세션 식별자 필드로부터 호스트 식별자를 확인하는 단계; 및
    상기 확인된 호스트 식별자에 응답하여 상기 세션 메시지를 라우팅하는 단계
    를 수행하도록 지시하는 하나 이상의 프로세서-액세스가능 매체.
  66. 제65항에 있어서,
    상기 확인하는 단계는 상기 세션 메시지의 상기 세션 식별자 필드로부터 상기 호스트 식별자를 연속적인 블럭으로서 추출하는 단계를 포함하는 하나 이상의 프로세서-액세스가능 매체.
  67. 제65항에 있어서,
    상기 라우팅하는 단계는,
    상기 확인된 호스트 식별자로 테이블에 액세스하여, 상기 확인된 호스트 식별자를 포함하는 엔트리의 위치를 알아내는 단계; 및
    상기 위치발견된 엔트리에서 상기 확인된 호스트 식별자에 링크되어 있는 네트워크 주소를 결정하는 단계
    를 포함하는 하나 이상의 프로세서-액세스가능 매체.
  68. 제65항에 있어서,
    상기 라우팅하는 단계는,
    상기 확인된 호스트 식별자로 테이블에 액세스하여, 상기 확인된 호스트 식별자를 포함하는 엔트리의 위치를 알아내는 단계; 및
    상기 위치발견된 엔트리에서 상기 확인된 호스트 식별자에 링크되어 있는 네트워크 주소 및 어플리케이션 식별자를 결정하는 단계
    를 포함하는 하나 이상의 프로세서-액세스가능 매체.
  69. 제65항에 있어서,
    상기 프로세서-실행가능 명령어들의 적어도 일부분은 라우팅, 방화벽 및/또는 네트워크 부하 균형 소프트웨어 중 적어도 일부분을 포함하는 하나 이상의 프로세서-액세스가능 매체.
  70. 제65항에 있어서,
    상기 라우팅하는 단계는 상기 확인된 호스트 식별자를 적어도 하나의 네트워크 주소에 매핑하는 단계를 포함하는 하나 이상의 프로세서-액세스가능 매체.
  71. 제70항에 있어서,
    상기 매핑하는 단계는 상기 확인된 호스트 식별자를 이용하여 테이블에서 상기 네트워크 주소를 룩업(look up)하는 단계를 포함하는 하나 이상의 프로세서-액세스가능 매체.
  72. 제70항에 있어서,
    상기 매핑하는 단계는 상기 확인된 호스트 식별자로부터 상기 네트워크 주소를 계산하는 단계를 포함하는 하나 이상의 프로세서-액세스가능 매체.
  73. 제72항에 있어서,
    상기 계산하는 단계는 상기 확인된 호스트 식별자로부터 상기 네트워크 주소를 계산하는 공식을 따르는 단계를 포함하는 하나 이상의 프로세서-액세스가능 매체.
  74. 제72항에 있어서,
    상기 계산하는 단계는 상기 확인된 호스트 식별자로부터 상기 네트워크 주소를 계산하는 알고리즘을 구현하는 단계를 포함하는 하나 이상의 프로세서-액세스가능 매체.
  75. 적어도 하나의 프로세서; 및
    상기 적어도 하나의 프로세서에 의해 실행될 수 있는 프로세서-실행가능 명령어들을 포함하는 하나 이상의 매체
    를 포함하고,
    상기 프로세서-실행가능 명령어들은 기기에
    호스트 식별자를 포함하는 세션 식별자를 갖는 세션 메시지를 수신하는 단계; 및
    상기 호스트 식별자에 응답하여 상기 세션 메시지를 라우팅하는 단계
    를 수행할 것을 지시하도록 적응된 기기.
  76. 제75항에 있어서,
    상기 수신하는 단계는 상기 세션 식별자를 갖는 상기 세션 메시지를 클라이언트로부터 수신하는 단계를 포함하고,
    상기 세션 메시지는 호스트에 관련지어진 세션 문맥에 속하고, 상기 호스트는 상기 호스트 식별자에 관련지어진 기기.
  77. 제75항에 있어서,
    상기 프로세서-실행가능 명령어들은 상기 기기에
    상기 호스트 식별자에 관련지어진 호스트로의 라우팅에 기초하여, 상기 기기로부터 상기 세션 메시지를 송신하는 단계
    를 수행할 것을 지시하도록 적응된 기기.
  78. 제75항에 있어서,
    상기 프로세서-실행가능 명령어들은 상기 기기에
    인트라넷 상에서의 상기 호스트 식별자에 관련지어진 호스트로의 라우팅에 기초하여, 상기 기기로부터 상기 세션 메시지를 송신하는 단계
    를 수행할 것을 지시하도록 적응된 기기.
  79. 제75항에 있어서,
    상기 프로세서-실행가능 명령어들은 상기 기기에
    수신된 세션 메시지가 수신된 세션 식별자를 포함하는지를 판정하는 단계
    를 더 수행할 것을 지시하도록 적응된 기기.
  80. 제79항에 있어서,
    상기 프로세서-실행가능 명령어들은 상기 기기에
    상기 수신된 세션 메시지가 수신된 세션 식별자를 포함한다고 판정되는 경우, 상기 수신된 세션 식별자의 적어도 일부분으로서 포함되는 수신된 호스트 식별자에 응답하여, 상기 수신된 세션 메시지를 라우팅하는 단계
    를 더 수행할 것을 지시하도록 적응된 기기.
  81. 제79항에 있어서,
    상기 프로세서-실행가능 명령어들은 상기 기기에
    상기 수신된 세션 메시지가 수신된 세션 식별자를 포함하지 않는다고 판정되는 경우, 상기 수신된 세션 메시지를 적어도 하나의 디폴트 라우팅 정책에 따라 라우팅하는 단계
    를 더 수행할 것을 지시하도록 적응된 기기.
  82. 제75항에 있어서,
    상기 하나 이상의 매체는 각각의 호스트 식별자를 적어도 각각의 네트워크 주소에 링크시키는 하나 이상의 테이블을 더 포함하고,
    상기 라우팅은 적어도 부분적으로 상기 하나 이상의 테이블에 액세스함으로써 수행되는 기기.
  83. 제75항에 있어서,
    상기 기기는 복수의 장치를 포함하는 기기.
  84. 세션 식별자 필드를 갖는 세션-관련 메시지를 수용할 수 있고,
    상기 세션 식별자 필드를 채우는 값으로부터 호스트 식별자를 추출하도록 적응되고,
    상기 호스트 식별자를 이용하여 상기 세션-관련 메시지에 대한 라우팅 동작 을 수행하도록 더 적응된 네트워크 게이트웨이.
  85. 제84항에 있어서,
    상기 세션 식별자 필드를 채우는 값은 세션 식별자를 포함하는 네트워크 게이트웨이.
  86. 제84항에 있어서,
    상기 네트워크 게이트웨이는 라우터, 방화벽 장치, 프록시 및 네트워크 부하 균형 장치 중 적어도 하나를 포함하는 네트워크 게이트웨이.
  87. 제84항에 있어서,
    상기 네트워크 게이트웨이는 적어도 하나의 호스트 식별자-대-네트워크 주소 링크 테이블을 이용하여, 상기 라우팅 동작을 수행하도록 더 적응된 네트워크 게이트웨이.
  88. 제84항에 있어서,
    상기 네트워크 게이트웨이는 네트워크 주소로의 상기 호스트 식별자의 매핑으로 상기 라우팅 동작을 수행하도록 더 적응된 네트워크 게이트웨이.
  89. 제84항에 있어서,
    상기 네트워크 게이트웨이는 상기 호스트 식별자를 하나 이상의 패킷의 목적 주소 필드에 삽입함으로써 상기 라우팅 동작을 수행하도록 더 적응된 네트워크 게이트웨이.
KR1020067001629A 2003-08-13 2003-08-18 라우팅 힌트를 제공하기 위한 방법, 장치 및 프로세서-액세스가능 기록매체 KR101026600B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US10/639,516 2003-08-13
US10/639,727 2003-08-13
US10/639,516 US7882251B2 (en) 2003-08-13 2003-08-13 Routing hints
US10/639,727 US8266294B2 (en) 2003-08-13 2003-08-13 Routing hints

Publications (2)

Publication Number Publication Date
KR20060070529A true KR20060070529A (ko) 2006-06-23
KR101026600B1 KR101026600B1 (ko) 2011-04-04

Family

ID=34221832

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067001629A KR101026600B1 (ko) 2003-08-13 2003-08-18 라우팅 힌트를 제공하기 위한 방법, 장치 및 프로세서-액세스가능 기록매체

Country Status (14)

Country Link
EP (1) EP1654665A4 (ko)
JP (2) JP2007521684A (ko)
KR (1) KR101026600B1 (ko)
AU (1) AU2003263873B2 (ko)
BR (1) BR0318416A (ko)
CA (1) CA2532185A1 (ko)
IL (1) IL173157A (ko)
MX (1) MXPA06001530A (ko)
MY (1) MY144263A (ko)
NO (1) NO20060471L (ko)
NZ (1) NZ544663A (ko)
RU (1) RU2365046C2 (ko)
TW (1) TWI337822B (ko)
WO (1) WO2005020085A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100825724B1 (ko) * 2005-12-08 2008-04-29 한국전자통신연구원 직접접속방식을 적용하는 고속 전송이 가능한PMEM(PCI Memory)를 이용한 객체 기반저장시스템 및 그 시스템에서의 전송 방법

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8266294B2 (en) 2003-08-13 2012-09-11 Microsoft Corporation Routing hints
US7882251B2 (en) 2003-08-13 2011-02-01 Microsoft Corporation Routing hints
US7340744B2 (en) * 2005-04-08 2008-03-04 Cisco Technology, Inc. System and method for optimizing sessions and network resources in a loadbalancing environment
KR100892609B1 (ko) 2007-03-22 2009-04-09 주식회사 올앳 보안 통신 시스템, 방법, 및 상기 방법을 실행시키기 위한컴퓨터 프로그램을 기록한 매체
CN101296176B (zh) * 2007-04-25 2010-12-22 阿里巴巴集团控股有限公司 一种基于群集的数据处理方法和装置
US8447881B2 (en) * 2008-09-02 2013-05-21 Microsoft Corporation Load balancing for services
JP5218323B2 (ja) * 2009-08-07 2013-06-26 富士通株式会社 中継装置及び転送ルールに関連する情報処理方法並びにプログラム
TWI396089B (zh) * 2009-10-16 2013-05-11 Moxa Inc 以參數提供多通道傳輸串列資料之裝置及其方法
ES2454548T3 (es) * 2011-03-15 2014-04-10 Amadeus S.A.S. Procedimiento y sistema para proporcionar una sesión en un entorno heterogéneo
JP2013239045A (ja) * 2012-05-15 2013-11-28 Hitachi Ltd シンクライアントシステム及びリモートアクセス方法
KR102043658B1 (ko) * 2013-08-30 2019-11-12 한국전력공사 일방향 데이터 전송 장치 및 그 방법
CN111385377B (zh) * 2020-03-03 2022-08-09 深信服科技股份有限公司 一种ip地址冲突处理方法、设备及存储介质

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05327704A (ja) * 1992-05-15 1993-12-10 Oki Electric Ind Co Ltd 一斉同報通信システム及びメッセージ生成装置
JPH1051459A (ja) * 1996-07-31 1998-02-20 Oki Electric Ind Co Ltd Atm交換機およびatmネットワークならびにマルチキャスト設定方法
US6085247A (en) * 1998-06-08 2000-07-04 Microsoft Corporation Server operating system for supporting multiple client-server sessions and dynamic reconnection of users to previous sessions using different computers
US6539494B1 (en) * 1999-06-17 2003-03-25 Art Technology Group, Inc. Internet server session backup apparatus
US6374300B2 (en) 1999-07-15 2002-04-16 F5 Networks, Inc. Method and system for storing load balancing information with an HTTP cookie
JP2001265680A (ja) * 2000-03-15 2001-09-28 Fujitsu Ltd 複数メディアのセッションを管理する装置および方法
US6947992B1 (en) * 2000-05-01 2005-09-20 International Business Machines Corporation Maintaining HTTP session affinity in a cluster environment
US7193980B2 (en) * 2000-07-06 2007-03-20 Nortel Networks Limited Continuation session attribute
JP2002176432A (ja) * 2000-12-05 2002-06-21 Sony Corp 通信中継装置、通信中継方法、および通信端末装置、並びにプログラム記憶媒体
JP2002189646A (ja) * 2000-12-22 2002-07-05 Matsushita Electric Ind Co Ltd 中継装置
JP3963690B2 (ja) * 2001-03-27 2007-08-22 富士通株式会社 パケット中継処理装置
JP2002351760A (ja) * 2001-05-30 2002-12-06 Mitsubishi Electric Corp サーバ負荷分散装置、サーバ負荷分散方法およびその方法をコンピュータに実行させるプログラム
US7406524B2 (en) * 2001-07-26 2008-07-29 Avaya Communication Isael Ltd. Secret session supporting load balancer
US7243366B2 (en) * 2001-11-15 2007-07-10 General Instrument Corporation Key management protocol and authentication system for secure internet protocol rights management architecture
US7644434B2 (en) * 2002-04-25 2010-01-05 Applied Identity, Inc. Computer security system
US7373423B2 (en) * 2002-09-11 2008-05-13 Trend Micro Incorporated Network infrastructure management and data routing framework and method thereof

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100825724B1 (ko) * 2005-12-08 2008-04-29 한국전자통신연구원 직접접속방식을 적용하는 고속 전송이 가능한PMEM(PCI Memory)를 이용한 객체 기반저장시스템 및 그 시스템에서의 전송 방법

Also Published As

Publication number Publication date
EP1654665A1 (en) 2006-05-10
AU2003263873B2 (en) 2010-04-08
JP4828619B2 (ja) 2011-11-30
RU2006104109A (ru) 2006-07-27
EP1654665A4 (en) 2010-06-30
NO20060471L (no) 2006-03-16
WO2005020085A1 (en) 2005-03-03
CA2532185A1 (en) 2005-03-03
AU2003263873A1 (en) 2005-03-10
JP2007521684A (ja) 2007-08-02
MY144263A (en) 2011-08-29
IL173157A (en) 2011-10-31
NZ544663A (en) 2008-09-26
JP2009260988A (ja) 2009-11-05
KR101026600B1 (ko) 2011-04-04
TW200507548A (en) 2005-02-16
MXPA06001530A (es) 2006-05-15
IL173157A0 (en) 2006-06-11
BR0318416A (pt) 2006-08-01
RU2365046C2 (ru) 2009-08-20
TWI337822B (en) 2011-02-21

Similar Documents

Publication Publication Date Title
US8918525B2 (en) Routing hints
JP4828619B2 (ja) ルーティングヒント
US8266294B2 (en) Routing hints
JP6360576B2 (ja) オフロードデバイスベースのパケット処理のためのフレームワークおよびインターフェース
US8244881B2 (en) Service virtualization over content-centric networks
KR101169073B1 (ko) 접속 조정을 이용한 네트워크 로드 밸런싱
US7328237B1 (en) Technique for improving load balancing of traffic in a data network using source-side related information
US20090235067A1 (en) Method and system for configuring a server and dynamically loading ssl information
JP2007195217A (ja) パケットをエンドポイントからゲートウェイにルーティングするための方法およびシステム
US8355405B2 (en) Selective session interception method
US20140310429A1 (en) Server-side http translator
WO2023116165A1 (zh) 网络负载均衡方法、装置、电子设备、介质和程序产品
US20070147376A1 (en) Router-assisted DDoS protection by tunneling replicas
Apostolopoulos et al. L5: A self learning layer 5 switch
US11818104B2 (en) Anonymous proxying
CN117318974A (zh) 用于代理设备的非转换端口超额订阅
Novo Enabling CoAP-Based Communication across Network Boundaries: Challenges and Solutions

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20140217

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150217

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160218

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170220

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20190227

Year of fee payment: 9