KR101110584B1 - 자기-복제 코드를 사용한 통신 네트워크의 노드들로 데이터를 전송 - Google Patents

자기-복제 코드를 사용한 통신 네트워크의 노드들로 데이터를 전송 Download PDF

Info

Publication number
KR101110584B1
KR101110584B1 KR1020050013490A KR20050013490A KR101110584B1 KR 101110584 B1 KR101110584 B1 KR 101110584B1 KR 1020050013490 A KR1020050013490 A KR 1020050013490A KR 20050013490 A KR20050013490 A KR 20050013490A KR 101110584 B1 KR101110584 B1 KR 101110584B1
Authority
KR
South Korea
Prior art keywords
node
code
data
communication channel
nodes
Prior art date
Application number
KR1020050013490A
Other languages
English (en)
Other versions
KR20060042975A (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 KR20060042975A publication Critical patent/KR20060042975A/ko
Application granted granted Critical
Publication of KR101110584B1 publication Critical patent/KR101110584B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • EFIXED CONSTRUCTIONS
    • E01CONSTRUCTION OF ROADS, RAILWAYS, OR BRIDGES
    • E01DCONSTRUCTION OF BRIDGES, ELEVATED ROADWAYS OR VIADUCTS; ASSEMBLY OF BRIDGES
    • E01D19/00Structural or constructional details of bridges
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • EFIXED CONSTRUCTIONS
    • E01CONSTRUCTION OF ROADS, RAILWAYS, OR BRIDGES
    • E01DCONSTRUCTION OF BRIDGES, ELEVATED ROADWAYS OR VIADUCTS; ASSEMBLY OF BRIDGES
    • E01D22/00Methods or apparatus for repairing or strengthening existing bridges ; Methods or apparatus for dismantling bridges
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer 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

자기-복제 코드를 사용한 통신 네트워크의 노드들로 데이터를 전송{Data transfer of a communication network using self-replication code}
도 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), 또는 또 다른 네트워크를 가질 수 있다. 네트워크 인력(network personnel)은 정보, 파일들, 소프트웨어, 명령어들 등과 같은 데이터를 네트워크상에 있는 다수의 다바이스들로 전송하기를 원할 수 있다. 대규모 네트워크들 상에서, 데이터를 각각의 디바이스에 개별적으로 전송하는 것은 네트워크 인력에게 있어 비효율적일 수 있다. 네트워크 인력이 데이터를 동시에 다수의 디바이스들로 전송하려고 시도하는 경우, 특히 데이터의 크기가 큰 경우, 네트워크 대역폭은 빨리 소모될 수 있을 것이다. 따라서, 네트워크 인력은 네트워크의 대역폭을 희생시키지 않고 효율을 증가시키기 위해 네트워크상의 다수의 디바이스들로 데이터를 전송하는 방법들을 끊임없이 찾고 있다.
네트워크상의 다수의 디바이스들로 데이터를 전송하기 위한 하나의 방법은 네트워크를 통해 데이터를 멀티캐스팅하는 것이다. "멀티캐스트(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에 도시되지 않은 다른 노드들, 컴포넌트들, 디바이스들, 또는 시스템들을 포함할 수 있다.
도 2a는 본 발명의 예시적인 실시예에서의 통신 네트워크(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)를 실행할 수 있다.
유리하게도, 네트워크 인력은 네트워크의 대역폭을 희생시키지 않고 데이터를 통신 네트워크(100)상의 다수의 노드들(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)로 구성되어 있다. 스웜은 데이터 스트림의 전송, 어떤 노드를 포함할지 등을 제어할 수 있는 발신 프로세스에 의해 스폰될 수 있다.
각각의 스웜렛은 스웜렛 코드, 페이로드 코드, 및 데이터 스트림을 포함한다. 스웜렛 코드는 노드들상의 새로운 스웜렛들을 스폰하고 노드들 사이의 데이터 스트림의 전송을 유지하기 위해 사용되는 코드를 포함한다. 페이로드 코드는 노드상에서 국부적으로 실행되는 코드를 포함한다. 데이터 스트림은 통신 네트워크(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)로 전송한다. 첫 번째로, 노드들(402-409)은 데이터 스트림을 수신하기 위해 임의의 특별한 코드를 초기에 가질 필요는 없다. 스웜렛들은 요구된 코드를 제공하기 위해 노드들(402-409)상에서 그 자신들을 복제할 것이다. 이 후, 노드들은 데이터 스트림을 보다 효율적으로 전송하기 위해 코드를 병렬로 실행할 수 있다. 두 번째로, 네트워크 인력은 전송 상태에 대한 피드백을 가질 수 있다. 각각의 스웜렛은 노드들 간에 통신 채널을 유지하며, 상태 정보를 발신 프로세스(501)에 역으로 제공한다. 따라서, 네트워크 인력은 데이터 스트림 전송의 상태를 결정하기 위해 상태 정보를 볼 수 있다. 세 번째로, LAN(410)의 대역폭은 데이터 스트림 전송에 의해 절충될 수 없을 것이다. 노드들이 데이터 스트림의 하나의 사본을 한 블록씩 노드에서 노드로 마지막 노드에 이를 때까지 전달하기 때문에, 데이터 스트림의 하나의 사본만이 선형의 토폴로지로 LAN(410)상에 한 번에 제공되어야 한다.
이제, 각각의 노드(402-409)가 이전 전송된 소프트웨어의 사본을 포함한다고 가정하면, 네트워크 인력은 노드들(402-409) 상에 소프트웨어를 원격으로 인스톨하기를 또한 원할 수 있다. 네트워크 인력은 소프트웨어를 인스톨하기 위한 명령들을 포함하는 데이터 스트림을 전송함으로써, 원격 인스톨을 수행하기 위해 또 다른 스웜을 사용할 수 있다. 데이터 스트림은 특히, 소프트웨어 그 자신을 비교하면 대규모가 아닐 것이다. 따라서, 통신 네트워크(400)에서 보다 작은 데이터 스트림들을 전송하기 위해, 선형 스웜은 전파 지연이 매우 길기 때문에 가장 효율적인 토폴로지가 되지 않을 수 있다. 트리 스웜은 보다 작은 데이터 스트림들을 전송하기 위해 보다 나은 토폴로지가 될 수 있다.
도 6은 본 발명의 예시적인 실시예에서의 트리 스웜 토폴로지를 도시한다. 트리 스웜 토폴로지를 생성하기 위해, 다음이 발생한다. 노드(401)에서의 발신 프로세스(501)는 스웜렛(602)을 스폰한다(s-let으로서 도 6 참조). 스웜렛(602)은 스웜렛(602)이 두 개의 노드들(401-402)을 스패닝(span)하도록 노드(402)와 통신 채널을 수립한다. 스웜렛(602)은 네트워킹 프로세스, 메인 스웜렛 프로세스, 라우팅 프로세스, 및 페이로드 프로세스를 포함할 수 있으며, 이는 간결함을 위해본 실시예에서 설명되지 않았다.
발신 프로세스(501)에 의해 제공된 리스트를 근거로, 스웜렛(602)은 스웜렛들(603 및 604)을 스폰한다. 노드(402)에서 동작하는 스웜렛(603)은, 스웜렛(603)이 두 개의 노드들(402-403)을 스패닝하도록 노드(403)와의 통신 채널을 수립한다. 스웜렛(603)은 스웜렛들(605-606)을 스폰한다. 노드(403)에서 동작하는 스웜렛(605)은, 스웜렛(605)이 두 개의 노드들(403 및 405)을 스패닝하도록 노드(405)와의 통신 채널을 수립한다. 노드(403)에서 작동하는 스웜렛(606)은, 스웜렛(606)이 두 개의 노드들(403 및 406)을 스패닝하도록 노드(406)와의 통신 채널을 수립한다. 노드(402)에서 작동하는 스웜렛(604)은 스웜렛들(607-608)을 스폰한다. 노드(404)에서 작동하는 스웜렛(607)은, 스웜렛(607)이 두 개의 노드들(404 및 407)을 스패닝하도록 노드(407)와 통신 채널을 수립한다. 노드(404)에서 동작하는 스웜렛(608)은, 스웜렛(608)이 두 개의 노드들(404 및 408)을 스패닝하도록 노드(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)

  1. 통신 네트워크(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)를 포함하는, 통신 네트워크 동작 방법.
  2. 제 1 항에 있어서,
    제 4 노드(104)와의 상기 통신 채널을 수립하고, 제 4 코드를 생성하기 위해 상기 제 2 코드를 복제하고, 상기 제 4 코드를 상기 통신 채널을 통해 상기 제 4 노드에 제공하기 위해 상기 제 2 노드(102)에서 상기 제 2 코드를 실행하는 단계 (218,220); 및
    상기 통신 채널을 통해 상기 제 2 노드로부터의 상기 데이터를 상기 제 4 노드에서 수신하고(222), 상기 데이터를 다루기 위해 상기 제 4 노드에서 상기 제 4 코드를 실행하는 단계(224)를 더 포함하는, 통신 네트워크 동작 방법.
  3. 제 1 항에 있어서,
    상기 데이터를 다루기 위해 상기 제 2 노드(102)에서 상기 제 2 코드를 실행하는 단계는,
    상기 제 1 노드로부터 수신된 상기 데이터를 복제하고, 상기 복제된 데이터를 상기 제 2 노드에서 페이로드 프로세스로 라우팅하기 위해 상기 제 2 노드에서 상기 제 2 코드를 실행하는 단계; 및
    출력 데이터를 생성하기 위해 상기 제 2 노드 상에서 상기 복제된 데이터를 국부적으로 처리하도록 상기 제 2 노드에서 상기 페이로드 프로세스를 실행하는 단계를 더 포함하는, 통신 네트워크 동작 방법.
  4. 제 3 항에 있어서,
    상기 제 2 노드로부터 상기 출력 데이터 및 상태 정보를 멀티플렉싱하고, 상기 출력 데이터 및 상기 상태 정보를 상기 통신 채널을 통해 상기 제 1 노드(101)로 전송하기 위해 상기 제 2 노드(102)에서 상기 제 2 코드를 실행하는 단계를 더 포함하는, 통신 네트워크 동작 방법.
  5. 제 1 항에 있어서,
    상기 통신 채널을 통해 상기 제 1 노드(101)로부터의 제어 정보를 상기 제 2 노드(102)에서 수신하는 단계;
    상기 데이터를 다루기 위해 상기 제 2 노드에서 상기 제어 정보를 사용하는 단계; 및
    상기 제 2 노드로부터의 상기 데이터 및 상기 제어 정보를 상기 통신 채널을 통해 상기 제 3 노드(103)로 라우팅하는 단계를 더 포함하는, 통신 네트워크 동작 방법.
  6. 노드들(101-104) 간에 데이터 전송을 제공하기 위한 통신 네트워크 시스템(100)으로서,
    제 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 코드를 실행하는 것을 특징으로 하는, 통신 네트워크 시스템.
  7. 제 6 항에 있어서,
    제 4 노드(104)를 더 포함하며,
    상기 제 2 노드(102)는, 상기 제 2 코드의 실행에 응답하여, 상기 제 4 노드와의 상기 통신 채널을 수립하고, 제 4 코드를 생성하기 위해 상기 제 2 코드를 복제하고, 상기 제 4 코드를 상기 통신 채널을 통해 상기 제 4 노드에 제공하고;
    상기 제 4 노드는 상기 통신 채널을 통해 상기 제 2 노드로부터 상기 데이터를 수신하고, 상기 데이터를 다루기 위해 상기 제 4 코드를 실행하는, 통신 네트워크 시스템.
  8. 제 6 항에 있어서,
    상기 제 2 노드(102)는,
    상기 통신 채널을 통해 상기 제 1 노드(101)로부터 상기 데이터를 수신하고, 상기 데이터를 복제하고, 상기 복제된 데이터를 상기 제 2 노드에서 페이로드 프로세스로 라우팅하고;
    출력 데이터를 생성하기 위해 상기 복제된 데이터를 국부적으로 처리하도록 상기 페이로드 프로세스를 실행하는, 통신 네트워크 시스템.
  9. 제 8 항에 있어서,
    상기 제 2 노드(102)는, 상기 제 2 코드의 실행에 응답하여, 상기 제 2 노드로부터 상기 출력 데이터 및 상태 정보를 멀티플렉싱하고, 상기 출력 데이터 및 상태 정보를 상기 통신 채널을 통해 상기 제 1 노드(101)로 전송하는, 통신 네트워크 시스템.
  10. 제 6 항에 있어서,
    상기 제 2 노드(102)는 상기 통신 채널을 통해 상기 제 1 노드(101)로부터 제어 정보를 수신하고, 상기 데이터를 다루기 위해 상기 제어 정보를 사용하며, 상기 데이터 및 상기 제어 정보를 상기 통신 채널을 통해 상기 제 3 노드(103)로 라우팅하는, 통신 네트워크 시스템.
