KR20080055805A - 라우팅된 네트워크에서의 내고장성 통신 - Google Patents

라우팅된 네트워크에서의 내고장성 통신 Download PDF

Info

Publication number
KR20080055805A
KR20080055805A KR20087005079A KR20087005079A KR20080055805A KR 20080055805 A KR20080055805 A KR 20080055805A KR 20087005079 A KR20087005079 A KR 20087005079A KR 20087005079 A KR20087005079 A KR 20087005079A KR 20080055805 A KR20080055805 A KR 20080055805A
Authority
KR
South Korea
Prior art keywords
path
node
data packet
network
communication paths
Prior art date
Application number
KR20087005079A
Other languages
English (en)
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 KR20080055805A publication Critical patent/KR20080055805A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2002Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant
    • G06F11/2005Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant using redundant communication controllers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/28Routing or path finding of packets in data switching networks using route fault recovery
    • 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
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0654Management of faults, events, alarms or notifications using network fault recovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/10Active monitoring, e.g. heartbeat, ping or trace-route
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/22Alternate routing
    • 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/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • 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/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • 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/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/165Combined use of TCP and UDP protocols; selection criteria therefor
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2002Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant
    • G06F11/2007Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant using redundant communication media

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Cardiology (AREA)
  • General Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Hardware Redundancy (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)

Abstract

복수의 노드들 사이에 연결된 복수의 네트워크들을 통해 복수의 초기 통신 경로들을 제공하는 단계, 애플리케이션으로부터 송신 노드 상의 데이터 패킷을 수신하는 단계 -송신 노드는 상기 복수의 노드들 중 하나이고, 데이터 패킷은 애플리케이션에 의해 복수의 노드들 중 하나 상의 어드레스로 어드레싱됨, 복수의 초기 통신 경로들 중에서 데이터 패킷에 대한 우선 경로인 제1 선택 경로를 선택하는 단계를 포함하는 복수의 노드들 사이에서의 내고장성 네트워크 통신을 애플리케이션에게 제공하는 방법.
Figure P1020087005079
내고장성 통신, 하트비트 패킷, 엔드-투-엔드 동작, 터널링

Description

