KR20060042975A - 자기-복제 코드를 사용한 통신 네트워크의 노드들로 데이터를 전송 - Google Patents
자기-복제 코드를 사용한 통신 네트워크의 노드들로 데이터를 전송 Download PDFInfo
- Publication number
- KR20060042975A KR20060042975A KR1020050013490A KR20050013490A KR20060042975A KR 20060042975 A KR20060042975 A KR 20060042975A KR 1020050013490 A KR1020050013490 A KR 1020050013490A KR 20050013490 A KR20050013490 A KR 20050013490A KR 20060042975 A KR20060042975 A KR 20060042975A
- Authority
- KR
- South Korea
- Prior art keywords
- node
- code
- data
- communication channel
- network
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- E—FIXED CONSTRUCTIONS
- E01—CONSTRUCTION OF ROADS, RAILWAYS, OR BRIDGES
- E01D—CONSTRUCTION OF BRIDGES, ELEVATED ROADWAYS OR VIADUCTS; ASSEMBLY OF BRIDGES
- E01D19/00—Structural or constructional details of bridges
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
-
- E—FIXED CONSTRUCTIONS
- E01—CONSTRUCTION OF ROADS, RAILWAYS, OR BRIDGES
- E01D—CONSTRUCTION OF BRIDGES, ELEVATED ROADWAYS OR VIADUCTS; ASSEMBLY OF BRIDGES
- E01D22/00—Methods or apparatus for repairing or strengthening existing bridges ; Methods or apparatus for dismantling bridges
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/329—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Architecture (AREA)
- Civil Engineering (AREA)
- Structural Engineering (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Transfer Between Computers (AREA)
- Small-Scale Networks (AREA)
Abstract
데이터 전송을 위한 방법(200) 및 통신 네트워크(100)가 개시된다. 상기 방법(200)을 위해, 통신 네트워크내의 제 1 노드(101)에서 제 1 코드의 실행에 응답하여, 제 1 노드는 제 2 노드(102)와 통신 채널을 구축하고, 제 2 코드를 생성하기 위해 그 자신을 복제하고, 제 2 코드를 통신 채널을 통하여 제 2 노드로 제공한다. 제 2 노드에서 제 2 코드의 실행에 응답하여, 제 2 노드는 제 3 노드(103)와 통신 채널을 구축하고, 제 3 코드를 생성하기 위해 그 자신을 복제하고, 제 3 코드를 통신 채널을 통하여 제 3 노드로 제공한다. 이 후, 제 2 노드는 통신 채널을 통해 제 1 노드로부터 데이터를 수신하고, 데이터를 다루기 위해 제 2 코드를 실행한다. 이 후, 제 3 노드는 통신 채널을 통해 제 2 노드로부터 데이터를 수신하고, 데이터를 다루기 위해 제 3 코드를 실행한다.
통신 네트워크, 코드, 노드, 통신 채널, LAN
Description
도 1은 본 발명의 예시적인 실시예의 통신 네트워크를 도시한다.
도 2a 및 도 2b는 본 발명의 예시적인 실시예의 통신 네트워크의 노드들 사이에서 데이터를 전송하기 위해 도 1의 통신 네트워크를 작동하는 방법을 도시하는 흐름도이다.
도 3a 내지 도 3d는 코드 및 데이터가 본 발명의 예시적인 실시예의 도 2a 및 2b의 방법에 따라 도 1의 통신 네트워크에서 전송될 수 있는 방법을 도시한다.
도 4는 본 발명의 다른 예시적인 실시예의 통신 네트워크를 도시한다.
도 5는 본 발명의 예시적인 실시예의 선형 스웜 토폴로지(linear sworm topoloty)를 도시한다.
도 6은 본 발명의 예시적인 실시예의 트리 스웜 토폴로지(tree sworm topoloty)를 도시한다.
* 도면의 주요부분에 대한 부호의 간단한 설명*
100…통신 네트워크 110…네트워크 설비
101-104…노드 301-303…코드
501…발신 프로세서 522…메인
본 발명은 통신들의 분야에 관련되며, 보다 자세히는, 자기-복제 코드를 사용하여 통신 네트워크의 노드들로 데이터를 전송하는 것에 관련된다.
회사들, 기업들, 대학들, 등은 수백 또는 수천 개의 디바이스들을 상호 접속하는 네트워크를 공통으로 갖는다. 상기 네트워크는 구내 정보통신망(LAN), 도시권 통신망(MAN), 원거리 통신망(WAN), 또는 다른 네트워크를 가질 수 있다. 네트워크 직원은 정보, 파일들, 소프트웨어, 명령어들, 등과 같은 데이터를 네트워크상의 다중의 다바이스들로 전송하기 원할 수 있다. 대규모 네트워크들 상에서, 데이터를 각각의 디바이스에 개별적으로 전송하는 것은 네트워크 직원에게 비효율적일 수 있다. 네트워크 직원이 데이터를 동시에 다중의 디바이스들로 전송을 시도하는 경우, 특히 데이터의 크기가 큰 경우, 네트워크 대역폭은 빠르게 사용될 수 있을 것이다. 따라서, 네트워크 직원은 네트워크의 대역폭을 희생시키지 않고 효율을 증가시키기 위해 네트워크상의 다중 디바이스들로 데이터를 전송하는 방법을 끊임없이 검색한다.
네트워크상의 다중의 디바이스들로 데이터를 전송하는 한 방법은 네트워크를 통해 데이터를 멀티캐스팅하는 것이다. "멀티캐스트(multicast)"란 용어는 메시지들 또는 패킷들을 네트워크상에 위치한 디바이스들의 선택된 그룹으로 방송하는 것 을 설명하는데 사용될 수 있다. 이러한 시스템으로부터 혜택을 받을 수 있는 전형적인 응용들은 비디오 및 음악 방송을 포함할 수 있다. 네트워크 직원은 데이터를 LAN상의 다중 디바이스들로 전송하는 멀티캐스팅을 사용할 수 있다. 이는 각각의 디바이스를 개별적으로 다루는 문제를 해결할 수 있다. 예를 들어, 네트워크 직원이 LAN에 접속된 다중 디바이스들상에서 새로운 소프트웨어를 인스톨하기 원하는 경우, 네트워크 직원은 소프트웨어를 LAN을 통해 디바이스들로 멀티캐스트할 수 있다.
멀티캐스팅이 갖는 한 가지 문제점은 수신 디바이스들이 멀티캐스트를 수신하기 위해 적당한 소프트웨어를 필요로 하는 것이다. 수신 디바이스들이 적당한 소프트웨어를 구비하지 않는 경우, 적당한 소프트웨어가 데이터를 수신하기 이전에 수신 디바이스들상에 인스톨될 필요가 있다.
멀티캐스팅이 갖는 다른 문제점은 보내는 사람이 수신 디바이스들이 소프트웨어를 수신했는지 여부를 알 수 없다는 것이다. 사용자 데이터그램 프로토콜(UDP)은 멀티캐스팅에 사용되는 하나의 프로토콜이며, UDP는 메시지의 전달을 보증하지 않거나 수신 디바이스로부터의 수신 확인을 요구하지 않는다. 따라서, 보내는 사람은 데이터의 전송 상태를 인식하지 않는다. 네트워크 직원은 소트프웨어의 전송이 성공적인지를 확인하기 위해 몇 가지 형태의 수신 확인을 원할 수 있다.
네트워크 직원의 다른 관심은 바이러스들일 수 있다. 보다 유명한 바이러스들 중의 하나는 인터넷 웜(internet worm)이다. 인터넷 웜 때문에, "웜"이라는 용어는 네트워크를 "감염"시키기 위해(즉, 바이러스) 네트워크상에서 그 자신을 반복 적으로 복제하는 소프트웨어가 되는 것으로서 부정적인 의미로 보통 수신된다. 그러나, 본 기술의 숙련된 많은 기술자에 의해 이해되는 바와 같이 웜은 간단히 자기-복제를 하는 소프트웨어이다. 웜들은 제어할 수 없게 전파되거나 네트워크를 상하게 프로그램밍되어서는 않된다.
전형적인 웜은 일련의 디바이스들에서 그 스스로 복제할 수 있다. 제 1 디바이스 상의 웜(패런트 웜)은 다른 디바이스에서 그 자신(차일드 웜)을 복제할 수 있으며, 이 후 또 다른 디바이스 등에서도 복제할 수 있다. 패런트 웜이 차일드 웜을 생성하기 위해 다른 디바이스에서 그 자신을 복제한 이 후, 패런트 웜은 차일드 웜과 함께 통신 채널을 일반적으로 보유하지 않는다. 따라서, 패런트 웜과 차일드 웜은 데이터를 전송하기 위해 서로 통신할 수 없다. 네트워크를 통해 데이터를 전송하는 긍정적인 방식에서, 웜들, 또는 다른 자기-복제 코드 또는 스프트웨어를 사용하는 것이 바람직할 수 있다.
본 발명은 노드들 사이에서 데이터를 전송하기 위한 통신 네트워크에서 자기-복제 코드를 사용함으로써 상기 및 다른 문제점들을 해결한다. 통신 네트워크의 노드들은 데이터를 전송하기 위해 요구된 코드를 원시적으로 갖지 않는다. 본 발명의 자기-복제 코드는 노드들 사이의 통신 채널을 유지하는 동안 통신 네트워크의 노드들에서 그 자신을 복제한다. 이 후 상기 노드들은 통신 채널들을 통해 서로간에 데이터를 전송할 수 있다.
유리하게도, 네트워크 직원은 네트워크의 대역폭을 희생시키지 않고 데이터를 통신 채널상의 다중의 노드들로 효율적으로 전송하는 자기-복제 코드를 사용할 수 있다. 또한, 네트워크 직원은 데이터 전송을 용이하게 하기 위해 통신 채널의 노드들상의 사전-인스톨 코드(pre-install code)를 필요로하지 않는다. 자기-복제 코드는 데이터 전송을 용이하게 하기 위해 네트워크의 노드들에서 그 자신을 스폰 (spawn)할 수 있다. 또한, 노드들상의 코드는 노드들 사이의 통신 채널을 유지하기 때문에, 노드들이 제어 및 상태 정보를 제어 노드와 교환함으로써, 네트워크 직원은 데이터 전송의 상태를 실시간 모니터링할 수 있다.
본 발명의 일 예시적 실시예는 통신 네트워크에서 데이터를 전송하는 방법을 포함한다. 방법을 위해, 통신 네트워크의 제 1 노드는 제 2 노드와 통신 채널을 구축하도록 제 1 코드를 실행한다. 또한, 제 1 노드는 제 2 코드를 생성하기 위해 그 자신을 복제하고, 제 2 코드를 통신 채널을 통해 제 2 노드로 제공하기 위해 제 1 코드를 실행한다. 제 2 노드는 제 3 노드와 통신 채널을 구축하기 위해 제 2코드를 실행한다. 제 2 노드는 제 3 코드를 생성하기 위해 그 자신을 복제하고, 제 3 코드를 통신 채널을 통해 제 3 노드로 제공하기 위해 제 2 코드를 실행한다. 방법은 통신 채널들을 구축하는 것과 코드를 통신 네트워크내의 다중의 다른 노드들로 제공하는 것을 포함할 수 있다.
제 1 노드 및 제 2 노드 사이에 구축되고 유지된 통신 채널로, 제 2 노드는 통신 채널을 통해 제 1 노드로부터 데이터를 수신한다. 데이터는 통신 네트워크에서 전송을 타겟으로 하는 임의의 정보, 소프트웨어, 명령어들, 등을 포함할 수 있다. 제 2 노드는 데이터를 다루기 위해 제 2 코드를 실행할 수 있다. 제 2 노드 및 제 3 노드 사이에서 구축되고 유지된 통신 채널로, 제 3 노드는 통신 채널을 통해 제 2 노드로부터 데이터를 수신한다. 제 3 노드는 데이터를 다루기 위해 제 3 코드를 실행할 수 있다. 통신 네트워크의 다른 노드들은 노드들 사이에서 데이터를 전송하고 상기 데이터를 다루는 방법에 따른 유사한 방식으로 동작할 수 있다.
본 발명은 아래에 설명된 다른 예시적인 실시예들을 포함할 수 있다.
동일한 참조 번호는 모든 도면들에서 동일한 요소를 나타낸다.
도면들 1, 2a-2b, 3a-3d, 4-6 및 다음의 설명은 본 기술의 숙련된 기술자에게 본 발명의 최상의 모드를 만들고 사용하는 방법을 가르쳐주기 위해 본 발명의 일정한 예시적일 실시예들을 설명한다. 독창적인 원리들을 알려주기 위해, 본 발명의 몇 가지 전형적인 측면들이 간소화되거나 생략되엇다. 본 기술의 숙련된 기술자들은 본 발명의 범위내에서 이러한 실시예들로부터의 변화들을 이해할 것이다. 본 기술의 숙련된 기술자들은, 다음에 설명될 특징들이 본 발명의 다수의 변화들을 형성하기 위해 다양한 방식들로 결합될 수 있음을 이해할 것이다. 결과적으로, 본 발명은 다음에 설명될 일정한 실시예들로 제한되지 않으며, 청구 범위들과 그들의 등가물들이다.
통신 네트워크 구성 및 동작--도 1, 2a-2b, 3a-3d
도 1은 본 발명의 예시적인 실시예의 통신 네트워크(100)를 도시한다. 통신 네트워크(100)는 네트워크 설비(110)를 통해 서로 통신할 수 있는 복수의 노드들(101-104)을 포함한다. 네트워크 설비(110)는 LAN, MAN, WAN, 또는 다른 형태의 네트워크를 포함할 수 있다. 노드는 컴퓨터와 같은 통신 네트워크(100)를 위 해 임의의 시스템, 디바이스, 컴포넌트, 카드, 등을 포함할 수 있다. 통신 네트워크(100)는 도 1에 도시되지 않은 다른 노드들, 컴포넌트들, 디바이스들, 또는 시스템들을 포함할 수 있다.
도 2는 본 발명의 예시적인 실시예의 통신 네트워크(100)의 노드들(101-104) 사이에서 데이터를 전송하기 위해 통신 네트워크(100)를 작동하는 방법(200)을 도시한다. 방법(200)의 논의에 대해 노드들(101-104)은 제 1 , 제 2, 제 3, 및 제 4 노드들로서 각각 참조되도록 가정한다. 제 1 노드(101)는 제 1 코드를 포함하고, 제 2 노드(102) 및 제 3 노드(103)는 제 1 코드와 유사하거나 대응하는 코드를 포함하지 않는 것을 부가적으로 가정한다.
방법(200)의 단계(202)는, 제 1 노드(101)는 제 2 노드(102)와 통신 채널을 구축하기 위해 제 1 코드를 실행한다. 코드는 기계 언어 명령어들, 프로그래밍 언어 명령어들(컴파일링되거나 컴파일링되지 않은), 해석적 언어 명령어들, 등과 같은 프로세서에 의해 실행 가능한 임의의 명령어들을 포함한다. 단계(204)에서, 제 1 노드(101)는 제 2 코드를 생성하기 위해 그 자신을 복제하고, 상기 제 2 코드를 제 2 노드(102)로 제공하기 위해 제 1 코드를 실행한다. 제 1 코드가 제 2 코드를 생성하기 위해 그 자신을 "복제" 할 때, 제 2 코드는 제 1 코드의 복사본 또는 사본, 제 1 코드와 실질적으로 유사한 복사본 또는 사본, 또는 제 1 코드의 서브 셋 또는 파생물을 나타낸다. 제 1 노드는 다른 노드들과 통신 채널들을 구축하고 코드를 상기 노드들로 제공하기 위해 단계들(202 및 204)을 여러번 수행할 수 있다.
단계(206)에서, 제 2 노드(102)는 제 3 노드(103)와 통신 채널을 구축하기 위해 제 2 코드를 실행한다. 제 1 노드(101)와 제 2 노드(102) 사이의 통신 채널은 제 2 노드(102)와 제 3 노드(103) 사이의 통신 채널과 대응하거나 별개일 수 있다. 단계(208)에서, 제 2 노드(102)는 제 3 코드를 생성하기 위해 그 자신을 복제하고, 제 3 코드를 통신 채널을 통해 제 3 노드(103)로 제공하기 위해 제 2 코드를 실행한다. 제 2 노드(102)는 다른 노드들과 통신 채널들을 구축하고 단계 "A"에 도시된 바와 같이 코드를 상기 노드들로 제공하기 위해 단계들(206 및 208)을 여러번 수행할 수 있다.
제 1 노드(101)와 제 2 노드(102) 사이에 구축되고 유지된 통신 채널로, 단계(210)에서 제 2 노드(102)는 통신 채널을 통해 제 1 노드(101)로부터 데이터를 수신한다. 데이터는 통신 네트워크에서 전송을 타겟으로 하는 임의의 정보, 소프트웨어, 명령어들, 등을 포함할 수 있다. 또한, 제 2 노드(102)는 통신 채널을 통해 제 1 노드(101)로부터 제어 정보를 수신할 수 있다. 제어 정보는 통신 네트워크의 노드들에 의해 사용되는 임의의 동작들, 운영 관리들, 또는 정보 관리를 포함할 수 있다. 데이터 수신에 응답하여, 제 2 노드(102)는 단계(212)에서 데이터를 다루기 위해 제 2 코드를 실행한다. 데이터를 다루는 단계는 데이터상의 하나 이상의 로컬 프로세스들을 수행하는 단계를 포함할 수 있다.
예를 들어, 제 2 코드는 제 2 노드(102)에서 국부적으로 수행하기 위해 페이로드 프로세스들을 포함할 수 있다. 제 2 노드(102)가 데이터를 수신할 때, 제 2 노드(102)는 데이터를 복제하고 상기 복제된 데이터를 로컬 페이로드 프로세스로 라우팅할 수 있다. 이 후, 제 2 노드(102)는 복제된 데이터를 수신하고 제 2 노드 (102)에서 상기 복제된 데이터를 국부적으로 프로세싱하기 위해 상기 페이로드 프로세스를 실행한다. 페이로드 프로세스는 특정한 디렉토리에 데이터를 저장하거나, 상기 데이터를 프로세싱할 수 있다.
제 2 노드(102)와 제 3 노드(103) 사이에 구축되고 유지된 통신 채널로, 단계(214)에서 제 3 노드(103)는 통신 채널을 통해 제 2 노드(103)로부터 데이터를 수신한다. 또한, 제 3 노드(103)는 통신 채널을 통해 제 1 노드(101)로부터 제어 정보를 수신할 수 있다. 데이터 수신에 응답하여, 제 3 노드(103)는 단계(216)에서 데이터를 다루기 위해 제 3 코드를 실행한다. 데이터를 다루는 단계는 데이터상의 하나 이상의 로컬 프로세스들을 수행하는 단계를 포함할 수 있다.
방법(200)은 데이터가 원하는 노드들로 전송될 때까지 이 방식으로 데이터를 다른 노드들로 선형으로 전송하는 단계들을 더 포함할 수 있다. 방법(200)은 데이터가 통신 네트워크(100)를 통해 선형 체인에서 전송되는 단계를 도시한다. 그러나, 방법(200)은 도 2b에 도시된 바와 같은 선형 전송들로 제한되지 않는다.
도 2b는 방법(200)에 사용될 수 있는 부가적인 단계들을 도시하는 흐름도이다. 단계(218)에서, 제 2 노드(102)는, 제 3 노드(103)와 통신 채널을 구축하는 단계에 부가하여(도 2a의 단계(206) 참조), 제 4 노드(104)와 통신 채널을 구축하기 위해 제 2 코드를 더 실행한다. 단계(220)에서, 제 2 노드(102)는 제 4 코드를 생성하기 위해 그 자신을 복제하고 제 4 코드를 통신 채널을 통해 제 4 노드(104)로 제공하기 위해 제 2 코드를 실행한다. 제 2 노드(102)와 제 4 노드(104) 사이에 구축되고 유지된 통신 채널로, 단계(222)에서, 제 4 노드(104)는 통신 채널을 통해 제 2 노드(102)로부터 데이터를 수신한다. 또한, 제 4 노드(104)는 통신 채널을 통해 제 1 노드(101)로부터 제어 정보를 수신할 수 있다. 데이터 수신에 응답하여, 제 4 노드(104)는 단계(224)에서 데이터를 다루기 위해 제 4 코드를 실행한다. 데이터를 다루는 단계는 데이터상의 하나 이상의 로컬 프로세스들을 수행하는 단계를 포함할 수 있다.
방법(200)은 데이터가 원하는 노드들로 전송될 때까지 유사한 단계들을 계속할 것이다.
도면들 3a-3d는 코드 및 데이터가 본 발명의 예시적인 실시예의 방법(200)에 따라 통신 네트워크(100)에서 전송되는 방법을 도시한다. 도 3a는 통신 네트워크(100)의 제 1, 제 2, 및 제 3 노드들(101-103)을 도시한다. 노드(101)는 제 1 코드(310)를 포함하며, 노드들(102-103)은 코드(301)와 유사하거나 대응하는 코드들을 초기에 포함하지 않는다.
노드(101)는 노드(102)와 통신 채널(311)을 구축하기 위해 코드(301)를 실행한다(도 3b참조). 또한, 노드(101)는 제 2 코드(302)를 생성하기 위해 그 자신을 복제하고 코드(302)를 통신 채널(311)을 통해 노드(102)로 제공하기 위해 코드(301)를 실행한다. 노드(101)는 도 3b에 도시되지 않은 다중의 노드들에 대해 이 동작을 수행할 수 있다.
노드(102)는 노드(103)과 통신 채널(312)을 구축하기 위해 코드(302)를 실행한다(도 3c참조). 통신 채널(312)은 통신 채널(311)로서 동일한 채널을 포함할 수 있다. 또한, 노드(102)는 제 3 코드(303)를 생성하기 위해 그 자신을 복제하고 코드(303)를 통신 채널(312)을 통해 노드(103)로 제공하기 위해 코드(302)를 실행한다. 노드(102)는 도 3c에 도시되지 않은 다중의 노드들에 대해 이 동작을 수행할 수 있다.
노드(102)는 노드(104)와 통신 채널(313)을 구축하기 위해 코드(302)를 실행한다(도 3d참조). 통신 채널(313)은 통신 채널들(311-312)로서 동일한 채널을 포함할 수 있다. 노드(102)는 제 4 코드(304)를 생성하기 위해 그 자신을 복제하고 코드(304)를 통신 채널(313)을 통해 노드(104)로 제공하기 위해 코드(302)를 실행한다.
구축되고 유지된 통신 채널(311)로, 노드(102)는 통신 채널(311)을 통해 노드(101)로부터 데이터(321)를 수신한다(도 3d 참조). 데이터는 통신 네트워크에서 전송을 타겟으로 하는 임의의 정보, 소프트웨어, 명령어들, 등을 포함할 수 있다. 데이터(321) 수신에 대한 응답으로, 노드(102)는 데이터(321)를 다루기 위해 코드(302)를 실행한다. 예를 들어, 노드(102)는 데이터(321)상에서 하나 이상의 로컬 프로세스들을 수행하기 위해 코드(302)를 실행할 수 있다.
구축되고 유지된 통신 채널(312)로, 노드(103)는 통신 채널(312)을 통해 노드(102)로부터 데이터(321)를 수신한다. 데이터(321) 수신에 응답하여, 노드(103)는 데이터(321)를 다루기 위해 코드(303)를 실행한다. 예를 들어, 노드(103)는 데이터(321)상에서 하나 이상의 로컬 프로세스들을 수행하기 위해 코드(303)를 실행할 수 있다.
구축되고 유지된 통신 채널(313)로, 노드(104)는 통신 채널(313)을 통해 노 드(102)로부터 데이터(321)를 수신한다. 데이터(321) 수신에 대한 응답으로, 노드(104)는 데이터(321)를 다루기 위해 코드(304)를 실행한다. 예를 들어, 노드(104)는 데이터(321)상에서 하나 이상의 로컬 프로세스들을 수행하기 위해 코드(304)를 실행할 수 있다.
유익하게도, 네트워크 직원은 네트워크의 대역폭을 희생시키지 않고 데이터를 통신 채널상의 다중의 노드들(101-104)로 효율적으로 전송하기 위해 이 실시예에서 설명된 바와 같은 자기-복제 코드를 사용할 수 있다. 또한, 네트워크 직원은 데이터 전송을 용이하게 하기 위해 통신 네트워크(100)의 노드들(102-104)상의 사전-인스톨 코드(pre-install code)를 필요로하지 않는다. 자기-복제 코드는 데이터 전송을 용이하게 하기 위해 네트워크(100)의 노드들(102-104)에서 그 자신을 스폰 (spawn)할 수 있다.
통신 네트워크 -- 도 4-6
도 4는 본 발명의 예시적인 실시예의 통신 네트워크(400)를 도시한다. 통신 네트워크(400)는 LAN(410)을 통해 서로 통신할 수 있는 복수의 노드들(401-409)을 포함한다. LAN(410)은 LAN(410)으로부터 노드들(401-409)로 액세스가 방화벽들 또는 다른 보호 메커니즘들에 의해 블록킹되지 않은 임의의 종류의 신뢰된 네트워크를 포함한다. 다른 실시예들에서, LAN(410)은 인트라넷, MAN, WAN, 또는 다른 형태의 엔터프라이즈 네트워크를 포함할 수 있다. 노드는 컴퓨터와 같은, 통신 네트워크(400)를 위한 임의의 시스템, 디바이스, 컴포넌트, 카드, 등을 포함할 수 있다. 노드들(401-409)은 서로로부터 원격되어 있으며, LAN(410)을 통해 서로 통신하는 것을 의미한다. 통신 네트워크(400)는 도 4에 도시되지 않은 다른 노드들, 컴포넌트들, 디바이스들, 또는 시스템들을 포함할 수 있다.
노드(410)가 네트워크 직원에 의해 작동된 제어기 노드임을 가정한다. 네트워크 직원이 대규모의 데이터 스트림을 통신 네트워크(400)의 모든 노드들(402-409)로 전송하기 원한다고 부가적으로 가정한다. 예를 들어, 네트워크 직원은, 소프트웨어가 대규모의 데이터 스트림을 포함하는, 노드들(402-409)상에 새로운 소프트웨어를 인스톨을 필요로 할 수 있다. 각각의 기계상에서 소프트웨어를 개별적으로 인스톨하는 것은 네트워크 직원에게 비효율적일 수 있다. 네트워크 직원이 대규모의 데이터 스트림으로서 소프트웨어를 다중의 노드들(402-409)로 동시에 전송하도록 시도하는 경우, LAN(410)의 대역폭은 타협(compromised)될 수 있다. 네트워크 직원은 LAN(410)의 대역폭을 타협하지 않고 노드들(402-409)로 소프트웨어를 효율적으로 전송하는 본 발명에 따른 자기-복제 코드를 사용할 수 있다.
상기 실시예에서, 자기-복제 코드는 스트리밍 웜(streaming sworm)으로서 지칭될 수 있다. 스트리밍 웜(스웜)은, 노드들 사이에서 데이터를 스트리밍하는 동안, 통신 네트워크의 노드들의 세트에서 그 자신을 복제할 수 있는 임의의 소프트웨어, 코드, 또는 명령들 뿐만 아니라 임의의 페이로드 코드의 일부를 포함할 수 있다. 각각의 스웜은 다양한 토폴로지들(variety of topologies)로 배열될 수 있는 하나 이상의 스웜렛들(swormlets)로 구성되어 있다. 스웜은 데이터 스트림의 전송, 어느 노드를 포함할지 등을 제어할 수 있는 발신 프로세스에 의해 스폰(spawned)될 수 있다.
각각의 스웜렛은 스웜렛 코드, 플레이 코드, 및 데이터 스트림을 포함한다. 스웜렛 코드는 노드들상의 새로운 스웜렛들을 스폰하고 노드들 사이의 데이터 스트림의 전송을 유지 등을 하는데 사용되는 코드를 포함한다. 페이로드 코드는 노드상에서 국부적으로 실행되는 코드를 포함한다. 데이터 스트림은 통신 네트워크(400) 내에 전송되는 데이터를 포함한다.
노드(410)가 스웜들을 발신하는 발신 프로세스(originating process)(도시 없음)를 포함한다고 가정한다. 네트워크 직원이 대규모의 데이터 스트림(즉, 소프트웨어)을 네트워크(400)의 많은 노드들에 전송하기를 원하기 때문에, 선형 스웜은 대규모의 데이터 스트림을 전송하는데 가장 효율적인 토폴로지가 될 수 있다. 선형 스웜은 LAN(410)의 대역폭이 스웜의 스웜렛들 사이에서 분할되면 않되기 때문에 가장 효율적으로 작동한다. 대규모 데이터 스트림의 하나의 사본만이 아래에 도시된 바와 같은 선형 스웜으로 동시에 LAN(410)을 통해 전송될 필요가 있다.
도 5는 본 발명의 예시적인 실시예의 선형 스웜 토폴로지를 도시한다. 선형 스웜 토폴로지를 생성하기 위해, 다음이 발생한다. 노드(401)의 발신 프로세스(501)는 스웜렛(502)을 스폰한다(S-LET으로서 도 5 참조). 보다 자세히는, 발신 프로세스(501)는 노드(401)상의 네트워킹 프로세스(521)를 개시한다. 네트워킹 프로세스(521)는 원격 착신 노드(remote terminating node)와 통신 채널을 구축하기 위해 노드(401)에서 실행하고, 원격 노드로부터 및 원격 노드로 보내진 프로그램 코드, 제어 정보, 및 데이터 스트림을 위한 콘딧(conduit)으로서 역할하도록 구성된다. 따라서, 네트워킹 프로세스(521)는 노드(402)와 통신 채널을 구축하도록 노드 (401)에서 실행한다. 이 후, 발신 프로세스(501)는, 화살표(525)에 의해 도시된 바와 같이, 통신 채널을 통해 스웜렛 코드의 사본을 전송하기 위한 콘딧으로서 네트워킹 프로세스(521)를 사용한다.
네트워킹 프로세스(521)는 스웜렛 코드의 사본을, remsh, rsh, 또는 ssh와 같은 원격 셀 명령어(remote shell command)를 사용하여 노드(402)로 전송될 수 있다. 네트워킹 프로세스(521)는 노드(401)로부터 통신 채널을 통해 스웜렛 코드를 당기는 노드(402)상의 인-라인 펄 부트스트랩 스크립트(in-line Perl bootstrap script)를 전송하고 원격적으로 실행하기 위해 원격 셀 명령어를 사용할 수 있다. 각각의 스웜렛(502)은 이 실시예의 두 개의 노드들을 스폰한다.
노드(402)는 스웜렛(502)에 대해 메인 스웜렛 프로세스(522), 라우팅 프로세스(523), 페이로드 프로세스(524)를 수행하기 위해 스웜렛 코드를 실행한다. 메인 스웜렛 프로세스(522)는, 화살표(526)에 의해 도시된 바와 같이, 통신 채널을 통해 발신 프로세스(501)로부터 페이로드 코드를 수신한다. 메인 스웜렛 프로세스(522)는 페이로드 코드를 복제하고 페이로드 코드의 사본을 페이로드 프로세스(524)로 전송한다. 메인 스웜렛 프로세스(522)는 아래에 설명된 바와 같이 페이로드 코드를 다른 스웜렛으로 전송한다(필요하다면). 메인 스웜렛 프로세스(522)는 페이로드 코드를 실행하기 위해 페이로드 프로세스(524)를 개시한다.
선형 스웜 토폴로지를 형성하기 위해, 메인 스웜렛 프로세스(522)는 스웜렛(503)을 스폰한다. 다른 실시예들에서, 메인 스웜렛 프로세스(522)는 다른 스웜렛들을 스폰할 수 있다. 스웜렛(503)을 스폰하는 동안, 메인 스웜렛 프로세스(522)는 노드(402)상의 네트워킹 프로세스(531)를 개시한다. 네트워킹 프로세스(531)는 노드(403)와 통신 채널을 구축하기 위해 노드(402)에서 실행한다. 이 후, 스웜렛(502)은, 화살표(535)에 의해 도시된 바와 같이, 통신 채널을 통해 스웜렛 코드의 사본을 전송하기 위해 콘딧으로서 네트워킹 프로세스(531)를 사용한다.
노드(403)는 스웜렛(503)에 대해 메인 스웜렛 프로세스(532), 라우팅 프로세스(533), 및 페이로드 프로세스(534)를 수행하기 위해 스웜렛 코드를 실행한다. 스웜렛(503)의 메인 스웜렛 프로세스(532)는, 화살표(536)에 의해 도시된 바와 같이, 통신 채널을 통해 스웜렛(502)의 메인 스웜렛 프로세스(522)로부터 페이로드 코드를 수신한다. 메인 스웜렛 프로세스(532)는 페이로드 코드를 복제하고 페이로드 코드의 사본을 페이로드 프로세스(534)로 전송한다. 메인 스웜렛 프로세스(532)는 아래에 설명된 바와 같이 페이로드 코드를 다른 스웜렛으로 전송한다 (필요하다면). 메인 스웜렛 프로세스(532)는 페이로드 코드를 실행하기 위해 페이로드 프로세스(534)를 개시한다.
스웜렛들은 발신 프로세스(501)에 의해 설계된 바와 같이 통신 네트워크(400)의 노드들(401-409)(도 4 참조)을 통해 유사한 방식으로 스폰된다. 일단 스웜렛들이 스폰되고 통신 채널들이 노드들(401-409) 사이에서 구축되면, 데이터 스트림은 노드들(401-409) 사이에서 전송될 수 있다.
발신 프로세스(501)는 데이터 스트림을 스웜렛(502)으로 전송한다. 이 실시예의 데이터 스트림은 대규모의 데이터 스트림인 소프트웨어를 포함한다. 메인 스웜렛 프로세스(522)는 스웜렛(502)의 라우팅 프로세스(533)를 개시한다. 스웜렛 (502)내의 라우팅 프로세스(523)는, 화살표(527)에 의해 도시된 바와 같이, 통신 채널을 통해 발신 프로세스(501)로부터 데이터 스트림을 수신한다. 라우팅 프로세스(523)는 데이터 스트림을 복제하고, 데이터 스트림의 사본을 페이로드 프로세스(524)로 전송한다. 라우팅 프로세스(523)는 발신 프로세스(501)에 의해 어드레싱되거나 특정된 바와 같이 데이터 스트림을 다른 스웜렛으로 전송한다(필요하다면) . 페이로드 프로세스(524)는 라우팅 프로세스(523)로부터 데이터 스트림의 사본을 수신한다. 페이로드 프로세스(524)는 데이터 스트림을 국부적으로 다루기 위해 페이로드 코드를 실행한다. 예를 들어, 페이로드 코드는 노드(402)상의 알려진 디렉토리내에서 데이터 스트림을 저장하기 위해 페이로드 프로세스(524)를 지시할 수 있다.
또한, 라우팅 프로세스(523)는 발신 프로세스(501)로부터 제어 지시들을 수신할 수 있다. 라우팅 프로세스(523)는 페이로드 프로세스(524)상의 제어 지시들을 실행할 수 있다. 또한, 라우팅 프로세스(523)는 제어 지시들을 다른 스웜렛 또는 노드로 전송할 수 있다(필요하다면).
페이로드 코드의 실행에서, 페이로드 프로세스(524)는 출력 데이터를 생성할 수 있다. 페이로드 프로세스(524)는 출력 데이터를 메인 스웜렛 프로세스(522)로 전송한다. 메인 스웜렛 프로세스(522)는 페이로드 프로세스(524)로부터의 출력 데이터 및/또는 임의의 프로세스들로부터의 상태 정보를 수신한다. 메인 스웜렛 프로세스(522)는 페이로드 프로세스(524)와 차일드 스웜렛들로부터 출력 데이터 및/또는 상태 정보를 멀티플렉싱하고, 화살표(528)에 도시된 바와 같이 통신 채널을 통 해 출력 데이터 및/또는 상태 정보를 전송한다. 상태 정보는 노드(402)상의 대규모의 데이터 스트림을 저장하는 것의 완료에 대한 피드백을 포함할 수 있다. 네트워킹 프로세스(521)는 출력 데이터 및/또는 상태 정보가 노드들 사이에서 교환될 수 있도록 노드들(401 및 402) 사이의 통신 채널을 유지한다.
스웜렛(503)내의 메인 스웜렛 프로세스(523)는 라우팅 프로세스(533)를 개시한다. 스웜렛(503)내의 라우팅 프로세스(533)는 화살표(537)에 의해 도시된 바와 같이 통신 채널을 통해 스웜렛(502)내에서 라우팅 프로세스(523)로부터 데이터 스트림(즉, 본 실시예에서 소프트웨어)을 수신한다. 라우팅 프로세스(533)는 데이터 스트림을 복제하고, 데이터 스트림의 사본을 페이로드 프로세스(534)로 전송한다. 라우팅 프로세스(523)는 발신 프로세스(501)에 의해 어드레싱되거나 특정되는 다른 스웜렛으로 데이터 스트림을 전송한다(필요하다면). 페이로드 프로세스(534)는 라우팅 프로세스(533)로부터 데이터 스트림의 사본을 수신한다. 페이로드 프로세스(534)는 데이터 스트림을 국부적으로 다루기 위해 페이로드 코드를 실행한다. 예를 들어, 페이로드 코드는 노드(403)상의 알려진 디렉토리내에서 데이터 스트림을 저장하기 위해 페이로드 프로세스(534)를 지시할 수 있다.
발신 프로세스(501)는 데이터 스트림을 수신할 노드들과, 맵, 지시들의 세트, 어드레싱 체제 등에 근거하여 노드들의 순서를 지정할 수 있다. 발신 프로세스(501)는 데이터 스트림을 하나 이상이 스웜렛들(502-504)로 어드세싱하거나 모든 스웜렛들(502-504)로 방송할 수 있다. 발신 프로세스(501)에 의한 지정에 근거하여, 라우팅 프로세스(533)는 데이터 스트림을 다음 노드로 전송하거나 데이 터 스트림을 다음 노드 또는 부가적인 다른 차일드 노드들로 전송하도록 준비한다.
또한, 라우팅 프로세스(533)는 라우팅 프로세스(523)로부터 제어 지시들을 수신할 수 있다. 라우팅 프로세스(533)는 페이로드 프로세스(534)상의 제어 지시들을 실행할 수 있다. 또한, 라우팅 프로세스(533)는 제어 지시들을 다른 스웜렛으로 전송할 수 있다(필요하다면).
페이로드 코드의 실행에서, 페이로드 프로세스(534)는 출력 데이터를 생성할 수 있다. 페이로드 프로세스(534)는 출력 데이터를 메인 스웜렛 프로세스(522)로 전송한다. 메인 스웜렛 프로세스(532)는 페이로드 프로세스로(534)부터의 출력 데이터 및/또는 임의의 프로세스들로부터의 상태 정보를 수신할 수 있다. 메인 스웜렛 프로세스(532)는 페이로드 프로세스(534)와 차일드 스웜렛들로부터 출력 데이터 및/또는 상태 정보를 멀티플렉싱하고, 화살표(528)에 도시된 바와 같이 통신 채널을 통해 출력 데이터 및/또는 상태 정보를 전송한다. 상태 정보는 노드(402)상에 대규모의 데이터 스트림을 저장하는 것의 완료에 대한 피드백을 포함할 수 있다. 네트워킹 프로세스(531)는 노드들(402와 403) 사이의 통신 채널을 유지하여 출력 데이터 및/또는 상태 정보는 노드들 사이에서 교환될 수 있다.
데이터 스트림은 발신 프로세스(501)에 의해 설계된 바와 같이 통신 네트워크(400)의 노드들(404-409)을 통해 유사한 방식으로 전송될 수 있다(도 4 참조). 데이터 스트림이 본 예시에서 소프트웨어이기 때문에, 네트워크 직원은 각각의 노드(402-409)상의 소프트웨어를 인스톨할 수 있다. 스웜렛들은 데이터 스트림의 전송 이후 분해될 수 있으며 다른 데이터 스트림들을 전송하도록 사용될 수 있다.
많은 유익들을 제공하는 상기된 프로세스에 따라 데이터 스트림을 도 4의 통신 네트워크(400)의 노드들(402-409)로 전송한다. 제 1은, 노드들(402-409)은 데이터 스트림을 수신하기 위해 임의의 특별한 코드를 초기에 가질 필요는 없다. 스웜렛들은 필요로 된 코드를 제공하기 위해 노드들(402-409)상에서 그 자신들을 복제할 것이다. 이 후, 노드들은 데이터 스트림을 보다 효율적으로 전송하기 위해 병렬로 코드를 실행할 수 있다. 제 2는, 네트워크 직원은 전송 상태의 피드백을 가질 수 있다. 각각의 스웜렛은 노드들 사이에서 통신 채널을 유지하며, 상태 정보를 발신 프로세스(501)에 역으로 제공한다. 따라서, 네트워크 직원은 데이터 스트림 전송의 상태를 결정하기 위해 상태 정보를 볼 수 있다. 제 3은, LAN(410)의 대역폭은 데이터 스트림 전송에 의해 타협될 수 없을 것이다. 노드들이 데이터 스트림의 하나의 사본을 한 블록씩 노드에서 노드로 마지막 노드에 이를 때까지 통과시키기 때문에, 데이터 스트림의 하나의 사본만이 임의로 동시에 선형의 토폴로지에서 LAN(410)상에 제시된다.
이제, 각각의 노드(402-409)가 전송되기 이전의 소프트웨어의 사본을 포함한다고 가정하면, 네트워크 직원은 노드들(402-409)에서 소프트웨어를 원격적으로 인스톨하기를 더 원할 수 있다. 네트워크 직원은 소프트웨어를 인스톨하기 위한 지시들을 포함하는 데이터 스트림을 전송함으로써, 원격 인스톨을 수행하기 위해 다른 스웜을 사용할 수 있다. 데이터 스트림은 특히, 소프트웨어 그 자신을 비교하면 대규모가 아닐 것이다. 따라서, 통신 네트워크(400)에서 보다 작은 데이터 스트림들을 전송하기 위해, 선형 스웜은 전파 지연이 매우 길기 때문에 가장 효율적인 토폴 로지가 될 수 없다. 트리 스웜은 보다 작은 데이터 스트림들을 전송하기 위해 보다 좋은 토폴로지가 될 수 있다.
도 6은 본 발명의 예시적인 실시예의 트리 스웜 토폴로지를 도시한다. 트리 스웜 토폴로지를 생성하기 위해, 다음이 발생한다. 노드(401)의 발신 프로세스(501)는 스웜렛(602)을 스폰한다(s-let으로서 도 6 참조). 스웜렛(602)은 노드(402)와 통신 채널을 구축하여, 스웜렛(602)은 두 개의 노드들(401-402)을 스패닝(span)한다. 스웜렛(602)은 네트워킹 프로세스, 메인 스웜렛 프로세스, 및 페이로드 프로세스를 포함할 수 있으며, 이는 간결함을 위해본 실시예에서 설명되지 않았다.
발신 프로세스(501)에 의해 제공된 리스트를 근거로, 스웜렛(602)은 스웜렛들(603 및 604)을 스폰한다. 스웜렛(603)은 노드(403)와 통신 채널을 구축하는 노드(402)를 작동하여 스웜렛(603)은 두 개의 노드들(402-403)을 스패닝한다. 스웜렛(603)은 프웜렛들(605-606)을 스폰한다. 노드(403)에서 작동하는 스웜렛(605)은 노드(405)와 통신 채널을 구축하여 스웜렛(605)은 두 개의 노드들(403 및 405)을 스패닝한다. 노드(403)에서 작동하는 스웜렛(606)은 노드(406)와 통신 채널을 구축하여 스웜렛(606)은 두 개의 노드들(403 및 406)을 스패닝한다. 노드(402)에서 작동하는 스웜렛(604)은 스웜렛들(607-608)을 스폰한다. 노드(404)에서 작동하는 스웜렛(607)은 노드(407)와 통신 채널을 구축하여 스웜렛(607)은 두 개의 노드들(404 및 407)을 스패닝한다. 노드(404)에서 작동하는 스웜렛(608)은 노드(408)와 통신 채널을 구축하여 스웜렛(608)은 두 개의 노드들(404 및 408)을 스패닝한다. 스웜렛 들은 도 6에 도시되지 않은 다중의 다른 노드들로 스폰될 수 있다.
통신 채널들이 구축될 때, 발신 프로세스(501)는 화살표(625)에 의해 도시된 바와 같이 데이터 스트림의 사본을 스웜렛(602)으로 전송한다. 본 실시예의 데이터 스트림은 노드들상에 소프트웨어를 인스톨하기 위한 지시들의 세트를 포함한다. 스웜렛(602)은 화살표(626)에 의해 도시된 바와 같이 데이터 스트림의 사본을 스웜렛(603)으로 전송하고, 화살표(627)에 의해 도시된 바와 같이 데이터 스트림의 사본을 스웜렛(606)으로 전송한다. 스웜렛(603)은 화살표(628)에 의해 도시된 바와 같이 데이터 스트림의 사본을 스웜렛(605)으로 전송하고, 화살표(629)에 의해 도시된 바와 같이 데이터 스트림의 사본을 스웜렛(606)으로 전송한다. 스웜렛(604)은 화살표(630)에 의해 도시된 바와 같이 데이터 스트림의 사본을 스웜렛(607)으로 전송하고, 화살표(631)에 의해 도시된 바와 같이 데이터 스트림의 사본을 스웜렛(608)으로 전송한다.
스웜렛들은 데이터 스트림을 발송 프로세스(501)에 의해 데이터 스트림을 수신하기 위해 지시된 각각의 노드로 전송한다. 도 6은 데이터를 전송하기 위한 이진 트리 토폴로지(binary tree topology)를 도시한다. 그러나, 비대칭 트리 토폴로지또한 사용될 수 있다.
다중 스웜렛들(602-608)은 데이터 스트림을 보다 효율적으로 전송하기 위해 병렬로 데이터 스트림을 스트리밍 할 수 있다. 상술 된 방식으로 데이터 스트림을 전송하는 것은 데이터 스트림을 각각의 노드에 빠르고 효율적으로 제공한다. 본 실시예의 데이터 스트림은 소프트웨어를 인스톨하기 위한 지시들을 포함한다. 따라 서, 네트워크 직원은 지시들을 다중 노드들로 빠르고 효율적으로 전송할 수 있어, 소프트웨어가 노드들상에 인스톨될 수 있다.
도 6에서, 발신 프로세스(501)는 스웜을 위해 오로지 발신 프로세스로서 동작한다. 다른 실시예들에서, 스웜렛들(602-608)의 임의의 페이로드 프로세스는 다른 새롭고 독립적인 스웜에 대한 발신 프로세스로서 작동할 수 있다. 따라서, 스웜들의 콤플렉스 트리는 반복적인 방식으로 구성될 수 있다.
상술 된 방식으로 데이터 스트림을 전송하는 것은 데이터 스트림을 각각의 노드에 빠르고 효율적으로 제공한다. 본 실시예의 데이터 스트림은 소프트웨어를 인스톨하기 위한 지시들을 포함한다. 따라서, 네트워크 직원은 지시들을 다중 노드들로 빠르고 효율적으로 전송할 수 있어, 소프트웨어가 노드들상에 인스톨될 수 있다.
Claims (10)
- 통신 네트워크(100)의 노드들(101-104) 사이에서 데이터를 전송하기 위해 상기 통신 네트워크를 작동하는 방법(200)으로서, 상기 통신 네트워크는 제 1 코드를 포함하는 제 1 노드(101)를 포함하는, 상기 통신 네트워크 작동 방법에 있어서,제 2 노드(102)와 통신 채널을 구축하고, 제 2 코드를 생성하기 위해 상기 제 1 코드를 복제하고, 상기 제 2 코드를 상기 통신 채널을 통해 상기 제 2 노드로 제공하기 위해 상기 제 1 노드에서 상기 제 1 코드를 실행하는 단계(202,204)와,제 3 노드(103)와 통신 채널을 구축하고, 제 3 코드를 생성하기 위해 상기 제 2 코드를 복제하고, 상기 제 3 코드를 상기 통신 채널을 통해 상기 제 3 노드로 제공하기 위해 상기 제 2 노드에서 상기 제 2 코드를 실행하는 단계(206,208)와,상기 통신 채널을 통해 상기 제 1 노드로부터의 상기 데이터를 상기 제 2 노드에서 수신(210)하고, 상기 데이터를 다루기 위해 상기 제 2 노드에서 상기 제 2 코드를 실행하는 단계(212)와,상기 통신 채널을 통해 상기 제 2 노드로부터의 데이터를 상기 제 3 노드에서 수신(214)하고, 상기 데이터를 다루기 위해 상기 제 3 노드에서 상기 제 3 코드를 실행하는 단계(216)를 포함하는, 통신 네트워크 작동 방법(200).
- 제 1 항에 있어서,제 4 노드(104)와 상기 통신 채널을 구축하고, 제 4 코드를 생성하기 위해 상기 제 2 코드를 복제하고, 상기 제 4 코드를 상기 통신 채널을 통해 상기 제 4 노드로 제공하기 위해 상기 제 2 노드(102)에서 상기 제 2 코드를 실행하는 단계 (218,220)와,상기 통신 채널을 통해 상기 제 2 노드로부터 상기 데이터를 상기 제 4 노드에서 수신(222)하고, 상기 데이터를 다루기 위해 상기 제 4 노드에서 상기 제 4 코드를 실행하는 단계(224)를 더 포함하는, 통신 네트워크 작동 방법(200).
- 제 1 항에 있어서, 상기 데이터를 다루기 위해 상기 제 2 노드(102)에서 상기 제 2 코드를 실행하는 상기 단계는,상기 제 1 노드로부터 수신된 상기 데이터를 복제하고, 상기 복제된 데이터를 상기 제 2 노드에서 페이로드 프로세스로 라우팅하기 위해 상기 제 2 노드에서 상기 제 2 코드를 실행하는 단계와,출력 데이터를 생성하기 위해 상기 제 2 노드상의 상기 복제된 데이터를 국부적으로 프로세싱하도록 상기 제 2 노드에서 상기 페이로드 프로세스를 실행하는 단계를 더 포함하는, 통신 네트워크 작동 방법(200).
- 제 3 항에 있어서,상기 제 2 노드로부터 상기 출력 데이터 및 상태 정보를 멀티플렉싱하고, 상기 출력 데이터 및 상기 상태 정보를 상기 통신 채널을 통해 상기 제 1 노드(101)로 전송하기 위해 상기 제 2 노드(102)에서 상기 제 2 코드를 실행하는 단계를 더 포함하는, 통신 네트워크 작동 방법(200).
- 제 1 항에 있어서,상기 통신 채널을 통해 상기 제 1 노드(101)로부터의 제어 정보를 상기 제 2 노드(102)에서 수신하는 단계와,상기 데이터를 다루기 위해 상기 제 2 노드에서 상기 제어 정보를 사용하는 단계와,상기 제 2 노드로부터의 상기 데이터 및 상기 제어 정보를 상기 통신 채널을 통해 상기 제 3 노드(103)로 라우팅하는 단계를 더 포함하는, 통신 네트워크 작동 방법(200).
- 통신 네트워크(100)의 노드들(101-104) 사이에서 데이터 전송을 제공하기 위한 상기 통신 네트워크로서,제 1 노드(101)와,제 2 노드(102)와,네트워크 설비(110)에 의해 접속된 제 3 노드(103)를 포함하고,상기 제 1 노드는, 제 1 코드의 실행에 응답하여, 상기 제 2 노드와 통신 채널을 구축하고, 제 2 코드를 생성하기 위해 상기 제 1 코드를 복제하고, 상기 제 2 코드를 상기 통신 채널을 통해 상기 제 2 노드로 제공하고;상기 제 2 노드는, 제 2 코드의 실행에 응답하여, 상기 제 3 노드와 상 기 통신 채널을 구축하고, 제 3 코드를 생성하기 위해 상기 제 2 코드를 복제하고, 상기 제 3 코드를 상기 통신 채널을 통해 상기 제 3 노드로 제공하고;상기 제 2 노드는 상기 통신 채널을 통해 상기 제 1 노드로부터 데이터를 수신하고, 상기 데이터를 다루기 위해 상기 제 2 코드를 실행하고,상기 제 3 노드는 상기 통신 채널을 통해 상기 제 2 노드로부터 데이터를 수신하고, 상기 데이터를 다루기 위해 상기 제 3 코드를 실행하는 것을 특징으로 하는, 통신 네트워크(100).
- 제 6 항에 있어서, 제 4 노드(104)를 더 포함하며,상기 제 2 노드(102)는, 상기 제 2 코드의 실행에 응답하여, 상기 제 4 노드와 상기 통신 채널을 구축하고, 제 4 코드를 생성하기 위해 상기 제 2 코드를 복제하고, 상기 제 4 코드를 상기 통신 채널을 통해 상기 제 4 노드로 제공하고;상기 제 4 노드는 상기 통신 채널을 통해 상기 제 2 노드로부터 상기 데이터를 수신하고, 상기 데이터를 다루기 위해 상기 제 4 코드를 실행하는, 통신 네트워크(100).
- 제 6 항에 있어서, 상기 제 2 노드(102)는,상기 통신 채널을 통해 상기 제 1 노드(101)로부터 상기 데이터를 수신하고, 상기 데이터를 복제하고, 상기 복제된 데이터를 상기 제 2 노드에서 페이로드 프로세스로 라우팅하고;출력 데이터를 생성하기 위해 상기 복제된 데이터를 국부적으로 프로세싱하도록 상기 페이로드 프로세스를 실행하는, 통신 네트워크(100).
- 제 8 항에 있어서, 상기 제 2 노드(102)는, 상기 제 2 코드의 실행에 응답하여, 상기 제 2 노드로부터 상기 출력 데이터 및 상태 정보를 멀티플렉싱하고, 상기 출력 데이터 및 상태 정보를 상기 통신 채널을 통해 상기 제 1 노드(101)로 전송하는, 통신 네트워크(100).
- 제 6 항에 있어서, 상기 제 2 노드(102)는 상기 통신 채널을 통해 상기 제 1 노드(101)로부터 제어 정보를 수신하고, 상기 데이터를 다루기 위해 상기 제어 정보를 사용하고, 상기 데이터 및 상기 제어 정보를 상기 통신 채널을 통해 상기 제 3 노드(103)로 라우팅하는, 통신 네트워크(100).
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/786,911 US7474656B2 (en) | 2004-02-25 | 2004-02-25 | Data transfer to nodes of a communication network using self-replicating code |
US10/786,911 | 2004-02-25 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20060042975A true KR20060042975A (ko) | 2006-05-15 |
KR101110584B1 KR101110584B1 (ko) | 2012-02-15 |
Family
ID=34750499
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020050013490A KR101110584B1 (ko) | 2004-02-25 | 2005-02-18 | 자기-복제 코드를 사용한 통신 네트워크의 노드들로 데이터를 전송 |
Country Status (6)
Country | Link |
---|---|
US (2) | US7474656B2 (ko) |
EP (1) | EP1569113B1 (ko) |
JP (1) | JP4602791B2 (ko) |
KR (1) | KR101110584B1 (ko) |
CN (1) | CN100527693C (ko) |
DE (1) | DE602005000044T2 (ko) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100287623A1 (en) * | 2005-11-23 | 2010-11-11 | Thomas Banik | Method for distributing a computer data structure to nodes of a network |
US7698440B2 (en) * | 2006-10-02 | 2010-04-13 | Phonak Ag | Method for controlling a transmission system as well as a transmission system |
CN104348868A (zh) * | 2013-08-02 | 2015-02-11 | 华为技术有限公司 | 节点安装处理方法、装置和系统 |
US11349557B2 (en) * | 2018-11-30 | 2022-05-31 | At&T Intellectual Property I, L.P. | System model and architecture for mobile integrated access and backhaul in advanced networks |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB9412553D0 (en) * | 1994-06-22 | 1994-08-10 | At & T Global Solutions Intern | Method and apparatus for distributing software |
US6233601B1 (en) | 1996-11-14 | 2001-05-15 | Mitsubishi Electric Research Laboratories, Inc. | Itinerary based agent mobility including mobility of executable code |
JPH10171660A (ja) | 1996-12-13 | 1998-06-26 | Nec Corp | データ通信装置 |
US6782398B1 (en) * | 2000-06-14 | 2004-08-24 | Microsoft Corporation | Method for executing commands on multiple computers of a network |
JP3549861B2 (ja) | 2000-09-12 | 2004-08-04 | 日本電信電話株式会社 | 分散型サービス不能攻撃の防止方法および装置ならびにそのコンピュータプログラム |
US7162538B1 (en) * | 2000-10-04 | 2007-01-09 | Intel Corporation | Peer to peer software distribution system |
JP2003044637A (ja) * | 2001-08-01 | 2003-02-14 | Hitachi Ltd | ワークフロー・システム制御方法、および、ワークフロー・システムを実行するためのプログラム |
US20030182398A1 (en) * | 2002-02-14 | 2003-09-25 | Morlang Keven P. | Method of establishing a logical association between connections |
EP1505797B1 (en) | 2003-08-04 | 2005-05-11 | Alcatel | A method, a communication network and a computer software product for distributing software packages or updates |
-
2004
- 2004-02-25 US US10/786,911 patent/US7474656B2/en active Active
-
2005
- 2005-02-15 EP EP05250873A patent/EP1569113B1/en not_active Not-in-force
- 2005-02-15 DE DE602005000044T patent/DE602005000044T2/de active Active
- 2005-02-18 KR KR1020050013490A patent/KR101110584B1/ko not_active IP Right Cessation
- 2005-02-24 CN CNB2005100509489A patent/CN100527693C/zh not_active Expired - Fee Related
- 2005-02-25 JP JP2005049886A patent/JP4602791B2/ja not_active Expired - Fee Related
- 2005-03-31 US US11/095,147 patent/US20050204053A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
CN100527693C (zh) | 2009-08-12 |
US20050185662A1 (en) | 2005-08-25 |
EP1569113A1 (en) | 2005-08-31 |
EP1569113B1 (en) | 2006-07-19 |
KR101110584B1 (ko) | 2012-02-15 |
CN1661979A (zh) | 2005-08-31 |
JP2005244985A (ja) | 2005-09-08 |
US20050204053A1 (en) | 2005-09-15 |
US7474656B2 (en) | 2009-01-06 |
DE602005000044T2 (de) | 2007-07-19 |
DE602005000044D1 (de) | 2006-08-31 |
JP4602791B2 (ja) | 2010-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Amir et al. | An active service framework and its application to real-time multimedia transcoding | |
JP3944168B2 (ja) | ネットワーク環境におけるピアツーピア通信のための方法およびシステム | |
US7583682B2 (en) | Method for improving peer to peer network communication | |
US7764683B2 (en) | Reliable multicast operating system (OS) provisioning | |
US20150003296A1 (en) | System and method for providing p2p based reconfigurable computing and structured data distribution | |
US9819548B2 (en) | Shared information distribution in a computer network | |
US20040210665A1 (en) | Protocol testing system and protocol testing method | |
US20080059651A1 (en) | Distribution of XML documents/messages to XML appliances/routers | |
US6389550B1 (en) | High availability protocol computing and method | |
CN102763359B (zh) | 多播网络中流控制传输协议的通信量优化器及方法 | |
KR101110584B1 (ko) | 자기-복제 코드를 사용한 통신 네트워크의 노드들로 데이터를 전송 | |
AU6547599A (en) | Method and apparatus for hierarchical software distribution packages | |
Lin et al. | WEBridge: west–east bridge for distributed heterogeneous SDN NOSes peering | |
JP3996922B2 (ja) | 異なる通信プロトコルが併存するネットワークにおけるネットワーク接続手段の一元管理システム及び方法 | |
US6883169B1 (en) | Apparatus for managing the installation of software across a network | |
US20050237949A1 (en) | Dynamic connection structure for file transfer | |
JP2007272540A (ja) | データ配信方法及びデータ配信システム | |
US10104202B2 (en) | Collectively loading programs in a multiple program multiple data environment | |
EP1365546B1 (en) | Programmable network node for performing multiple processes | |
Alomari et al. | Towards optimal synchronization in NFV‐based environments | |
Demoulin et al. | TMC: Pay-as-you-go distributed communication | |
EP3224997A1 (en) | Communication path switching apparatus, method for controlling communication path switching apparatus, and computer program product | |
CN117155852B (zh) | 广播报文的路由方法、装置、计算机设备及存储介质 | |
US7181499B1 (en) | Method, system and storage medium for simultaneous software image distribution to multiple optical network elements | |
KR102288605B1 (ko) | 인라인 네트워크 토폴로지에서 ip 네트워크 투명성을 갖는 프록시 장비를 위한 자동 경로 학습 방법 및 그 시스템 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20150109 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20160108 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20170113 Year of fee payment: 6 |
|
LAPS | Lapse due to unpaid annual fee |