KR1020050013490A 2004-02-25 2005-02-18 자기-복제 코드를 사용한 통신 네트워크의 노드들로 데이터를 전송 KR101110584B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/786,911 2004-02-25
US10/786,911 US7474656B2 (en) 2004-02-25 2004-02-25 Data transfer to nodes of a communication network using self-replicating code

Publications (2)

Publication Number Publication Date
KR20060042975A KR20060042975A (ko) 2006-05-15
KR101110584B1 true 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)

* Cited by examiner, † Cited by third party
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

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10171660A (ja) 1996-12-13 1998-06-26 Nec Corp データ通信装置
JP2002164938A (ja) 2000-09-12 2002-06-07 Nippon Telegr & Teleph Corp <Ntt> 分散型サービス不能攻撃の防止方法および装置ならびにそのコンピュータプログラム
KR20030072329A (ko) * 2000-10-04 2003-09-13 인텔 코오퍼레이션 피어-투-피어 소프트웨어 배포 시스템
US6782398B1 (en) 2000-06-14 2004-08-24 Microsoft Corporation Method for executing commands on multiple computers of a network

Family Cites Families (5)

* Cited by examiner, † Cited by third party
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
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
DE60300657T2 (de) 2003-08-04 2006-02-02 Alcatel Eine Methode, ein Kommunikationsnetz und ein Softwareprodukt zur Verteilung von Softwarepaketen oder Softwareupdates

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
JP2002164938A (ja) 2000-09-12 2002-06-07 Nippon Telegr & Teleph Corp <Ntt> 分散型サービス不能攻撃の防止方法および装置ならびにそのコンピュータプログラム
KR20030072329A (ko) * 2000-10-04 2003-09-13 인텔 코오퍼레이션 피어-투-피어 소프트웨어 배포 시스템