라우팅된 네트워크에서의 내고장성 통신{FAULT-TOLERANT COMMUNICATIONS IN ROUTED NETWORKS}
컴퓨터 네트워킹 환경에서, 복수의 노드들이 네트워크를 통해 서로 통신할 수 있다. 네트워크가 실패를 경험한다면, 노드들간의 통신이 두절될 수 있다.
이하의 설명은 독자에게 기초적인 이해를 제공하기 위하여 본 명세서의 간략한 개요를 제공한다. 본 개요는 본 명세서의 광범위한 개관이 아니며, 본 발명의 핵심적인 또는 중요한 요소들을 식별하거나, 본 발명의 범위를 나타내지는 않는다. 그 유일한 목적은 이하에 제시될 보다 상세한 설명의 서두로서, 본 명세서에 개시된 몇몇 개념들을 단순화된 형태로 제공하고자 하는 것이다.
이하의 예들은 네트워크화된 노드들 상에서 동작하는 애플리케이션 소프트웨어에 의해 최소한의 고려사항을 요구하는 고유한 네트워크 스택 아키텍쳐를 통해 컴퓨터 네트워크 통신 내고장성(fault-tolerance)을 제공한다.
첨부된 도면과 연계하여 고려되는 이하의 상세한 설명을 참조함으로써 더욱 잘 이해될 것이므로, 다수의 부수되는 특징들이 보다 용이하게 이해될 것이다.
본 설명은 첨부된 도면의 관점에서 판독되는 이하의 상세한 설명으로부터 더욱 잘 이해될 것이다.
도 1은 예시적인 네트워크 스택 아키텍쳐를 도시하는 블록도이다.
도 2는 2개의 네트워크들을 통해 연결된 예시적인 노드들을 포함하는 네트워크화된 컴퓨팅 환경을 도시하는 블록도이다.
도 3은 예시적인 내고장성 통신 드라이버인 NETFT를 도시하는 블록도이다.
도 4는 NETFT 및 애플리케이션을 포함하는 예시적인 내고장성 통신 아키텍쳐를 도시하는 블록도이다.
도 5는 네트워크1 상의 경로A와 네트워크2 상의 경로B를 통해 연결된 소스 노드 및 착신 노드를 포함하는 내고장성 통신 환경을 통해 흐르는 데이터를 도시하는 흐름도이다.
도 6은 몇몇 가능한 통신 오류를 추가적으로 갖는 도 5에 도시된 내고장성 통신 환경을 통해 흐르는 데이터를 도시하는 흐름도이다.
도 7은 내고장성 통신 드라이버인 NETFT의 다른 예를 도시하는 블록도이다.
도 8은 NETFT 및 애플리케이션을 포함하는 예시적인 내고장성 통신 아키텍쳐를 도시하는 블록도이다.
도 9는 네트워크1 상의 경로A와 네트워크2 상의 경로B를 통해 연결된 소스 노드 및 착신 노드를 포함하는 내고장성 통신 환경을 통해 흐르는 데이터를 도시하는 흐름도이다.
도 10은 몇몇 가능한 통신 오류를 추가적으로 갖는 도 9에 도시된 내고장성 통신 환경을 통해 흐르는 데이터를 도시하는 흐름도이다.
도 11은 상술한 기술이 구현될 수 있는 예시적인 컴퓨팅 환경을 도시하는 블록도이다.
첨부된 도면에서 동일한 참조 부호는 동일한 대응 부분을 나타내는 데 사용된다.
첨부된 도면과 연계하여 이하 제공되는 상세한 설명은 본 예들의 설명으로서 의도된 것이며, 본 예들이 구성되거나 이용될 수 있는 유일한 형태를 나타내려 한 것은 아니다. 본 설명은 예들의 기능과 본 예들을 구성하고 동작하기 위한 단계들의 시퀀스를 제시한다. 그러나, 동일하거나 동등한 기능들 및 시퀀스들이 다른 예들에 의해 달성될 수도 있다.
본 예들이 컴퓨팅 및 네트워킹 시스템에서 구현되는 것으로 본 명세서에서 설명되고 예시되지만, 설명되는 시스템은 예로서 제공되며 이에 제한되지는 않는다. 본 기술분야의 당업자라면, 본 예들이 각종 상이한 유형의 컴퓨팅 및 네트워킹 시스템들에서의 응용에 적절하다는 것을 이해할 것이다.
도 1은 예시적인 네트워크 스택 아키텍쳐(100)를 도시하는 블록도이다. 네트워크 스택("스택")은 일반적으로 네트워크 스택 인터페이스 및/또는 기타 인터페이스를 통해 소프트웨어 애플리케이션과 연결되어, 애플리케이션에 네트워크 통신 기능을 제공한다. 애플리케이션은 통상적으로 스택의 "최상부(top)"에 있다(또는 이에 연결되어 있다)고 한다. 네트워크는 통상적으로 스택의 "최하부(bottom)"에 있다(또는 이에 연결되어 있다)고 한다. 네트워크 스택의 각종 요소들은 스택의 최상부 또는 최하부에 있거나, 그 부근에 있거나, 서로에 대해 스택 내의 보다 높은 것 또는 보다 낮은 곳에 있다고 할 수 있다. 예를 들어, 도 1에서, 프로토콜 드라이버(130)는 이러한 특정 도면에서 스택의 최하부에 있는 것으로 도시된 NIC(180)보다 더 높은 곳에 있다. 네트워크 스택의 다양한 도면들은 본 기술분야의 당업자에게 이해되는 바와 같이, 그 목적 또는 도시의 초점에 따라, 몇몇 스택 요소들을 포함하거나 포함하지 않을 수 있고, 또는 요소들의 순서 또는 이름을 다양한 방식으로 그룹핑할 수 있다.
본 명세서에서 사용되는 "드라이버"라는 용어는 노드로 하여금 프린터, 네트워크 인터페이스 카드 또는 기타 컴퓨터 서브시스템과 같은 특정 디바이스와 함께 동작할 수 있게 하거나, 네트워크 스택, 프로토콜 드라이버들 및/또는 기타 컴퓨터 소프트웨어 또는 펌웨어 등과 같은 하나 이상의 프로그램과 함께 동작할 수 있게 하는 제어 프로그램 등을 말한다. 예를 들어, 프로토콜 드라이버는 통상적으로 네트워크 스택과 함께 동작한다.
애플리케이션은 다른 노드 상에서 동작하는 애플리케이션으로 예정된 스택으로 데이터 패킷을 전달할 수 있다. 이러한 경우에, 데이터는 스택 "아래로" 흘러간다고 하며, 네트워크를 통해 외부로 전송된다. 노드에 의해 수신된 데이터는 예정된 애플리케이션에 도달할 때까지 스택 "위로" 흘러간다고 한다. 이러한 네트워킹 시스템들은 본 기술분야의 당업자에게 잘 알려져 있다.
일 예에서, 스택은, NIC(180)와 같은 "NIC(network interface card)"들을 위한 "API(application programming interface)"를 규정하는 "NDIS(Network Driver Interface Specification)"에 기초하여 네트워크 드라이버들로부터 네트워크 하드웨어를 추출한다. 또한, NDIS는 층화된(layered) 네트워크 드라이브들 사이이 표준 인터페이스를 규정함으로써, 프로토콜 드라이버들과 같은 상위 레벨 드라이버들로부터 미니포트 드라이버와 같은, 하드웨어를 관리하는 하위 레벨 드라이버들을 추출한다. NDIS를 준수하는 복수의 프로토콜 드라이버들이 단일 노드 상에 공존할 수도 있다. 또한, 노드가 복수의 NIC들을 포함한다면, 아마도 노드는 하나 이상의 네트워크에 접속되어 있으므로 NDIS는 트래픽에 의해 지시된 그 관련 드라이버를 통해 네트워크 트래픽을 적절한 NIC에 라우팅한다. NIDS의 예시가 도 1에 도시되어 있다. 본 기술분야의 당업자에게 이해될 바와 같이, "ODI(Open Data-Link Interface)", "DLPI(Data Link Provider Interface)", "UDI(Uniform Driver Interface)" 또는 기타 기술들과 같은 기타 네트워킹 스택 표준, 기술 및/또는 아키텍쳐가 이하의 예들뿐만 아니라 적절한 변형예에서 사용될 수 있다. 편의상 NDIS 및 NDIS 용어가 본 명세서 전반에 걸친 예들에서 사용되었지만, 달리 언급이 없다면 다른 표준, 기술 및/또는 아키텍쳐들이 적절한 변형예를 갖는 이러한 예들 모두에서 사용될 수 있다.
도 1에 도시한 바와 같이, 미니포트 드라이버(160)는 NDIS(120)를 통해 NIC(180)에 연결되어 있다. 미니포트 드라이버는 통상적으로 NDIS 미니포트 인터페이스(162)를 통해 NDIS와 대화한다. 미니포트 드라이버(160)는 NIC(180)와 연관될 수 있고, NIC를 통해 데이터를 송신하고 수신하는 것을 포함하는 동작들을 관리할 수 있다. 미니포트 드라이버(160)는 중간 드라이버(140) 및 프로토콜 드라이 버(130)와 같은 보다 높은 레벨의 드라이버들과 통상적으로 대화한다. 미니포트 드라이버는 NIC 드라이버로 고려된다. NIC 미니포트들은 NDIS에 의해 제공되는 공통 기능 또는 NIC 독립 기능을 갖는 특정 NIC를 관리하는 데 필요한 하드웨어 특정 동작들을 일반적으로 수행한다. 노드는 복수의 NIC들을 포함할 수 있으며, 각각의 NIC는 일반적으로 연관된 NIC 드라이버를 갖는다. 본 명세서의 몇몇 예들은 미니포트 드라이버들의 용법을 설명하지만, 본 기술분야의 당업자에 의해 이해될 바와 같이 임의의 유형의 NIC 드라이버 등이 달리 언급이 없다면 이러한 예들에 사용될 수 있다.
프로토콜 또는 전송 드라이버(130)는 NDIS 프로토콜 인터페이스(134)를 통해 NDIS(120)에 연결된다. 프로토콜 드라이버들 또는 전송 프로토콜 드라이버들은 네트워크 스택을 통해, 그리고 네트워크를 통해 하나의 노드로부터 다른 노드로 전송되는 데이터 패킷을 생성, 송신 및 수신하는 기능을 일반적으로 제공한다. 본 기술분야의 당업자에게 알려진 바와 같이, 통상적인 신뢰성 있거나 보증된 운송 전송 프로토콜은 TCP/IP(Transmission Control Protocol/Internet Protocol)일 수 있다. IP 위의 UDP(User Datagram Protocol)는 통상적인 신뢰성이 없거나 보증되지 않은 운송 프로토콜일 수 있다. TCP, UDP 및/또는 IPX/SPX(Internet Packet Exchange/Sequenced Packet Exchange)와 같은 기타 프로토콜들이 달리 언급이 없다면 이하의 예들에서 사용될 수 있다.
NDIS 중간("IM") 드라이버들(140)은 도 1에서 프로토콜 드라이버들(130)과 NDIS NIC 미니포트들(160) 사이에 있는 것으로 도시된다. 프로토콜 드라이버들에 게 IM 드라이버들은 NDIS 미니포트들로 보이며, NIC 드라이버들에게 IM 드라이버들은 프로토콜 드라이버들처럼 보인다. 네트워크 스택 위로/또는 아래로 흐르는 데이터 패킷은 데이터 패킷들을 무시, 검사, 필터링, 전달, 재방향 설정 및/또는 변경할 수 있는 IM 드라이버(140)를 통과한다. 중간 드라이버(140)는 필터 드라이버로도 알려질 수 있다.
도 2는 2개의 네트워크들(202, 282)을 통해 연결된 2개의 예시적인 노드들(210, 260)을 포함하는 네트워크화된 컴퓨팅 환경(200)을 도시하는 블록도이다. 노드들(210, 260) 각각은 퍼스널 컴퓨터("PC")들, 클라이언트 컴퓨터들, 서버들, 호스트들, 랩톱들, 휴대용 디바이스들, 가전 제품들, 또는 각종 기타 유형의 컴퓨팅 또는 프로세싱 디바이스들, 머신들 또는 시스템들 중 임의의 것일 수 있다. 컴퓨터 시스템의 유형의 비제한적인 하나의 예가 도 11에 대하여 이하 상세하게 설명된다. 원들(212, 214, 262 및 264)은 각각의 노드들과 연관된 NIC들을 나타낸다. NIC 유형의 비제한적인 하나의 예가 도 11에 대하여 네트워크 어댑터(1113)로서 이하 추가적으로 설명된다.
본 명세서에서 사용된 노드라는 용어는 네트워크(예를 들어, 네트워크(202))에서 고유하게 어드레싱될 수 있거나 그렇지 않으면 고유하게 식별될 수 있고, 네트워크 내에서 다른 노드들과 통신하도록 동작가능한 임의의 컴퓨팅 시스템, 디바이스 또는 프로세스를 말한다. 예를 들어, 노드는 퍼스널 컴퓨터, 서버 컴퓨터, 핸드헬드 또는 랩톱 디바이스, 태블릿(tablet) 디바이스, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 셋톱 박스, 가전 제품, 네트워크 PC, 미니컴퓨터, 메 인프레임 컴퓨터 등일 수 있으며, 이에 제한되지는 않는다. 컴퓨팅 시스템의 형태인 노드(210)의 비제한적인 예가 도 11에 대하여 이하 제시된다.
네트워크들(202, 282)은 동일한 네트워크일 수 있고, 동일하거나 상이한 서브넷들 상에 존재할 수 있고, 논리적으로 또는 물리적으로 서로 연결되거나 격리될 수 있고, 유사하거나 상이한 네트워킹 기술들 등을 사용할 수 있다. 특히, 네트워크들(202, 282)은 라우팅가능한 프로토콜 패킷들을 전달하는 라우터들을 포함하는 라우팅된 네트워크들일 수 있다. 라우팅가능한 프로토콜들은 통상적으로 하나의 네트워크로부터 다른 네트워크로 데이터를 라우팅하는 데 이용되는 통신 프로토콜들로 고려된다. 라우팅가능한 프로토콜의 일례로 TCP/IP가 있다. 라우팅가능한 형식으로 데이터 패킷을 송신한다는 것은 라우팅가능한 전송 프로토콜을 이용하여 데이터 패킷을 포맷하고/하거나 송신하는 것을 의미한다. 본 기술분야의 당업자라면 라우팅가능한 프로토콜들과 라우팅가능한 네트워크 토폴로지(topology), 시스템 및 아키텍쳐를 잘 알 것이다.
일례에서, 하나의 네트워크에 문제점 또는 오류가 존재한다면 다른 네트워크의 동작 상태에 영향을 주지 않도록, 네트워크들(202, 282)은 서로 독립적일 수 있다. 다른 예들에서, 3개 이상의 네트워크들이 사용될 수 있다. 더 높은 정도의 내고장성이 요구되는 경우에, 노드 상에 설치된 유사한 개수의 NIC들을 포함하여, 네트워크들로의 노드들의 연관된 접속에 따른 더 많은 개수의 네트워크들이 사용될 수 있다.
노드(210)와 연관된 NIC(212)는 예시적인 어드레스인 172.56.48.37을 갖는 것으로 도시되고, 네트워크1(202)에 연결된다. 또한, 노드(210)와 연관된 NIC(214)는 예시적인 어드레스인 197.71.48.38을 갖는 것으로 도시되고, 네트워크2(282)에 연결된다. 노드(260)와 연관된 NIC(262)는 예시적인 어드레스인 172.56.48.38을 갖는 것으로 도시되고, 네트워크1(202)에 또한 연결된다. 노드(260)와 또한 연관된 NIC(264)는 예시적인 어드레스인 197.71.48.39를 갖는 것으로 도시되고, 네트워크2(282)에 또한 연결된다. 실제로 이러한 어드레스들은 IPv4 또는 IPv6 어드레스들 등, 또는 사용되고 있는 프로토콜과 통상적으로 관련된 다른 유형의 네트워크일 수 있다.
각각의 노드는 하나 이상의 NIC들을 포함한다. 도 11에서 화살표(1114)로서 또한 도시된 화살표들(201, 203)은 노드들(210, 260) 사이의 네트워크1(202)을 통한 제1 통신 통로 또는 경로("경로A")를 나타낸다. 화살표들(281, 283)은 노드들(210, 260) 사이의 네트워크2(282)를 통한 제2 통신 통로 또는 경로("경로B")를 나타낸다. 실제로, 환경(200) 내의 2개 이상의 노드들 사이의 하나 이상의 네트워크들을 통한 하나 이상의 경로들이 존재할 수 있다. 본 명세서에서 사용된 "경로"라는 용어는 네트워크 내의 노드들 사이의 통신 통로, 또는 통신 링크로서 규정된다. 노드들 사이의 정확한 통로가 시간이 지남에 따라 변할 수 있다는 점에서 이러한 통로 또는 링크는 동적일 수 있다.
블록들(216, 266)은 각각의 노드들(210, 260) 상에 제공되는 내고장성 통신("FT") 드라이버를 포함하여, 애플리케이션 및 네트워크 스택을 나타낸다. 블록(216)의 FT 드라이버는 예시적인 어드레스인 10.0.0.1을 갖는 것으로 도시되고, 블록(266)의 FT 드라이버는 예시적인 어드레스인 10.0.0.2를 갖는 것으로 도시된다. 이러한 어드레스들은 통상적으로 가상 어드레스들로 고려된다. 이러한 어드레스들은 IPv4 또는 IPv6 등, 또는 임의의 다른 유형의 네트워크 또는 통신 어드레스일 수 있다. FT 드라이버들은 이하의 각종 예들에 도시된 가상 어드레스들을 가질 수 있거나 가지지 않을 수도 있다.
내고장성 네트워크 스택은 도 3 등과 관련하여 이하 설명되는 NETFT와 같은 FT 드라이버를 포함하는 네트워크 스택이다. 네트워크 스택과 연계하여 동작하는, NETFT와 같은 FT 드라이버는 노드들로 하여금 하나 이상의 네트워크들을 통해 경로A 및 경로B와 같은 하나 이상의 통신 경로들을 통해 서로 통신할 수 있게 한다. 이들 통신들 중 임의의 것이 실패한다면, 노드들은 주어진 적어도 하나의 동작 경로로 통신을 계속할 수 있다. 이러한 경로 실패는 네트워크의 임의의 노드, 디바이스 또는 시스템에 대한 NIC의 실패 또는 접속, 케이블링 또는 기타 통신 매체(무선 통신("RF") 또는 적외선("IR") 등을 포함함), 라우터들, 허브들, 스위치들, 방화벽들, "ISP(Internet Service Providers)들", 전력 실패 등에 기인할 수 있다.
일례에서, 통신이 실패되면 "PnP(plug-and-play)" 이벤트가 발생한다. PnP 이벤트는 그 노드로부터의 NIC의 제거 또는 매체 센스 변화를 나타낼 수 있다. 예를 들어, 매체 센스 접속해제는 NIC로 하여금 네트워크 케이블, RF 또는 IR 링크 등과 같은 네트워크 매체 상의 신호 또는 캐리어를 손실하게 하는 실패에 통상적으로 기인한다. 매체 센스 접속해제는 네트워크 케이블 또는 캐리어를 NIC로부터 접속해제하거나 케이블의 다른 단부(예를 들어, 허브 또는 스위치)의 전력을 오 프(off)시킴으로써 발생될 수 있다. 매체 센스 접속은 통상적으로 케이블을 재접속하고, 허브 또는 스위치 등에 대해 전력을 재공급하는 것과 같은 반대의 것이다. 접속 이벤트로도 알려져 있는 이러한 유형의 이벤트들은 노드 자체에서 발생하거나 그 가까이에 있다는 점에서 일반적으로 로컬 이벤트들이다. 이러한 로컬 접속 이벤트들은 노드 상의 PnP 이벤트 등과 같은 이벤트 표시로 귀결된다.
다른 예에서, 통신 실패는 노드들 사이에 송신된 하트비트(heartbeat) 패킷들을 이용하여 검출될 수 있다. 이러한 하트비트 패킷의 실패는 노드들 사이의 경로의 실패를 나타낼 수 있다. FT 드라이버가 수신시에 하트비트 패킷들을 검출하고 네트워크 스택 위로 통과되고 있는 패킷 흐름을 위해 이들을 제거할 수 있도록, 하트비트 패킷은 마킹되는 경향이 있다. 일례에서, 하트비트 패킷들은 RCP 패킷들을 형성함으로써 "RCP(route control protocol)"를 이용하여 구현될 수 있다. 이러한 하트비트 패킷들은 경로의 엔드-투-엔드(end-to-end) 동작 상태를 검증하는 데 이용될 수 있다. 즉, 노드(210)로부터 경로A를 통해 노드(260)로 하트비트 패킷을 송신하고, 노드(210)에서 송신된 하트비트 패킷에 대한 응답을 노드(260)로부터 수신함으로써, 경로A는 엔드-투-엔드 동작가능하다는 것이 일반적으로 고려된다. 하트비트가 실패한다면(송신된 하트비트에 응답하여 하트비트 응답이 수신되지 않는다면), 아마도 라우터, 스위치, 접속 등과 같은 네트워크1(202)의 몇몇 요소의 실패로 인해, 또는 타겟 노드의 자체 실패로 인해, 이러한 실패는 경로A가 동작가능하지 않음을 나타낼 수 있다. 특히, 노드(210)는 네트워크에 적합하게 접속되어 있음을 나타내는 동작 NIC(212) 및 유효한 매체 센스를 가질 수 있지만, 완전 히 몇몇 네트워크 또는 시스템 실패로 인한 하트비트 실패를 여전히 검출할 수 있다.
도 3은 예시적인 내고장성 통신 드라이버인 NETFT(300)를 도시하는 블록도이다. NETFT(300)는 NDIS 네트워크 스택과 함께 사용하기 위해, 그리고 내경로실패성(tolerant of pathway failure) 노드들 사이의 네트워크 통신을 제공하기 위해 NDIS 미니포트 드라이버(도 1의 160)로서 구현될 수 있다. 즉, 2개 이상의 노드들 사이의 통신은 적어도 하나의 경로가 동작가능한 이상, 그 각각이 경로 내의 임의의 컴포넌트의 NETFT 악성 실패를 이용하는 경우에 계속될 수 있다.
일례에서, NDIS 미니포트 드라이버로서의 FT 드라이버의 구현은 적어도 2개의 이점을 제공한다. 첫번째로, 이러한 FT 드라이버는 스택 내의 임의의 프로토콜 드라이버들 아래에 일반적으로 놓여 있으므로, FT 드라이버에 의해 제공되는 링크 레벨 내고장성의 추가에 의해 일반적으로 영향을 받지 않는 임의의 보다 높은 레벨의 신뢰성있는 프로토콜 드라이버에 의해 프로토콜 신뢰성이 제공되기 쉽다. 예를 들어, TCP/IP 드라이버와 같은 프로토콜 드라이버와 결합하여 FT 드라이버를 사용하는 경우에, FT 드라이버는 통상적으로 실패된 경로들을 검출하고, 임의의 프로토콜 드라이버와 독립한 엔드-투-엔드 동작 경로를 통해 데이터 패킷을 라우팅할 것이다. 임의의 패킷 손실이 스위칭 경로로 인해 발생한다면, 일반적으로 스택 내의 FT 드라이버 위에 놓인 TCP/IP 프로토콜 드라이버는 이러한 손실을 검출하고, 신뢰성있는 프로토콜이 패킷 운송에서 성공하는 것을 보장하도록 임의의 재시도 또는 재송신 동작을 수행하기 쉽다.
스택 내의 프로토콜 드라이버 아래에 FT 드라이버를 두는 두번째 이점은 통상적으로 프로토콜의 라우팅 가능성의 저하가 도입되지 않는다는 것이다. 이렇게 구성된 경우에, FT 드라이버가 데이터 패킷에 대하여 수행하는 임의의 터널링 동작은 TCP 또는 UDP와 같은 라우팅가능한 프로토콜을 사용할 수 있어, 링크 레벨 내고장성인 것 외에도 이러한 데이터가 라우팅가능하다는 것을 보증한다. 데이터 패킷을 "라우팅가능하게 터널링"한다는 것은 라우팅가능한 프로토콜을 이용하여 데이터 패킷을 터널링한다는 것이다.
네트워크 스택의 일부인 NETFT는 NDIS 또는 기타 네트워크 스택 인터페이스를 통해 소프트웨어 애플리케이션에 연결된다. 이러한 연결은 일반적으로 애플리케이션들로 하여금 스택의 최하부에 연결된 네트워크를 통해 데이터 패킷들을 송신 및 수신할 수 있게 한다. 일례에서, 애플리케이션들은 이들의 데이터 패킷들에 대한 소스 어드레스로서 가상 어드레스를 이용하기 쉬우며, 이하 설명할 바와 같이, 가상 어드레스는 NETFT에 알려져 있고, 네트워크 상의 다른 노드들에게 매핑되고 통신된다. 도 3에 도시한 바와 같이, NETFT는 (또한 프로세싱 요소로도 알려져 있는) 미니포트 어댑터(302), 라우팅 데이터베이스(304), 그리고 하나 이상의 루트 모니터 어댑터들(306)과 터널 어댑터들(308)을 포함한다.
터널 어댑터(308)는 통상적으로 로컬 노드(또는, 몇몇 예들에서는 가상 NIC) 상의 하나의 NIC를 나타내며, 타겟 노드 상의 NETFT로 패킷들을 터널링하는 데 이용되는 소켓을 관리한다. 로컬 노드 상에서 각각의 NIC와 연관된 하나의 터널 어댑터(308)가 통상적으로 존재하며, 각각의 NIC는 다른 노드에 경로를 제공하는 네 트워크에 연결되어 있다. 각각의 네트워크는 임의의 다른 네트워크로부터 격리되거나 격리되지 않을 수 있다. 터널 어댑터(308)는 NDIS 인터페이스를 통해 그 연관된 NIC로/로부터의 터널링 프로토콜을 통해 터널링 프로토콜 드라이버 및 터널 데이터 패킷들과 통상적으로 연관된다. 터널링 프로토콜의 일례로는 UDP가 있다. 대안적으로 TCP, IPX 또는 SPX와 같은 기타 프로토콜들이 터널링을 위해 사용될 수 있다. 연관된 NIC 또는 매체 접속이 비활성화되면 터널 어댑터(308)가 비활성화될 수 있다.
NETFT에서 구현되는 라우팅 데이터베이스(304)는 시스템 메모리에 위치될 수 있고, 또 다른 노드 상의 유사한 NETFT로의 하나 이상의 경로들에 대한 가상 어드레스에 매핑하는 엔트리들을 포함하는 통상적으로 단순한 데이터 구조이다. 일례에서, 매핑들은 터널 어댑터(308)와 같은 터널 어댑터와 통상적으로 연관되는 루트 모니터 어댑터(306)와 같은 루트 모니터 어댑터들에 의해 나타내어진다. 일반적으로, 라우팅 데이터베이스(304)와 같은 라우팅 데이터베이스는 각각의 터널 어댑터에 대한 한 세트의 루트 어댑터들을 포함하며, 각각의 루트 어댑터는 터널 어댑터와 연관된 경로를 통해 도달가능한 상이한 타겟 노드와 연관된다. 예를 들어, TCP/IP를 사용하는 경우에, 데이터베이스는 착신 가상 어드레스를 특정 원격 노드의 물리적인 어드레스에 매핑할 수 있다.
또한, 라우팅 데이터베이스(304)는 각각의 경로에 대한 우선권 정보를 포함할 수 있다. 이러한 우선권 정보는 또 다른 노드로의 우선되는, 또는 주된 경로를 나타내는 데 사용될 수 있고/있거나 경로 속도 또는 다른 특성에 대한 정보를 포함 할 수 있다. 가능한 경우에, 우선권 정보 및/또는 경로 상태에 기초하여, 우선되는 경로는 다른 가능한 경로에 대해 사용될 NETFT에 의해 계산된 경로이다. 대안적으로, 우선권 정보는 경로들을 통한 부하-밸런스(load-balance) 트래픽에 대한 타겟 노드로의 복수의 경로들을 이용하기 위한 라운드-로빈(round-robin) 부하 밸런싱 알고리즘을 나타낼 수 있거나, 몇몇 다른 경로 우선화 스킴을 동작하게 할 수 있다.
예시적인 라우팅 표 데이터베이스(304) 매핑 표가 [표 1]에 도시된다.
착신 어드레스 유형 어드레스 우선권
가상 10.0.0.2 --
물리적: 경로A 172.56.48.38 1
물리적: 경로B 197.71.48.39 2
[표 1] 및 도 2에 대해서, [표 1]은 노드(216) 상에서 동작하는 NETFT에 의해 사용될 수 있는 예시적인 매핑 표를 도시한다. [표 1]은 노드(266)에 대해 경로A와 연관된 물리적 어드레스인 172.56.48.38에 매핑되고, 노드(266)에 대해 도시된 가상 어드레스인 가상 착신 어드레스인 10.0.0.2와, 노드(266)에 대해 경로B와 연관된 물리적 어드레스인 197.71.48.39를 도시한다. 경로A는 제1 우선권을 갖고 경로B는 제2 우선권을 갖는 것으로 도시된다. [표1]은 예로서 제공된 것이며, 제한하려고 한 것은 아니다.
데이터를 노드(216)에서 노드(266)로 송신하는 경우에, 이러한 매핑 표는 UDP와 같은 터널링 프로토콜을 통해 패킷을 물리적 착신 어드레스인 172.56.48.38로 전달하여, 경로A를 통해 패킷을 노드(216)로부터 노드(266)로 터널링함으로써, 가상 착신 어드레스인 10.0.0.2에 착신되는 패킷을 터널링하는 데 통상적으로 사용된다. 이러한 하나의 매핑 표는 2개 노드들 사이에 확립된 각각의 경로 세트에 대한 라우팅 데이터베이스(도 3, 304)에서 생성될 수 있다. 이러한 매핑 표는 각종 형태로 구현될 수 있으며, 각종 우선권 스킴들을 사용할 수 있고/있거나 경로 동작 상태를 포함하는 기타 정보를 저장할 수 있다. [표 1]에 도시된 매핑 표 구조, 경로들의 개수, 어드래스 포맷 등은 예로서 제공된 것이며, 제한하려 한 것은 아니다.
로컬 노드 가상 어드레스, 원격 노드 가상 어드레스들 및 우선권 및 기타 경로 정보는 대역외(out-of-band) 메커니즘에 의해 노드들에게 통상적으로 제공되며 그 NDIS 인터페이스들을 통해 NETFT에 전달된다. 이러한 대역외 메커니즘은 정보를 규정하는 관리 애플리케이션을 사용하는 시스템 관리자와 같이 단순할 수 있거나, 자동화된 시스템 등일 수 있다. 이러한 대역외 메커니즘들은 본 기술분야의 당업자에게 잘 알려져 있다.
도 3에 도시된 바와 같이, (드라이버의 프로세싱 요소로도 알려진) 미니포트 어댑터(302)는 통상적으로 네트워크 스택의 아래로 흐르는 데이터 패킷을 파싱(parsing)하고, 패킷의 착신 가상 어드레스를 조사하고, 데이터 패킷을 터널링할 터널 어댑터(308)를 결정하기 위해 라우팅 데이터베이스(304)로부터의 정보를 이용한다. 도래하는 패킷들, 또는 스택 위로 흐르는 데이터 패킷들은 그들의 착신 가상 어드레스를 향해 스택 위로 전송되고, 터널링 프로토콜은 미리 이동되는 터널링 패킷 헤더들을 갖는다. 특히, 터널 어댑터(308)는 도래하는 패킷들을 조사하고 하트비트 패킷들을 루트 모니터 어댑터(306)에 전송하고 다른 패킷들은 미니포트 어댑터(302)를 통해 스택의 위로 전송한다. 터널링 프로토콜을 사용하는 터널링 데이터 패킷들의 양태들 및 프로토콜 헤더들이 프로토콜 드라이버들에 의해 추가되고 제거되는 방식은 본 기술분야의 당업자에게 잘 알려져 있다.
루트 모니터 어댑터(306)는 연관된 터널 어댑터에 의해 식별되는 특정 경로를 통해 액세스가능한 원격 노드를 통상적으로 나타낸다. 루트 모니터 어댑터(306)는 통상적으로 원격 노드에 대한 물리적인 어드레스를 제공할 것이며, 또한 물리적 어드레스는 원격 노드로의 특정 경로에 대응한다. 이러한 물리적 어드레스는 통상적으로 라우팅 데이터베이스(304)에서 매핑하는 데 이용된다. 통상적으로 원격 노드로의 각각의 별개 경로에 대해 하나의 루트 모니터 어댑터가 존재하고, 각각의 루트 모니터 어댑터는 경로를 나타내는 터널 어댑터와 연관된다. 일례에서, 앞에서처럼 도 2에서, 노드(210)는, 하나는 네트워크1(202)("경로A")이고 다른 하나는 네트워크2(282)("경로B")인 2개의 경로들을 통해 노드(260)에 연결되는 것으로 도시된다. 노드(210) 상에서 동작하는 NETFT는 그 NIC(262)와 연관된 원격 노드(260)의 물리적 어드레스인 172.56.48.38을 제공하는 제1 루트 모니터 어댑터("RMA-A")를 포함할 수 있다. RMA-A는 경로A와 연관될 수 있는 노드(210) 상의 제1 터널 어댑터("TA-A")와 연관될 수 있다. 또한, 노드(210) 상의 NETFT는 그 NIC(264)와 연관된 원격 노드(260)의 제2 물리적 어드레스인 197.71.48.39를 제공하는 제2 루트 모니터 어댑터("RMA-B")를 포함할 수 있다. RMA-B는 경로B와 연관될 수 있는 노드(210) 상의 제2 터널 어댑터("TA-B")와 연관될 수 있다.
도 3에서, 루트 모니터 어댑터(306)는 통상적으로 원격 노드로의 경로의 건전성을 감시하고, 라우팅 데이터베이스(304)에서 실패되거나 동작할 수 없는 경로를 나타낸다. 감시는 통상적으로 임의의 이벤트 표시를 수신하고/하거나 임의의 하트비트 실패를 기록하고 이에 따라 데이터베이스(304)를 업데이트하는 것을 포함한다. 일례에서, NIC 또는 매체 접속의 실패를 나타내는 이벤트가 발생하면 터널 어댑터(308)를 불능으로 만들 수 있다. 다른 예에서, 하트비트 실패가 발생하면 하트비트가 실패된 특정 원격 노드와 연관된 루트 모니터 어댑터(306)를 불능으로 만들 수 있다.
도 4는 NETFT(300) 및 애플리케이션(402)을 포함하는 내고장성 통신 아키텍쳐(216)를 도시하는 블록도이다. 본 예에서, 애플리케이션(402)은 가상 소스 어드레스(217) 및 착신 노드를 나타내는 가상 착신 어드레스를 이용하여 스택을 통해 데이터 패킷들을 NETFT(300)에 송신한다. 이러한 발신(out-going) 데이터 패킷들은 애플리케이션으로부터 네트워크 스택을 통해 드라이버(300)로 경로(480)를 거쳐 흐른다. 드라이버(300)는 일반적으로 라우팅 데이터베이스에 저장된 우선권 정보 및 경로 동작 상태 정보를 이용하여 각각의 패킷이 가능한 경로들 중 어떠한 것을 취해야 하는가를 통상적으로 결정하고, 적절한 물리적 소스 어드레스(422 또는 424)를 이용하여 선택된 경로를 통해 타겟 노드로 패킷을 터널링한다.
애플리케이션(402)은 도 4에 도시된 TCP 프로토콜을 거쳐 NETFT(300)를 통해 데이터 패킷을 송신할 수 있다. 대안적으로, UDP 또는 임의의 기타 프로토콜이 사용될 수 있다. 또한 도시된 바와 같이, NETFT(300)는 UDP 프로토콜을 사용하여 패킷들을 타겟 노드로 터널링할 수 있다. 대안적으로, TCP 또는 임의의 기타 프로토콜이 터널링을 위해 사용될 수 있다. 또한, 대안적인 예들은 미니포트 어댑터들 또는 NDIS 드라이버들을 사용하지 않고 기타 메커니즘들 또는 아키텍쳐들을 사용하여 유사한 기능들을 수행할 수도 있다. 마지막으로, 네트워크 스택 등의 각종 요소들은 사용자 모드 또는 커널 모드에서 동작할 수 있고, 도시된 대로 또는 그와 다르게 동작할 수 있고, 또는 동등한 동작 모드를 갖는 시스템 상에서 또는 이를 갖지 않는 시스템 상에서 동작할 수 있다.
도 5는 소스 노드(216) 및 네트워크1(202)을 통한 경로A 및 네트워크2(282)를 통한 경로B를 거쳐 연결되는 착신 노드(266)를 포함하는 내고장성 통신 환경(500)을 통해 흐르는 데이터를 도시하는 흐름도이다. 이러한 예시적인 환경(500)에서, 데이터는 노드(216) 상에서 동작하는 애플리케이션으로부터 노드(266) 상의 착신 가상 어드레스 상에서 경청하는 애플리케이션으로 송신되고 있는 것으로 도시된다. 데이터 패킷들은 경로(501)에 의해 도시된 NETFT로의 TCP 프로토콜을 이용하여 노드(216) 상에서 동작하는 네트워크 스택의 아래로 흐른다. 도시된 바와 같이, 경로A가 선택된 경로라고 가정하면, NETFT는 애플리케이션에 의해 사용되고 있는 소스 가상 어드레스로부터의 데이터 패킷들을 경로A로 매핑하고, 경로(501)에 의해 추가적으로 도시된 바와 같이 노드(216)의 NIC1의 외부로, 그리고 링크(201)를 통한 네트워크 상으로, 타겟 노드(266)에 대한 경로A 물리적 착신 어드레스를 이용하여 데이터를 UDP 프로토콜을 통해 터널링한다. 그러면, 데이터는 네트워크1(202)을 통해 링크(203)를 거쳐 노드(266)로 흐르고, 경로(503)에 의해 도시된 바와 같이 노드(266) 상에서 동작하는 네트워크 스택 위로 흐른다. 그 후에, 데이터는 동일한 프로토콜이 터널링 프로토콜로서 송신측에서 사용되었던 UDP 프로토콜 드라이버를 통해 흐르며, UDP 프로토콜 헤더들은 노드(266) 상에서 동작하는 NETFT로 이후에 전달되는 데이터 패킷들에서 제거된다. 그 후에, NETFT는 착신 가상 어드레스 상에서 경청하고 있는 애플리케이션에 대해 데이터 패킷들을 스택 위로 전달한다. 응답들은 반대 방향으로 흐르기 쉽다.
도 6은 몇몇 가능한 추가적인 통신 실패(610, 612, 620, 622, 630)를 갖는 도 5에 도시된 내고장성 통신 환경(500)을 통해 흐르는 데이터를 도시하는 흐름도이다. 또한 기타 통신 실패들도 가능하다. 실패(610)는 송신 노드(216) 상에서 동작하는 NIC1의 실패를 나타낸다. NIC1이 노드로부터 제거되었거나, NIC1의 드라이버가 실패했거나, NIC1 자체가 실패한 것 등인 경우에 이러한 실패가 발생할 수 있다. 이러한 실패는 PnP 이벤트 등과 같은 이벤트 표시 및/또는 하트비트 실패를 통해 NETFT에 의해 검출될 수 있다. 이러한 상황에서 경로A는 통상적으로 실패한 것으로 고려되며, NETFT는 대안적인 엔드-투-엔드 동작 경로를 선택할 것이다. 엔드-투-엔드 경로는 통상적으로 소스 노드 및 애플리케이션으로부터 착신 노드 및 애플리케이션으로 데이터를 성공적으로 내내 운송할 수 있는 경로이다.
실패(620)는 노드(216)의 NIC1과 연결되는 네트워크 매체의 실패를 나타낸다. 이러한 실패는 NIC1로부터, 네트워크1(202)의 몇몇 디바이스로부터 접속해제되고 있는 케이블로부터, 전력이 다운되거나 실패되는 네트워크측 상으로 케이블이 접속되어 있는 디바이스로 등으로부터 접속해제된 케이블 때문일 수 있다. 또한, 이러한 유형의 실패는 PnP 이벤트 등 및/또는 하트비트 실패 및 대안적으로 선택된 경로와 같은 이벤트 표시를 통해 NETFT에 의해 검출될 수 있다.
실패(630)는 데이터 패킷들이 착신 노드(266)에 도달할 수 없는 것으로 귀결되는, 네트워크(202) 내의 몇몇 유형의 실패를 나타낸다. 이러한 실패의 경우에, 송신 노드(216)는 적절한 매체 센스 표시를 갖는 네트워크(202)에 여전히 연결될 수 있지만, 경로A는 네트워크를 더욱 혼란시켰다. 이러한 실패가 있는 경우에, 송신 노드(216) 상에서 동작하는 NETFT는 이벤트 표시를 통해 실패를 검출하지 않을 수 있지만, 로컬 표시가 네트워크(202)로의 접속을 양호한 것으로 나타낸다면, 경로A 하트비트 실패를 통해 실패를 검출할 수도 있다.
링크(203)의 실패(622) 및 수신 노드(266) 상에서 동작하는 NIC1의 실패(612)는 노드(216)에 대해 도시된 대응 실패와 유사한 경향이 있다. 그러나, 노드(216)에 로컬이 아닌 이러한 실패들은 이벤트 표시에 의해 검출될 수 없고, 하트비트 실패를 통해 검출될 수 있다.
이러한 실패들 중 임의의 것, 그리고 기타 실패들은 노드(216) 상에서 동작하는 NETFT에 의해 검출될 수 있으며 네트워크2(282)를 통한 경로B와 같은 대안적인 엔드-투-엔드 동작 경로를 선택하는 것으로 귀결된다. 본 예에서, 도 6에 도시된 바와 같이, NETFT는 대안적인 경로(681) 아래로, 그리고 네트워크2(282)를 통해 수신 노드(266)로 데이터를 터널링한다. 실패 조건이 교정되고 엔드-투-엔드 동작 상태가 경로A 상에서 복구된다면, 송신 노드(216) 상에서 동작하는 NETFT는 경로A의 복구를 검출하고 다시 이를 이용할 수 있다. 또한, 역으로 노드(266)로부터 노드(216)로의 임의의 응답은 NETFT에 의해 유사한 내고장성 형식으로 터널링될 수 있다.
도 7은 내고장성 통신 드라이버의 또 다른 예인 NETFT(700)를 도시하는 블록도이다. 본 예는 도 3에 도시된 예와 유사하지만, 이하 설명할 변형예를 포함한다. 본 예에서, 소프트웨어 애플리케이션은 가상 어드레스들을 이용할 필요가 없을 수 있다. 대신에, 애플리케이션은 데이터 패킷들을 타겟 노드로 어드레싱하기 위해 물리적인 착신 어드레스를 이용할 수 있다.
프로토콜 어댑터(710)는 일반적으로 미니포트 어댑터(702)(또한, 드라이버의 프로세싱 요소로 알려져 있음)와 NIC 미니포트 어댑터(도시 생략)에 연결된다. 노드 상에 설치된 각각의 NIC에 대해 통상적으로 하나의 프로토콜 어댑터가 존재하고, 각각의 프로토콜 어댑터는 그 NIC 어댑터를 통해 NIC와 연관된다. 각각의 프로토콜 어댑터가 NIC와 연관되므로, 또한 이는 NIC에 연결된 경로와 연관된다. 프로토콜 어댑터(710)는 프로세싱 요소(702)를 통해 애플리케이션으로부터 데이터 패킷들을 수용하고 터널링을 할 필요 없이도 연관된 NIC로 데이터 패킷들을 전달하도록 동작가능하다.
프로세싱 요소(702)는 네트워크 스택 아래로 흐르는 데이터 패킷을 통상적으로 파싱하고, 패킷의 물리적인 착신 어드레스를 조사하고, 패킷이 프로토콜 어댑터(710)를 통해 전달될 수 있는지 또는 터널 어댑터(308)를 통해 타겟 노드로 터널링될 필요가 있는지를 결정하기 위해 라우팅 데이터베이스(704)로부터의 정보를 이용한다. 일반적으로, 물리적인 착신 어드레스에 의해 표시된 경로가 엔드-투-엔드 동작가능하다면, 데이터 패킷은 이러한 경로를 통해 송신될 것이다. 그렇지 않다면, 패킷이 터널링될 수 있는 대안적인 경로가 선택될 수 있다.
본 예에서, 라우팅 데이터베이스(704)는 상술한 우선권 및 기타 정보에 따라서 물리적인 착신 어드레스 및 경로의 매핑을 관리한다. 예시적인 라우팅 데이터베이스(704) 매핑 테이블이 [표 2]에 도시된다.
착신 어드레스 유형 어드레스 우선권
물리적: 경로A 172.56.48.38 1
물리적: 경로B 107.71.48.39 2
[표 2] 및 도 2에 관해서, [표 2]는 노드(216) 상에서 동작하는 NETFT에 의해 사용될 수 있는 예시적인 매핑 표를 도시한다. [표 2]는 노드(266)로의 경로A와 연관된 물리적인 착신 어드레스인 172.56.48.38과 노드(266)로의 경로B와 연관된 물리적 착신 어드레스인 197.71.48.39를 포함하는 매핑을 도시한다. 경로A는 제1 우선권을 갖는 것으로 도시되고, 경로B는 제2 우선권을 갖는 것으로 도시된다.
노드(216)로부터 노드(266)로 데이터를 송신하는 경우에, 이러한 매핑 표는 노드(266)의 물리적인 착신 어드레스인 172.56.48.38에 송신되는 데이터 패킷을 전송또는, 필요하다면 터널링)하는 데 통상적으로 이용된다. 원래의 착신 어드레스와 연관된 경로가 동작가능하다면, 데이터 패킷은 터널링 없이도 착신 노드로 전송되기 쉽다. 이러한 경로가 이용가능하지 않다면, 데이터 패킷은 터널링을 통해 노드(266)의 물리적인 착신 어드레스인 197.71.48.39로 대안적인 경로를 통해 송신된다. NETFT(700)의 다른 양태들은 도 3에 도시된 NETFT의 양태들과 일반적으로 유사하다.
도 8은 NETFT(700) 및 애플리케이션(402)을 포함하는 예시적인 내고장성 통신 아키텍쳐(216)를 도시하는 블록도이다. 본 예에서, 애플리케이션(402)은 물리적인 소스 어드레스 및 착신 노드를 나타내는 물리적인 착신 어드레스(801)를 이용하여 스택을 통해 NETFT(700)로 데이터 패킷들을 송신한다. 이러한 발신 데이터 패킷들은 애플리케이션으로부터 네트워크 스택을 통해 드라이버(700)로, 그리고 경로(880)를 거쳐 흐른다. 드라이버(700)는 라우팅 데이터베이스에 저장된 우선권 정보 및 경로 동작 상태 정보를 일반적으로 이용하여 각각의 패킷이 가능한 경로들 중 어떠한 것을 취해야 하는지를 통상적으로 결정하고, 원래의 물리적인 착신 어드레스에 의해 표시된 경로를 통해 타겟 노드로 패킷을 전달하거나, 만일 이러한 경로가 엔드-투-엔드 동작이 아니라면 루트(882) 및 NIC2(892)에 의해 본 예에서 표시된 대안적인 경로를 통해 패킷을 터널링한다.
도 8에 도시된 바와 같이, 애플리케이션(402)은 TCP 프로토콜을 거쳐 NETFT(700)를 통해 데이터 패킷을 송신할 수 있다. 대안적으로 UDP 또는 임의의 기타 프로토콜이 사용될 수도 있다. 또한, 도시된 바와 같이, NETFT(700)는 패킷들을 타겟 노드로 터널링하기 위하여 UDP 프로토콜을 사용할 수도 있다. 대안적으로, TCP 또는 임의의 기타 프로토콜이 터널링을 위해 사용될 수 있다. 또한, 다른 예들은 NDIS 드라이버들을 사용하지 않을 수도 있고 유사한 기능들을 수행하는 기타 메커니즘들 또는 아키텍쳐들을 사용할 수도 있다. 마지막으로, 네트워크 스택의 각종 요소들 등은 도시된 바와 같이 또는 이와 달리 사용자 모드 또는 커널 모드로 동작할 수 있고, 도시된 대로 또는 그와 다르게 동작할 수 있고, 또는 동등한 동작 모드를 갖는 시스템 상에서 또는 이를 갖지 않는 시스템 상에서 동작할 수 있다.
도 9는 소스 노드(816) 및 네트워크1(202)을 통한 경로A를 거쳐, 그리고 네트워크2(282)를 통한 경로B를 거쳐 연결된 착신 노드(966)를 포함하는 내고장성 통신 환경(900)을 통해 흐르는 데이터를 도시하는 흐름도이다. 이러한 예시적인 환경(900)에서, 데이터는 노드(216) 상에서 동작하는 애플리케이션으로부터 노드(266) 상의 착신 물리적 어드레스 상에서 경청하는 애플리케이션으로 송신되는 것으로 도시된다. 데이터 패킷들은 경로(901)에 의해 도시된 바와 같이 TCP 프로토콜을 이용하여 노드(216) 상에서 동작하는 네트워크 스택 아래로 흘러 NETFT로 흐른다. 도시된 바와 같이, 경로A가 선택된 경로라고 가정하면, NETFT는 애플리케이션에 의해 제공되는 물리적인 착신 어드레스를 이용하여 데이터 패킷들을 경로A를 통한 노드(216)의 NIC1을 거쳐, 그리고 링크(201)를 거쳐 네트워크1(202)로 전달한다. 그 후에, 데이터는 네트워크1(202)을 통해 링크(203)를 거쳐 노드(966)로 흐르며, 경로(903)에 도시된 바와 같이 노드(966) 상에서 동작하는 네트워크 스택의 위로 흐른다. 그 후에, 데이터는 NETFT 및 프로토콜 드라이버(송신 프로토콜로서 송신측 상에서 사용된 동일한 프로토콜에 대한 프로토콜 드라이버)를 통해 애플리케이션으로, 위로 흐른다. 응답은 반대 방향으로 흐르기 쉽다.
도 10은 몇몇 가능한 통신 실패들(1010, 1012, 1020, 1030)을 추가한, 도 9에 도시된 내고장성 통신 환경(900)을 통해 흐르는 데이터를 도시하는 흐름도이다. 또한 기타 통신 실패들이 가능하다. 실패(1010)는 송신 노드(816) 상에서 동작하는 NIC1의 실패를 나타낸다. NIC1이 노드로부터 제거되거나, 그 NIC 드라이버가 실패하거나, NIC 자체가 실패하는 것 등인 경우에 이러한 실패가 발생할 수 있다. 이러한 실패는 PnP 이벤트 등과 같은 이벤트 표시 및/또는 하트비트 실패를 통해 NETFT에 의해 검출될 수 있다. 이러한 환경에서, 경로A는 통상적으로 실패한 것으로 고려되며, NETFT는 대안적인 엔드-투-엔드 동작 경로를 선택할 것이다.
실패(1020)는 노드(816)의 NIC1과 연결되는 네트워크 매체의 실패를 나타낸다. 이러한 실패는 NIC1로부터, 네트워크1(202)의 몇몇 디바이스로부터 접속해제되고 있는 케이블로부터, 전력이 다운되거나 실패되는 네트워크측 상으로 케이블이 접속되어 있는 디바이스 등으로부터 접속해제된 케이블 때문일 수 있다. 또한, 이러한 유형의 실패는 PnP 이벤트 등 및/또는 하트비트 실패 및 대안적으로 선택된 경로와 같은 이벤트 표시를 통해 NETFT에 의해 검출될 수 있다.
실패(1030)는 데이터 패킷들이 착신 노드(966)에 도달할 수 없는 것으로 귀결되는, 네트워크(202) 내의 몇몇 유형의 실패를 나타낸다. 이러한 실패의 경우에, 송신 노드(816)는 적절한 매체 센스 표시를 갖는 네트워크(202)에 여전히 연결될 수 있지만, 경로A는 네트워크를 더욱 혼란시켰다. 이러한 실패가 있는 경우에, 송신 노드(816) 상에서 동작하는 NETFT는 이벤트 표시를 통해 실패를 검출하지 않을 수 있지만, 로컬 표시가 네트워크(202)로의 접속을 양호한 것으로 나타낸다면, 경로A 하트비트 실패를 통해 실패를 검출할 수도 있다.
링크(203)의 실패(1022) 및 수신 노드(966) 상에서 동작하는 NIC1의 실패(1012)는 노드(816)에 대해 도시된 대응하는 실패와 유사한 경향이 있다. 그러나, 노드(816)에 로컬이 아닌 이러한 실패들은 이벤트 표시에 의해 검출될 수 없고, 하트비트 실패를 통해 검출될 수 있다.
이러한 실패들 중 임의의 것, 그리고 기타 실패들은 노드(816) 상에서 동작하는 NETFT에 의해 검줄될 수 있으며 네트워크2(282)를 통한 경로B와 같은 대안적인 엔드-투-엔드 동작 경로를 선택하는 것으로 귀결된다. 본 예에서, 도 10에 도시된 바와 같이, NETFT는 대안적인 경로(1081) 아래로, 그리고 네트워크2(282)를 통해 수신 노드(966)로 데이터를 터널링한다. 실패 조건이 교정되고 엔드-투-엔드 동작 상태가 경로A 상에서 복구된다면, 송신 노드(816) 상에서 동작하는 NETFT는 경로A의 복구를 검출하고 다시 이를 이용할 수 있다. 또한, 노드(966)로부터 역으로 노드(816)로의 임의의 응답은 그 NETFT에 의해 유사한 내고장성 형식으로 전달되거나 터널링될 수 있다.
도 11은 상술한 기술이 구현될 수 있는 예시적인 컴퓨팅 시스템 환경(1100)을 도시하는 블록도이다. 적합한 컴퓨팅 환경은 많은 범용 또는 특수 목적의 시스템으로 구현될 수 있다. 잘 알려진 시스템의 예로는 퍼스널 컴퓨터("PC"), 핸드-헬드 또는 랩톱 장치, 마이크로프로세서 기반 시스템, 멀티프로세서 시스템, 서버, 워크스테이션, 가전제품, 셋톱 박스, 기타 등등이 있지만 이에 제한되는 것은 아니다.
컴퓨팅 환경(1100)은 각종 주변 장치(1102, 1103, 1104) 등에 연결된 컴퓨팅 장치(1101) 형태의 범용 컴퓨팅 시스템을 일반적으로 포함한다. 시스템(1100)은 하나 이상의 I/O 인터페이스(1112)를 통해 마우스 또는 트랙볼과 같은 키보드 또는 포인팅 장치를 포함하여, 각종 입력 장치(1103)에 연결될 수 있다. 컴퓨팅 장치(1101)의 컴포넌트들은 하나 이상의 프로세서들(1107)("CPU(central processing units)", "GPU(graphics processing units)", "uP(microprocessors)" 등을 포함함), 시스템 메모리(1109) 및 각종 컴포넌트들을 통상적으로 연결하는 시스템 버스(1108)를 포함할 수 있다. 프로세서(1107)는 통상적으로 각종 컴퓨터 실행가능 명령어들을 처리 또는 실행하여 컴퓨팅 장치(1101)의 동작을 제어하고, 네트워크 접속(1114) 등과 같은 각종 통신 접속을 통해 다른 전자장치 및/또는 컴퓨팅 장치, 시스템 또는 환경과 통신한다. 시스템 버스(1108)는 메모리 버스 또는 메모리 컨트롤러, 주변 장치 버스, 직렬 버스, 가속 그래픽 포트, 프로세서 또는 각종 버스 아키텍처 중 임의의 것을 이용하는 로컬 버스를 비롯한 임의의 개수의 몇몇 유형의 버스 구조를 나타낸다.
시스템 메모리(1109)는 랜덤 액세스 메모리(RAM)와 같은 휘발성 메모리, 및/또는 판독 전용 메모리(ROM) 또는 플래시 메모리(FLASH)와 같은 비휘발성 메모리 형태의 컴퓨터 판독가능 매체를 포함할 수 있다. 기본 입/출력 시스템(BIOS)은 비휘발성 메모리 등에 저장될 수 있다. 시스템 메모리(1109)는 프로세서들(117) 중 하나 이상에 의해 즉시 액세스가능하고/하거나 곧 동작되는 컴퓨터 실행가능 명령어들을 포함하는 데이터, 컴퓨터 실행가능 명령어들 및/또는 프로그램 모듈들을 통상적으로 저장한다.
대용량 저장 장치(1104, 1110)는 컴퓨팅 장치(1101)에 연결되거나 시스템 버스로의 연결을 통해 컴퓨팅 장치(1101) 내에 통합될 수 있다. 이러한 대용량 저장 장치(1104, 1110)는 이동식, 비휘발성 자기 디스크(예를 들어, "플로피 디스크")에 기록하고/하거나 이로부터 판독하는 자기 디스크 드라이버, 및/또는 CD ROM, DVD ROM(1106)과 같은 비휘발성 광 디스크에 기록하고/하거나 이로부터 판독하는 광 디스크 드라이버를 포함할 수 있다. 대안적으로, 하드 디스크(1110)와 같은 대용량 저장 장치는 비휘발성 저장 매체를 포함할 수 있다. 기타 대용량 저장 장치는 메모리 카드, 메모리 스틱, 테이프 저장 장치 등을 포함할 수 있다.
예를 들어, 운영 체제, 애플리케이션 프로그램, 데이터 파일, 디렉토리 구조 및 컴퓨터 실행가능 명령어들을 포함하는 임의의 개수의 컴퓨터 프로그램, 파일, 데이터 구조 등이 하드 디스크(1110), 기타 저장 장치(1104, 1105, 1106) 및 시스템 메모리(1109)(통상적으로 이용가능한 공간에 의해 제한됨) 상에 저장될 수 있다.
디스플레이 장치(1102)와 같은 출력 장치는 비디오 어댑터(1111)와 같은 인터페이스를 통해 컴퓨팅 장치(1101)에 연결될 수 있다. 다른 유형의 출력 장치들은 프린터, 오디오 출력, 촉각(tactile) 장치 또는 기타 지각(sensory) 출력 메커니즘 등을 포함할 수 있다. 출력 장치들은 컴퓨팅 장치(1101)로 하여금 인간 조작자 또는 기타 머신 또는 시스템과 대화할 수 있게 할 수 있다. 사용자는 키보드, 마우스, 조이스틱, 게임 패드, 데이터 포트 등과 같은 임의의 개수의 상이한 입력 장치들(1103)을 통하여 컴퓨팅 환경(1100)과 인터페이싱할 수 있다. 이러한 입력 장치 및 기타 입력 장치는 시스템 버스(1108)에 연결될 수 있는 입/출력 인터페이스(1112)를 통해 프로세서(1107)에 연결될 수 있고, 병렬 포트, 게임 포트, 범용 직렬 버스("USB"), 파이어 와이어(fire wire), 적외선 포트 등과 같은 기타 인터페이스 및 버스 구조에 의해 연결될 수 있다.
컴퓨팅 장치(1101)는 하나 이상의 LAN(local area network), WAN(wide area network), SAN(storage area network), 인터넷, 무선 링크, 광 링크 등을 통해 하나 이상의 원격 컴퓨팅 장치로의 통신 접속을 통해 네트워크화된 환경에서 동작할 수 있다. 컴퓨팅 장치(1101)는 네트워크 어댑터(1113) 등을 통하거나, 대안적으로 모뎀, DSL(digital subscriber line) 링크, ISDN(integrated services digital network) 링크, 인터넷 링크, 무선 링크 등을 통해 네트워크에 연결될 수 있다.
네트워크 접속과 같은 통신 접속(1114)은 통상적으로 네트워크와 같은 통신 매체로의 연결을 제공한다. 통신 매체는 반송파 또는 기타 전송 메커니즘과 같은 피변조 데이터 신호를 이용하여 컴퓨터 판독가능하고 컴퓨터 실행가능한 명령어, 데이터 구조, 파일, 프로그램 모듈 및 기타 데이터를 통상적으로 제공한다. "피변조 데이터 신호"라는 용어는, 통상적으로 신호 내에 정보를 인코딩하도록 그 신호의 특성들 중 하나 이상을 설정 또는 변경시킨 신호를 의미한다. 예로서, 통신 매체는 유선 네트워크 또는 직접 배선 접속(direct-wired connection)과 같은 유선 매체, 그리고 음향, RF, 적외선, 기타 무선 통신 메커니즘과 같은 무선 매체를 포함할 수 있다.
본 기술분야이 당업자라면 컴퓨터 판독가능하고 컴퓨터 실행가능한 명령어를 제공하는 데 이용되는 저장 장치가 네트워크 상에서 분산될 수 있다는 것을 알 것이다. 예를 들어, 원격 컴퓨터 또는 저장 장치는 소프트웨어 애플리케이션 및 데이터의 형태로 컴퓨터 판독가능하고 컴퓨터 실행가능한 명령어를 저장할 수 있다. 로컬 컴퓨터는 네트워크와 소프트웨어 애플리케이션 또는 데이터의 다운로드된 일부 또는 전부를 통해 원격 컴퓨터 또는 저장 장치에 액세스할 수 있고, 컴퓨터 실행가능 명령어를 실행할 수 있다. 대안적으로, 로컬 컴퓨터는 필요한 개수의 소프트웨어 또는 데이터를 다운로드할 수 있거나, 로컬 컴퓨터에서 명령어의 일부를 실행하고 원격 컴퓨터 및/또는 장치에서 일부를 실행함으로써 소프트웨어를 분산적으로 처리할 수 있다.
본 기술분야의 당업자라면, 종래의 기술을 이용함으로써, 소프트웨어의 컴퓨터 실행가능 명령어들의 전부 또는 일부가 DSP(digital signal process), PLA(programmable logic array), 이산 회로 등과 같은 전용 전자 회로에 의해 수행될 수 있다. "전자 장치"라는 용어는 임의의 소프트웨어, 펌웨어 등을 포함하는 컴퓨팅 장치 또는 가전 제품, 또는 소프트웨어, 펌웨어 등을 가지지 않는 전자 장치 또는 회로를 포함할 수 있다.
"펌웨어"라는 용어는 ROM과 같은 전자 장치에서 보유되는 실행가능 명령어, 코드 또는 데이터를 통상적으로 말한다. "소프트웨어"라는 용어는 임의의 형태의 컴퓨터 판독가능 매체 상에서 또는 그 내부에서 보유되는 실행가능 명령어, 코드, 데이터, 애플리케이션, 프로그램 등을 일반적으로 말한다. "컴퓨터 판독가능 매체"라는 용어는 시스템 메모리, 저장 장치 및 그 연관된 매체, 통신 매체 등을 통상적으로 말한다.

