KR20100097694A - 다수의 아답터들을 통해서 다수의 가상 ip 어드레스를 동시에 지원하는 호스트내 페일오버 - Google Patents

다수의 아답터들을 통해서 다수의 가상 ip 어드레스를 동시에 지원하는 호스트내 페일오버 Download PDF

Info

Publication number
KR20100097694A
KR20100097694A KR1020107013046A KR20107013046A KR20100097694A KR 20100097694 A KR20100097694 A KR 20100097694A KR 1020107013046 A KR1020107013046 A KR 1020107013046A KR 20107013046 A KR20107013046 A KR 20107013046A KR 20100097694 A KR20100097694 A KR 20100097694A
Authority
KR
South Korea
Prior art keywords
host
address
virtual
adapters
addresses
Prior art date
Application number
KR1020107013046A
Other languages
English (en)
Other versions
KR101442309B1 (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
Application filed by 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20100097694A publication Critical patent/KR20100097694A/ko
Application granted granted Critical
Publication of KR101442309B1 publication Critical patent/KR101442309B1/ko

Links

Images

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/10Mapping addresses of different types
    • H04L61/103Mapping addresses of different types across network layers, e.g. resolution of network layer into physical layer addresses or address resolution protocol [ARP]
    • 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/18Multiprotocol handlers, e.g. single devices capable of handling multiple protocols
    • 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/40Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Hardware Redundancy (AREA)
  • Small-Scale Networks (AREA)
  • Maintenance And Management Of Digital Transmission (AREA)
  • Tests Of Electronic Circuits (AREA)

Abstract

호스트가 자신의 다수의 아답터들 중에서 임의의 아답터가 상기 호스트에 할당된 다수의 VIPA들 중 임의의 VIPA를 동시에 지원하는 것을 가능하게 한다. 상기 다수의 아답터들 중에서 적어도 하나의 특정 아답터의 페일에 응답하여, 상기 호스트는 남아있는 기능 아답터들을 상기 네트워크 상에서 각각의 VIPA에 대해 별개의 하드웨어 어드레스 업데이트를 브로드캐스트 하도록 트리거하고, 이를 통해서 다수의 VIPA를 지원하는 상기 호스트내 페일오버를 위해, 상기 호스트가 상기 네트워크를 통해 엑세스가능한 적어도 하나의 다른 호스트에게 상기 다수의 VIPA들에 대한 임의의 새로운 패킷들을 상기 남아있는 아답터들 중 하나의 별개의 하드웨어 어드레스들 중 하나로 어드레스 하도록 지시한다.

Description

다수의 아답터들을 통해서 다수의 가상 IP 어드레스를 동시에 지원하는 호스트내 페일오버{FAILOVER IN A HOST CONCURRENTLY SUPPORTING MULTIPLE VIRTUAL IP ADDRESSES ACROSS MULTIPLE ADAPTERS}
본 발명은 일반적으로 네트워크내에서 개선된 호스트 시스템에 관련된 것으로, 특히 다수의 가상 인터넷 프로토콜(IP) 어드레스(VIPA들)을 동시에 지원하는 것이 가능한 다수의 아답터를 가진 호스트내 개선된 페일오버에 관련된 것이다.
TCP/IP 네트워크들(예를 들어 인터넷)에서 사용되는 어드레스 결정 프로토콜(ARP)은 요청 호스트에 IP 어드레스와 MAC 어드레스간의 매핑을 제공한다. 일 실시예에서, 주어진 IP 어드레스에 대한 MAC 어드레스를 알 필요가 있는 요청 호스트는 상기 IP 어드레스를 포함하는 ARP 요청을 네트워크내의 모든 라우터들 및 호스트들에 브로드캐스트한다. 상기 호스트들의 아답터들이 상기 요청들을 수신한다. 상기 IP 어드레스에 할당된 아답터가 상기 IP 어드레스에 대응되는 MAC 어드레스를 포함하는 ARP 응답(ARP reply)를 가지고 상기 ARP 요청에 응답한다. 이에 따라, 상기 요청 호스트는 ARP 요청에 대한 ARP 응답를 통해서 상기 IP 어드레스에 대응하는 MAC 어드레스를 알게 된다.
"실제" IP 어드레스는 물리적 아답터와 연관된 어드레스이다. 아답터는 때때로 다른 호스트들과 수천개의 네트워크 세션들을 지원한다. 만약 상기 아답터가 페일(fail)되면, 상기 아답터와 연관된 IP 어드레스를 사용하는 액티브 세션들 모두가 또한 페일된다. 가상 IP 어드레스들(VIPA들)은 이런 문제를 완화시키려고 개발된 것이다. VIPA는 물리적 어답터보다는 호스트에 연관된 IP 어드레스이다. 메세지들은 실제 IP 어드레스 또는 VIPA에 어드레스 될 수 있다. 만약 호스트가 다수의 아답터들을 포함한다면, VIPA에 어드레스 된 IP 트래픽은 상기 아답터들 중 어느것을 통해서 라우트 될 수 있다. 이 방법에서, 호스트는 다른 물리적 아답터상에서 VIPA 트래픽을 라우팅함으로써, 아답터 페일 이후의 장애 허용성(fault tolerance)을 제공할 수 있다.
그러나 VIPA 기반 페일오버 시스템은, 하나의 호스트에 하나 이상의 VIPA가 할당될 경우, 여전히 효율성이 제한된다. 특히, 하나의 VIPA가 다수의 아답터들을 거쳐서 지원되는 반면, 만약 다수의 VIPA들이 하나의 호스트에 의해서 할당되면, 각각의 VIPA는 상기 VIPA에 단독으로 할당된 아답터들의 분리된 세트를 필요로 한다. 그러나, 각각의 분리된 VIPA에 다수의 아답터들을 따로 할당하는 것은, 아답터 페일의 경우시 페일오버를 용이하게 하기 위해 각각의 VIPA에 별도의 백업 아답터를 할당하는 것을 필요로 할 수 있다. 별도의 백업 아답터를 각각의 VIPA에 할당하는 것은 리소스들의 비효율적인 할당이다.
이에 따라, 앞서 말한바와 같이, 본 방법, 시스템, 프로세스 및 프로그램 제품은, 여전히 효율적인 페일오버를 허용하면서, 호스트의 임의의 아답터가 상기 호스트와 연관된 다수의 VIPA들 중 임의의 VIPA에 대한 인커밍 데이터를 동시에 수신하는 것을 가능하게 한다.
일 실시예에서, 호스트는 자신의 다수의 아답터들 중 임의의 아답터가 상기 호스트에 할당된 다수의 VIPA들 중 임의의 VIPA를 동시에 지원하는 것을 가능하게 한다. 다수의 VIPA들을 지원하는 호스트내 페일오버를 위해, 상기 호스트가 네트워크를 통해서 엑세스가능한 적어도 하나의 다른 호스트에게 다수의 VIPA들에 대한 임의의 새로운 패킷들을 남아있는 아답터들 중 하나의 별개의 하드웨어 어드레스들 중 하나로 어드레스 하는 것을 알려주기(direct) 위해서, 상기 다수의 아답터들 중 적어도 하나의 특정 아답터의 페일에 응답하여, 상기 호스트는 상기 네트워크상에서 남아있는 가능 아답터들이 각각의 VIPA에 대해 별개의 하드웨어 어드레스 업데이트를 브로드캐스트 하도록 트리거한다.
상기 호스트가 다수의 VIPA들의 리스트내 IP 어드레스를 지원하는지 여부를 결정하기 위해서, 상기 호스트에서 수신된 ARP 요청내에 명시된 IP 어드레스를 다수의 VIPA들의 리스트와 비교하기 위해 상기 호스트상에 네트워크 스택을 구성함으로써, 상기 호스트가 자신의 다수의 아답터들 중에서 임의의 아답터가 상기 호스트에 할당된 다수의 VIPA들 중 임의의 VIPA를 동시에 지원하는 것을 가능케 한다. 다수의 VIPA들 중 특정 VIPA와 매치하는 특정 IP 어드레스에 대해서, 적어도 하나의 다른 호스트 중 요청 호스트로부터 ARP 요청을 상기 호스트가 수신하는 것에 응답하여, 다수의 아답터들 각각이 상기 특정 VIPA에 대해서 상기 아답터의 각각의 하드웨어 어드레스를 가지고 상기 요청 호스트로 ARP 응답을 전송하도록 트리거하는데, 여기서 상기 요청 호스트는 상기 다수의 아답터들로부터 다수의 ARP 응답들 중 하나를 저장한다.
본 발명의 실시예들이 수반한 이하의 도면들을 참고로 하여 일 예의 방법으로서 여기서 기술될 것이다.
도 1은 다수의 VIPA들의 동시 지원이 가능한 다수의 아답터들이 할당된 호스트의 일 예를 도시하는 블럭도;
도 2는 호스트가 다수의 VIPA들의 동시 지원이 가능한 다수의 아답터에 대해서 페일오버를 지원하는 네트워크 환경의 일 예를 도시하는 블럭도;
도 3은 본 발명이 구현될 수 있는 컴퓨터 시스템의 일 실시예를 도시하는 블럭도;
도 4는 다수의 VIPA들을 동시 지원하는 것이 가능한 다수의 아답터들에 대해서 효과적인 페일오버를 지원하기 위한 네트워크 스택을 도시하는 블럭도;
도 5는 다수의 호스트들과 게이트웨이 호스트 사이에서 상기 ARP 패킷들의 전송의 일 예를 도시하는 흐름도 -여기서 상기 게이트웨이 호스트는 다수의 VIPA들을 동시에 사용하는 것이 가능한 다수의 아답터들을 지원함-;
도 6은 본 발명이 구현될 수 있는 게이트웨이를 포함하는 네트워크 환경의 일 예를 도시하는 블럭도;
도 7은 다수의 VIPA들의 동시 지원이 가능한 다수의 아답터들을 지원하고 데드 게이트웨이 감지를 지원하는 호스트 시스템의 일 예를 도시하는 흐름도;
도 8은 요청 호스트로부터의 요청에 대해 응답하는 수신 호스트의 네트워크 스택에 대한 프로세스 및 프로그램을 도시하는 고레벨 로직 흐름도 -여기서 상기 수신 호스트는 다수의 아답터들이 다수의 VIPA들을 동시 지원하는 것을 가능하게 함-; 및
도 9는 요청 호스트가 다수의 아답터들이 다수의 VIPA들을 동시에 지원가능하도록 할 때 페일오버를 용이하게 하기 위해서, 페일된 아답터에 응답하는 수신 호스트에 대해서 네트워크 스택에 대한 프로세스 및 프로그램을 도시하는 고레벨 논리 흐름도이다.
도면과 관련하여 특히 도 1과 관련하여, 블럭도는 다수의 VIPA들을 동시에 지원이 가능한 다수의 아답터들이 할당된 호스트의 일 예를 도시한다. 상기 예에서, 호스트(100)는 다수의 아답터들(110,112 및 114)를 포함한다. 또한, 상기 예에서, 다수의 VIPA들(102 및 104)는 하나의 호스트(100)와 연관되어 있다. 상기 예에서, 호스트(100)는 네트워크에 연결되어 있고 상기 네트워크내에서 데이터를 수신하거나 전송하는 하나 또는 그 이상의 물리적 또는 논리적 데이터 프로세싱 시스템들, 라우터들 또는 다른 시스템들을 나타낼 수 있다. 상기 예에서 아답터들(110,112 및 114)이 물리적 아답터들로서 기술되어 있으나, 다른 예들에서 하나 또는 그 이상의 아답터들(110,112 및 114)은 하나 또는 그 이상의 물리적 아답터들의 가상의 표시를 의미할 수 있다.
일 실시예에서, 아답터들(110,112 및 114)은 호스트(100)내에서 VIPA(102) 및 VIPA(104) 둘 다를 각각 지원하도록 구성된다. 아답터들(110,112 및 114)가 VIPA(102 및 104) 둘 다를 동시에 지원하도록 구성함으로써, VIPA(102) 및 VIPA(104) 둘 다 아답터들(110,112 및 114) 각각에서 인커밍 데이터를 받을 수 있고, VIPA(102) 및 VIPA(104) 둘 다 아답터들(110,112 및 114) 각각을 통해서 데이터를 라우트할 수 있다. 도시되지는 않았으나, 다른 예에서, 아답터들(110,112 및 114) 중 어느 하나가 인커밍 데이터를 최초로 수신하도록 설정될 수 있고, 나머지 아답터들이 VIPA(102) 및 VIPA(104) 둘 다에 대해서 아웃고잉 데이터의 로드 밸런싱을 위해 설정될 수도 있다.
본 예에서, VIPA(102) 및 VIPA(104)가 가상 또는 논리 IP 어드레스를 나타내고 그리고 아답터들(110,112 및 114)이 각각 하드웨어 어드레스(예를 들어 MAC 어드레스)가 할당된다. 또한, VIPA(102) 및 VIPA(104)가 실제 IP를 나타낼 수 있고 그리고 아답터들(110,112 및 114)이 가상 어드레스들, 다수의 물리적 어드레스들 또는 다른 타입의 어드레스들이 할당될 수 있다는 점이 이해되어 질 수 있다.
일 실시예에서, VIPA(102) 및 VIPA(104) 둘 다는 호스트(100)의 동일한 서비스에 엑세스하도록 할당되고, 여기서 서비스는 호스트(100)의 애플리케이션, 데이터 또는 함수나 호스트(100)에 엑세스가능한 다른 시스템(그러나 이에 한정은 아님)을 포함할 수 있다. 다른 실시예에서, 아답터들(110,112 및 114) 중 어느 하나를 통해서 호스트(100)에 의해 수신된 서로 다른 서비스들에 대한 서로 다른 VIPA들에 대한 패킷들의 분배를 관리하기 위해서, VIPA(102) 및 VIPA(104) 각각이 호스트(100)의 분리된 서비스에 할당되고 호스트(100)가 하나 또는 그 이상의 추가 프로세스들 또는 하드웨어들을 구현한다.
본 실시예에서는 VIPA들(102 및 104)이 호스트(100)에 연관된 반면, 다른 실시예들에서는 VIPA들 중 얼마든지 하나의 호스트 또는 클러스터 또는 호스트들의 다른 그룹들과 연관될 수 있고 하나 또는 그 이상의 VIPA들이 하나의 호스트로부터 다른 호스트로 전송될 수 있다는 점을 유념해야 한다. 또한, 본 예에서는 아답터들(110,112 및 114)이 VIPA들(102 및 104)간에 공유되는 반면에, 다른 실시예들에서 하나 또는 그 이상의 아답터들이 특정 VIPA에 주로 할당될 수 있다는 점을 유념해야한다.
이제 도 2를 참조하면, 블럭도가, 호스트가 다수의 VIPA들을 동시에 지원하는 것이 가능한 다수의 아답터들에 대한 페일오버를 지원하는 네트워크 환경의 일 실시예를 도시한다. 네트워크 환경(200)은 네트워크 환경(200)내에서 통신을 하는 하나 또는 그 이상의 아답터들을 각각 가지는 하나 또는 그 이상의 호스트들을 지원할 수 있는 네트워크 환경의 하나의 타입을 도시되었으나, 추가, 대체 또는 다른 타입의 호스트들이 다른 네트워크 환경들에서 구현될 수 있다는 점을 유념해야 한다. 또한, 네트워크 환경(200)내에서 시스템들의 분배는 시스템들의 분배로 도시되었으나, 네트워크 환경내에서 다른 시스템들의 분배들도 구현될 수 있다는 점을 유념해야 한다.
도시된 바와 같이, 네트워크 환경(200)내 다수의 시스템들이 네트워크(202)를 통해서 통신가능하도록 연결될 수 있고, 상기 네트워크(202)는 통신가능하도록 연결된 다양한 디바이스들과 컴퓨터 시스템들 사이에서 통신 링크들을 제공하는데 사용되는 매체이다. 네트워크(202)는 예를 들어, 전선 또는 광섬유 케이블과 같은 영구적인 연결이나 전화 연결들이나 무선 전송 연결들을 통해 만들어지는 임시 연결을 포함할 수 있다. 네트워크(202)는 하나 또는 그 이상의 패킷-교환 기반 네트워크 및 전화 기반 네트워크들, 근거리 영역 및 배선 영역 네트워크들, 공용 및 사설 네트워크들을 나타낼 수 있다.
네트워크(202)는 물리 계층(Physical layer), 링크 계층(link layer), 네트워크 계층(Network layer), 전송 계층(Transport layer), 표현 계층(Presentation layer), 응용 계층(Application layer) 및 애플리케이션 계층(application layer)중 하나 또는 그 이상을 포함할 수 있는 네트워크 프로토콜 스택들의 하나 또는 그 이상의 타입들의 하나 또는 그 이상의 계층들을 구현될 수 있다. 예를 들어, 네트워크(202)는 하나 또는 그 이상의 TCP/IP 프로토콜 스택이나 OSI 프로토콜 스택을 구현할 수 있다. 또한, 예를 들어, 네트워크(202)는 서로 통신하기 위한 프로토콜들에 적합한 TCP/IP를 사용하는 네트워크들이나 게이트웨이들의 월드와이드 컬렉션을 나타낼 수 있다. 다른 실시예들에서, 네트워크(202)는 프로토콜 스택들의 하나 또는 그 이상의 다른 타입들 및 프로토콜 스택들의 또 다른 타입들을 구현할 수 있다.
네트워크 환경(200)은 네트워크 아키텍쳐의 다수의 타입들을 구현할 수 있다. 일 실시예에서, 네트워크 환경(200)은 클라이언트/서버 아키텍쳐를 이용하여 구현될 수 있는데, 여기서 데이터나 프로세스들을 요청하는 컴퓨팅 시스템들은 클라이언트로 언급되고 데이터 요청이나 프로세스들을 프로세싱하는 컴퓨팅 시스템들은 서버로 언급된다. 다른 실시예에서, 네트워크 환경(200)은 피어-투-피어 네트워크 아키텍쳐로 구현될 수 있다. 또 다른 실시예에서, 네트워크 환경(200)은 그리드 아키텍쳐로 구현될 수 있다. 네트워크 아키텍쳐들의 다른 타입들이나 네트워크 아키텍쳐들의 조합들이 네트워크 환경(200)내에서 구현될 수 있다는 점이 이해되어져야 한다.
도시된 바와 같이, 실시예에서 하나 또는 그 이상의 클라이언트 시스템(210), 클라이언트 시스템(200) 및 서버 시스템(230)은 네트워크 환경(200)내에서 네트워크(202)를 통해 통신가능하게 연결된다. 일반적으로, 클라이언트 시스템(210) 및 클라이언트 시스템(220)은 네트워크(202)를 통해 서버 시스템(230)으로부터 하나 또는 그 이상의 서비스들을 요청하고, 서버 시스템(230)을 통해 전달된 데이터는 네트워크(202)를 통해 클라이언트 시스템(210) 및 클라이언트 시스템(220)으로 출력된다. 클라이언트 시스템(210) 및 클라이언트 시스템(220) 각각은 서비스들에 대한 요청들을 수신하고 다른 시스템으로 데이터나 다른 출력을 전달하기 위한 서버로도 구현될 수 있다는 점이 이해되어질 것이다. 게다가, 서버 시스템(230)은 서비스들에 대한 요청들을 전송하고 네트워크(202)를 통해 다른 시스템들로부터 출력을 수신하기 위한 클라이언트 시스템으로 구현될 수 있다는 점이 이해되어질 것이다. 네트워크 환경(200)이 하나 또는 그 이상의 클라이언트 시스템들, 하나 또는 그 이상의 서버 시스템들 및 네트워크 환경(200)내에서 상기 시스템들을 통신가능하도록 연결하는 하나 또는 그 이상의 네트워크(202) 인스턴스들을 포함할 수 있다는 점이 이해되어질 것이다.
도시된 바와 같이, 클라이언트 시스템(210), 클라이언트 시스템(220) 및 서버 시스템(230) 각각은 예를 들어 도 1의 호스트(100)와 같은 호스트를 나타낼 수 있다. 또한 그룹핑, 클러스터 또는 다른 네트워크 매핑이 호스트(100)를 클라이언트 시스템(210), 클라이언트 시스템(220) 및 서버 시스템(230)의 모든 또는 일부들의 조합을 포함하는 것으로 명시할 수 있다.
특히, 상기 예에서 도시된 바와 같이, 서버 시스템(230)은, 서버 시스템(230)의 하나 또는 그 이상의 소프트웨어 및 하드웨어 계층들내에서 구현된 다수의 VIPA 페일오버 제어기(232)를 통해서 다수의 VIPA들(236)의 동시 지원이 가능한 다수의 아답터들(234)를 가진 호스트를 나타낸다. 또한 다수의 VIPA 페일오버 제어기(232)는, 다수의 VIPA들의 동시 지원이 가능한 다수의 아답터들(234) 중 하나가 페일하거나 제거되었을 때, 페일오버를 지원한다.
첫째로, 다수의 VIPA 페일오버 제어기(232)는 다수의 아답터들(234) 각각이 다수의 VIPA들(236) 중 임의의 것을 위해 만들어진 데이터를 수신하는 것을 가능케한다. 일 실시예에서, 임의의 아답터가 상기 VIPA들 각각에 대해 생성된 데이터를 수신하는 것을 가능케 하기 위해서, 다수의 VIPA 페일오버 제어기(232)가, 인커밍 패킷의 IP와 다수의 VIPA들(236) 중 하나와 매치가 있는지를 결정하기 위해, 다수의 아답터들(234)이 각각의 인커밍 패킷에 대해서 다수의 VIPA들(236)의 리스트를 체크하도록 트리거한다.
둘째로, 다수의 아답터들(234) 중 하나가 페일일 때 다수의 VIPA 페일오버 제어기(232)가 페일오버를 용이하게 하므로, 서버 시스템(230)으로의 현재 연결이 인터럽트 되지 않는다. 일 실시예에서, 다수의 아답터들(234) 중 어느 하나가 VIPA에 대해 만들어진 데이터를 수신하므로, 다수의 VIPA들(236) 중 하나에 대해 서버 시스템(230)으로의 패킷 어드레싱에 사용하기 위해서, 클라이언트 시스템(210) 또는 클라이언트 시스템(220)이 다수의 아답터들(234) 각각에 대한 물리적 어드레스를 수신하고 상기 물리적 어드레스들 중 하나를 선택한다. 만약 다수의 아답터들(234) 중 하나가 페일하면, 다수의 VIPA 페일오버 제어기(232)가 다른 호스트들 모두에(예를 들어 클라이언트 시스템(210) 및 클라이언트 시스템(220)) 다수의 VIPA들(236) 각각에 대한 상기 물리적 어드레스가 변경되는 업데이트를 가지고, 업데이트를 브로드캐스트한다. 클라이언트 시스템(210)과 클라이언트 시스템(220)간의 연결이 서버 시스템(230)과 함께 상기 VIPA에 바인드되므로, 클라이언트 시스템(210) 또는 클라이언트 시스템(220)이, 현재의 연결을 방해하지 않고, 임의의 새로운 패킷들을 서버 시스템(230)으로, 업데이트된 기능적 아답터 논리 어드레스들 중 하나에 대해서, 전송한다.
서버 시스템(230)에 대해서 기술된 다수의 VIPA 페일오버 제어기(232)의 분산에 더해서, 다수의 VIPA 페일오버 제어기(232)는 네트워크 내 추가 또는 다른 시스템들(예를 들어 예를 들어 예를 들어 클라이언트(210), 클라이언트(220) 또는 네트워크(202)내) 사이에서도 분산될 수 있다는 점에 유념해야 한다. 게다가, 다수의 VIPA 페일오버 제어기(232)는 하나의 클라이언트 시스템(210 또는 220), 서버시스템(230) 또는 네트워크(202)내에서 또는 다수의 클라이언트 시스템들, 서버 시스템들 또는 네트워크들 내에서 분산된 다수의 논리 네트워크 파티션들 사이에서 분산될 수 있다. 또한, 다수의 VIPA 페일오버 제어기(232)의 다수의 물리적, 논리적 또는 가상 인스턴스들은 클라이언트 시스템, 서버 시스템 또는 네트워크에서 초기화 될 수 있다.
특히, 다수의 VIPA 페일오버 제어기의 프로세스 소프트웨어가, 저장 매체(예를 들어 CD, DVD 등등)의 로딩을 통해서 서버 시스템(230) 및 프록시 컴퓨터 시스템들(미도시)의 다수의 VIPA 페일오버 제어기(232)와 같은 시스템내에 직접적으로 수동 로딩함으로써 배치될 수 있는 것으로 이해되는 반면에, 상기 프로세스 소프트웨어는 또한 서버 시스템 또는 서버 시스템들 그룹으로 프로세스 소프트웨어를 전송함으로써 컴퓨터 시스템에 자동으로 또는 반자동으로 배치될 수 있다. 그리고나서 상기 프로세스 소프트웨어는 상기 프로세스 소프트웨어를 실행할 상기 클라이언트 컴퓨터들 또는 서버 시스템들로 다운로드된다. 대안으로, 상기 프로세스 소프트웨어가 이메일이나 다른 전자 통신을 통해서 상기 클라이언트 시스템 또는 서버 시스템으로 직접 전송된다. 그리고나서 상기 프로세스 소프트웨어는, 상기 이메일상의 버튼이나 상기 프로세스 소프트웨어를 디렉토리로 디태취하는 프로그램을 실행하는 다른 전자통신에 의해서, 디렉토리에 디태취(detached)되거나 또는 디렉토리에 로드한다. 또 다른 대안은 상기 프로세스 소프트웨어를 상기 클라이언트 시스템 또는 서버 시스템 하드 드라이브상의 디렉토리에 직접 전송하는 것이다. 어느 프록시 서버들이 있을때에는, 상기 프로세스는 상기 프록시 서버 코드를 선택하고, 상기 프록시 서버의 코드를 위치시키기 위한 컴퓨터를 결정하고, 상기 프록시 서버 코드를 전송할 것이고, 그리고 나서 상기 프록시 서버 코드를 상기 프록시 컴퓨터상에 인스톨할 것이다. 상기 프로세스 소프트웨어는 상기 프록시 서버에 전송되고, 상기 프록시 서버에 저장된다.
또한, 특히 다수의 VIPA 페일오버 제어기의 프로세스 소프트웨어는 운영 시스템, 네트워크 스택 또는 네트워크 하드웨어(예를 들어 아답터들)로부터 분리되어 배치될 수 있는 반면에, 상기 프로세스 소프트웨어는 또한 클라이언트 시스템들이나 서버 시스템들상의 애플리케이션들, 운영 시스템, 또는 네트워크 서비스들이나 상기 프로세스가 기능하게 될 네트워크 환경내 아답터들 또는 다른 네트워크 하드웨어들의 기능들과 전체적으로 또는 부분적으로 통합되거나 공존할 수 있다. 또한, 상기 다수의 VIPA 페일오버 제어기의 프로세스 소프트웨어는 공유된 서버 시스템상에서 요청에 따라 사용가능할 수 있다.
이제 도 3을 참조하면, 블럭도가 본 발명이 구현될 수 있는 컴퓨터 시스템의 일 실시예를 도시한다. 본 발명의 프로세스들, 방법들, 컴퓨터 프로그램 제품들 및 시스템들이 네트워크(예를 들어 네트워크(202))와 통신가능하게 연결된 다양한 컴퓨팅 시스템들(예를 들어 컴퓨터 시스템(300))을 포함하는 다양한 시스템들내에서 실행될 수 있다. 컴퓨터 시스템(300)은 하나 또는 그 이상의 아답터들을 가진 호스트(100)를 나타낼 수 있거나, 또는 다수의 호스트들 사이에서 분산될 수 있다. 또한, 컴퓨터 시스템(300)은 호스트(100)를 나타내기 위해서 다른 컴퓨터 시스템들과 그룹될 수 있다.
컴퓨터 시스템(300)은 컴퓨터 시스템(300)내 정보 통신을 위한 버스(322)나 다른 통신 디바이스, 그리고 정보 프로세싱을 위해 버스(322)에 연결된 적어도 하나의 프로세싱 디바이스(예를 들어 프로세서(312))를 포함한다. 버스(322)는 브릿지들 및 아답터들에 의해 연결되고 다수의 버스 제어기들에 의해 컴퓨터 시스템(300)내에서 제어되는 낮은 지연(Low latency)과 더 높은 지연 경로들을 포함한다. 서버로서 구현될 때에는, 컴퓨터 시스템(300)은 네트워크 서비스 파워를 증가하도록 디자인된 다수의 프로세서들을 포함할 수 있다. 여기서 다수의 프로세서들 공유 버스(322), 버스 엑세스와 락을 관리하기 위한 추가 제어기(미도시)가 구현될 수 있다.
프로세서(312)는, 노멀 작동동안, 운영 시스템(360), 애플리케이션 소프트웨어(370), 미들웨어(미도시), 네트워크 소프트웨어 및 램(314)과 같은 동적 저장장치 디바이스, 롬(316)과 같은 정적 저장장치 디바이스, 대용량 저장장치 디바이스(318)와 같은 데이터 저장장치 디바이스 또는 다른 데이터 저장장치 매체로부터 엑세스가능한 다른 코드들의 제어하에서 데이터를 프로세스하는 범용 프로세서(예를 들어 IBM의 PowerPC™) 일 수 있다. 운영 시스템(360), 애플리케이션 소프트웨어(370), 또는 소프트웨어의 다른 계층들은 도 2에 도시된 다수의 VIPA 페일오버 제어기(232)의 하나 또는 그 이상의 컴포넌트들을 구현할 수 있다.
도 8 및 9의 흐름도의 작동들 및 여기서 기술된 다른 작동들에서 기술된 바와 같이, 일 실시예에서 상기 프로세서(312)에 의해 수행된 작동은 서치 결과 링크들의 감지, 상기 서치 결과 링크들과 현재 유저 인터엑션에 기초한 서치 결과 링크들내 유저관심 예측 및 상기 현재 유저관심에 기초하여 상기 서치 결과 링크들의 동적인 재구성을 제어할 수 있다. 프로세서(312)에 의해 수행된 작동들은 운영 시스템(360), 애플리케이션 소프트웨어(370), 미들웨어나 다른 코드에 의해 요청될 수 있고, 또는 본 발명의 단계들은 상기 단계들을 수행하기 위해 하드웨어에 내장된 로직을 포함하는 전용 하드웨어 컴포넌트들 또는 프로그램된 컴퓨터 컴포넌트들 및 커스텀 하드웨어 컴포넌트들의 조합에 의해서 수행된다.
본 발명은 컴퓨터 또는 컴퓨터-판독가능 프로그램의 실행가능 명령들이 내포된 머신-판독가능 매체상에 포함된, 컴퓨터 프로그램 제품으로 제공될 수 있으며, 상기 컴퓨터-판독가능 프로그램은 컴퓨터 시스템(300)상에서 실행될 때, 컴퓨터 시스템(300)이 본 발명에 따른 프로세스를 수행하도록 유발한다. 여기서 사용된 상기 용어들 "컴퓨터-판독가능 매체" 또는 "머신-판독가능 매체"는 실행을 위해서 명령들을 컴퓨터 시스템(300)의 프로세서(312)나 다른 컴포넌트들에 제공하는데 관여하는 그 어떤 매체라도 포함한다. 그러한 매체는 예를 들어 비휘발성 매체 및 휘발성 매체와 같은 저장장치 타입 매체나 전송 매체를 포함하는(그러나 이에 한정되는 것은 아님) 다양한 형태를 취할 수 있다. 비휘발성 매체의 일반적인 형태는 예를 들어 플로피 디스크, 플렉시블 디스크, 하드 디스크, 자기 테이프 또는 다른 자기 매체, 시디롬이나 다른 광 매체, 펀치 카드나 홀들의 패턴을 가지는 다른 물리적 매체, PROM, EPROM, 전기적 EPROM, 플래쉬 메모리, 그 외 다른 메모리 칩이나 카트리지, 컴퓨터 시스템(300)이 데이터를 읽을 수 있고 명령들을 저장하는데 적합한 그외 다른 매체들을 포함한다. 상기 본 실시예에서, 비휘발성 매체의 일 예는 도시된 바와 같이 컴퓨터 시스템(300)의 내부 컴포넌트인 대용량 저장장치 디바이스(318)이나, 외부 디바이스에 의해 제공될 수 있음도 자명하다. 휘발성 매체는 예를 들어 램(314)과 같은 동적 메모리를 포함한다. 전송 매체는 버스(322)를 포함하는 전선들을 포함하여 동축 케이블들, 구리섬유 또는 광섬유를 포함한다. 전송 매체는 또한 예를 들어 무선 주파수나 적외선 통신중에 생성되는 것과 같은 음파 또는 광파 형태를 취할 수 있다.
또한, 본 발명은 컴퓨터 프로그램 제품으로서 다운로드 되거나 분산될 수 있는데, 여기서 컴퓨터-판독가능 프로그램 명령들은, 네트워크(202)를 통해 네트워크 링크(334)(예를 들어 모뎀이나 네트워크 연결)에서 버스(322)에 결합된 통신 인터페이스(332)로 전송파나 다른 전파 매체내에 포함된 데이터 신호형태로서, 예를 들어 서버(340)와 같은 원격 컴퓨터로부터 요청 컴퓨터 시스템(300)으로 전송되어질 수 있다. 일 실시예에서, 프로세서(312)가 다수의 프로세서 요소들을 포함하고 프로세싱 태스크가 상기 프로세서 요소들로 분산된 경우(로컬이든 네트워크를 통해서든)는 컴퓨터 프로그램 제품을 나타낼 수 있는데, 여기서 상기 프로세스 태스크는 프로세스를 실행하기 위해 자바(자바는 선 마이크로시스템 사의 등록 상표이다.) 객체들이나 다른 실행가능문을 엑세스하기 위한 프로세스나 프로그램 명령들을 수행하기 위한 프로그램 명령들을 포함한다. 통신 인터페이스(332)는 예를 들어 랜, WAN 도는 인터넷제공자(ISP)에 직접 결합될 수 있는 네트워크 링크(334)에 결합된 양방향 데이터 통신들을 제공한다. 특히, 네트워크 링크(334)는 하나 또는 그 이상의 네트워크들(예를 들어 네트워크(202))에 유선 및/또는 무선 네트워크 통신들을 제공할 수 있다. 또한, 비록 도시되지는 않았으나, 통신 인터페이스(332)는 예를 들어 디바이스 드라이버와 같은 소프트웨어, 예를 들어 아답터들같은 하드웨어 및 통신을 가능케 하는 다른 제어기들을 포함할 수 있다. 서버로 구현될 때에는, 컴퓨터 시스템(300)은 예를 들어 입/출력 제어기에 연결된 다수의 PCI 버스 브릿지들을 통해 엑세스 가능한 다수의 통신 인터페이스를 포함할 수 있다. 이 경우, 컴퓨터 시스템(300)은 다수의 분리된 포트들를 통해 다수의 클라이언트로의 연결을 허용하고 각각의 포트들은 또한 다수의 클라이언트로의 다수의 연결을 지원한다.
네트워크 링크(334)와 네트워크(202) 둘 다는 디지털 데어터 스트림들을 전달하는 전기,전자기 또는 광 신호를 이용한다. 다양한 네트워크들을 통한 상기 신호들과 네트워크 링크(334) 및 통신 인터페이스(332)-상기 디지털 데이터를 컴퓨터 시스템(300)으로 및 컴퓨터 시스템(300)으로부터 전달하는- 를 통한 신호들은 상기 정보를 전송하는 반송파 형태들일 수 있다. 또한, 컴퓨터 시스템(300)은 입력 및 출력을 용이하게 하는 다수의 주변 컴포넌트들을 포함할 수 있다. 이러한 주변 기기들은 버스(322)의 다수의 계층들 중 하나에 결합되어 있는 다수의 제어기들, 아답터들 및 확장 슬롯(예를 들어 입/출력(I/O) 인터페이스(326))에 연결된다. 입력들을 제어하기 위해 입/출력 인터페이스(326)를 통해서 버스(322)상에서 통신가능하게 사용가능한 입력 디바이스(324)는 예를 들어 마이크로폰, 비디오 캡쳐 디바이스, 보디 스캐닝 시스템, 키보드, 마우스 또는 다른 입력 주변 기기들을 포함할 수 있다. 또한, 출력들을 제어하기 위해서 입/출력 인터페이스(326)를 통해서 버스(322)상에서 통신가능하게 사용가능한 출력 디바이스(320)는 예를 들어 하나 또는 그 이상의 그래픽 디스플레이 디바이스들, 오디오 스피커들 및 촉각 감지 출력 인터페이스들을 포함할 수 있으며, 그러나 다른 출력 인터페이스들도 포함할 수 있다. 본 발명의 대안의 실시예들에서, 추가적인 또는 대체용 입력 및 출력 주변 기기들이 추가될 수 있다.
본 기술분야에서 통상의 기술을 가진 자는 도 3내에 개시된 하드웨어가 변형될 수 있음을 인식할 수 있을 것이다. 또한, 본 기술분야에서 통상의 기술을 가진 자는 도시된 예는 본 발명에 대해서 아키텍쳐적인 한정을 하려는 의도가 아님을 인식할 수 있을 것이다. 예를 들어, 컴퓨터 시스템(300)은 또한 태블릿 컴퓨터, 랩탑 컴퓨터나 전화 디바이스도 될 수 있다.
이제 도 4를 참조하면, 블럭도가 다수의 VIPA들을 동시에 지원하는 것이 가능한 다수의 아답터들에 대해서 효율적인 페일오버를 지원하기 위한 네트워크 스택을 도시한다. 네트워크 스택(400)의 계층과 컴포넌트들은 다수의 메모리 컴포넌트들, 다수의 디바이스들, 다수의 인터페이스들, 다수의 컴퓨팅 시스템들 및 다수의 네트워크들 및 네트워크 디바이스들(예를 들어 라우터)간에 분산될 수 있다는 것을 유념해야한다. 또한, 본 발명을 구현하는 네트워크 스택은 네트워크 스택(400)에 도시된 것들에서 추가 또는 대체 계층들, 프로세스들 및 데이터를 포함할 수 있다는 점을 유념해야 한다.
본 실시예에서, 네트워크 스택(400)은 수신 호스트와 요청 호스트 둘 다에 대해서 도시되었다. 일 실시예에서, 네트워크 스택(400)이 수신 호스트를 나타낼 때에는, 네트워크 스택(400)은 하나 또는 그 이상의 요청 호스트들로부터 요청들을 수신한다. 일 실시예에서, 네트워크 스택(400)이 요청 호스트를 나타낼 때에는, 네트워크 스택(400)은 수신 호스트나 하나 또는 그 이상의 외부 호스트들로 요청을 전송한다.
본 실시예에서, 네트워크 스택(400)은 커널 계층(404)를 포함한다. 커널 계층(404)은 예를 들어 운영 시스템(360)의 인스턴스와 같이 운영 시스템들의 하나 또는 그 이상의 타입의 하나 또는 그 이상의 인스턴스들, 예를 들어 다수의 컴퓨터 플랫폼들의 통합을 가능케하는 웹스피어(웹스피어는 IBM사의 등록된 상표이다.) 미들웨어와 같은 하나 또는 그 이상의 미들웨어의 인스턴스들을 포함하나 이에 한정되는 것은 아니다.
상기 실시예에서, 커널(404)은 라우팅 테이블들(406)을 유지할 수 있다. 라우팅 테이블들(406)은 하드웨어, IP 및 네트워크를 통해 엑세스가능한 다른 호스트들의 어드레싱(addressing)의 다른 레벨들을 포함할 수 있고, 하나 또는 그 이상의 게이트웨이에 대한 인터페이스 어드레싱을 포함할 수 있다. 일 실시예에서, 커널(404)은 다른 호스트들에 대해 엑세스 된 어드레스들의 캐쉬를 유지하고, 어느 어드레스들이 상기 캐쉬내에 유지되어야 하는지 결정하기 위해 규칙(예를 들어 호스트가 엑세스되어진 이후의 시간기간)을 적용할 수 있다.
또한 본 예에서 네트워크 스택(400)은 TCP/IP 계층(408)을 포함한다. 다수의 VIPA 페일오버 제어기(232)의 일 실시예에서, TCI/IP 계층(408)은 VIPA 리스트(410)와 함께 사용가능하다. VIPA 리스트(410)는 네트워크 스택(400)에 의해 지원되는 IP 어드레스들 및 VIPA들의 시스템-와이드 리스트를 포함한다. 다수의 VIPA 페일오버 제어기(232)의 설정 또는 프로세스들을 통해서, 어답터 계층(420)은 예를 들어 인커밍 ARP 패킷과 같은 인커밍 패킷을 위해 설정되고, 상기 인커밍 패킷내의 요청된 상기 IP 어드레스가, 상기 IP 어드레스가 네트워크 스택(400)에 의해 지원되는지를 결정하기 위해서, VIPA 리스트(410)에 대해서 체크된다.
인커밍 패킷 IP들을 VIPA 리스트(410)에 대해 체크하도록 네트워크 스택(400)을 설정함으로써, 아답터 계층(420)내의 아답터들(414,416 및 418) 중의 아답터가 VIPA 리스트(410)내의 임의의 VIPA를 위해 만들어진 데이터를 수신할 것이다. 특히, VIPA 리스트(410)가 TCP/IP 계층(408)내에 구현된 것으로 도시되었으나, VIPA 리스트(410) 및 VIPA 리스트(410)와 패킷 IP의 비교는 다른 계층들(예를 들어 아답터 계층(420))에서 수행될 수 있다는 것을 유념해야 한다. 또한, 서로 다른 계층들이나 서로 다른 계층들내의 서로 다른 컴포넌트들이 VIPA 리스트(410)의 분리된 인스턴스를 관리할 수 있다는 것을 유념해야 한다.
상기 실시예에서, 네트워크 스택(400)은 수신 호스트이고 아답터 계층(420)는 VIPA 리스트(410)내 임의의 VIPA에 대한 ARP 요청을 수신하고, 상기 요청은 상기 ARP 요청내 상기 IP가 VIPA리스트(410)내의 VIPA 중 하나인지를 결정하는 TCP/IP 계층(408)로 푸쉬 업된다. 그리고 나서 TCP/IP 계층(408)은 아답터 계층(420)이 네크워크상에서 상기 요청 호스트로 ARP 응답을 전송하도록 한다. 특히, TCP/IP 계층(408)은 아답터들(414,416 및 418) 각각이-상기 어답터에 대한 MAC 어드레스 및 상기 요청된 VIPA와 함께 상기 ARP 응답을 각각 식별하는- 요청된 VIPA에 대해 상기 요청 호스트로 ARP 응답을 전송하도록 한다.
상기 실시에에서, 어답터 계층(420)내 각각의 어답터는 맥 하드웨어 어드레스가 할당된다. 예를 들어, 아답터(414)는 MAC1이 할당되고, 아답터(416)은 MAC2가 할당되고 그리고 아답터(418)은 MAC3가 할당된다. 또한 아답터들(414,416 및 418)은 다수의 하드웨어 어드레스들, 하드웨어 어드레스와 네트워크 어드레스, 또는 다른 타입의 어드레스가 할당될 수 있다는 점이 이해되어질 것이다. 게다가, 아답터 계층(420)은 아답터들(414,416 및 418)로 표시되는 아답터들에 추가 또는 대체 아답터들이 포함할 수 있다는 점이 이해되어질 것이다.
상기 실시예에서, 만약 VIPA 리스트(410)가 VIPA1 및 VIPA2를 포함하면, VIPA1에 대한 APR 요청을 네트워크 스택(400)이 수신하는 것에 응답하여, 아답터(414)가 VIPA1의 ARP 응답, MAC1을 전송할 것이고, 아답터(416)가 VIPA1의 ARP 응답, MAC2를 전송할 것이고, 그리고 아답터(418)가 VIPA1의 ARP 응답, MAC3를 전송할 것이다. 또한, 상기 실시예에서, VIPA2에 대한 ARP 요청을 네트워크 스택(400)이 수신하는 것에 응답하여, 아답터(414)가 VIPA2의 ARP 응답, MAC1을 전송하고, 아답터(416)가 VIPA2의 ARP 응답, MAC2를 전송하고, 그리고 아답터(418)가 VIPA2의 ARP 응답, MAC3를 전송할 것이다.
만약 네트워크 스택(400)이 상기 요청 호스트를 나타내면, 네트워크 스택(400)은 VIPA에 대한 특정 ARP 요청에 대하여 다수의 ARP 응답들을 각각 서로 다른 MAC 어드레스와 함께 수신할 수 있다. 네트워크 스택(400)이 계층들 중에서 적어도 하나(예를 들어 커널 계층(400))가 라우팅 테이블들(406)이나 다른 캐쉬내에서 ARP 응답들 중에서 하나를 선택하거나 캐쉬에 저장하고 그리고 다른 ARP 응답들을 폐기하기 위해서, ARP 규칙들을 적용한다. 또한, 다른 실시예에서, 네트워크 스택(400)은 특정 ARP 요청에 대한 모든 ARP 응답들을 캐쉬에 저장할 수 있으나, 패킷들을 전송하기 위해 ARP 응답들 중 오직 하나만 선택하고 상기 ARP 응답들 중 하나에 상기 선택된 MAC 어드레스를 통해서 TCP/IP 계층(412)으로부터 VIPA 어드레스로 바인드(bind)한다.
수신 호스트를 나타내는 네트워크 스택(400)으로 돌아와서, 네트워크 스택(400)내의 하나 또는 그 이상의 계층들에서 작동하는 다수의 VIPA 페일오버 제어기(232)의 페일오버 제어기(412)가, 아답터의 페일들을 감지하고 그리고 기능 아답터들이 모든 VIPA들에 대해 ARP 업데이트를 브로드캐스트 하도록 트리거한다. 예를 들어, 만약 페일오버 제어기(412)가 아답터(414)의 페일이나 제거를 감지하면, 페일오버 제어기(412)가 아답터들(416 및 418)이 VIPA 리스트(410)내의 VIPA들 각각에 대해 ARP 업데이트들을 브로드캐스트 하도록 작동시킨다.
본 실시예에서, 만약 VIPA 리스트(410)가 VIPA1 및 VIPA2를 포함하면, 아답터(예를 들어 아답터 414)의 실패를 페일오버 제어기(412)가 감지하는 것에 응답하여, 아답터(416)가 VIPA1,MAC2의 ARP 업데이트 그리고 VIPA2,MAC2의 ARP 업데이트를 브로드캐스트하고, 그리고 아답터 418이 VIPA1,MAC3의 ARP 업데이트와 VIPA2,MAC3의 ARP 업데이트를 브로드캐스트한다.
일 실시예에서, 페일오버 제어기(412)는 커널 계층(404)내에서 구현된다. 특히, 일 실시예에서, 커널 계층(404)은 예를 들어 디바이스 드라이버들을 모니터링하고 각각의 아답터의 상태를 유지하는 것을 통해서, 아답터들(414,416 및 418) 중 어느 것에서 페일들을 감지할 수 있다. 페일오버 제어기(412)를 통해 커널 계층(404)이 페일들을 감지할 수 있을 때, 하나 또는 그 이상의 아답터들의 페일이 발생한 경우, 커널 계층(404)이 TCP/IP 계층(408)에 기능 아답터들상에서 VIPA 리스트(40)내 모든 VIPA들에 대해 ARP 업데이트들을 발송하도록 지시한다.
다른 실시예에서는, 페일오버 제어기(412)가 TCP/IP 계층(408), 아답터 계층(420) 또는 다른 계층내에서 구현되는데, 예를 들어 아답터들(414,416 및 418)이 스위치들을 나타낼 때 여기서 커널 계층(404)은 스위치들내 페일들을 감지할 수 없다. 특히, 일 실시예에서, 만약 TCP/IP 계층(408), 아답터 계층(420) 또는 다른 계층이 커널 계층(404)로 전달되지 않는 아답터들내의 페일들을 감지할 수 있으면, 페일오버 제어기(412)는, 하나 또는 그 이상의 아답터들내에서 페일이 발생하는 경우, TCP/IP 계층(408)이나 아답터 계층(420)이 ARP 업데이트를 기능 아답터들상의 VIPA 리스트(410)내 모든 VIPA들에 대해 발송하도록 트리거하기 위해, TCP/IP 계층(408), 아답터 계층(420) 또는 다른 계층내에서 구현될 수 있다.
상기 ARP 업데이트는 네트워크를 통해 브로드캐스트되고, 그래서 상기 MAC 어드레스를 판독하는 상기 네트워크상의 다른 모든 호스트들이 상기 물리적 어드레스가 변경되었다는 것을 나타내는 상기 ARP 업데이트를 감지할 것이다. 일 실시예에서, 상기 ARP 업데이트는 ARP 응답과 동일한 해더나 다른 식별자를 포함하나, 상기 ARP 업데이트는 상기 네트워크내에서 일반적으로 브로드캐스트된다. 다른 실시예들에서, ARP 업데이트는 어드레싱이 이전에 수신된 어드레싱에 대한 업데이트임을 나타내는 ARP 응답과는 다른 해더나 그외 식별자를 포함할 수 있다.
상기 요청 호스트를 나타내는 네트워크 스택(400)으로 돌아와서, 네트워크 스택(400)이 상기 브로드캐스트 된 ARP 업데이트들을 수신할 때, VIPA에 대해 하나의 ARP 업데이트를 선택하고 상기 동일한 VIPA와 다른 것들을 폐기하는 ARP 규칙에 따라, 커널 계층(404)이 상기 VIPA들 각각에 대해 상기 ARP 업데이트들내 브로드캐스트 된 하나의 MAC 어드레스를 가지고 라우팅 테이블들(406)을 업데이트한다. 상기 실시예에서, 현재 연결이 요청 호스트와 수신 호스트간에 설립된 경우, 상기 요청 호스트는 물리적 어드레스가 아닌 상기 수신 호스트의 IP와 바인드한다. 상기 요청 호스트에서 ARP 업데이트내 모든 VIPA들에 대해 업데이트 된 MAC 어드레스를 수신함으로써, 상기 요청 호스트가 수신 호스트의 업데이트 된 VIPA들 중 하나에 현재 연결되어 있다면, 상기 수신 호스트가 상기 현재 연결의 인터럽트 없이 VIPA로 전송된 임의의 패킷을 업데이트 된 기능 MAC 어드레스들 중 어느 하나로 리디렉션(redirect) 할 것이다.
도 5와 관련하여, 흐름도가 다수의 호스트들과 게이트웨이 호스트사이에서 ARP 패킷들 전송의 일 예를 도시하는데, 여기서 상기 게이트웨어 호스트는 다수의 VIPA들을 동시에 적용이 가능한 다수의 아답터들을 지원한다.
본 실시예에서, 호스트1(502)은 요청 호스트로서 동작하고, 그리고 수신 호스트로서 동작하는 게이트웨이(506)로 VIPA1에 대한 ARP 요청을 발송한다. 게이트웨어(506)는 모두 VIPA1와 VIPA2로 표시된 다수의 VIPA들을 동시에 지원하는 것이 가능한 아답터1(508), 아답터2(510) 및 아답터3(512)를 포함한다. 게이트웨어(506)는 아답터1(508), 아답터2(510) 및 아답터3(512) 각각이 ARP 응답을 전송함으로써 호스트1(502)로부터의 상기 ARP 요청에 응답하도록 트리거한다. 본 실시예에서, 아답터1(508)은 VIPA1 및 MAC1를 가진 ARP 응답을 전송하는데, 여기서 MAC1은 아답터1(508)의 하드웨어 어드레스를 나타낸다. 유사하게, 본 실시예에서, 아답터2(510)는 VIPA1 및 MAC2를 가진 ARP 응답을 전송하는데, 여기서 MAC2는 아답터2(510)의 하드웨어 어드레스를 나타내고 그리고 아답터3(512)은 VIPA1 및 MAC3를 가진 ARP 응답을 전송하는데, 여기서 MAC3는 아답터3(512)의 하드웨어 어드레스를 나타낸다.
도시된 바와 같이, 호스트1(502)은 상기 다수의 ARP 응답들을 수신하고, ARP 규칙들 또는 다른 규칙들을 적용하여, 아답터1(508)에 대한 ARP 응답을 선택한다. 호스트1(502)은 게이트웨이(506)의 아답터1(508)상의 MAC1을 통해서 VIPA1으로 바인드한다.
또한, 본 실시예에서, 호스트2(514)는 요청 호스트로서 동작하고 그리고 수신 호스트로 동작하는 게이트웨어(506)에 VIPA2에 대한 ARP 요청을 전송한다. 게이트웨이(506)은 아답터1(508), 아답터2(510) 및 아답터3(512) 각각이 ARP 응답을 전송함으로써 호스트2(514)로부터의 상기 ARP 요청에 응답하도록 트리거한다. 본 예에서, 아답터1(508)은 VIPA2 및 MAC2을 가진 ARP 응답을 전송하고, 아답터2(510)은 VIPA2 및 MAC2을 가진 ARP 응답을 전송하고, 그리고 아답터3(512)은 VIPA2 및 MAC3을 가진 ARP 응답을 전송한다.
도시된 바와 같이, 호스트2(514)는 상기 다수의 ARP 응답들을 수신하고, ARP 규칙들 또는 다른 규칙들을 적용하여 아답터3(512)에 대한 상기 ARP 응답을 선택한다. 호스트2(514)는 게이트웨이(506)의 아답터3(512)상의 MAC3을 통해 VIPA2에 바인드한다.
다음으로 게이트웨이(506)가 아답터1(508)에서 페일을 감지한다. 호스트1(502) 및 호스트2(514)는 VIPA1 또는 VIPA2에 대해서 패킷들을 발송하기 위해 아답터1(508), 아답터2(510) 및 아답터3(512) 중 어느 하나를 선택할 수 있고, 게이트웨이(506)는 아답터2(510)와 아답터3(513)가 VIPA1 및 VIPA2 둘 다에 대해서 ARP 업데이트를 브로드캐스트하도록 트리거한다. 본 실시예에서 아답터2(510)가 VIPA1, MAC2 및 VIPA2, MAC2에 대한 ARP 업데이트를 브로드캐스트하는데, 이는 호스트1(502) 및 호스트2(514) 둘 다에 의해 감지된다. 또한, 아답터3(512)가 VIPA1, MAC3 및 VIPA2, MAC3에 대한 ARP 업데이트를 브로드캐스트하는데, 이는 호스트1(502) 및 호스트2(514) 둘 다에 의해서 감지된다.
호스트1(502)은 VIPA1, MAC2; VIPA1,MAC3; VIPA2, MAC2 및 VIPA2, MAC3의 ARP 업데이트를 수신하고, VIPA1에 대한 상기 캐쉬된 MAC 어드레스를 MAC2 또는 MAC3 중 하나로 업데이트하고, 그리고 임의의 새로운 패킷들을 상기 업데이트된 캐쉬 MAC 어드레스에 VIPA1로의 연결에 인러럽트 없이 전송한다. 호스트2(514)는 또한 VIPA1,MAC2; VIPA1, MAC3; VIPA2; MAC2 및 VIPA2, MAC3의 ARP 업데이트들을 수신하고, 상기 VIPA2에 대해 캐쉬된 MAC 어드레스들을 업데이트한다. 일 실시예에서, MAC3이 여전히 VIPA2에 대해 사용가능하므로, 호스트2(514)는 MAC3을 VIPA2에 대해 캐쉬된 어드레스로 유지하거나 또는 호스트2(514)는 MAC2 및 MAC3 중 하나 또는 그 이상의 캐쉬를 임의로 선택할 수 있다.
도 6과 관련하여, 블럭도가 본 발명이 구현될 수 있는 게이트웨이를 포함하는 네트워크 환경의 일 예를 도시한다. 본 실시예에서, 네트워크 환경은 서브네트워크(600)를 포함하는데, 여기서 상기 서브네트워크(600)내의 호스트들이 서로의 ARP 패킷들에 대해 감지하고 응답한다. 예를 들어, 게이트웨이(604), 호스트(606), 호스트(608), 호스트(612) 및 호스트(614)는 랜(610)을 통해 서로 통신한다. 또한 게이트웨이(604)는 인터넷(602)을 통해 서브네트워크(600) 외부의 다른 시스템들과 통신한다. 또한, 호스트(608)는 다른 시스템들과 다른 랜(616)을 통해서 예를 들어 호스트(618)과 같은 다른 시스템들과 통신할 수 있는 라우터를 나타낸다.
상기 실시예에서, 서브네트워크(600)내 호스트들 중 임의의 호스트는, 서브네트워크(600)내 다른 모든 호스트들에 의해서 수신되는 ARP 요청이나 ARP 업데이트를 랜(610)상에서 브로드캐스트할 수 있다. 또한, 본 실시예에서, 게이트웨이(604) 및 호스트(608)의 라우터는 인터페이스를 제공할 수 있는데, 서브네트워크(600)내의 호스트들은 상기 인터페이스를 통해서 서브네트워크(600)외의 시스템들에 엑세스한다.
게이트웨이(604) 및 호스트들(606,608,612,614 및 618) 중 어느 하나와 랜(610), 랜(616) 및 인터넷(602) 중 어느 하나는 하나 또는 그 이상의 아답터들을 포함할 수 있고 상기 아답터들이 예를 들어 네트워크 스택(400)을 구현함으로써, 다수의 VIPA들을 동시에 지원하는 것이 가능한 네트워크 스택을 구현할 수 있다. 예를 들어, 게이트웨이(604)가 예를 들어 도 5내의 게이트웨이(506)를 참고하여 기술된 다수의 아답터들과 같은 다수의 아답터들을 포함할 수 있다.
도 7과 관련하여, 흐름도가 다수의 VIPA들을 동시에 지원하는 것이 가능한 다수의 아답터들을 지원하고 데드 게이트웨이 감지(Dead Gateway Detection)를 지원하는 호스트 시스템의 일 예를 도시한다. 상기 실시예에서, 호스트(710)는 게이트웨이(702)가 다운되었는지 아닌지를 감지하기 위한 데드 게이트웨이 감지(DGD)를 지원한다. 특히 호스트(710)는 상기 게이트웨이(702)의 인터페이스가 기능하고 있는지 여부를 감지를 제어하는 DGD 제어기(708)을 포함하거나 DGD 제어기(708)에 엑세스 할 수 있다. 상기 실시예에서, 호스트(710)는 아답터1(712) 및 아답터2(714) 중 어느 하나를 통해서 게이트웨이(702)로 핑을 전송한다. 게이트웨이(702)는 본 게이트웨이(702)가 기능하고 있는 것을 확실히 하기 위해서, 호스트들로부터의 핑들에 응답한다. 만약 DGD 제어기(708)가 상기 핑에 대한 응답을 감지하기 않으면, DGD 제어기(708)은 데드 게이트웨이를 감지할 수 있고 그리고 대체 게이트웨이를 식별하거나 상기 게이트웨이가 기능하지 않다는 경고(alert)를 제공하려고 시도한다.
본 실시예에서, 호스트(710)는 아답터1(712) 및 아답터2(714)가 다수의 VIPA들을 동시에 지원하는 것을 가능하게 한다. 게이트웨이(702)가 기능 아답터들로의 핑에 응답할 수 있고 DGD 제어기(708)가 잘못된 데드 게이트웨이를 감지하게 트리거하지 않도록, DGD 제어기(708)에 덧붙여 다수의 동시 VIPA 지원과 함께, 호스트(710)는 아답터들1(712) 및 아답터들2(714)가 페일된 때를 감지하고 기능하는 아답터들의 하드웨어 어드레스를 가지고 게이트웨이(702)를 업데이트한다.
특히, 본 실시예에서는, 스위치들(704 및 706)을 통해 호스트(710)에서 게이트웨이(702)로 다수의 경로들이 있다. DGD 제어기(708)는 스위치(704)를 포함하는 경로를 통해 아답터1(712)으로 또는 스위치(706)을 포함하는 경로를 통해 아답터2(714)로 중 하나를 통해서 게이트웨이(702)로 핑들을 전송할 수 있다. 예를 들어 게이트웨이(702)가 모든 다른 핑에 응답한다. 만약 아답터2(714)가 페일한 경우, 만약 상기 핑응답이 스위치(704)를 통해 아답터1(712)로 라우트되면, DGD 제어기(708)는 게이트웨이(702)가 아직 기능하는 것으로 감지할 수 있다. 그러나 만약 아답터2(714)가 페일한 경우, 만약 핑 응답이 스위치(706)를 통해서 아답터2(714)로 라우트되면, DGD 제어기(708)는 게이트웨이(702)가 또한 기능하지 않는 것으로 게이트웨이를 감지할 수 있다. 따라서, DGD 제어기(708)가 핑 응답들을 통해서 게이트웨이(702)가 엑세스가능한지 여부를 모니터하는 동시에, 호스트(710)는 아답터1(712) 및 아답터2(714)가 각각 기능하고 있는지 여부를 감지하고 아답터1(712) 및 아답터2(714) 중 어느 하나가 페일하는 경우에 ARP 업데이트들을 게이트웨이(702)로 전송한다. 본 실시예에서, 아답터2(714)가 페일하는 경우에, 아답터1(712)가 아답터1(712)상에서 지원되는 모든 VIPA들에 대해서 ARP 업데이트를 게이트웨이(702)로 전송할 것이다. 페일된 것이 호스트(710)의 아답터인 경우 DGD제어기(708)가 잘못 데드 게이트웨이를 감지하지 않도록 그리고 아답터 페일오버의 경우 호스트(701)내 다수의 VIPA 페일오버 제어기(232)가 게이트웨이(702)로의 "경로 페일오버"를 용이하게 하기 위해서, 게이트웨이(702)가 ARP 업데이트를 수신하고 핑 응답에 대한 어드레스를 아답터1(712)의 MAC 어드레스가 되도록 업데이트한다.
일 실시예에서, 유저는 다수의 VIPA 페일오버 제어기(232)의 사용과 별도로 DGD 제어기(708)를 사용하도록 선택할 수 있다. 다른 실시예에서, DGD 제어기(708)는 다수의 VIPA 페일오버 제어기(232)내에서 구현되고 아답터 페일에 대한 업데이트를 수신될 수 있다.
도 8을 참조하여, 고레벨 논리 흐름도가 요청 호스트로부터의 요청에 대해서 응답하는 수신 호스트의 네트워크 스택에 대한 프로세스 및 프로그램을 도시하는데, 여기서 상기 수신 호스트는 다수의 아답터들이 다수의 VIPA들을 동시에 지원하는 것을 가능케 한다. 상기 실시예에서, 상기 프로세스는 블럭 800에서 시작하고 이후에 블럭 802로 이어진다. 블럭 802는 IP 어드레스와 연관된 하드웨어 어드레스에 대한 요청의 수신을 도시한다. 다음으로, 블럭 804는 상기 요청된 IP 어드레스에 대해서 수신 호스트에 의해서 지원되는 다수의 VIPA의 리스트내에서 검색하는 것을 도시한다. 그 후에, 블럭 806은 상기 요청된 IP 어드레스가 상기 VIPA 리스트내에 포함되어 있는지를 결정하는 것을 도시한다. 만약 상기 요청된 IP 어드레스가 상기 VIPA 리스트내에 포함되어 있지 않으면, 상기 프로세스는 종료된다. 만약 상기 요청된 IP 어드레스가 상기 VIPA 리스트내에 포함되어 있다면, 상기 프로세스는 블럭 808로 이동한다. 블럭 808은 각각의 아답터가, 각각의 아답터 자신에 명시된 하드웨어 어드레스를 가지고, 요청된 IP 어드레스에 대해서 상기 요청 호스트로 응답을 전송하도록 트리거하는 것을 도시하고, 그리고 상기 프로세스는 종료된다. 상기 요청은 ARP 요청을 통해서 구현될 수 있고, 상기 응답은 ARP 응답을 통해서 구현될 수 있고, 상기 특정 하드웨어 어드레스는 MAC 어드레스일 수 있다.
도 9를 참조하여, 고레벨 논리 흐름도가, 요청 호스트가 다수의 아답터들이 동시에 다수의 VIPA들을 지원할 수 있도록 할 때, 페일오버를 용이하게 하기 위해서 페일된 아답터에 응답하는 수신 호스트에 대한 네트워크 스택에 대한 프로세스 및 프로그램을 도시한다. 본 실시예에서, 상기 프로세스는 블럭 900에서 시작하고 그리고나서 블럭 902로 이동한다. 블록 902는 상기 네트워크 스택이 페일된 아답터를 감지했는지 여부를 결정하는 것을 도시한다. 상술한 바와 같이, 상기 네트워크 스택의 다른 계층들이 페일된 아답터들을 감지할 수 있고 그리고 페일된 아답터의 지시자를 네트워크 스택의 다른 계층으로 넘기거나 또는 상기 페일오버 제어기를 직접적으로 트리거한다. 블럭 902에서 상기 네트워크 스택이 페일된 아답터를 감지하면, 상기 프로세스는 블럭 904로 이동한다. 블럭 904는 각각의 남아있는 기능 아답터들이, VIPA 리스트 내의 각각의 VIPA에 대해서 상기 아답터에 명시된 하드웨어 어드레스를 가지고, 네트워크상에서 업데이트를 브로드캐스트하도록 트리거하는 것을 도시하고, 그래서 상기 네트워크상의 각각의 호스트가 각각의 아답터에 대해 각각의 VIPA에 대해서 업데이트를 수신하고, 그리고 상기 프로세스는 종료한다. 상기 업데이트는 ARP 업데이트를 통해서 구현될 수 있으며 상기 특정 하드웨어 어드레스는 MAC 어드레스일 수 있다.
본 발명은 특히 바람직한 실시예를 참고하여 개시되었고 기술되었으나, 본 기술분야에서 통상의 기술을 가진 자에 의해 본 발명의 사상이나 권리범위에서 벗어남이 없이 구성 및 상세한 설명에 있어서 다양한 변형이 만들어질 수 있음이 이해되어져야 한다.

Claims (20)

  1. 네트워크상 다수의 가상 IP 어드레스를 지원하는 호스트내에서 페일오버(failover)를 관리하기 위한 컴퓨터 구현 방법에 있어서,
    상기 호스트의 다수의 아답터들 중 임의의 아답터가, 상기 호스트에 할당된 다수의 가상 인터넷 프로토콜(IP) 어드레스들 중 임의의 가상 IP 어드레스를 동시에 지원하도록 하는 단계; 및
    다수의 가상 IP 어드레스들을 지원하는 호스트내 페일오버를 위해, 상기 다수의 아답터들중에서 적어도 하나의 특정 아답터의 페일(failure)에 응답하여, 상기 호스트가 상기 네트워크를 통해서 엑세스가능한 적어도 하나의 다른 호스트에게 상기 다수의 가상 IP 어드레스들에 대한 임의의 새로운 패킷들을 상기 다수의 아답터들 중에서 남아있는 아답터들 중 하나의 별개의 하드웨어 어드레스들 중 하나로 어드레스 하도록 지시하기(direct) 위해서, 상기 네트워크를 통해서 상기 남아있는 아답터들 각각으로부터 각각의 가상 IP 어드레스에 대해서 상기 별개의 하드웨어 어드레스 업데이트를 브로드캐스팅하는 단계를 포함하는
    페일오버를 관리하기 위한 방법.
  2. 제 1항에 있어서,
    상기 호스트의 다수의 아답터들 중 임의의 아답터가, 상기 호스트에 할당된 다수의 가상 IP 어드레스들 중 임의의 가상 IP 어드레스를 동시에 지원하도록 하는 단계는
    상기 호스트가 다수의 가상 IP 어드레스들의 리스트내 IP 어드레스를 지원하는지 여부를 결정하기 위해서, 상기 호스트에서 수신된 ARP 요청내에 명시된 IP 어드레스를 상기 다수의 가상 IP 어드레스들의 리스트와 비교하기 위해 상기 호스트상에 네트워크 스택을 구성하는 단계를 더 포함하는
    페일오버를 관리하기 위한 방법.
  3. 제 1항 또는 제 2항에 있어서,
    다수의 가상 IP 어드레스들 중 특정 가상 IP 어드레스와 매치하는 특정 IP 어드레스에 대해서, 적어도 하나의 다른 호스트 중 요청 호스트로부터 ARP 요청을 상기 호스트가 수신하는 것에 응답하여, 다수의 아답터들 각각이 상기 특정 가상 IP 어드레스에 대해서 상기 아답터의 각각의 하드웨어 어드레스를 가지고 상기 요청 호스트로 ARP 응답(ARP reply)을 전송하도록 트리거하는 단계 -여기서 상기 요청 호스트는 상기 다수의 아답터들로부터 다수의 ARP 응답들 중 하나를 저장함-;를 더 포함하는
    페일오버를 관리하기 위한 방법.
  4. 전항들 중 어느 한 항에 있어서,
    상기 적어도 하나의 다른 호스트가 다수의 업데이트들을 수신하는 것에 응답하여, 상기 적어도 하나의 다른 호스트에 의해서, 상기 다수의 가상 IP 어드레스들 중 하나에 대한 바운드 연결(bound connection)을 상기 남아있는 아답터들 중 하나의 별개의 하드웨어 어드레스들 중 특정 하나로 재지정(redirecting) 하는 단계를 더 포함하는
    페일오버를 관리하기 위한 방법.
  5. 전항들 중 어느 한 항에 있어서,
    상기 네트워크를 통한 각각의 가상 IP 어드레스에 대한 상기 별개의 하드웨어 어드레스 업데이트는
    각각의 가상 IP 어드레스에 대해서 MAC 어드레스를 명시하는 별개의 ARP 업데이트인
    페일오버를 관리하기 위한 방법.
  6. 전항들 중 어느 한 항에 있어서,
    상기 호스트는
    서브네트워크와 적어도 하나의 다른 네트워크 사이의 게이트웨이인
    페일오버를 관리하기 위한 방법.
  7. 전항들 중 어느 한 항에 있어서,
    게이트웨이가 핑에 대한 응답을 리턴하면 게이트웨이가 기능하고 있는지를 결정하기 위해서, 상기 호스트에 의해서, 상기 게이트웨이를 포함하는 적어도 하나의 다른 호스트로 상기 핑을 주기적으로 전송하는 단계를 더 포함하는
    페일오버를 관리하기 위한 방법.
  8. 페일오버를 관리하기 위한 시스템에 있어서,
    호스트의 다수의 아답터들 중 임의의 아답터가, 상기 호스트에 할당된 다수의 가상 인터넷 프로토콜(IP) 어드레스들 중 임의의 가상 IP 어드레스를 동시에 지원하는 것을 가능하게 하는 네트워크 계층(layer)을 포함하는 호스트를 포함하고,
    상기 호스트는 네트워크를 통해서 적어도 하나의 다른 호스트에 통신가능하도록 연결되며; 그리고
    상기 네트워크 계층은 다수의 가상 IP 어드레스들을 지원하는 호스트내 페일오버를 위해, 상기 다수의 아답터들중에서 적어도 하나의 특정 아답터의 페일에 응답하여, 상기 네트워크 계층이 상기 네트워크를 통해서 엑세스가능한 적어도 하나의 다른 호스트에게 상기 다수의 가상 IP 어드레스들에 대한 임의의 새로운 패킷들을 상기 다수의 아답터들 중에서 남아있는 아답터들 중 하나의 별개의 하드웨어 어드레스들 중 하나로 어드레스 하도록 지시하기 위해서, 상기 네트워크를 통해서 상기 남아있는 아답터들 각각으로부터 각각의 가상 IP 어드레스에 대해서 상기 별개의 하드웨어 어드레스 업데이트를 브로드캐스팅하는 기능을 더 포함하는
    페일오버를 관리하기 위한 시스템.
  9. 제 8항에 있어서,
    상기 호스트의 다수의 아답터들 중 임의의 아답터가, 상기 호스트에 할당된 다수의 가상 IP 어드레스들 중 임의의 가상 IP 어드레스를 동시에 지원하는 것을 가능하게 하는 네트워크 계층은
    상기 호스트가 다수의 가상 IP 어드레스들의 리스트내 IP 어드레스를 지원하는지 여부를 결정하기 위해서, 상기 호스트에서 수신된 ARP 요청내에 명시된 IP 어드레스를 다수의 가상 IP 어드레스들의 리스트와 비교하기 위해 상기 호스트상에 네트워크 스택을 구성하기 위한 전송 계층을 더 포함하는
    페일오버를 관리하기 위한 시스템.
  10. 제 8항 또는 제 9항에 있어서,
    상기 네트워크 계층은
    다수의 가상 IP 어드레스들 중 특정 가상 IP 어드레스와 매치하는 특정 IP 어드레스에 대해서, 적어도 하나의 다른 호스트 중 요청 호스트로부터 ARP 요청을 상기 호스트가 수신하는 것에 응답하여, 다수의 아답터들 각각이 상기 특정 가상 IP 어드레스에 대해서 상기 아답터의 각각의 하드웨어 어드레스를 가지고 상기 요청 호스트로 ARP 응답을 전송하도록 트리거하는 -여기서 상기 요청 호스트는 상기 다수의 아답터들로부터 다수의 ARP 응답들 중 하나를 저장함-; 기능을 더 포함하는
    페일오버를 관리하기 위한 시스템.
  11. 제 8항 내지 제 10항 중 어느 한 항에 있어서,
    상기 적어도 하나의 다른 호스트는,
    상기 적어도 하나의 다른 호스트가 다수의 업데이트들을 수신하는 것에 응답하여, 상기 다수의 가상 IP 어드레스들 중 하나에 대한 바운드 연결을 상기 남아있는 아답터들 중 하나의 별개의 하드웨어 어드레스들 중 특정 하나로 재지정하기 하는 기능을 더 포함하는
    페일오버를 관리하기 위한 시스템.
  12. 제 8항 내지 제 11항 중 어느 한 항에 있어서,
    상기 네트워크를 통한 각각의 가상 IP 어드레스에 대한 상기 별개의 하드웨어 어드레스 업데이트는
    각각의 가상 IP 어드레스에 대해서 MAC 어드레스를 명시하는 별개의 ARP 업데이트인
    페일오버를 관리하기 위한 시스템.
  13. 제 8항 내지 제 12항 중 어느 한 항에 있어서,
    상기 호스트는
    서브네트워크와 적어도 하나의 다른 네트워크 사이의 게이트웨이인
    페일오버를 관리하기 위한 시스템.
  14. 제 8항 내지 제 13항 중 어느 한 항에 있어서,
    게이트웨이가 핑에 대한 응답을 리턴하면 게이트웨이가 기능하고 있는지를 결정하기 위해서, 상기 호스트에 의해서, 상기 게이트웨이를 포함하는 적어도 하나의 다른 호스트로 상기 핑을 주기적으로 전송하는 기능을 더 포함하는
    페일오버를 관리하기 위한 시스템.
  15. 네트워크상 다수의 가상 IP 어드레스를 지원하는 호스트내에서 페일오버를 관리하기 위한 컴퓨터-판독가능 프로그램을 포함하는 저장매체-타입 컴퓨터-사용가능 매체를 포함하는 프로그램 제품에 있어서, 상기 컴퓨터-판독가능 프로그램이 컴퓨터상에서 실행될 때,
    상기 컴퓨터가
    상기 호스트의 다수의 아답터들 중 임의의 아답터가, 상기 호스트에 할당된 다수의 가상 인터넷 프로토콜(IP) 어드레스들 중 임의의 가상 IP 어드레스를 동시에 지원하도록 하는 단계; 및
    상기 다수의 아답터들 중에서 적어도 하나의 특정 아답터의 페일에 응답하여, 상기 네트워크를 통해서 상기 다수의 아답터들 중에서 남아있는 아답터들 각각으로부터 각각의 가상 IP 어드레스에 대해서 별개의 하드웨어 어드레스 업데이트를 브로드캐스팅하는 단계를 실행하도록 하는
    프로그램 제품.
  16. 제 15항에 있어서,
    상기 프로그램-판독가능 프로그램은
    네트워크를 통해서 전송되는
    프로그램 제품.
  17. 제 15항 또는 제 16항에 있어서,
    상기 컴퓨터-판독가능 프로그램이 컴퓨터상에서 실행될 때,
    상기 컴퓨터가
    상기 호스트가 다수의 가상 IP 어드레스들의 리스트내 IP 어드레스를 지원하는지 여부를 결정하기 위해서, 상기 호스트에서 수신된 ARP 요청내에 명시된 IP 어드레스를 다수의 가상 IP 어드레스들의 리스트와 비교하기 위해 상기 호스트상에 네트워크 스택을 구성하는 단계를 더 실행하도록 하는
    프로그램 제품.
  18. 제 15항 내지 제 17항 중 어느 한 항에 있어서,
    상기 컴퓨터-판독가능 프로그램이 컴퓨터상에서 실행될 때,
    상기 컴퓨터가
    다수의 가상 IP 어드레스들 중 특정 가상 IP 어드레스와 매치하는 특정 IP 어드레스에 대해서, 적어도 하나의 다른 호스트 중 요청 호스트로부터 ARP 요청을 상기 호스트가 수신하는 것에 응답하여, 다수의 아답터들 각각이 상기 특정 가상 IP 어드레스에 대해서 상기 아답터의 각각의 하드웨어 어드레스를 가지고 상기 요청 호스트로 ARP 응답을 전송하도록 트리거하는 단계 -여기서 상기 요청 호스트는 상기 다수의 아답터들로부터 다수의 ARP 응답들 중 하나를 저장함-;를 더 실행하도록 하는
    프로그램 제품.
  19. 제 15항 내지 제 18항 중 어느 한 항에 있어서,
    상기 컴퓨터-판독가능 프로그램이 컴퓨터상에서 실행될 때,
    상기 컴퓨터가
    상기 적어도 하나의 다른 호스트가 다수의 업데이트들을 수신하는 것에 응답하여, 상기 적어도 하나의 다른 호스트에 의해서, 상기 다수의 가상 IP 어드레스들 중 하나에 대한 바운드 연결을 상기 남아있는 아답터들 중 하나의 별개의 하드웨어 어드레스들 중 특정 하나로 재지정하는 단계를 더 실행하도록 하는
    프로그램 제품.
  20. 제 15항 내지 제 19항 중 어느 한 항에 있어서,
    상기 컴퓨터-판독가능 프로그램이 컴퓨터상에서 실행될 때,
    상기 컴퓨터가
    각각의 가상 IP 어드레스에 대해서 MAC 어드레스를 명시하는 별개의 ARP 업데이트를 통해서, 상기 네트워크 상에서 각각의 가상 IP 어드레스에 대한 상기 별개의 하드웨어 어드레스 업데이트를 업데이트하도록 실행하도록 하는
    프로그램 제품.
KR1020107013046A 2007-12-18 2007-12-18 다수의 아답터들을 통해서 다수의 가상 ip 어드레스를 동시에 지원하는 호스트내 페일오버 KR101442309B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/958,548 US7913106B2 (en) 2007-12-18 2007-12-18 Failover in a host concurrently supporting multiple virtual IP addresses across multiple adapters
US11/958,548 2007-12-18
PCT/EP2008/066080 WO2009077292A1 (en) 2007-12-18 2008-11-24 Failover in a host concurrently supporting multiple virtual ip addresses across multiple adapters

Publications (2)

Publication Number Publication Date
KR20100097694A true KR20100097694A (ko) 2010-09-03
KR101442309B1 KR101442309B1 (ko) 2014-09-23

Family

ID=40416946

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107013046A KR101442309B1 (ko) 2007-12-18 2007-12-18 다수의 아답터들을 통해서 다수의 가상 ip 어드레스를 동시에 지원하는 호스트내 페일오버

Country Status (10)

Country Link
US (1) US7913106B2 (ko)
EP (1) EP2232828B1 (ko)
JP (1) JP4897927B2 (ko)
KR (1) KR101442309B1 (ko)
CN (1) CN101884208B (ko)
AT (1) ATE504153T1 (ko)
CA (1) CA2699314C (ko)
DE (1) DE602008005937D1 (ko)
TW (1) TWI448131B (ko)
WO (1) WO2009077292A1 (ko)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5074290B2 (ja) * 2008-05-13 2012-11-14 株式会社日立国際電気 冗長切替システム、冗長管理装置およびアプリケーション処理装置
JP5498102B2 (ja) * 2009-09-02 2014-05-21 アラクサラネットワークス株式会社 ネットワークシステム、ネットワーク中継装置、それらの制御方法
DE102010052394B4 (de) * 2010-11-24 2019-01-03 Kuka Roboter Gmbh Robotersystem mit einem Roboter und zwei wechselweise mit diesem verbindbaren Einrichtungen sowie Verfahren zum Wechseln dieser Einrichtungen
US9300491B2 (en) 2011-02-11 2016-03-29 Qualcomm Incorporated Frame delivery path selection in hybrid communication networks
US9025603B2 (en) 2011-03-08 2015-05-05 Qualcomm Incorporated Addressing scheme for hybrid communication networks
CN103460653A (zh) * 2011-03-31 2013-12-18 日本电气株式会社 计算机系统和通信方法
US20120311183A1 (en) * 2011-06-01 2012-12-06 Kutch Patrick G Circuitry to maintain correlation between sets of addresses
US9154367B1 (en) * 2011-12-27 2015-10-06 Google Inc. Load balancing and content preservation
US20130194912A1 (en) 2012-01-27 2013-08-01 International Business Machines Corporation Sea failover mechanism with minimized packet losses
US9286171B2 (en) * 2013-12-12 2016-03-15 International Business Machines Corporation Priming failover of stateful offload adapters
EP3140734B1 (en) 2014-05-09 2020-04-08 Nutanix, Inc. Mechanism for providing external access to a secured networked virtualization environment
TWI597953B (zh) 2015-11-25 2017-09-01 財團法人工業技術研究院 具故障轉移能力的快速周邊元件互連網路系統與操作方法
CN105376095A (zh) * 2015-11-26 2016-03-02 曙光信息产业股份有限公司 一种访问ip均衡方法及装置
US10540165B2 (en) 2016-02-12 2020-01-21 Nutanix, Inc. Virtualized file server rolling upgrade
US11218418B2 (en) 2016-05-20 2022-01-04 Nutanix, Inc. Scalable leadership election in a multi-processing computing environment
US10728090B2 (en) 2016-12-02 2020-07-28 Nutanix, Inc. Configuring network segmentation for a virtualization environment
US11568073B2 (en) 2016-12-02 2023-01-31 Nutanix, Inc. Handling permissions for virtualized file servers
US11562034B2 (en) 2016-12-02 2023-01-24 Nutanix, Inc. Transparent referrals for distributed file servers
US10824455B2 (en) 2016-12-02 2020-11-03 Nutanix, Inc. Virtualized server systems and methods including load balancing for virtualized file servers
US11294777B2 (en) 2016-12-05 2022-04-05 Nutanix, Inc. Disaster recovery for distributed file servers, including metadata fixers
US11288239B2 (en) 2016-12-06 2022-03-29 Nutanix, Inc. Cloning virtualized file servers
US11281484B2 (en) 2016-12-06 2022-03-22 Nutanix, Inc. Virtualized server systems and methods including scaling of file system virtual machines
US11086826B2 (en) 2018-04-30 2021-08-10 Nutanix, Inc. Virtualized server systems and methods including domain joining techniques
US11194680B2 (en) 2018-07-20 2021-12-07 Nutanix, Inc. Two node clusters recovery on a failure
US11770447B2 (en) 2018-10-31 2023-09-26 Nutanix, Inc. Managing high-availability file servers
US11768809B2 (en) 2020-05-08 2023-09-26 Nutanix, Inc. Managing incremental snapshots for fast leader node bring-up
US11706298B2 (en) * 2021-01-21 2023-07-18 Cohesity, Inc. Multichannel virtual internet protocol address affinity

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5978938A (en) * 1996-11-19 1999-11-02 International Business Machines Corporation Fault isolation feature for an I/O or system bus
US5917997A (en) 1996-12-06 1999-06-29 International Business Machines Corporation Host identity takeover using virtual internet protocol (IP) addressing
US7039008B1 (en) * 1997-05-02 2006-05-02 Cisco Technology, Inc. Method and apparatus for maintaining connection state between a connection manager and a failover device
US6108300A (en) * 1997-05-02 2000-08-22 Cisco Technology, Inc Method and apparatus for transparently providing a failover network device
US7055173B1 (en) * 1997-12-19 2006-05-30 Avaya Technology Corp. Firewall pooling in a network flowswitch
US6078957A (en) * 1998-11-20 2000-06-20 Network Alchemy, Inc. Method and apparatus for a TCP/IP load balancing and failover process in an internet protocol (IP) network clustering system
US6430622B1 (en) * 1999-09-22 2002-08-06 International Business Machines Corporation Methods, systems and computer program products for automated movement of IP addresses within a cluster
US6657974B1 (en) 2000-04-14 2003-12-02 International Business Machines Corporation Method and apparatus for generating replies to address resolution protocol requests
US6675206B1 (en) 2000-04-14 2004-01-06 International Business Machines Corporation Method and apparatus for generating replies to address resolution protocol requests for virtual IP addresses
US6718383B1 (en) * 2000-06-02 2004-04-06 Sun Microsystems, Inc. High availability networking with virtual IP address failover
US6996617B1 (en) * 2000-08-17 2006-02-07 International Business Machines Corporation Methods, systems and computer program products for non-disruptively transferring a virtual internet protocol address between communication protocol stacks
US6941384B1 (en) * 2000-08-17 2005-09-06 International Business Machines Corporation Methods, systems and computer program products for failure recovery for routed virtual internet protocol addresses
US7146432B2 (en) * 2001-01-17 2006-12-05 International Business Machines Corporation Methods, systems and computer program products for providing failure recovery of network secure communications in a cluster computing environment
US7426566B2 (en) * 2001-01-17 2008-09-16 International Business Machines Corporation Methods, systems and computer program products for security processing inbound communications in a cluster computing environment
US7107350B2 (en) * 2001-01-17 2006-09-12 International Business Machines Corporation Methods, systems and computer program products for security processing outbound communications in a cluster computing environment
US6944785B2 (en) * 2001-07-23 2005-09-13 Network Appliance, Inc. High-availability cluster virtual server system
US7020796B1 (en) 2001-07-27 2006-03-28 Ciena Corporation High availability communication system
US7061942B2 (en) * 2002-05-31 2006-06-13 Skystream Networks Inc. Apparatus for redundant multiplexing and remultiplexing of program streams and best effort data
JP3932994B2 (ja) * 2002-06-25 2007-06-20 株式会社日立製作所 サーバ引継システムおよびその方法
US7152179B1 (en) * 2002-09-19 2006-12-19 Cisco Technology, Inc. IP redundancy with improved failover notification
US7835265B2 (en) * 2002-10-31 2010-11-16 Conexant Systems, Inc. High availability Ethernet backplane architecture
JP2004220216A (ja) * 2003-01-14 2004-08-05 Hitachi Ltd San/nas統合型ストレージ装置
US7814232B2 (en) * 2003-03-28 2010-10-12 Cisco Technology, Inc. Network address translation with gateway load distribution
US20050010837A1 (en) * 2003-07-10 2005-01-13 International Business Machines Corporation Method and apparatus for managing adapters in a data processing system
US20050125557A1 (en) * 2003-12-08 2005-06-09 Dell Products L.P. Transaction transfer during a failover of a cluster controller
US7760626B2 (en) * 2004-03-31 2010-07-20 Intel Corporation Load balancing and failover
US7506214B2 (en) * 2004-04-22 2009-03-17 International Business Machines Corporation Application for diagnosing and reporting status of an adapter
US7275175B2 (en) * 2004-07-22 2007-09-25 International Business Machines Corporation Method and apparatus for high-speed network adapter failover
US7505401B2 (en) * 2005-01-31 2009-03-17 International Business Machines Corporation Method, apparatus and program storage device for providing mutual failover and load-balancing between interfaces in a network
JP4405941B2 (ja) * 2005-05-26 2010-01-27 日本電信電話株式会社 回線冗長化方法およびこれに用いる中継装置
US8195736B2 (en) * 2006-08-08 2012-06-05 Opnet Technologies, Inc. Mapping virtual internet protocol addresses
US7743155B2 (en) * 2007-04-20 2010-06-22 Array Networks, Inc. Active-active operation for a cluster of SSL virtual private network (VPN) devices with load distribution
US20080285436A1 (en) * 2007-05-15 2008-11-20 Tekelec Methods, systems, and computer program products for providing site redundancy in a geo-diverse communications network
US9009327B2 (en) * 2007-08-03 2015-04-14 Citrix Systems, Inc. Systems and methods for providing IIP address stickiness in an SSL VPN session failover environment
US8132247B2 (en) * 2007-08-03 2012-03-06 Citrix Systems, Inc. Systems and methods for authorizing a client in an SSL VPN session failover environment
US8020203B2 (en) * 2007-12-03 2011-09-13 Novell, Inc. Techniques for high availability of virtual private networks (VPN's)
US20100097925A1 (en) * 2008-10-16 2010-04-22 International Business Machines Corporation Selective routing traffic controls and automated recovery among parallel multi-access interfaces

Also Published As

Publication number Publication date
CN101884208B (zh) 2013-06-12
ATE504153T1 (de) 2011-04-15
CN101884208A (zh) 2010-11-10
JP4897927B2 (ja) 2012-03-14
DE602008005937D1 (de) 2011-05-12
EP2232828A1 (en) 2010-09-29
WO2009077292A1 (en) 2009-06-25
US7913106B2 (en) 2011-03-22
TW200943877A (en) 2009-10-16
EP2232828B1 (en) 2011-03-30
US20090158082A1 (en) 2009-06-18
JP2011507426A (ja) 2011-03-03
CA2699314C (en) 2016-03-29
CA2699314A1 (en) 2009-06-25
TWI448131B (zh) 2014-08-01
KR101442309B1 (ko) 2014-09-23

Similar Documents

Publication Publication Date Title
KR101442309B1 (ko) 다수의 아답터들을 통해서 다수의 가상 ip 어드레스를 동시에 지원하는 호스트내 페일오버
US10749936B1 (en) Managing communications having multiple alternative destinations
JP6169251B2 (ja) 分散型ロードバランサにおける非対称パケットフロー
US8937960B2 (en) Managing communications for modified computer networks
CA2751733C (en) Providing logical networking functionality for managed computer networks
US8488446B1 (en) Managing failure behavior for computing nodes of provided computer networks
JP7345059B2 (ja) ルーティング制御方法、装置、プログラム及びコンピュータ装置
US20130159487A1 (en) Migration of Virtual IP Addresses in a Failover Cluster
US9363313B2 (en) Reducing virtual IP-address (VIP) failure detection time
US9898377B2 (en) Switch provided failover
JP2006129446A (ja) フォールト・トレラント・ネットワーク・アーキテクチャ
US9973378B2 (en) Implementing gateway redundancy in a network
US8051213B2 (en) Method for server-directed packet forwarding by a network controller based on a packet buffer threshold
US20220182354A1 (en) Decoupling of ip address bindings and use in a distributed cloud computing network
CN116094923B (zh) 云实例迁移后的网关更新方法及装置和电子设备
US10924397B2 (en) Multi-VRF and multi-service insertion on edge gateway virtual machines
US20210352004A1 (en) Multi-vrf and multi-service insertion on edge gateway virtual machines
JP6014068B2 (ja) 中継装置及び中継方法、並びにコンピュータ・プログラム
Takahashi et al. Tcp-migration with application-layer dispatching: A new http request distribution architecture in locally distributed web server systems
CN114826887A (zh) 私网连接通信方法和系统

Legal Events

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

Payment date: 20170828

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190829

Year of fee payment: 6