Also Published As

Publication number Publication date
US20050204053A1 (en) 2005-09-15
US20050185662A1 (en) 2005-08-25
EP1569113A1 (en) 2005-08-31
EP1569113B1 (en) 2006-07-19
JP2005244985A (ja) 2005-09-08
JP4602791B2 (ja) 2010-12-22
DE602005000044D1 (de) 2006-08-31
KR20060042975A (ko) 2006-05-15
CN1661979A (zh) 2005-08-31
DE602005000044T2 (de) 2007-07-19
US7474656B2 (en) 2009-01-06
CN100527693C (zh) 2009-08-12

Similar Documents

Publication Publication Date Title
US7583682B2 (en) Method for improving peer to peer network communication
US7764683B2 (en) Reliable multicast operating system (OS) provisioning
US8279777B2 (en) Method for secure reliable point to multi-point bi-directional communications
JP2005228313A (ja) ブロードキャスティング機能を備えた簡易なファイル伝送システム及びその方法
US9819548B2 (en) Shared information distribution in a computer network
WO2013102253A1 (en) System and method for providing p2p based reconfigurable computing and structured data distribution
JP5765623B2 (ja) ネットワークシステム
US20080059651A1 (en) Distribution of XML documents/messages to XML appliances/routers
US6697872B1 (en) Distributed packet processing using encapsulation and decapsulation chains
US6389550B1 (en) High availability protocol computing and method
KR101110584B1 (ko) 자기-복제 코드를 사용한 통신 네트워크의 노드들로 데이터를 전송
US20050188107A1 (en) Redundant pipelined file transfer
AU6547599A (en) Method and apparatus for hierarchical software distribution packages
CN105099937A (zh) 一种pmtu的确定方法和设备
JP3996922B2 (ja) 異なる通信プロトコルが併存するネットワークにおけるネットワーク接続手段の一元管理システム及び方法
Alomari et al. On minimizing synchronization cost in nfv-based environments
CA2595438C (en) Method for improving peer to peer network communication
US20050237949A1 (en) Dynamic connection structure for file transfer
JP3973533B2 (ja) 多数の処理を実行するプログラム可能ネットワークノード構造
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
KR100914308B1 (ko) 티씨피 처리 시스템 및 그 제어방법
KR102288605B1 (ko) 인라인 네트워크 토폴로지에서 ip 네트워크 투명성을 갖는 프록시 장비를 위한 자동 경로 학습 방법 및 그 시스템
Pierce-Mayer et al. DTN-O-Tron: a system for the user-guided semi-autonomous generation and distribution of CGR contact plans
Demoulin et al. TMC: Tunable Multicast Communication

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