Claims (20)

  1. 복수의 노드들 사이에서의 내고장성(fault-tolerant) 네트워크 통신을 애플리케이션에게 제공하는 방법으로서,
    상기 복수의 노드들에 연결된 복수의 네트워크들을 통해 복수의 초기 통신 경로들을 제공하는 단계;
    상기 애플리케이션으로부터 송신 노드 상의 데이터 패킷을 수신하는 단계 -상기 송신 노드는 상기 복수의 노드들 중 하나이고, 데이터 패킷은 상기 애플리케이션에 의해 상기 복수의 노드들 중 하나 상의 어드레스로 어드레싱됨-;
    상기 복수의 초기 통신 경로들 중에서 상기 데이터 패킷에 대한, 우선(preferred) 경로인 제1 선택 경로를 선택하는 단계
    를 포함하는 내고장성 네트워크 통신 제공방법.
  2. 제1항에 있어서,
    상기 복수의 초기 통신 경로들 중 하나와 연관된 로컬 접속 이벤트를 검출하는 단계; 및
    상기 복수의 초기 통신 경로들 중 하나가 상기 로컬 접속 이벤트에 기초하여 동작가능한지를 나타내는 단계를 더 포함하는 내고장성 네트워크 통신 제공방법.
  3. 제1항에 있어서,
    상기 복수의 초기 통신 경로들 중 하나를 통하여 라우팅가능한 하트비트(heartbeat) 패킷을 송신하는 단계;
    상기 복수의 초기 통신 경로들 중 하나의 엔드-투-엔드(end-to-end) 동작 상태를 결정하기 위하여 상기 라우팅가능한 하트비트 패킷에 대한 응답을 감시하는 단계; 및
    상기 응답의 감시에 기초하여 상기 복수의 초기 통신 경로들 중 하나가 엔드-투-엔드 동작가능한지를 나타내는 단계를 더 포함하는 내고장성 네트워크 통신 제공방법.
  4. 제1항에 있어서,
    상기 어드레스는 인터넷 프로토콜 버전 4(Internet Protocol version 4) 어드레스 또는 인터넷 프로토콜 버전 6 어드레스인 내고장성 네트워크 통신 제공방법.
  5. 제1항에 있어서,
    상기 애플리케이션으로부터 수신된 데이터 패킷은 전송 제어 프로토콜(Transmission Control Protocol) 패킷 또는 사용자 데이터그램 프로토콜(User Datagram Protocol) 패킷인 내고장성 네트워크 통신 제공방법.
  6. 제1항에 있어서,
    상기 방법을 수행하기 위한 컴퓨터 실행가능 명령어들이 컴퓨터 판독가능 매체 상에 저장되는 내고장성 네트워크 통신 제공방법.
  7. 제1항에 있어서,
    상기 어드레스는 가상 어드레스인 내고장성 네트워크 통신 제공방법.
  8. 제7항에 있어서,
    상기 애플리케이션으로 하여금 상기 복수의 초기 통신 경로들 중 어떠한 것이 선택된 경로인지 인지하도록 요구하지 않고, 상기 제1 선택 경로를 통해 상기 데이터 패킷을 라우팅가능하게 터널링하는 단계를 더 포함하는 내고장성 네트워크 통신 제공방법.
  9. 제8항에 있어서,
    상기 제1 선택 경로를 통해 라우팅가능하게 터널링된 데이터 패킷은 전송 제어 프로토콜 패킷 또는 사용자 데이터그램 프로토콜 패킷인 내고장성 네트워크 통신 제공방법.
  10. 제7항에 있어서,
    상기 제1 선택 경로의 실패를 검출하는 단계;
    상기 복수의 초기 통신 경로들 중에서 제2 선택 경로를 선택하는 단계 -상기 제2 선택 경로는 엔드-투-엔드 동작가능한 경로 및 우선 경로 둘 다임; 및
    상기 애플리케이션으로 하여금 하나 이상의 초기 통신 경로들 중 어떠한 것이 상기 제2 선택 경로인지를 인식하도록 요구하지 않고, 상기 제2 선택 경로를 통해 상기 데이터 패킷을 라우팅가능하게 터널링하는 단계를 더 포함하는 내고장성 네트워크 통신 제공방법.
  11. 제1항에 있어서,
    상기 제1 선택 경로는 상기 데이터 패킷에 포함된 물리적인 착신 어드레스에 기초하여 선택되는 내고장성 네트워크 통신 제공방법.
  12. 제11항에 있어서,
    상기 애플리케이션으로 하여금 상기 복수의 초기 통신 경로들 중 어떠한 것이 상기 제1 선택 경로인지를 인지하도록 요구하지 않고, 상기 제1 선택 경로를 통해 상기 데이터 패킷을 송신하는 단계를 더 포함하는 내고장성 네트워크 통신 제공방법.
  13. 제11항에 있어서,
    상기 제1 선택 경로의 실패를 검출하는 단계;
    상기 복수의 초기 통신 경로에서 제2 선택 경로를 선택하는 단계 -상기 제2 선택 경로는 엔드-투-엔드 동작가능한 경로 및 우선 경로 둘 다임-; 및
    상기 애플리케이션으로 하여금 하나 이상의 초기 통신 경로들 중 어떠한 것이 상기 제2 선택 경로인지를 인지하도록 요구하지 않고, 상기 제2 선택 경로를 통해 상기 데이터 패킷을 라우팅가능하게 터널링하는 단계를 더 포함하는 내고장성 네트워크 통신 제공방법.
  14. 제13항에 있어서,
    상기 제2 선택 경로를 통해 라우팅가능하게 터널링되는 데이터 패킷은 전송 제어 프로토콜 패킷 또는 사용자 데이터그램 프로토콜 패킷인 내고장성 네트워크 통신 제공방법.
  15. 복수의 노드들 사이에서의 내고장성 네트워크 통신을 애플리케이션에게 제공하는 방법으로서,
    상기 복수의 노드들에 연결된 복수의 네트워크들을 통해 복수의 초기 통신 경로들을 제공하는 단계;
    수신 노드에서 데이터 패킷을 수신하는 단계 -상기 수신 노드는 내고장성 네트워크 스택을 포함하고 상기 복수의 노드들 중 하나이며, 상기 데이터 패킷은 상기 애플리케이션으로 착신됨-;
    상기 데이터 패킷이 라우팅가능하게 터널링되었는지를 판정하는 단계; 및
    상기 데이터 패킷이 라우팅가능하게 터널링되었다면, 상기 데이터 패킷을 상기 내고장성 네트워크 스택 위로 전달하는 단계
    를 포함하는 내고장성 네트워크 통신 제공방법.
  16. 제15항에 있어서,
    상기 복수의 초기 통신 경로들 중 하나를 통해 상기 수신 노드에서 라우팅가능한 하트비트 패킷을 수신하는 단계; 및
    상기 복수의 초기 통신 경로들 중 하나의 엔드-투-엔드 동작 상태를 나타내기 위해, 상기 라우팅가능한 하트비트 패킷에 대해 응답하는 단계를 더 포함하는 내고장성 네트워크 통신 제공방법.
  17. 제15항에 있어서,
    상기 데이터 패킷은 전송 제어 프로토콜 패킷 또는 사용자 데이터그램 프로토콜 패킷인 내고장성 네트워크 통신 제공방법.
  18. 제15항에 있어서,
    상기 방법을 수행하기 위한 컴퓨터 실행가능 명령어들이 컴퓨터 판독가능 매체 상에 저장되는 내고장성 네트워크 통신 제공방법.
  19. 복수의 노드들 사이에서의 내고장성 네트워크 통신을 애플리케이션에게 제공하는 시스템으로서,
    제1 네트워크 스택에 연결되고 상기 복수의 노드들 중 하나인 제1 노드 상에 서 동작하는 제1 내고장성 드라이버; 및
    제2 네트워크 스택에 연결되고 상기 복수의 노드들 중 하나인 제2 노드 상에서 동작하는 제2 내고장성 드라이버
    를 포함하고,
    상기 제1 내고장성 드라이버 및 상기 제2 내고장성 드라이버는 복수의 네트워크들을 통해 복수의 초기 통신 경로들을 거쳐 연결되는 내고장성 네트워크 통신 제공 시스템.
  20. 제19항에 있어서,
    상기 제1 내고장성 드라이버는,
    상기 제1 네트워크 스택을 통해 상기 애플리케이션에 연결되는 프로세싱 요소;
    상기 프로세싱 요소에 연결되는 라우팅 데이터베이스;
    상기 제1 네트워크 스택을 통해 상기 프로세싱 요소에 연결되고 상기 복수의 네트워크들 중 하나에 연결되는 프로토콜 어댑터 -상기 복수의 네트워크들 중 하나는 상기 제2 노드로의 경로와 연관됨-; 및
    상기 제2 노드로의 경로와 연관되고, 상기 제1 네트워크 스택을 통해 상기 프로세싱 요소에 연결되고 상기 복수의 네트워크들 중 하나에 연결되는 터널 어댑터
    를 포함하고,
    상기 라우팅 데이터베이스는,
    상기 제2 노드의 물리적인 어드레스를 포함하는 상기 제2 노드로의 경로를 나타내는 엔트리 -상기 경로는 상기 복수의 초기 통신 경로들 중 하나임-; 및
    상기 제2 노드로의 경로의 엔드-투-엔드 동작 상태의 표시
    를 포함하는 내고장성 네트워크 통신 제공 시스템.
KR20087005079A 2005-09-12 2006-09-11 라우팅된 네트워크에서의 내고장성 통신 KR20080055805A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US71612205P 2005-09-12 2005-09-12
US60/716,122 2005-09-12
US11/275,185 US7821930B2 (en) 2005-09-12 2005-12-16 Fault-tolerant communications in routed networks
US11/275,185 2005-12-16

Publications (1)

Publication Number Publication Date
KR20080055805A true KR20080055805A (ko) 2008-06-19

Family

ID=37854967

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20087005079A KR20080055805A (ko) 2005-09-12 2006-09-11 라우팅된 네트워크에서의 내고장성 통신

Country Status (12)

Country Link
US (7) US7821930B2 (ko)
EP (1) EP1932289A4 (ko)
JP (1) JP4794629B2 (ko)
KR (1) KR20080055805A (ko)
CN (1) CN101263686B (ko)
AU (1) AU2006291046B2 (ko)
BR (1) BRPI0615816A2 (ko)
CA (1) CA2618227A1 (ko)
MX (1) MX2008003407A (ko)
NO (1) NO20080708L (ko)
RU (1) RU2420897C2 (ko)
WO (1) WO2007033179A2 (ko)

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7821930B2 (en) * 2005-09-12 2010-10-26 Microsoft Corporation Fault-tolerant communications in routed networks
US8467390B2 (en) * 2006-12-14 2013-06-18 Oracle America, Inc. Method and system for network stack tuning
US20090073990A1 (en) * 2007-09-14 2009-03-19 Hewlett-Packard Development Company, L.P. Method of replacing a router in a layer 3 network
US20110040911A1 (en) * 2009-08-13 2011-02-17 Anil Vasudevan Dual interface coherent and non-coherent network interface controller architecture
WO2011151765A1 (en) 2010-06-02 2011-12-08 Koninklijke Philips Electronics N.V. Method for controlling a lighting system, and lighting system
EP2426858B1 (en) * 2010-09-01 2012-10-31 Alcatel Lucent Method and apparatus for restoring a connection through a provider network upon request
US20130028257A1 (en) * 2011-07-27 2013-01-31 Raytheon Company Message Gateway and Methods for Using the Same
RU2460123C1 (ru) * 2011-08-09 2012-08-27 Федеральное государственное военное образовательное учреждение высшего профессионального образования "Военная академия связи имени маршала Советского Союза С.М. Буденного" Министерства Обороны Российской Федерации (Минобороны России) Способ сравнительной оценки структур сетей связи
CN102291311B (zh) * 2011-08-30 2017-03-29 中兴通讯股份有限公司 以太网接口保护方法及网络侧设备
JP6035726B2 (ja) * 2011-11-02 2016-11-30 富士通株式会社 接続制御装置、ストレージシステム及び接続制御装置の制御方法
CN104081356B (zh) * 2011-12-08 2018-04-10 高通科技公司 正常与重试数据发射之间的差别格式化
CN102447632A (zh) * 2011-12-30 2012-05-09 四川川大智胜软件股份有限公司 一种具有数据容错能力的网络传输方法
WO2014144182A2 (en) * 2013-03-15 2014-09-18 Terascala, Inc. A data transfer method and apparatus
US20160050104A1 (en) * 2013-03-15 2016-02-18 Hewlett-Packard Development Company, L.P. Network device architecture adjustments
WO2014182475A1 (en) * 2013-05-07 2014-11-13 Bally Gaming, Inc. System, apparatus and method for dynamically adjusting a video presentation based upon age
AU2014280801A1 (en) * 2013-06-13 2015-12-10 Tsx Inc. Apparatus and method for failover of device interconnect using remote memory access with segmented queue
EP3070979B1 (en) * 2013-12-10 2018-10-03 Huawei Technologies Co., Ltd. Method and device for processing failure in operator shared network
CN104980348A (zh) * 2014-04-04 2015-10-14 中兴通讯股份有限公司 业务链路由方法及系统、及系统中的设备
US9838858B2 (en) 2014-07-08 2017-12-05 Rapidsos, Inc. System and method for call management
WO2016044540A1 (en) 2014-09-19 2016-03-24 Rapidsos, Inc. Method and system for emergency call management
WO2017079354A1 (en) 2015-11-02 2017-05-11 Rapidsos, Inc. Method and system for situational awareness for emergency response
CN108702409A (zh) 2015-12-17 2018-10-23 快速求救公司 用于有效紧急呼叫的设备和方法
WO2017112820A1 (en) * 2015-12-22 2017-06-29 Rapidsos, Inc. Systems and methods for robust and persistent emergency communications
US9986404B2 (en) 2016-02-26 2018-05-29 Rapidsos, Inc. Systems and methods for emergency communications amongst groups of devices based on shared data
MX2018013187A (es) 2016-04-26 2019-08-12 Rapidsos Inc Sistemas y metodos para comunicaciones de emergencia.
WO2017196753A1 (en) 2016-05-09 2017-11-16 Rapidsos, Inc. Systems and methods for emergency communications
US10841206B2 (en) * 2016-05-31 2020-11-17 128 Technology, Inc. Flow modification including shared context
WO2018039142A1 (en) 2016-08-22 2018-03-01 Rapidsos, Inc. Predictive analytics for emergency detection and response management
US10715350B2 (en) 2016-09-19 2020-07-14 Simmonds Precision Products, Inc. Automatic addressing of networked nodes
US10425511B2 (en) * 2017-01-30 2019-09-24 128 Technology, Inc. Method and apparatus for managing routing disruptions in a computer network
US10362631B2 (en) * 2017-04-03 2019-07-23 Level 3 Communications, Llc Last resource disaster routing in a telecommunications network
JP2018181170A (ja) * 2017-04-20 2018-11-15 富士通株式会社 情報処理装置、情報処理システムおよびプログラム
US10375558B2 (en) 2017-04-24 2019-08-06 Rapidsos, Inc. Modular emergency communication flow management system
EP3721402A4 (en) 2017-12-05 2021-08-04 Rapidsos Inc. EMERGENCY MANAGEMENT SOCIAL MEDIA CONTENT
US10924331B2 (en) * 2018-01-05 2021-02-16 WeRide Corp. Controller area network communication system
US10820181B2 (en) 2018-02-09 2020-10-27 Rapidsos, Inc. Emergency location analysis system
US20190320310A1 (en) 2018-04-16 2019-10-17 Rapidsos, Inc. Emergency data management and access system
US10805786B2 (en) 2018-06-11 2020-10-13 Rapidsos, Inc. Systems and user interfaces for emergency data integration
US11917514B2 (en) 2018-08-14 2024-02-27 Rapidsos, Inc. Systems and methods for intelligently managing multimedia for emergency response
US10977927B2 (en) 2018-10-24 2021-04-13 Rapidsos, Inc. Emergency communication flow management and notification system
WO2020172612A1 (en) 2019-02-22 2020-08-27 Rapidsos, Inc. Systems & methods for automated emergency response
CA3135274C (en) 2019-03-29 2024-01-16 Rapidsos, Inc. Systems and methods for emergency data integration
US11146680B2 (en) 2019-03-29 2021-10-12 Rapidsos, Inc. Systems and methods for emergency data integration
US11228891B2 (en) 2019-07-03 2022-01-18 Rapidsos, Inc. Systems and methods for emergency medical communications
JP7339037B2 (ja) * 2019-07-10 2023-09-05 ファナック株式会社 制御装置、診断方法及び診断プログラム
CN110336744B (zh) * 2019-08-09 2021-05-04 合肥工业大学 一种无线片上网络中区域故障感知的容错路由方法
RU2720553C1 (ru) * 2019-10-18 2020-05-12 Федеральное государственное бюджетное учреждение науки Институт проблем управления им. В.А. Трапезникова Российской академии наук Способ организации системной сети в виде отказоустойчивого неблокируемого трехмерного разреженного р-ичного гиперкуба
US11330664B1 (en) 2020-12-31 2022-05-10 Rapidsos, Inc. Apparatus and method for obtaining emergency data and providing a map view

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5774640A (en) * 1991-10-21 1998-06-30 Tandem Computers Incorporated Method and apparatus for providing a fault tolerant network interface controller
US20040264402A9 (en) * 1995-06-01 2004-12-30 Padcom. Inc. Port routing functionality
US6314525B1 (en) * 1997-05-13 2001-11-06 3Com Corporation Means for allowing two or more network interface controller cards to appear as one card to an operating system
US6647508B2 (en) * 1997-11-04 2003-11-11 Hewlett-Packard Development Company, L.P. Multiprocessor computer architecture with multiple operating system instances and software controlled resource allocation
CN100397372C (zh) * 1998-01-22 2008-06-25 英纳瑞公司 用于通用数据交换网关的方法和装置
JP3787029B2 (ja) * 1998-03-03 2006-06-21 富士通株式会社 通信装置,通信手段選択方法及びコンピュータ可読媒体
FI105978B (fi) 1998-05-12 2000-10-31 Nokia Mobile Phones Ltd Menetelmä langattoman päätelaitteen kytkemiseksi tiedonsiirtoverkkoon ja langaton päätelaite
US6988274B2 (en) 1998-06-12 2006-01-17 Microsoft Corporation Method, system, and computer program product for representing and connecting an underlying connection-oriented device in a known format
US6272113B1 (en) * 1998-09-11 2001-08-07 Compaq Computer Corporation Network controller system that uses multicast heartbeat packets
US6130890A (en) * 1998-09-11 2000-10-10 Digital Island, Inc. Method and system for optimizing routing of data packets
US20010052084A1 (en) 1998-11-10 2001-12-13 Jiandoug Huang Apparatus and methods for providing fault tolerance of networks and network interface cards
US6567377B1 (en) * 1999-03-18 2003-05-20 3Com Corporation High performance load balancing of outbound internet protocol traffic over multiple network interface cards
US6392990B1 (en) * 1999-07-23 2002-05-21 Glenayre Electronics, Inc. Method for implementing interface redundancy in a computer network
US6874147B1 (en) * 1999-11-18 2005-03-29 Intel Corporation Apparatus and method for networking driver protocol enhancement
CN100391190C (zh) * 2000-02-25 2008-05-28 霍尼韦尔国际公司 经由冗余网络控制的多重网络故障容错管理的方法和装置
US7000012B2 (en) * 2000-04-24 2006-02-14 Microsoft Corporation Systems and methods for uniquely identifying networks by correlating each network name with the application programming interfaces of transport protocols supported by the network
US6728780B1 (en) 2000-06-02 2004-04-27 Sun Microsystems, Inc. High availability networking with warm standby interface failover
US6609213B1 (en) * 2000-08-10 2003-08-19 Dell Products, L.P. Cluster-based system and method of recovery from server failures
WO2002019636A1 (en) * 2000-08-31 2002-03-07 Padcom, Inc. Method and apparatus for routing data over multiple wireless networks
US7386610B1 (en) * 2000-09-18 2008-06-10 Hewlett-Packard Development Company, L.P. Internet protocol data mirroring
US6665812B1 (en) * 2000-12-22 2003-12-16 Emc Corporation Storage array network backup configuration
US20040213220A1 (en) * 2000-12-28 2004-10-28 Davis Arlin R. Method and device for LAN emulation over infiniband fabrics
US6868083B2 (en) 2001-02-16 2005-03-15 Hewlett-Packard Development Company, L.P. Method and system for packet communication employing path diversity
US6672167B2 (en) * 2001-04-23 2004-01-06 The Aerospace Corporation Method and system for processing laser vibrometry data employing bayesian statistical processing techniques
JP2003008581A (ja) * 2001-06-26 2003-01-10 Yokogawa Electric Corp 通信制御装置
US7581048B1 (en) * 2001-06-29 2009-08-25 Emc Corporation Method and apparatus for providing continuous communication between computers
US7020796B1 (en) * 2001-07-27 2006-03-28 Ciena Corporation High availability communication system
JP2003234749A (ja) * 2001-12-03 2003-08-22 Oki Electric Ind Co Ltd Lan間の通信ルート切替方法、ルート切替プログラム、ゲートウェイ及び端末
US20040078625A1 (en) 2002-01-24 2004-04-22 Avici Systems, Inc. System and method for fault tolerant data communication
US7492787B2 (en) * 2002-03-29 2009-02-17 Fujitsu Limited Method, apparatus, and medium for migration across link technologies
JP2003348134A (ja) * 2002-05-28 2003-12-05 Nec Soft Ltd 通信経路選択システム
JP2004031287A (ja) * 2002-06-28 2004-01-29 Pioneer Electronic Corp プラズマディスプレイパネル
US7254109B2 (en) 2002-07-12 2007-08-07 Baypackets, Inc. Fault tolerant correlation engine method and system for telecommunications networks
US20040062195A1 (en) 2002-09-30 2004-04-01 Intel Corporation Algorithm for dynamic provisioning of fail-over support in generalized multi-protocol label switching enabled networks
US7191235B1 (en) * 2002-11-26 2007-03-13 Cisco Technology, Inc. System and method for communicating data in a loadbalancing environment
CN1813454B (zh) * 2003-04-28 2012-09-05 钱特利网络公司 无线通信网络上的移动单元会话管理的系统和方法
US7861002B2 (en) 2003-05-22 2010-12-28 Adtran, Inc. Network router that efficiently switches between a primary data path and a backup data path
JP2005057472A (ja) * 2003-08-04 2005-03-03 Nippon Telegr & Teleph Corp <Ntt> 通信方法及びシステム
JP2005327186A (ja) * 2004-05-17 2005-11-24 Nec Corp コンピュータシステムの複数経路情報管理方法及び装置
US7990849B2 (en) 2004-06-17 2011-08-02 Hewlett-Packard Development Company, L.P. Automated recovery from a split segment condition in a layer2 network for teamed network resources of a computer system
US9491084B2 (en) * 2004-06-17 2016-11-08 Hewlett Packard Enterprise Development Lp Monitoring path connectivity between teamed network resources of a computer system and a core network
WO2006012610A2 (en) * 2004-07-23 2006-02-02 Citrix Systems, Inc. Systems and methods for optimizing communications between network nodes
JP4148931B2 (ja) 2004-08-16 2008-09-10 富士通株式会社 ネットワークシステム、監視サーバ及び監視サーバプログラム
US7668962B2 (en) * 2005-02-07 2010-02-23 Symantec Operating Corporation System and method for connection failover using redirection
US7872965B2 (en) * 2005-08-01 2011-01-18 Hewlett-Packard Development Company, L.P. Network resource teaming providing resource redundancy and transmit/receive load-balancing through a plurality of redundant port trunks
US8036105B2 (en) * 2005-08-08 2011-10-11 International Business Machines Corporation Monitoring a problem condition in a communications system
US7821930B2 (en) 2005-09-12 2010-10-26 Microsoft Corporation Fault-tolerant communications in routed networks

Also Published As

Publication number Publication date
US20110004783A1 (en) 2011-01-06
BRPI0615816A2 (pt) 2011-05-24
US8958325B2 (en) 2015-02-17
AU2006291046A1 (en) 2007-03-22
US20070058528A1 (en) 2007-03-15
EP1932289A4 (en) 2013-04-10
MX2008003407A (es) 2008-03-27
CN101263686A (zh) 2008-09-10
US8169894B2 (en) 2012-05-01
EP1932289A2 (en) 2008-06-18
US7821930B2 (en) 2010-10-26
US20120272092A1 (en) 2012-10-25
US20150113165A1 (en) 2015-04-23
CN101263686B (zh) 2014-11-12
US20120272093A1 (en) 2012-10-25
JP2009508443A (ja) 2009-02-26
JP4794629B2 (ja) 2011-10-19
AU2006291046B2 (en) 2010-03-04
US9253293B2 (en) 2016-02-02
RU2008109226A (ru) 2009-10-10
US20110004782A1 (en) 2011-01-06
US20160142289A1 (en) 2016-05-19
US8369208B2 (en) 2013-02-05
WO2007033179A2 (en) 2007-03-22
CA2618227A1 (en) 2007-03-22
NO20080708L (no) 2008-04-14
RU2420897C2 (ru) 2011-06-10
WO2007033179A3 (en) 2007-05-18

Similar Documents

Publication Publication Date Title
US9253293B2 (en) Fault-tolerant communications in routed networks
TWI383616B (zh) 指派複數個媒體存取控制給複數個處理器的方法及系統
US6944786B2 (en) Network node failover using multicast address or port
US7016299B2 (en) Network node failover using path rerouting by manager component or switch port remapping
US5923854A (en) Virtual internet protocol (IP) addressing
US7693045B2 (en) Verifying network connectivity
EP2550780B1 (en) N_port id virtualization node redundancy
US8493839B2 (en) Method and system of teamed network adapters with offloaded connections
US20030154285A1 (en) Method and system for assigning network addreses
US6535990B1 (en) Method and apparatus for providing fault-tolerant addresses for nodes in a clustered system
US8938521B2 (en) Bi-directional synchronization enabling active-active redundancy for load-balancing switches
US20070070975A1 (en) Storage system and storage device
JP2006129446A (ja) フォールト・トレラント・ネットワーク・アーキテクチャ
US7864666B2 (en) Communication control apparatus, method and program thereof

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
SUBM Surrender of laid-open application requested