KR102294684B1 - 네트워크에서 소켓의 그룹에 대한 조정된 흐름 제어를 제공하기 위한 방법 및 네트워크 노드 - Google Patents

네트워크에서 소켓의 그룹에 대한 조정된 흐름 제어를 제공하기 위한 방법 및 네트워크 노드 Download PDF

Info

Publication number
KR102294684B1
KR102294684B1 KR1020197038134A KR20197038134A KR102294684B1 KR 102294684 B1 KR102294684 B1 KR 102294684B1 KR 1020197038134 A KR1020197038134 A KR 1020197038134A KR 20197038134 A KR20197038134 A KR 20197038134A KR 102294684 B1 KR102294684 B1 KR 102294684B1
Authority
KR
South Korea
Prior art keywords
socket
message
transmitter
node
group
Prior art date
Application number
KR1020197038134A
Other languages
English (en)
Other versions
KR20200011967A (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 KR20200011967A publication Critical patent/KR20200011967A/ko
Application granted granted Critical
Publication of KR102294684B1 publication Critical patent/KR102294684B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/185Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with management of multicast group membership
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/16Multipoint routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/27Evaluation or update of window size, e.g. using information derived from acknowledged [ACK] packets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/36Flow control; Congestion control by determining packet size, e.g. maximum transfer unit [MTU]
    • H04L47/365Dynamic adaptation of the packet size
    • H04L65/4076
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/611Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for multicast or broadcast

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

소켓 그룹은 통신 네트워크에서 조정된 흐름 제어를 수행한다. 상기 소켓 그룹의 수신기 소켓은 송신기 소켓이 소켓 그룹에 조인될 때 송신기 소켓에 메시지 사이즈 제한으로서 최소 윈도우를 통지한다. 송신기 소켓으로부터 메시지를 수신할 때, 상기 수신기 소켓은 메시지 사이즈 제한을 증가시키기 위해 송신기 소켓에 최대 윈도우를 통지한다. 상기 최소 윈도우는 최대 윈도우의 일부이다.

Description

네트워크에서 소켓의 그룹에 대한 조정된 흐름 제어를 제공하기 위한 방법 및 네트워크 노드
본 개시의 실시예들은 일반적으로 네트워크 통신을 위한 시스템 및 방법에 관한 것이다.
투명 상호 통신(TIPC; Transparent Inter-Process Communication) 프로토콜은 클러스터 컴퓨터 환경의 애플리케이션들이 클러스터 내의 이들의 위치에 관계없이 다른 애플리케이션들과 빠르게 그리고 안정적으로 통신할 수 있게 한다. TIPC 네트워크는 개별 처리 요소 또는 노드들로 구성된다. TIPC 애플리케이션은 일반적으로 포트로 알려진 통신 엔드포인트(endpoint)들 간 메시지로 알려진 데이터 유닛을 교환함으로써 서로 통신한다. 애플리케이션의 관점에서, 메시지는 1 내지 66,000 바이트 길이의 바이트 문자열이며, 그 내부 구조는 애플리케이션에 의해 결정된다. 포트는 연결-지향 방식 또는 비연결 방식으로 메시지를 송신 및 수신할 수 있는 엔티티(entity)이다.
연결-지향 메시징은 포트가 네트워크의 다른 곳에서 피어 포트(peer port)에 대한 연결을 구축한 다음, 그 피어와 메시지를 교환할 수 있게 한다. 핸드셰이크 메커니즘을 사용하여 연결이 구축될 수 있다; 일단 연결이 구축되면, 포트들 중 하나에 의해 종료되거나 포트들 간 통신 경로가 끊길 때까지 활성 상태를 유지한다. 비연결 메시징(일명, 데이터그램)은 포트가 네트워크의 다른 곳에서 하나 이상의 포트와 메시지를 교환할 수 있게 한다. 메시지가 송신될 때 지정된 목적지 주소에 따라, 주어진 메시지가 단일 포트(유니캐스트) 또는 포트 집합(멀티캐스트 또는 브로드캐스트)으로 송신될 수 있다.
그룹 통신 환경에서, 포트는 하나 이상의 송신기로부터 메시지를 수신할 수 있고, 하나 이상의 수신기에게 메시지를 송신할 수 있다. 일부의 시나리오에서, 비연결 통신에 의해 전송된 메시지는, 예컨대 다수의 송신기가 동시에 동일한 수신기에게 메시지를 송신할 때, 목적지에서 큐 오버플로우(queue overflow)로 인해 드롭(drop)될 수 있다. 오버플로우를 방지하기 위해 단순히 수신 큐 사이즈를 증가시키면 수신기에서 메모리 고갈의 위험성이 있고, 그룹 사이즈가 한계 이상으로 초과하면 그와 같은 접근 방식이 확장되지 않을 것이다. 서로 다른 메시지 타입 간 효과적인 시퀀스 제어의 부족으로 인해 일부 메시지가 잘못 수신될 수 있다. 따라서, 이론적으로 그룹 통신에 안전한 솔루션이 필요하나, 정상적인 상황에서는 처리량을 크게 제한하지 않는다.
본 발명은 네트워크에서 소켓의 그룹에 대한 조정된 흐름 제어를 제공하기 위한 방법 및 네트워크 노드를 제공하기 위한 것이다.
일 실시예에 있어서, 소켓 그룹에 대한 흐름 제어를 제공하기 위해 네트워크에서 소켓 그룹 내의 수신기 소켓을 위한 방법이 제공된다. 상기 방법은: 송신기 소켓이 소켓 그룹에 조인(join)될 때 송신기 소켓에 메시지 사이즈 제한으로서 최소 윈도우를 통지하는 단계; 상기 송신기 소켓으로부터 메시지를 수신하는 단계; 및 상기 메시지를 수신할 때, 상기 메시지 사이즈 제한을 증가시키기 위해 상기 송신기 소켓에 최대 윈도우를 통지하는 단계를 포함하며, 상기 최소 윈도우는 상기 최대 윈도우의 일부이다.
일 실시예에 있어서, 소켓 그룹에 대한 시퀀스 제어를 제공하기 위해 네트워크에서 소켓 그룹 내의 송신기 소켓을 위한 방법이 제공된다. 상기 방법은: 유니캐스트에 의해 제1메시지를 송신기 소켓으로부터 피어 멤버 소켓으로 송신하는 단계; 상기 제1메시지 바로 다음에 오는 상기 송신기 소켓으로부터의 제2메시지가 브로드캐스트에 의해 송신되는 것을 검출하는 단계; 및 복제된 유니캐스트에 의해 상기 제2메시지를 송신하는 단계를 포함하며, 상기 제2메시지는 모든 목적지 노드에 대해 복제되고, 각각의 복제된 제2메시지는 유니캐스트에 의해 송신된다.
일 실시예에 있어서, 소켓 그룹에 수신기 소켓을 포함하는 노드가 네트워크에 제공된다. 상기 노드는 소켓 그룹 내의 소켓들과 통신하기 위해 흐름 제어를 수행하도록 구성된다. 상기 노드는 상기 노드의 수신기 소켓이 다음의 동작들을 수행하게 하도록 구성된 회로를 포함하며: 상기 동작들은 송신기 소켓이 소켓 그룹에 조인될 때 송신기 소켓에 메시지 사이즈 제한으로서 최소 윈도우를 통지하는 동작; 송신기 소켓으로부터 메시지를 수신하는 동작; 및 상기 메시지를 수신할 때, 상기 메시지 사이즈 제한을 증가시키기 위해 상기 송신기 소켓에 최대 윈도우를 통지하는 동작을 포함하고, 상기 최소 윈도우는 상기 최대 윈도우의 일부이다.
일 실시예에 있어서, 소켓 그룹에 송신기 소켓을 포함하는 노드가 네트워크에 제공된다. 상기 노드는 소켓 그룹 내의 소켓들과 통신하기 위해 시퀀스 제어를 수행하도록 구성된다. 상기 노드는 상기 노드의 송신기 소켓이 다음의 동작들을 수행하게 하도록 구성된 회로를 포함하며: 상기 동작들은 유니캐스트에 의해 제1메시지를 피어 멤버 소켓으로 송신하는 동작; 상기 제1메시지 바로 다음에 오는 상기 송신기 소켓으로부터의 제2메시지가 브로드캐스트에 의해 송신되는 것을 검출하는 동작; 및 복제된 유니캐스트에 의해 상기 제2메시지를 송신하는 동작을 포함하며, 상기 제2메시지는 모든 목적지 노드에 대해 복제되고, 각각의 복제된 제2메시지는 유니캐스트에 의해 송신된다.
일 실시예에 있어서, 소켓 그룹에 수신기 소켓을 포함하는 노드가 네트워크에 제공된다. 상기 노드는 소켓 그룹 내의 소켓들과 통신하기 위해 흐름 제어를 수행하도록 구성된다. 상기 노드는 송신기 소켓이 소켓 그룹에 조인될 때 송신기 소켓에 메시지 사이즈 제한으로서 최소 윈도우를 통지하도록 구성된 흐름 제어 모듈; 및 송신기 소켓으로부터 메시지를 수신하도록 구성된 입/출력 모듈을 포함한다. 흐름 제어 모듈은, 상기 메시지를 수신할 때, 상기 메시지 사이즈 제한을 증가시키기 위해 상기 송신기 소켓에 최대 윈도우를 통지하도록 더 구성되며, 상기 최소 윈도우는 최대 윈도우의 일부이다.
일 실시예에 있어서, 소켓 그룹에 송신기 소켓을 포함하는 노드가 네트워크 노드에 제공된다. 상기 노드는 소켓 그룹 내의 소켓들과 통신하기 위해 시퀀스 제어를 수행하도록 구성된다. 상기 노드는 유니캐스트에 의해 제1메시지를 송신기 소켓으로부터 피어 멤버 소켓으로 송신하도록 구성된 입/출력 모듈; 및 상기 유니캐스트에 의해 송신기 소켓으로부터 송신된 제1메시지가 바로 앞에 오는 제2메시지가 브로드캐스트에 의해 송신되는 것을 검출하도록 구성된 시퀀스 제어 모듈을 포함한다. 상기 입/출력 모듈은 복제된 유니캐스트에 의해 상기 제2메시지를 송신하도록 더 구성되고, 상기 제2메시지는 모든 목적지 노드에 대해 복제되고, 각각의 복제된 제2메시지는 유니캐스트에 의해 송신된다.
일 실시예에 있어서, 소켓 그룹에 대한 흐름 제어를 제공하기 위해 네트워크에서 소켓 그룹 내의 수신기 소켓을 위한 방법이 제공된다. 상기 방법은 노드 인스턴스(node instance)를 실행하기 위한 처리 회로 및 메모리를 제공하는 클라우드 컴퓨팅 환경에서 노드 인스턴스의 인스턴스화(instantiation)를 개시하는 단계를 포함한다. 상기 노드 인스턴스는: 송신기 소켓이 소켓 그룹에 조인될 때 송신기 소켓에 메시지 사이즈 제한으로서 최소 윈도우를 통지하고; 송신기 소켓으로부터 메시지를 수신하고; 상기 메시지를 수신할 때, 상기 메시지 사이즈 제한을 증가시키기 위해 상기 송신기 소켓에 최대 윈도우를 통지하도록 동작하며, 상기 최소 윈도우는 상기 최대 윈도우의 일부이다.
일 실시예에 있어서, 소켓 그룹에 대한 시퀀스 제어를 제공하기 위해 네트워크에서 소켓 그룹 내의 송신기 소켓을 위한 방법이 제공된다. 상기 방법은 노드 인스턴스를 실행하기 위한 처리 회로 및 메모리를 제공하는 클라우드 컴퓨팅 환경에서 노드 인스턴스의 인스턴스화를 개시하는 단계를 포함한다. 상기 노드 인스턴스는: 유니캐스트에 의해 제1메시지를 송신기 소켓으로부터 피어 멤버 소켓으로 송신하고; 상기 제1메시지 바로 다음에 오는 상기 송신기 소켓으로부터의 제2메시지가 브로드캐스트에 의해 송신되는 것을 검출하고; 복제된 유니캐스트에 의해 상기 제2메시지를 송신하도록 동작되며, 상기 제2메시지는 모든 목적지 노드에 대해 복제되고, 각각의 복제된 제2메시지는 유니캐스트에 의해 송신된다.
다른 형태 및 특징들은 첨부 도면들과 관련하여 이하의 특정 실시예들의 설명을 검토할 때 당업자에게 명백해질 것이다.
본 발명에 따르면, 네트워크에서 소켓의 그룹에 대한 조정된 흐름 제어를 제공하기 위한 방법 및 네트워크 노드를 제공할 수 있다.
이하, 첨부된 도면을 참조하여 실시예들을 단지 예로서 설명할 것이다.
도 1은 일 실시예에 따른 소켓 그룹에 조인되는 소켓의 예를 나타낸다.
도 2a, 2b, 2c 및 2d는 일 실시예에 따른 송신기 소켓과 그 피어 멤버 소켓들 간 서로 다른 통신 패턴을 나타낸다.
도 3은 일 실시예에 따른 수신기 소켓에 의해 유지된 유한 상태 머신을 나타낸다.
도 4는 일 실시예에 따른 멀티포인트-투-포인트(multipoint-to-point) 흐름 제어도를 나타낸다.
도 5는 다른 실시예에 따른 멀티포인트-투-포인트 흐름 제어도를 나타낸다.
도 6은 일 실시예에 따른 유니캐스트에 대한 포인트-투-멀티포인트 흐름 제어도를 나타낸다.
도 7은 일 실시예에 따른 멀티캐스트에 대한 포인트-투-멀티포인트 흐름 제어도를 나타낸다.
도 8a 및 8b는 일부의 실시예에 따른 그룹 브로드캐스트를 송신하기 위한 2개의 대안을 나타낸다.
도 9는 일 실시예에 따른 유니캐스트 바로 다음에 브로드캐스트를 송신하는 송신기 소켓에 대한 시퀀스 제어 메커니즘을 나타낸다.
도 10은 일 실시예에 따른 브로드캐스트 바로 다음에 유니캐스트를 송신하는 송신기 소켓에 대한 다른 시퀀스 제어 메커니즘을 나타낸다.
도 11은 일 실시예에 따른 흐름 제어 방법을 나타내는 흐름도이다.
도 12는 일 실시예에 따른 시퀀스 제어 방법을 나타내는 흐름도이다.
도 13은 일 실시예에 따른 네트워크 노드의 블록도이다.
도 14a는 일 실시예에 따른 흐름 제어를 수행하는 네트워크 노드의 블록도이다.
도 14b는 일 실시예에 따른 시퀀스 제어를 수행하는 네트워크 노드의 블록도이다.
도 15는 일 실시예에 따른 클라우드 컴퓨팅 환경의 아키텍처 개요이다.
수반된 도면들에 따라 번호가 매겨진 특정 요소들이 이하 참조될 수 있다. 아래의 논의는 본질적으로 예시일 뿐이며, 아래에 설명된 실시의 세부 사항에 의해 제한되는 것으로 간주되어서는 안되며, 당업자가 이해할 수 있는 바와 같이, 요소들을 동등한 기능적 요소로 대체함으로써 변형될 수 있다.
소켓 그룹 간의 무손실 통신을 위한 시스템, 장치 및 방법이 본원에 제공된다. 본원에서 용어 "무손실"은 모든 송신 메시지가 정확히 하나의 카피(즉, 카디널리티(cardinality) 보장) 및 송신된 순서(즉, 순차 보장)로 목적지에 도착한다는 것을 의미한다. 본원에서 설명되는 통신 메커니즘은 그룹 통신에서 효율적이고 강력한 흐름 제어 및 시퀀스 제어를 가능하게 함으로써 TIPC 및 전송 제어 프로토콜(TCP)과 같은 기존의 통신 프로토콜과 비교하여 개선을 제공한다.
본원에 설명될 통신 메커니즘은 메모리 및 리소스에 있어 효율적이다. 일 실시예에 있어서, 각각의 소켓은 처음에 그룹의 각각의 피어 멤버에 대한 수신 큐에 최소 윈도우(Xmin)를 예약한다. 해당 피어 멤버가 액티브되면, 해당 피어 멤버가 소켓으로 메시지를 송신하기 시작할 때 윈도우는 피어 멤버에 대한 최대 윈도우(Xmax)로 증가한다. 일 실시예에 있어서, Xmin은 기본 통신 프로토콜(예컨대, TIPC에서 66 Kbyte)에 의해 제한된 단일 메시지의 최대 사이즈로 설정될 수 있으며, Xmax는 Xmin의 배수일 수 있으며(여기서 Xmax >> Xmin); 예컨대, Xmax는 Xmin의 10배로 설정될 수 있다. 대조적으로, 기존의 TIPC 및 TCP에 따르면, 소켓은 단지 1×Xmax만을 예약하고, 각각의 소켓은 연결의 다른 끝에 하나의 피어만을 갖는다; 그러나 각각의 멤버는 피어마다 하나씩 N개의 소켓을 생성해야 한다. 따라서, 기존의 TIPC 및 TCP를 사용하면 각각의 멤버는 N개의 피어와 통신하기 위해 N×Xmax를 예약해야 한다.
본원에 제공된 흐름 제어에 따르면, 하나의 단일 멤버 소켓은 모든 피어에 대해 윈도우를 예약하며, 각 윈도우의 사이즈는 수요 및 이용 가능성에 기초하여 결정되며; 따라서 소켓은 예약된 스페이스를 제한하기 위해 피어에 대한 통지를 조정할 수 있다. 특정 시점의 액티브 피어 멤버의 수가 통상적으로 총 피어 멤버의 수보다 훨씬 적으므로, 각 소켓의 평균 수신 큐 사이즈를 크게 줄일 수 있다. 통지된 윈도우의 관리는, 다수의 피어 멤버가 동시에 수신 큐에 메시지를 전송하더라도, 감소된-사이즈의 수신 큐 오버플로를 방지하기 위한 흐름 제어 메커니즘의 일부이다.
또한, 메시지가 상이한 메시지 타입의 시퀀스로 송신될 때 그룹으로 전송된 메시지의 순차적인 전달을 보장하기 위해 시퀀스 제어 메커니즘이 제공된다(예컨대, 유니캐스트와 브로드캐스트의 조합). 기존의 TIPC에는 브로드캐스트 메시지가 손실되거나 잘못 수신되고, 그리고 유니캐스트 메시지가 손실되거나 잘못 수신되지 않도록하는 링크 계층 프로토콜의 확장이 포함되어 있다. 그러나, 브로드캐스트 메시지 및 유니캐스트 메시지의 시퀀스가 상호 순차적인 순서로 전송될 수 있다는 보장은 없다. 따라서, 링크 계층에서, 유니캐스트 메시지에 이어서 송신되는 브로드캐스트 메시지는 유니캐스트 메시지 전에 목적지에 도달하기 위해 그 유니캐스트 메시지를 바이패스할 수 있고; 유사하게, 브로드캐스트 메시지에 이어서 송신되는 유니캐스트 메시지는 브로드캐스트 메시지 전에 목적지에 도달하기 위해 그 브로드캐스트 메시지를 바이패스할 수 있다. 본원에서 설명되는 바와 같이, 시퀀스 제어는 브로드캐스트 메시지 및 유니캐스트 메시지의 순차적인 전달을 보장한다.
도 1은 일 실시예에 따른 통신 네트워크에서의 소켓 그룹을 도시한다. 본원에서 사용된 "소켓"은 노드(예컨대, 물리적 호스트)에 상주하는 통신 엔티티이다. 소켓 그룹은 하나 이상의 노드에 상주할 수 있으며, 다수의 노드의 경우, 다수의 노드가 상이한 프로세서 타입을 갖거나 상이한 운영 시스템을 사용할 수 있다. 하나 이상의 소켓이 동일한 노드에 상주할 수 있다. 각각의 소켓은 소켓 식별자로, 예컨대, (노드, 포트)의 형태로 고유하게 식별되며, 여기서 노드는 소켓이 위치되는 노드를 식별하고 포트는 메시지를 송수신하기 위해 노드 상의 통신 엔드포인트를 식별한다. 다수의 소켓이 그룹을 형성할 수 있다; 그룹의 각 소켓을 그룹 멤버, 멤버 소켓 또는 멤버라고 한다. 소켓은 피어 멤버, 즉 동일한 그룹의 다른 소켓과만 메시지를 교환할 수 있다.
소켓들은 통신 프로토콜에 따라 서로 통신한다. 이러한 예에서, 소켓들은 프로토콜 동작을 수행하고 링크 계층과 같은 다른 통신 계층과 협력하는 프로토콜 엔티티(110)를 통해 메시지를 송수신한다. 프로토콜 엔티티(110)는 그룹 멤버쉽을 등록하기 위한 분산 바인딩 테이블(120; Distributed Binding Table)을 유지한다. 일 실시예에서, 그러한 분산 바인딩 테이블(120)은 소켓들을 포함하는 모든 노드에 분산 또는 복제된다. 분산 바인딩 테이블(120)은 그룹의 각 멤버 아이덴티티(ID)와 대응하는 소켓 식별자 간 연관 또는 맵핑을 기록한다. 각각의 멤버 소켓은 하나의 멤버 ID에만 맵핑된다; 동일한 멤버 ID가 둘 이상의 소켓에 맵핑될 수 있다.
그룹 멤버쉽은 새로운 멤버가 그룹에 조인(join)하거나 기존의 멤버가 그룹을 떠날(exit) 때마다 업데이트된다. 소켓은 프로토콜 엔티티(110)에 조인 요청을 송신함으로써 그룹에 조인할 수 있다. 조인 요청은 소켓이 조인하도록 요청한 그룹 ID와 소켓이 맵핑되도록 요청한 멤버 ID를 식별한다. 소켓은 프로토콜 엔티티(110)에 탈퇴 요청(leave request)을 송신함으로써 그룹을 탈퇴하도록 요청할 수 있다. 그러한 탈퇴 요청은 소켓이 탈퇴를 요청한 그룹 ID와 소켓의 연결 해제를 요청하는 멤버 ID를 식별한다. 각각의 멤버 소켓은 멤버쉽 업데이트에 가입할 수 있다. 그러한 가입 멤버 소켓은 새로운 멤버가 그룹에 조인하고 기존의 멤버가 그룹을 탈퇴할 때 프로토콜 엔티티(110)로부터 업데이트를 수신한다. 각각의 멤버쉽 업데이트는 그룹 ID 뿐만 아니라 멤버 ID와 (노드, 포트) 쌍 간의 연결 또는 연결 해제를 식별한다.
도 2a-2d는 그의 피어 멤버들과 통신하기 위해 소켓에 의해 사용될 수 있는 메시지 타입 중 일부를 나타낸다. 일 실시예에 있어서, 메시지 타입은 유니캐스트, 애니캐스트, 멀티캐스트 및 브로드캐스트를 포함한다. 도 2a-2d의 각각의 원은 소켓을 나타내고, 소켓 상의 숫자는 해당 소켓의 멤버 ID를 나타낸다. 도 2a는 송신기 소켓이 수신기 소켓을 고유하게 식별하는 소켓 식별자로 식별된 수신자에게 메시지를 송신하는 유니 캐스트의 예를 나타낸다. 도 2b는 송신기 소켓이 멤버 ID로 식별된 수신자에게 메시지를 송신하는 애니캐스트의 예를 나타낸다. 멤버 ID가 둘 이상의 소켓으로 맵핑될 수 있으므로, 그러한 애니캐스트 메시지는 멤버 ID와 연관된 소켓 중 하나로 송신될 수 있다. 일부의 실시예에 있어서, 송신기 소켓으로부터의 애니캐스트 메시지는 동일한 멤버 ID와 연관된 다수의 소켓 중 하나로 송신될 수 있다. 상기 수신자 소켓은 라운드-로빈(round-robin)에 의해, 로드 레벨(예컨대, 이용 가능한 캐패시티(capacity) 또는 액티브 피어 멤버의 수)에 의해, 라운드-로빈 및 로드 레벨의 조합에 의해, 또는 다른 요인에 따라 그와 같은 다수의 소켓으로부터 선택될 수 있다. 수신자 소켓의 선택은 도 1의 프로토콜 엔티티(110), 송신기 소켓, 또는 그 모두의 협력에 의해 수행될 수 있다. 도 2b의 예에서, 실선 및 점선은 애니캐스트 메시지를 송신기 소켓으로부터 멤버 ID = 28을 갖는 2개의 소켓 중 하나로 전송하기 위한 2개의 대안적인 경로를 나타낸다. 선택 기준이 조합된 라운드-로빈 및 로드 레벨인 실시예에서, 하부 소켓(28)은 애니캐스트 메시지의 수신자로서 라운드-로빈에 의해 먼저 선택될 수 있다. 그러나, 하부 소켓(28)이 현재 애니캐스트 메시지를 송신하기에 충분한 윈도우를 통지하지 않았다면, 동일한 멤버 ID(예컨대, 상부 소켓(28))를 갖는 다음 소켓이 선택되고 그 통지된 윈도우 사이즈를 검사한다. 멤버 ID가 동일한 소켓이 둘 이상인 시나리오에서는, 선택 기준을 충족하는 멤버 ID가 동일한 소켓이 발견될 때까지 프로세스가 계속된다. 일 실시예에 있어서, 충분한 윈도우를 가진 목적지 소켓이 발견되지 않으면, 라운드-로빈 알고리즘에 따른 제1소켓이 선택될 수 있고, 그러한 선택된 소켓이 더 많은 윈도우를 통지할 때까지 송신기 소켓은 송신으로부터 보류된다.
도 2c는 송신기 소켓이 하나 이상의 멤버 ID로 식별된 다수의 수신자에게 메시지를 송신하는 멀티캐스트의 예를 나타낸다. 하나 이상의 멤버 ID와 연관된 모든 소켓이 메시지의 카피를 수신한다. 도 2c의 예에서, 멤버 ID = 28인 양 소켓 모두 멀티캐스트 메시지를 수신한다. 다수의 소켓이 멀티캐스트 수신자로서 식별된 동일한 멤버 ID와 연관되어 있으면, 이들 모든 소켓이 메시지의 카피를 수신한다.
도 2d는 송신기 소켓이 모든 피어 멤버들에게 메시지를 송신하는 브로드캐스트의 예를 나타낸다. 일 실시예에 있어서, 브로드캐스트 메시지는, 송신기 소켓으로부터, 메시지를 복제하고 링크 계층 스위치를 통해 모든 피어 멤버에게 메시지 카피를 전송하는 프로토콜 엔티티(110; 도 1)로 전송될 수 있다.
주어진 시간에, 임의의 주어진 소켓은 멀티캐스트 및 브로드캐스트의 경우에서와 같이, 다수의 피어 멤버에게 메시지를 송신하는 송신기 소켓으로서 작용할 수 있다. 임의의 주어진 소켓은 또한 다수의 피어 멤버로부터의 메시지에 대한 공통 목적지인 수신기 소켓으로서 작용할 수 있다. 전자의 시나리오는 포인트-투-멀티포인트 시나리오라 하고, 후자의 시나리오는 멀티포인트-투-포인트 시나리오라 한다. 다음의 설명에서는 수신기 소켓의 수신 큐가 오버플로우되지 않도록 보호하는 멀티포인트-투-포인트 흐름 제어 메커니즘에 대해 설명한다. 그러한 멀티포인트-투-포인트 흐름 제어 메커니즘은 다수의 피어 멤버의 결합된 메시지 사이즈가 수신 큐의 이용 가능한 캐패시티로 유지되는 것을 보장한다.
상기 흐름 제어 메커니즘의 실시예들의 높은-레벨의 설명은 다음과 같다. 수신기 소켓이 다른 소켓(피어 멤버)이 그 그룹에 조인한다는 것을 나타내는 멤버쉽 업데이트를 수신하면, 수신기 소켓은 최소 윈도우를 제공하는 제1통지를 피어 멤버에게 송신한다. 일 실시예에 있어서, 최소 윈도우는, 예를 들어 피어 멤버가 수신기 소켓으로 송신될 수 있는 메시지의 최대 사이즈이다. 일 실시예에 있어서, 그러한 통지는 전용의 매우 작은 프로토콜 메시지로 전달된다. 통지는 수신시 직접 처리되며, 수신 큐에 추가되지 않는다. 수신기 소켓이 피어 멤버로부터 메시지를 수신한 후, 수신기 소켓은 최대 윈도우를 제공하는 제2통지를 피어 멤버에게 송신한다. 그 최대 윈도우는 피어 멤버가 다수의 메시지를 수신기 소켓에 송신할 수 있게 한다. 최대 윈도우가 미리 결정된 임계치에 있거나 그 근처에 있을 때, 수신기 소켓은 피어 멤버가 메시지를 수신기 소켓으로 계속 송신하게 하도록 윈도우를 보충할 수 있다. 그와 같이, 수신기 소켓은 피어 멤버의 요구에 따라 그 수신 큐에 스페이스를 예약할 수 있다. 액티브하게 메시지를 송신하는 이들 피어 멤버들만이 최대 윈도우에 할당된다. 그 외의 것들은 수신 큐에서 캐패시티 할당을 최적화하기 위해 최소 윈도우에 할당된다.
일 실시예에 있어서, 각각의 멤버 소켓은 피어 멤버마다 해당 피어 멤버에게 메시지를 송신하기 위한 송신 윈도우와 해당 피어 멤버로부터 메시지를 수신하기 위한 통지된 윈도우의 트랙을 유지한다. 그러한 송신 윈도우는 멤버 소켓이 피어 멤버에게 메시지를 송신할 때 소비되며, 멤버 소켓이 피어 멤버로부터의 통지를 수신할 때 업데이트된다. 상기 통지된 윈도우는 멤버 소켓이 피어 멤버로부터 메시지를 수신할 때 소비되고, 멤버 소켓이 피어 멤버로 통지를 송신할 때 업데이트된다. 송신기 소켓은 메시지의 수신자에 대한 그 송신 윈도우가 너무 작으면 통지를 대기한다. 포인트-투-멀티포인트 시나리오에서, 송신기 소켓은 소정 메시지의 수신자에 대한 그 송신 윈도우가 너무 작으면 통지를 대기한다.
도 3은 일 실시예에 따른 각각의 소켓에 의해 유지된 유한 상태 머신(300; FSM)을 나타내는 도면이다. 그러한 FSM(300)은 조인된(JOINED) 상태(310), 액티브(ACTIVE) 상태(320), 펜딩(PENDING) 상태(330) 및 리클레이밍(RECLAIMING) 상태(340)와 같은 4개의 송신 상태를 포함한다. 이들 송신 상태 및 이들 간 전이(즉, 전환)는 이하 도 4를 참조하여 설명될 것이다.
도 4는 일 실시예에 따른 멀티포인트-투-포인트 흐름 제어도(400)를 나타낸다. 그러한 멀티포인트-투-포인트 흐름 제어도(400)는 수신기 소켓(수신기)과 3개의 피어 멤버(송신기 A, 송신기 B 및 송신기 C) 간 메시지 교환을 나타낸다. 초기에, 수신기는 송신기 A가 그룹에 조인되었다는 것을 알리는 프로토콜 엔티티(도 1)로부터 멤버쉽 언데이트를 수신한다. 단계 401에서, 수신기는 최소 윈도우(Xmin)를 송신기 A에 통지(Advertise)한다. 통지를 송신한 후, 수신기는 송신기 A를 조인된 상태(310)에 놓고 단계 402에서 송신기 A에 대한 통지된 윈도우를 Adv_A = Xmin로 기록한다. 송신기 A는 단계 403에서 그 수신기에 대한 송신 윈도우를 win_R = Xmin로 기록한다. 송신기 B에 대한 단계 404-406 및 송신기 C에 대한 단계 407-409는 송신기 A에 대한 단계 401-403과 유사하다.
단계 410에서, 송신기 A는 사이즈(J)의 메시지(Message)를 수신기로 송신하고, 단계 411에서 그 수신기에 대한 송신 윈도우 win_R를 (Xmin-J)로 감소시킨다. 그러한 메시지를 수신할 때, 수신기는 단계 412에서 송신기에 대한 통지된 윈도우인 Adv_A를 (Xmin-J)로 감소시킨다. 이러한 시점에서 수신기는 수신 큐가 거의 가득 찼는지 결정한다. 일 실시예에 있어서, 그러한 결정은 수신기가 현재 그룹 내에 가지고 있는 액티브 송신기의 수(#active)에 의해 이루어질 수 있다. 수신기에 대한 액티브 송신기의 수가 임계치보다 적은 경우(즉, #active<max_active), 수신기는 송신기 A에 대한 윈도우를 최대 윈도우(Xmax)로 증가시킬 수 있다. 이러한 예에서, max_active = 2이다. 따라서, 단계 413에서 수신기는 윈도우 업데이트(예컨대, (Xmax - (Xmin - J)))를 송신기 A로 송신하고, 단계 414에서 조인된 상태(310)에서 액티브 상태(320)로 전이할 수 있다. 수신기 및 송신기 A는 단계 414 및 415에서 통지된 윈도우(Adv_A) 및 송신 윈도우(win_R)를 Xmax로 업데이트한다. 예를 들어, 그들 각각의 윈도우에 (Xmax - (Xmin - J))의 윈도우 업데이트를 더함으로써 업데이트한다; 즉, Adv_A = win_R = (Xmin - J) + (Xmax - (Xmin - J)) = Xmax. 송신기 B에 대한 단계 416-421은 송신기 A에 대한 단계 410-415와 유사하다.
단계 422에서, 송신기 C는 사이즈(L)의 메시지를 수신기로 송신하고, 단계 423 및 424에서 각각 그들 윈도우를 Xmin에서 (Xmin-L)로 업데이트한다. 그러나, 이러한 시점에서, 수신기는 조인된 상태(310)에서 액티브 상태(320)로 송신기 C를 전이시킬 수 없다. 왜냐하면, 수신기에서 액티브 송신기의 수가 임계치에 도달했기 때문이다; 즉, #active = max_active. 일 실시예에 있어서, 수신기는 단계 424에서 송신기 C를 펜딩 상태(330)로 이동시키고, 송신기 C는 수신기가 다른 피어 멤버, 예컨대 최소의 액티브 피어 멤버로부터 캐패시티를 리클레이밍할 때까지 대기한다.
도 4의 예에 있어서, 송신기 A는 단계 422에서 3개의 송신기 중 최소의 액티브 멤버인데, 왜냐하면 송신기 A로부터의 최종 메시지가 송신기 B 및 송신기 C 모두로부터의 메시지 전에 수신되기 때문이다. 따라서, 단계 425에서, 수신기는 송신기 A에 할당된 미사용 캐패시티를 리클레이밍(Reclaiming)하기 위해 송신기 A에게 리클레이밍 요청을 송신한다. 상기 리클레이밍 요청은 현재 송신 윈도우의 사이즈에 상관없이, 그 송신 윈도우를 Xmin으로 복원하도록 송신기 A에게 알린다. 단계 426에서, 수신기는 송신기 A를 리클레이밍 상태(340)로 전이시킨다. 그러한 리클레이밍 요청에 응답하여, 단계 427에서, 송신기 A는 단계 428에서 그 송신 윈도우가 Xmin으로 복원되었음을 나타내는 송신(Remit) 응답을 수신기에게 송신한다. 그러한 송신 응답을 수신하면, 수신기는 송신기 A를 조인된 상태(310)로 전이시키고, 단계 429에서 Adv_A를 Xmin으로 업데이트한다. 단계 430에서 수신기는 이제 송신기 C에게 (Xmax - (Xmin - L))의 통지를 전송함으로써 송신기 C로 전환하고, 송신기 C를 액티브 상태(320)로 전이시킨다. 다음에, 수신기 및 송신기 C는 각각 단계 431 및 432에서 통지된 윈도우(Adv_C) 및 송신 윈도우(win_R)를 업데이트한다. 그러한 업데이트된 윈도우 Adv_C 및 win_R은 동일한 값을 가지며, 이는 Adv_C = win_R = (Xmin - L) + (Xmax - (Xmin - L)) = Xmax이다.
도 5는 다른 실시예에 따른 멀티포인트-투-포인트 흐름 제어도(500)를 나타낸다. 도 4의 흐름 제어도(400)와 유사하게, 상기 흐름 제어도(500)는 수신기와 송신기 A 간, 송신기 B와 송신기 C 간 메시지 교환을 나타낸다. 도 5의 시나리오에서, 수신기는 액티브 피어 멤버의 수가 max_active 임계치에 도달하기 전에 캐패시티를 사전에 리클레이밍한다. 이러한 시나리오에서, 피어 멤버가 액티브 상태(320)로 전이된 후, 액티브 피어 멤버의 수(#active)는 α×max_active와 비교되며, 여기서 α는 0과 1 사이의 인자이다. 예를 들어, α=3/4이고 max_active=2라고 가정한다. 송신기 B가 액티브 상태(320)로 전이된 후, #active=2는 α×max_active=1.5보다 크다. 따라서, 단계 525에서, 수신기는, 조인된 상태(310)의 다른 피어 멤버가 수신기로 메시지를 송신하기 전에, 최소의 액티브 멤버인 송신기 A로부터 캐패시티를 사전에 리클레이밍할 수 있다. 그러한 리클레이밍 단계 525-529는 도 4의 대응하는 리클레이밍 단계 425-429와 유사하다. 그러나, 상기 리클레이밍 단계 525-529는 단계 530에서 송신기 C가 사이즈(L)의 메시지를 송신하기 전에 수행된다. 프로액티브(proactive) 리클레이밍은 펜딩 상태(330)에서 대기하지 않고 조인된 상태(310)의 다음 송신기가 액티브 상태가 되게 한다. 이러한 예에서, 수신자가 송신기 C로부터 메시지를 수신하면, 수신기는 송신기 C가 펜딩 상태(330)에서 대기하지 않고 송신기 C를 조인된 상태(310)에서 액티브 상태(320)로 직접 전이시킬 수 있다.
다음의 설명은 액티브 상태(320)의 피어 멤버에 대한 흐름 제어 메커니즘을 더 설명한다. 도 3의 FSM(300)을 다시 참조하면, 피어 멤버가 액티브 상태(320)에 있을 때, 그 피어 멤버는 수신자에게 메시지를 송신할 때마다 수신자의 통지된 윈도우의 일부를 소비한다. 예를 들어, 송신기 B가 도 4의 단계 421과 422 간 사이즈(M)의 메시지를 송신하는 경우, 송신기 B에서의 송신 윈도우(win_R)와 수신기에서의 통지된 윈도우(Adv_B)가 모두 (Xmax-M)으로 업데이트된다. 수신기는, 송신기 B로부터 다수의 메시지를 수신한 후, 예컨대 남아 있는 통지된 윈도우(Adv_B)가 하한에 도달할 때(즉, Adv_B<limit일 때, 여기서 limit는 Xmax의 1/3이거나, 또는 일 예로서, 적어도 한 메시지의 최대 사이즈일 수 있다), 송신기 B에 대한 캐패시티를 복원할 수 있다. 이러한 시점에서, 수신기는 송신기 B가 그 송신 윈도우 Xmax로 복원하기 위해 (Xmax-Adv_B)의 윈도우를 제공하는 통지를 송신한다. 수신기는 또한 통지된 윈도우를 Xmax로 업데이트한다. 피어 멤버는 수신기가 그 캐패시티를 리클레이밍할 때까지 액티브 상태(320)를 유지하는데, 이 시점에서 피어 멤버는 리클레이밍 상태(340)로 전이된다.
도 6은 일 실시예에 따른 포인트-투-멀티포인트 흐름 제어도(600)를 나타낸다. 이 예에서는 하나의 송신기와 두 개의 수신기, 수신기 A와 수신기 B가 있다. 송신기는 유니캐스트를 수신기 A에게만 송신한다. 초기에, 단계 601-606에서, 각각의 수신기는 윈도우 X를 송신기에게 통지하고, 그 통지된 윈도우 Adv = X를 설정한다. 그 통지를 수신하면, 송신기는 수신기 A에 대한 송신 윈도우(Win_A = X)를 설정하고, 수신기 B에 대한 Win_B = X를 설정한다. 단계 607에서, 송신기는 수신기 A로 Size1의 제1유니캐스트를 송신하고, 단계 608에서, Win_B가 X에 유지되는 동안 그 송신 윈도우(Win_A)를 (X - Size1)로 업데이트한다. 수신기 A는 마찬가지로 단계 609에서 통지된 윈도우 Adv를 (X - Size1)로 업데이트한다. 송신기가 수신기 A에게 Size2의 제2유니캐스트를 송신하려 한다고 가정한다. 여기서 X>Size2>(X - Size1)이고, 이는 이용 가능한 송신 윈도우가 제2유니캐스트의 사이즈보다 작음을 의미한다. 송신기는 수신기 A가 송신기의 송신 캐패시티를 증가시키기 위해 다른 통지를 송신할 때까지 단계 610에서 대기한다. 일 실시예에 있어서, 수신기 A는 송신기에 대한 통지된 윈도우가 임계치 이하로 떨어지는 것을 검출할 경우 다른 통지를 송신할 수 있다. 일 실시예에 있어서, 수신기 A는 단계 612에서 송신 윈도우(Win_A)를 X로 복원하기 위해 단계 611에서 Size1 만큼 Win_A를 증가시킬 수 있다. 대안으로, 복원된 송신 윈도우는 초기 캐패시티 X보다 클 수 있다. 그러한 증가된 캐패시티를 수신한 후, 송신기는 단계 613에서 제2유니캐스트를 Size2의 수신기 A로 송신한다. 다음에, 송신기 및 수신기 A는 단계 614 및 615에서 그들 각각의 윈도우를 (X - Size2)로 업데이트한다.
도 6에 나타낸 바와 같이, 유니캐스트는 일반적인 포인트-투-포인트 흐름 제어로 다시 돌아간다. 송신기에 대한 통지된 윈도우가 충분한 이용 가능한 스페이스, 예컨대, 적어도 하나의 최대 사이즈 메시지 또는 다른 미리 결정된 사이즈의 스페이스를 갖는 한, 수신기는 각각의 수신된 메시지에 대한 통지를 송신하지 않는다. 일 실시예에 있어서, 애니캐스트의 흐름 제어는 유니캐스트의 흐름 제어와 유사하다.
도 7은 다른 실시예에 따른 포인트-투-멀티포인트 흐름 제어도(700)를 나타낸다. 이러한 예에서, 송신기는 수신기 A 및 수신기 B 모두에게 멀티캐스트를 송신한다. 멀티캐스트 및 브로드캐스트의 경우, 송신기는 송신기가 송신하기 전에 모든 목적지가 충분한 윈도우를 통지할 때까지 대기한다. 이러한 예에서, 송신기는 단계 707에서 Size1의 제1멀티캐스트를 수신기 A 및 수신기 B 모두로 송신한다. 단계 708에서, 양쪽 수신기들에 대한 송신기의 송신 윈도우들 Win_A 및 Win_B가 X에서 (X-Size1)로 감소된다. 단계 709에서, 수신기 A는 Win_A를 X로 복원하도록 통지를 송신한다; 그러나, Win_B는 (X-Size1)에 유지된다. 송신기가 Size2의 제2멀티캐스트를 송신하기 전에, 송신기는 그 송신 윈도우 Win_B를 X로 복원하기 위해 수신기 B로부터의 통지를 단계 710에서 대기한다. 이러한 예에서, 단계 711에서 Win_A 및 Win_B가 모두 X로 증가된 후, 송신기는 양 수신기에게 제2멀티캐스트를 송신한다. 일 실시예에서, 브로드캐스트의 흐름 제어는 멀티캐스트의 흐름 제어와 유사하다.
다음의 설명은 브로드캐스트 및 유니캐스트 메시지의 혼합된 시퀀스를 위한 시퀀스 제어 메커니즘에 관한 것이다. 도 8a 및 8b는 일부의 실시예에 따라 그룹 브로드캐스트 메시지를 송신하기 위한 2개의 대안적인 전송 방법을 나타낸다. 용어 "그룹 브로드캐스트"는 그것들의 멤버 ID에 관계없이 멤버 소켓에서 그룹의 모든 피어 멤버로 메시지를 브로드캐스트하는 것을 말한다. 도 8a 및 8b에서 각각의 정사각형은 노드를 나타내며, 상호 연결된 노드 집합은 클러스터이다. 일 실시예에 있어서, 프로토콜 엔티티(110; 도 1)는 그룹 내의 목적지 노드의 수와 클러스터 사이즈 사이의 관계(예컨대, 목적지 노드의 수 대 클러스터 사이즈의 비)에 기초하여 2개의 전송 방법 중 하나를 독립적으로 선택하며, 여기서 목적지 노드들은 피어 멤버를 호스팅하는 노드들이고, 클러스터는 상호 연결된 노드의 세트이다.
소스 노드(800)에 위치한 멤버 소켓이 Node_A, Node_B 및 Node_C(목적지 노드라고 함)에 위치한 피어 멤버들에게 그룹 브로드캐스트를 개시하려고 한다고 가정하자. 도 8a 및 8b의 예에서, Node_C에 배치된 2개의 피어 멤버가 존재하고, 각각의 Node_A 및 Node_B에 하나의 피어 멤버가 존재한다. 도 8a는 그룹 브로드캐스트가 브로드캐스트를 사용하여, 보다 구체적으로, UDP 멀티캐스트 또는 링크 계층(L2) 브로드캐스트를 사용하여 전용 브로드캐스트 링크로 전송되는 제1전송 방법을 나타낸다. 도 8a에서, 소스 노드(800) 상의 송신 소켓은 피어 멤버들이 위치한 모든 노드에 그룹 브로드캐스트를 송신한다. 목적지 노드 Node_A, Node_B 및 Node_C만이 그룹 브로드캐스트 메시지를 수락하고 클러스터의 다른 노드는 메시지를 드롭(drop)한다. 일 실시예에서, Node_C는 그 위에 위치한 2개의 피어 멤버에 대한 메시지를 복제한다.
도 8b는 그룹 브로드캐스트가 복제된 유니캐스트로서 송신되는 제2전송 방법을 나타낸다. 도 8b에서, 소스 노드(800)의 송신 소켓으로부터의 그룹 브로드캐스트 메시지는 각각의 목적지 노드에 대해 복제되고, 각각의 복제된 메시지는 단지 목적지 노드 Node_A, Node_B 및 Node_C로만 개별 링크에서 유니캐스트로서 송신된다. 일 실시예에 있어서, Node_C는 그 위에 위치한 2개의 피어 멤버에 대한 메시지를 복제한다. 이러한 시나리오는 멀티캐스트 또는 브로드캐스트 미디어 지원이 누락되었거나, 또는 목적지 노드의 수가 클러스터의 총 노드의 수보다 훨씬 적은 경우, 예컨대 목적지 노드의 수 대 클러스터 사이즈의 비가 임계치보다 작은 경우에 일어날 수 있다.
소스 노드(800) 상의 송신기 소켓은 그룹 브로드캐스트의 시퀀스, 또는 유니캐스트 및 그룹 브로드캐스트의 혼합 시퀀스를 그 피어 멤버들 중 일부에게 전송할 수 있다. 서로 다른 그룹 브로드캐스트의 목적지 노드 수는 새로운 노드에 새로운 멤버를 추가하거나 그룹의 기존 노드에서 마지막 멤버를 제거하여 변경될 수 있다. 프로토콜 엔티티(110; 도 1)는 그룹 브로드캐스트를 브로드캐스트로서(도 8a의 예에서와 같이 L2 브로드캐스트/UDP 멀티캐스트와 같은) 또는 복제된 유니캐스트로서(도 8b의 예에서와 같이) 전송할 지를 목적지 노드의 수 및 클러스터 사이즈에 기초하여 그리고 각각의 그룹 브로드캐스트에 대해 결정한다. TIPC에서, 링크 계층은 L2 브로드캐스트 메시지가 손실되거나 잘못 수신되지 않도록 보장하지만, 상호 시퀀스 제어가 없다면 브로드캐스트 메시지는 동일한 송신기 소켓에서 이전에 송신된 유니캐스트를 바이패스할 수 있다. 일 실시예에 있어서, 송신기 소켓이 유니캐스트를 송신한 바로 다음에 다수의 피어 멤버에게 메시지를 송신해야 할 경우, 송신기 소켓은 복제된 유니캐스트로서 메시지를 송신할 수 있다. 상기 프로토콜 엔티티(110)가 많은 수의 목적지 노드로 인해 메시지가 브로드캐스트에 의해 송신될 것이라고 결정하면, 송신기 소켓은 프로토콜 엔티티(110)의 결정을 무시하고 메시지가 복제된 유니캐스트로서 송신되게 할 수 있다.
좀더 구체적으로, 송신기 소켓은 유니캐스트 메시지(여기서 유니캐스트 메시지는 마지막 N초 동안 전송되었고, N은 미리 결정된 수임)가 바로 앞에 오는 브로드캐스트 메시지를 복제된 유니캐스트 메시지로 변환할 수 있다. 이러한 변환은 브로드캐스트 메시지가 그러한 바로 전의 유니캐스트 메시지와 동일한 데이터 및 코드 경로를 따르게 하고, 그러한 유니캐스트 및 브로드캐스트 메시지가 공통의 목적지 노드에서 올바른 순서(right order)로 수신되게 한다. 따라서, 상기 송신기 소켓은 다른 타입의 메시지를 순차적으로 전달하지 않고도 그 전송된 메시지 타입을 즉시 전환할 수 있다.
도 9는 일 실시예에 따른 유니캐스트 메시지 바로 다음에 브로드캐스트 메시지를 송신하는 송신기 소켓에 대한 시퀀스 제어 메커니즘을 나타낸다. 이러한 예에서, 송신기 소켓(예컨대, 소켓 60)은 일련의 메시지(msg#1, msg#2 및 msg#3)를 그 피어 멤버들에게 송신한다. 좌측 상단에서 우측 하단으로, 송신기 소켓은 910에서 시작하여 유니캐스트 메시지(msg#1)를 피어 멤버 소켓(28)으로 송신한다. 920에서, 송신기 소켓은 이전 수신자 소켓(28)을 포함하여 브로드캐스트 메시지(msg#2)를 그 피어 멤버들에게 송신한다. 이러한 브로드캐스트 메시지는 유니캐스트 메시지 바로 다음에 송신되므로, msg#2는 복제된 유니캐스트 메시지로서 전송된다. 송신기 소켓은 복제된 유니캐스트 메시지의 모든 목적지가 msg#2의 수신을 확인 응답할 때까지 930에서 대기한다. 모든 목적지가 확인 응답될 때까지 다른 브로드캐스트 메시지(유니캐스트는 아님) 시도는 거부된다. 940에서, 모든 목적지가 확인 응답되면, 송신기 소켓은 다른 브로드캐스트 메시지 msg#3을 모든 피어 멤버에게 송신할 수 있다. msg#3 및 다음 브로드캐스트 메시지에 대해, 프로토콜 엔티티(110; 도 1)는 목적지 노드의 수 대 클러스터 사이즈에 기초하여, L2 브로드캐스트/UDP 멀티캐스트 또는 복제된 유니캐스트에 의해 msg#3을 송신할지의 여부를 결정할 수 있다.
제2시나리오에서, 유니 캐스트 메시지는 브로드 캐스트 메시지 바로 다음에 올 수 있다. 앞에서 언급했듯이, 링크 계층 전달은 메시지가 손실되지는 않지만 링크 계층 브로드캐스트와 복제된 유니캐스트 간의 변경으로 인해 잘못 도달될 수 있음을 보장한다. 일 실시예에 있어서, 시퀀스 넘버는 브로드캐스트 메시지가 바로 앞에 오는 유니캐스트 메시지 및 브로드 캐스트 메시지의 혼합된 시퀀스의 순차적 전달을 보장하는데 사용된다.
도 10은 일 실시예에 따른 브로드캐스트 메시지 바로 다음에 유니캐스트 메시지를 송신하는 송신기에 대한 다른 시퀀스 제어 메커니즘을 나타낸다. 이러한 예에서, 그룹의 각각의 송신기 소켓은 다음-송신 브로드캐스트 메시지 시퀀스 넘버를 포함하는 시퀀스 넘버 필드를 유지하고, 각각의 수신기 소켓은 해당 피어로부터 다음-수신 브로드캐스트 메시지 시퀀스 넘버를 포함하는 피어 멤버마다 시퀀스 넘버 필드를 유지한다. 각각의 멤버는 그와 같은 경우 피어 멤버마다 재-시퀀싱 큐(re-sequencing queue)를 유지한다. 1010에서, 송신기 소켓(소켓 60)에서 다음-송신 브로드캐스트 메시지 시퀀스 넘버는 N(즉, bc_snt_nxt_N)이고, 각 피어 멤버에 대해 소켓(60)으로부터 다음-수신 브로드캐스트 메시지 시퀀스 넘버는 또한 N(즉, bc_rcv_nxt_N)이다. 1020에서, 송신기 소켓은 msg#1을 그 피어 멤버에게 브로드캐스트하며, 여기서 msg#1은 시퀀스 넘버 N을 수반한다. 1030에서, 송신기 소켓 및 그 피어 멤버는 그것들의 다음-송신/수신 시퀀스 넘버를 각각 bc_snt_nxt_N+1 및 bc_rcv_nxt_N+1로 증분시킨다. 1040에서, 송신기 소켓은 유니캐스트에 의해 피어 멤버들 중 하나에 msg#2를 송신하고, 여기서 msg#2는 이전-전송 브로드캐스트 메시지 msg#1을 고유하게 식별하는 시퀀스 넘버를 수반한다. 이러한 예에서, msg#2의 시퀀스 넘버는 N이며, 이는 msg#1의 시퀀스 넘버와 동일하다. 대안의 실시예에서, msg#2의 시퀀스 넘버는 msg#1의 시퀀스 넘버의 미리 결정된 증분(예를 들어, +1)일 수 있다. 송신기 소켓 및 피어 멤버에서 다음-송신/수신 시퀀스 넘버는 N+1을 유지한다. 1050에서, 송신기 소켓은 유니캐스트에 의해 피어 멤버들 중 하나에 msg#3을 송신하며, 여기서 msg#3은 이전 유니캐스트와 동일한 시퀀스 넘버 N을 수반한다. 송신기 소켓 및 피어 멤버에서 다음-송신/수신 시퀀스 넘버는 N+1을 유지한다. 1060에서, 송신기 소켓은 그 피어 멤버들에게 msg#4를 브로드캐스트하며, 여기서 msg#4는 시퀀스 넘버 N+1를 수반한다. 1070에서, 송신기 소켓 및 그 피어 멤버는 그것들의 다음-송신/수신 시퀀스 넘버를 각각 bc_snt_nxt_N+2 및 bc_rcv_nxt_N+2로 증분시킨다.
유니캐스트 메시지에 의해 수반된 시퀀스 넘버는 수신기가 이전 브로드캐스트 메시지와 관련하여 유니캐스트 메시지의 적절한 시퀀싱을 통지받는 것을 보장한다. 예를 들어, 유니캐스트 msg#2가 소켓 28로 가는 도중 브로드캐스트 msg#1을 바이패스하는 경우, 소켓 28은 시퀀스 넘버를 참조하여 적절한 시퀀싱(sequencing)을 선별할 수 있다.
본원에 기술된 흐름 제어 및 시퀀스 제어의 실시예들은 기존의 네트워크 프로토콜에 비해 다양한 이점을 제공한다. 예를 들어, 소켓은 효율적인 메모리 사용으로 구현될 수 있다. 표준 TIPC 또는 TCP 프로토콜에 따르면, 수신기 소켓은 N개의 피어 멤버에 대해 (N×Xmax)의 수신 큐 사이즈를 예약해야 한다. 대조적으로, 본원에 기술된 흐름 제어에 따르면, 수신기 소켓은 M개의 액티브 피어 멤버를 갖는 N개의 피어 멤버에 대해 ((N-M)×Xmin)+(M×Xmax)의 수신 큐 사이즈만 예약해야 하며, 여기서 M<<N 및 Xmin<<Xmax이다. 액티브 피어 멤버들은 액티브 상태(320; 도 3)의 소켓이며; 그룹의 다른 피어 멤버들은 비-액티브 소켓이라고 한다. 또한, 소켓들 간 통신은 대역폭에 있어 효율적이다. 브로드캐스트는 그와 같은 지원이 이용 가능할 때마다 L2 브로드캐스트 또는 UDP 멀티캐스트를 활용할 수 있다. 본원에 기술된 브로드캐스트 메커니즘은 네트워크의 막힘 없이 수백명 이상의 멤버로 확장할 수 있다.
도 11은 일 실시예에 따른 흐름 제어 방법(1100)을 나타내는 흐름도이다. 그러한 방법(1100)은 소켓 그룹에 대한 흐름 제어를 제공하기 위해 네트워크에서 소켓 그룹 내의 수신기 소켓에 의해 수행될 수 있다. 단계 1110에서, 상기 방법(1100)은 송신기 소켓이 소켓 그룹에 조인될 때 송신기 소켓에 메시지 사이즈 제한으로서 최소 윈도우를 통지하는 것을 수신기 소켓에 의해 시작한다. 단계 1120에서, 수신기 소켓은 송신기 소켓으로부터 메시지를 수신한다. 메시지를 수신할 때, 단계 1130에서, 수신기 소켓은 메시지 사이즈 제한을 증가시키기 위해 송신시 소켓에 최대 윈도우를 통지한다. 그러한 최소 윈도우는 최대 윈도우의 일부이다.
도 12는 일 실시예에 따른 시퀀스 제어 방법(1200)을 나타내는 흐름도이다. 그러한 방법(1200)은 소켓 그룹에 대한 시퀀스 제어를 제공하기 위한 네트워크에서 소켓 그룹 내의 송신기 소켓에 의해 수행될 수 있다. 상기 방법(1200)은 유니캐스트에 의해 피어 멤버 소켓에 제1메시지를 송신하는 송신기 소켓에 의해 단계 1210에서 시작한다. 단계 1220에서, 송신기 소켓은 상기 제1메시지 바로 다음에 오는 제2메시지가 브로드캐스트에 의해 송신되는지를 검출한다. 단계 1230에서, 송신기 소켓은 복제된 유니캐스트에 의해 제2메시지를 송신하며, 그러한 제2메시지는 모든 목적지에 대해 복제되고 각각의 복제된 제2메시지는 유니캐스트에 의해 송신된다. 일 실시예에 있어서, 상기 송신기 소켓이 다음 브로드캐스트 메시지를 송신할 수 있을 때까지, 송신기 소켓은 모든 피어 멤버로부터 제2메시지의 확인 응답을 대기한다. 다음 브로드캐스트 메시지는 목적지 노드의 수 대 클러스트 사이즈에 따라 브로드캐스트에 의해 또는 복제된 유니캐스트에 의해 송신될 수 있다.
도 13은 일 실시예에 따른 네트워크 노드(1300)를 나타내는 블록도이다. 일 실시예에서, 상기 네트워크 노드(1300)는 오퍼레이터 네트워크 또는 데이터 센터의 서버일 수 있다. 상기 네트워크 노드(1300)는 처리 회로(1302), 메모리(1304) 또는 명령 저장소 및 인터페이스 회로(1306)를 더 포함하는 회로를 포함한다. 그러한 인터페이스 회로(1306)는 적어도 하나의 입력 포트 및 적어도 하나의 출력 포트를 포함할 수 있다. 상기 메모리(1304)는 처리 회로(1302)에 의해 실행 가능한 명령들을 포함하며, 이에 의해 상기 네트워크 노드(1300)는 본원에 기술된 다양한 실시예들을 수행하도록 동작가능하다.
도 14a는 일 실시예에 따른 흐름 제어를 수행하기 위한 예시의 네트워크 노드(1401)의 블록도이다. 일 실시예에 있어서, 상기 네트워크 노드(1401)는 오퍼레이터 네트워크 또는 데이터 센터의 서버일 수 있다. 상기 네트워크 노드(1401)는 송신기 소켓이 소켓 그룹에 조인될 때 송신기 소켓에 메시지 사이즈 제한으로서 최소 윈도우를 통지하도록 구성되거나 동작하는 흐름 제어 모듈(1410)을 포함한다. 상기 네트워크 노드(1401)는 또한 송신기 소켓으로부터 메시지를 수신하도록 구성되거나 동작하는 입/출력 모듈(1420)을 포함한다. 상기 흐름 제어 모듈(1410)은, 메시지를 수신할 때, 메시지 사이즈 제한을 증가시키기 위해 최대 윈도우를 송신기 소켓에 통지하도록 더 구성되거나 동작가능하다. 상기 최소 윈도우는 상기 최대 윈도우의 일부이다. 상기 네트워크 노드(1401)는 본원에 기술된 바와 같은 다양한 실시예들을 수행하도록 구성될 수 있다.
도 14b는 일 실시예에 따른 시퀀스 제어를 수행하기 위한 예시의 네트워크 노드(1402)의 블록도이다. 일 실시예에 있어서, 상기 네트워크 노드(1402)는 오퍼레이터 네트워크 또는 데이터 센터의 서버일 수 있다. 상기 네트워크 노드(1402)는 제1메시지를 유니캐스트에 의해 피어 멤버 소켓으로 송신하도록 구성되거나 동작하는 입/출력 모듈(1440)을 포함한다. 상기 네트워크 노드(1402)는 또한 상기 제1메시지 바로 다음에 오는 상기 송신기 소켓으로부터의 제2메시지가 브로드캐스트에 의해 송신되는지를 검출하도록 구성되거나 동작하는 시퀀스 제어 모듈(1430)을 포함한다. 상기 입/출력 모듈(1440)은 복제된 유니캐스트에 의해 제2메시지를 송신하도록 더 구성되거나 동작하며, 여기서 상기 제2메시지는 모든 목적지에 대해 복제되고, 각각의 복제된 제2메시지는 유니캐스트에 의해 송신된다. 상기 네트워크 노드(1402)는 본원에 기술된 바와 같은 다양한 실시예들을 수행하도록 구성될 수 있다.
도 15는 클라우드 컴퓨팅 개체의 계층을 포함하는 클라우드 컴퓨팅 환경(1500)의 아키텍처 개요이다. 그러한 클라우드 컴퓨팅 환경(1500)은 네트워크(1535)를 통해 연결된 상이한 지리적 사이트에서 다수의 상이한 데이터 센터(DC)(1530)를 포함할 수 있다. 각각의 데이터 센터(1530) 사이트는 다수의 랙(1520)을 포함하며, 각각의 랙(1520)은 다수의 서버(1510)를 포함한다. 대안의 실시예들에서, 클라우드 컴퓨팅 환경은 임의의 수의 데이터 센터, 랙 및 서버를 포함할 수 있는 것으로 이해된다. 상기 서버(1510)의 세트는 리소스(1540)를 호스팅하도록 선택될 수 있다. 일 실시예에 있어서, 상기 서버(1510)는 호스팅 엔티티 및 그들의 호스팅된 엔티티를 위한 실행 환경을 제공하며, 여기서 그러한 호스팅 엔티티는 서비스 제공자일 수 있고, 그 호스팅된 엔티티는 서비스 제공자에 의해 제공되는 서비스일 수 있다. 호스팅 엔티티의 예로는 그 중에서도 가상 머신(컨테이너를 호스팅할 수 있는) 및 컨테이너(포함된 요소들을 호스팅할 수 있는)를 포함한다. 컨테이너는 자체 내에 다른 요소들을 포함할 수 있는 소프트웨어 요소이다. 다수의 컨테이너가 동일한 운영 시스템(OS) 인스턴스를 공유할 수 있으며, 각각의 컨테이너는 내포된 요소들에 대해 격리된 실행 환경을 제공한다. VM과 달리, 컨테이너 및 그들의 내포된 요소는 동일한 호스트 OS 인스턴스를 공유하므로 오버 헤드의 생성이 줄어든다. 서버(1510)들, VM들 및 VM들 내의 컨테이너들 각각은 상술한 흐름 제어 및 시퀀스 제어가 실행될 수 있는 임의의 수의 소켓을 호스팅할 수 있다.
일 실시예에 따라, 서버(1510) 및 그 리소스(1540)의 추가 세부 사항은 도 15의 점선 원(1515) 내에 나타나 있다. 클라우드 컴퓨팅 환경(1500)은 일반적인 목적의 네트워크 장치(예컨대, 서버(1510))를 포함하며, 상기 서버(1510)는 상용의 기성(COTS) 프로세서, 전용의 주문형 집적 회로(ASIC), 또는 디지털 또는 아날로그 하드웨어 요소 또는 특수 목적의 프로세서를 포함하는 소정의 다른 타입의 처리 회로일 수 있는 세트의 하나 이상의 프로세서(들)(1560), 및 네트워크 인터페이스 카드로도 알려진 네트워크 인터페이스 컨트롤러(들)(1570; NIC) 뿐만 아니라, 상기 프로세서(1560)에 의해 실행 가능한 내부에 저장된 소프트웨어 및/또는 명령들을 갖는 비-휘발성 기계 판독가능 저장 매체(1590)를 포함하는 하드웨어를 구비한다.
동작 동안, 상기 프로세서(들)(1560)는 하이퍼바이저(1550; hypervisor) 및 상기 하이퍼바이저(1550)에 의해 실행되는 하나 이상의 VM(1541, 1542)들을 인스턴스화하기 위해 소프트웨어를 실행한다. 상기 하이퍼바이저(1550) 및 VM(1541, 1542)들은 이러한 실시예에서 노드 인스턴스를 실행할 수 있는 가상 리소스이다. 일 실시예에 있어서, 상기 노드 인스턴스는 본원에 설명된 바와 같은 다양한 실시예를 수행하기 위해 상기 하이퍼바이저(1550) 상에서 실행되는 하나 이상의 VM(1541, 1542) 상에 구현될 수 있다. 일 실시예에 있어서, 상기 노드 인스턴스는 본원에 설명된 바와 같은 다양한 실시예들을 수행하는 네트워크 노드로서 인스턴스화될 수 있다.
일 실시예에 있어서, 상기 노드 인스턴스 인스턴스화는 다른 방식으로 사용자(1501)에 의해 또는 머신에 의해 개시될 수 있다. 예를 들어, 사용자(1501)는 노드 인스턴스의 인스턴스화를 개시하기 위해 사용자 인터페이스를 통해, 예컨대 버튼을 클릭함으로써 명령을 입력할 수 있다. 사용자(1501)는 대안적으로 명령 라인 또는 다른 유사한 인터페이스에서 명령을 입력할 수 있다. 아니면, 사용자(1501)는 노드 인스턴스의 인스턴스화를 개시하기 위해 사용자 인터페이스를 통해 또는 이메일, 메시징 또는 전화를 통해 네트워크 또는 클라우드 관리자에게 명령을 제공할 수 있다.
실시예들은 기계-판독가능 매체(컴퓨터-판독가능 매체, 프로세서-판독가능 매체, 또는 컴퓨터 판독가능 프로그램 코드가 내장된 컴퓨터 사용가능 매체라고도 하는 비-일시적 기계 판독가능 저장 매체(1590)와 같은)에 저장된 소프트웨어 제품으로서 나타낼 수 있다. 상기 비-일시적 기계 판독가능 매체(1590)는 디스켓, CD-ROM, 하드 드라이브 또는 고체 상태 드라이브와 같은 DVD-ROM 메모리 장치(휘발성 또는 비-휘발성)을 포함하는 자기, 광학, 또는 전기 저장 매체, 또는 유사한 저장 메커니즘을 포함하는 임의의 적합한 유형의 매체일 수 있다. 상기 기계-판독가능 매체는 실행될 때 프로세서가 일 실시예에 따른 방법의 단계들을 수행하게 하는 다양한 명령 세트, 코드 시퀀스, 구성 정보, 또는 기타 데이터를 포함할 수 있다. 또한, 당업자는 설명된 실시예들을 실시하는데 필요한 다른 명령 및 동작들이 기계-판독가능 매체에 저장될 수 있음을 이해할 것이다. 기계-판독가능 매체로부터 실행되는 소프트웨어는 설명된 작업들을 수행하기 위해 회로와 인터페이스할 수 있다.
상기 기술한 실시예들은 단지 예일 뿐이다. 본 명세서에 수반된 청구범위에 의해서만 규정되는 범위를 벗어나지 않고 당업자에 의해 특정 실시예들에 대한 변경, 수정 및 변형이 이루어질 수 있다.

Claims (34)

  1. 소켓 그룹에 대한 흐름 제어를 제공하기 위해 네트워크에서 소켓 그룹 내의 수신기 소켓에 의해 수행된 방법으로서, 상기 방법은:
    상기 소켓 그룹에 조인(join)하는 각각의 송신기 소켓에 메시지 사이즈 제한으로서 최소 윈도우를 통지하는 단계;
    조인된 송신기 소켓으로부터 메시지를 수신하는 단계;
    상기 메시지를 수신함에 따라서, 액티브 송신기 소켓의 수가 임계치보다 적은 것을 결정하는 단계; 및
    상기 결정에 응답해서, 상기 메시지 사이즈 제한을 증가시키기 위해 상기 조인된 송신기 소켓에 최대 윈도우를 통지하는 단계를 포함하며,
    상기 최소 윈도우는 상기 최대 윈도우의 일부인, 방법.
  2. 제1항에 있어서,
    상기 최대 윈도우를 통지하는 단계는:
    송신기 소켓을 조인된 상태에서 액티브 상태로 전이시키는 단계; 및
    액티브 상태의 총 소켓 수가 허용 가능한 액티브 소켓 수의 임계치 내에 있으면, 액티브 상태의 선택된 소켓으로부터 캐패시티(capacity)를 리클레이밍(reclaiming)하는 단계를 더 포함하는, 방법.
  3. 제2항에 있어서,
    선택된 액티브 소켓은 액티브 상태의 소켓들 중에서 최소 액티브 소켓인, 방법.
  4. 제1항에 있어서,
    상기 최대 윈도우를 통지하는 단계는:
    액티브 상태의 총 소켓 수가 허용 가능한 액티브 소켓 수와 동일할 때 송신기 소켓을 조인된 상태에서 펜딩(pending) 상태로 전이시키는 단계를 더 포함하는, 방법.
  5. 제4항에 있어서,
    액티브 상태의 소켓들 중에서 최소 액티브 소켓으로부터 캐패시티를 리클레이밍하는 단계; 및
    상기 최소 액티브 소켓으로부터 리클레이밍된 캐패시티를 수신함에 따라 송신기 소켓을 펜딩 상태에서 액티브 상태로 전이시키는 단계를 더 포함하는, 방법.
  6. 제3항 또는 제5항에 있어서,
    캐패시티를 리클레이밍하는 단계는:
    최소 액티브 소켓의 메시지 사이즈 제한을 최소 윈도우로 감소시킴으로써 최소 액티브 소켓으로부터 캐패시티를 리클레이밍하는 단계를 더 포함하는, 방법.
  7. 제1항 내지 제5항 중 어느 한 항에 있어서,
    그룹의 피어 멤버들에 수신기 소켓에 의해 제공된 조합된 총 캐패시티는 그룹의 액티브 소켓의 수를 곱한 최대 윈도우 및 그룹의 비-액티브 소켓의 수를 곱한 최소 윈도우의 합인, 방법.
  8. 제7항에 있어서,
    송신기 소켓으로부터 메시지를 수신한 후 통지된 윈도우를, 수신기 소켓에 의해 업데이트하는 단계; 및
    상기 통지된 윈도우가 미리 결정된 한계 미만인 경우, 상기 송신기 소켓에 제공된 이용 가능한 캐패시티를 상기 최대 윈도우로 보충하는 단계를 더 포함하며,
    상기 통지된 윈도우는 상기 송신기 소켓에 제공된 이용 가능한 캐패시티의 트랙을 유지하는, 방법.
  9. 제1항 내지 제5항 중 어느 한 항에 있어서,
    수신기 소켓은 상기 수신기 소켓의 로드 레벨에 적어도 부분적으로 기초하여 동일한 멤버 식별자와 연관된 소켓들의 서브세트로부터 애니캐스트 메시지의 수신자로서 선택되는, 방법.
  10. 소켓 그룹에 대한 시퀀스 제어를 제공하기 위해 네트워크에서 소켓 그룹 내의 송신기 소켓에 의해 수행된 방법으로서, 상기 방법은:
    유니캐스트에 의해 제1메시지를 송신기 소켓으로부터 피어 멤버 소켓으로 송신하는 단계;
    상기 제1메시지 바로 다음에 오는 상기 송신기 소켓으로부터의 제2메시지가 브로드캐스트에 의해 송신되는 것을 검출하는 단계; 및
    복제된 유니캐스트에 의해 상기 제2메시지를 송신하는 단계를 포함하며,
    상기 제2메시지는 모든 목적지 노드에 대해 복제되고, 각각의 복제된 제2메시지는 유니캐스트에 의해 송신되며, 상기 제1메시지 및 제2메시지는 올바른 순서(right order)로 수신되는, 방법.
  11. 제10항에 있어서,
    모든 목적지 노드가 복제된 유니캐스트의 수신을 확인 응답할 때까지 다음 브로드캐스트 메시지를 차단하는 단계를 더 포함하는, 방법.
  12. 제10항 또는 제11항에 있어서,
    모든 목적지 노드로부터 확인 응답을 수신한 후, 그룹 내의 목적지 노드의 수 대 그 목적지 노드가 위치한 클러스터의 사이즈에 기초하여 브로드캐스트 또는 복제된 유니캐스트에 의해 다음 브로드캐스트 메시지를 송신할지의 여부를 결정하는 단계를 더 포함하는, 방법.
  13. 제10항에 있어서,
    제1브로드캐스트 시퀀스 넘버를 갖는 그룹에서의 메시지를 브로드캐스트하는 단계; 및
    상기 제1브로드캐스트 시퀀스 넘버를 고유하게 식별하는 제2브로드캐스트 시퀀스 넘버를 갖는 브로드캐스트 메시지 바로 다음에 유니캐스트 메시지를 송신하는 단계를 더 포함하는, 방법.
  14. 제13항에 있어서,
    다음 브로드캐스트가 송신될 때까지 제2브로드캐스트 시퀀스 넘버를 갖는 하나 이상의 다음 유니캐스트 메시지를 송신하는 단계를 더 포함하는, 방법.
  15. 네트워크에서 소켓 그룹 내의 수신기 소켓을 포함하는 노드로서, 상기 노드는 소켓 그룹 내의 소켓들과 통신하기 위해 흐름 제어를 수행하도록 구성되며,
    상기 노드는:
    상기 노드의 수신기 소켓이,
    상기 소켓 그룹에 조인(join)하는 각각의 송신기 소켓에 메시지 사이즈 제한으로서 최소 윈도우를 통지하고;
    조인된 송신기 소켓으로부터 메시지를 수신하고;
    상기 메시지를 수신함에 따라서, 액티브 송신기 소켓의 수가 임계치보다 적은 것을 결정하며;
    상기 결정에 응답해서, 상기 메시지 사이즈 제한을 증가시키기 위해 상기 조인된 송신기 소켓에 최대 윈도우를 통지하게 하도록 구성된, 회로를 포함하며,
    상기 최소 윈도우는 상기 최대 윈도우의 일부인, 노드.
  16. 제15항에 있어서,
    상기 회로는 프로세서, 상기 프로세서와 모두 결합된 메모리 및 인터페이스를 포함하며, 상기 메모리는 실행될 때 상기 프로세서가 최소 윈도우를 통지하고, 메시지를 수신하며, 상기 최대 윈도우를 통지하는 동작들을 수행하게 하는 명령들을 포함하는, 노드.
  17. 제15항에 있어서,
    상기 회로는 노드의 수신기 소켓이:
    메시지를 수신할 때 송신기 소켓이 조인된 상태에서 액티브 상태로 전이하고;
    상기 액티브 상태의 총 소켓 수가 허용 가능한 액티브 소켓 수로부터 임계치 내에 있으면, 상기 액티브 상태의 선택된 소켓으로부터 캐패시티를 리클레이밍하게 하도록 더 구성되는, 노드.
  18. 제17항에 있어서,
    선택된 액티브 소켓은 액티브 상태의 소켓들 중에서 최소 액티브 소켓인, 노드.
  19. 제15항에 있어서,
    상기 회로는 노드의 수신기 소켓이:
    액티브 상태의 총 소켓 수가 허용 가능한 액티브 소켓 수와 동일할 때 송신기 소켓을 조인된 상태에서 펜딩 상태로 전이하게 하도록 더 구성되는, 노드.
  20. 제19항에 있어서,
    상기 회로는 노드의 수신기 소켓이:
    액티브 상태의 소켓들 중에서 최소 액티브 소켓으로부터 캐패시티를 리클레이밍하고;
    상기 최소 액티브 소켓으로부터 리클레이밍된 캐패시티를 수신함에 따라 송신기 소켓을 펜딩 상태에서 액티브 상태로 전이하게 하도록 더 구성되는, 노드.
  21. 제18항 또는 제20항에 있어서,
    상기 회로는 노드의 수신기 소켓이:
    최소 액티브 소켓의 메시지 사이즈 제한을 최소 윈도우로 감소시킴으로써 최소 액티브 소켓으로부터 캐패시티를 리클레이밍하게 하도록 더 구성되는, 노드.
  22. 제15항 내지 제20항 중 어느 한 항에 있어서,
    그룹의 피어 멤버들에 수신기 소켓에 의해 제공된 조합된 총 캐패시티는 그룹의 액티브 소켓의 수를 곱한 최대 윈도우 및 그룹의 비-액티브 소켓의 수를 곱한 최소 윈도우의 합인, 노드.
  23. 제22항에 있어서,
    회로는 노드의 수신기 소켓이:
    송신기 소켓으로부터 메시지를 수신한 후 통지된 윈도우를 업데이트하고;
    상기 통지된 윈도우가 미리 결정된 한계 미만인 경우, 상기 송신기 소켓에 제공된 이용 가능한 캐패시티를 상기 최대 윈도우로 보충하게 하도록 더 구성되며,
    상기 통지된 윈도우는 상기 송신기 소켓에 제공된 이용 가능한 캐패시티의 트랙을 유지하는, 노드.
  24. 제15항 내지 제20항 중 어느 한 항에 있어서,
    수신기 소켓은 상기 수신기 소켓의 로드 레벨에 적어도 부분적으로 기초하여 동일한 멤버 식별자와 연관된 소켓들의 서브세트로부터 애니캐스트 메시지의 수신자로서 선택되는, 노드.
  25. 네트워크에서 소켓 그룹 내의 송신기 소켓을 포함하는 노드로서, 상기 노드는 소켓 그룹 내의 소켓들과 통신하기 위해 시퀀스 제어를 수행하도록 구성되며,
    상기 노드는:
    상기 노드의 송신기 소켓이,
    유니캐스트에 의해 제1메시지를 피어 멤버 소켓으로 송신하고;
    상기 제1메시지 바로 다음에 오는 상기 송신기 소켓으로부터의 제2메시지가 브로드캐스트에 의해 송신되는 것을 검출하고;
    복제된 유니캐스트에 의해 상기 제2메시지를 송신하게 하도록 구성된, 회로를 포함하며,
    상기 제2메시지는 모든 목적지 노드에 대해 복제되고, 각각의 복제된 제2메시지는 유니캐스트에 의해 송신되며, 상기 제1메시지 및 제2메시지는 올바른 순서(right order)로 수신되는, 노드.
  26. 제25항에 있어서,
    상기 회로는 프로세서, 상기 프로세서와 모두 결합된 메모리 및 인터페이스를 포함하며, 상기 메모리는 실행될 때 상기 프로세서가 제1메시지를 송신하고, 검출하고, 제2메시지를 송신하는 동작들을 수행하게 하는 명령들을 포함하는, 노드.
  27. 제25항에 있어서,
    상기 회로는 노드의 송신기 소켓이:
    모든 목적지 노드가 복제된 유니캐스트의 수신을 확인 응답할 때까지 다음 브로드캐스트 메시지를 차단하게 하도록 더 구성되는, 노드.
  28. 제25항 내지 제27항 중 어느 한 항에 있어서,
    회로는:
    모든 목적지 노드로부터 확인 응답을 수신한 후, 그룹 내의 목적지 노드의 수 대 그 목적지 노드가 위치한 클러스터의 사이즈에 기초하여 브로드캐스트 또는 복제된 유니캐스트에 의해 다음 브로드캐스트 메시지를 송신할지의 여부를 결정하도록 더 구성되는, 노드.
  29. 제25항에 있어서,
    상기 회로는 노드의 송신기 소켓이:
    제1브로드캐스트 시퀀스 넘버를 갖는 그룹에서의 메시지를 브로드캐스트하고;
    상기 제1브로드캐스트 시퀀스 넘버를 고유하게 식별하는 제2브로드캐스트 시퀀스 넘버를 갖는 브로드캐스트 메시지 바로 다음에 유니캐스트 메시지를 송신하게 하도록 더 구성되는, 노드.
  30. 제29항에 있어서,
    다음 브로드캐스트가 송신될 때까지 노드의 송신기 소켓이 제2브로드캐스트 시퀀스 넘버를 갖는 하나 이상의 다음 유니캐스트 메시지를 송신하게 하도록 더 구성되는, 노드.
  31. 네트워크에서 소켓 그룹 내의 수신기 소켓을 포함하는 노드로서, 상기 노드는 소켓 그룹 내의 소켓들과 통신하기 위해 흐름 제어를 수행하도록 구성되며, 상기 노드는:
    상기 소켓 그룹에 조인(join)하는 각각의 송신기 소켓에 메시지 사이즈 제한으로서 최소 윈도우를 통지하도록 구성된 흐름 제어 모듈; 및
    조인된 송신기 소켓으로부터 메시지를 수신하도록 구성된 입/출력 모듈을 포함하며,
    흐름 제어 모듈은, 상기 메시지를 수신함에 따라서, 액티브 송신기 소켓의 수가 임계치보다 적은 것을 결정하고, 상기 결정에 응답해서, 상기 메시지 사이즈 제한을 증가시키기 위해 상기 조인된 송신기 소켓에 최대 윈도우를 통지하도록 더 구성되며, 상기 최소 윈도우는 최대 윈도우의 일부인, 노드.
  32. 네트워크에서 소켓 그룹 내의 송신기 소켓을 포함하는 노드로서, 상기 노드는 소켓 그룹 내의 소켓들과 통신하기 위해 시퀀스 제어를 수행하도록 구성되며, 상기 노드는:
    유니캐스트에 의해 제1메시지를 송신기 소켓으로부터 피어 멤버 소켓으로 송신하도록 구성된 입/출력 모듈; 및
    상기 유니캐스트에 의해 송신기 소켓으로부터 송신된 상기 제1메시지가 바로 앞에 오는 제2메시지가 브로드캐스트에 의해 송신되는 것을 검출하도록 구성된 시퀀스 제어 모듈을 포함하며,
    상기 입/출력 모듈은 복제된 유니캐스트에 의해 상기 제2메시지를 송신하도록 더 구성되고, 상기 제2메시지는 모든 목적지 노드에 대해 복제되고, 각각의 복제된 제2메시지는 유니캐스트에 의해 송신되며, 상기 제1메시지 및 제2메시지는 올바른 순서(right order)로 수신되는, 노드.
  33. 소켓 그룹에 대한 흐름 제어를 제공하기 위해 네트워크에서 소켓 그룹 내의 수신기 소켓에 의해 수행된 방법으로서, 상기 방법은:
    노드 인스턴스(node instance)를 실행하기 위한 처리 회로 및 메모리를 제공하는 클라우드 컴퓨팅 환경에서 노드 인스턴스의 인스턴스화(instantiation)를 개시하는 단계를 포함하며,
    상기 노드 인스턴스는:
    상기 소켓 그룹에 조인(join)하는 각각의 송신기 소켓에 메시지 사이즈 제한으로서 최소 윈도우를 통지하고;
    조인된 송신기 소켓으로부터 메시지를 수신하고;
    상기 메시지를 수신함에 따라서, 액티브 송신기 소켓의 수가 임계치보다 적은 것을 결정하며; 및
    상기 결정에 응답해서, 상기 메시지 사이즈 제한을 증가시키기 위해 상기 조인된 송신기 소켓에 최대 윈도우를 통지하도록 동작하며,
    상기 최소 윈도우는 상기 최대 윈도우의 일부인, 방법.
  34. 소켓 그룹에 대한 시퀀스 제어를 제공하기 위해 네트워크에서 소켓 그룹 내의 송신기 소켓에 의해 수행된 방법으로서, 상기 방법은:
    노드 인스턴스를 실행하기 위한 처리 회로 및 메모리를 제공하는 클라우드 컴퓨팅 환경에서 노드 인스턴스의 인스턴스화를 개시하는 단계를 포함하며,
    상기 노드 인스턴스는:
    유니캐스트에 의해 제1메시지를 송신기 소켓으로부터 피어 멤버 소켓으로 송신하고;
    상기 제1메시지 바로 다음에 오는 상기 송신기 소켓으로부터의 제2메시지가 브로드캐스트에 의해 송신되는 것을 검출하고;
    복제된 유니캐스트에 의해 상기 제2메시지를 송신하도록 동작되며,
    상기 제2메시지는 모든 목적지 노드에 대해 복제되고, 각각의 복제된 제2메시지는 유니캐스트에 의해 송신되며, 상기 제1메시지 및 제2메시지는 올바른 순서(right order)로 수신되는, 방법.
KR1020197038134A 2017-06-08 2017-06-08 네트워크에서 소켓의 그룹에 대한 조정된 흐름 제어를 제공하기 위한 방법 및 네트워크 노드 KR102294684B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/IB2017/053394 WO2018224865A1 (en) 2017-06-08 2017-06-08 Methods and network nodes for providing coordinated flowcontrol for a group of sockets in a network

Publications (2)

Publication Number Publication Date
KR20200011967A KR20200011967A (ko) 2020-02-04
KR102294684B1 true KR102294684B1 (ko) 2021-08-26

Family

ID=59078131

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197038134A KR102294684B1 (ko) 2017-06-08 2017-06-08 네트워크에서 소켓의 그룹에 대한 조정된 흐름 제어를 제공하기 위한 방법 및 네트워크 노드

Country Status (5)

Country Link
US (1) US20200213144A1 (ko)
EP (1) EP3635923A1 (ko)
KR (1) KR102294684B1 (ko)
CN (1) CN110720199A (ko)
WO (1) WO2018224865A1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11106554B2 (en) 2019-04-30 2021-08-31 JFrog, Ltd. Active-active environment control
US11340894B2 (en) 2019-04-30 2022-05-24 JFrog, Ltd. Data file partition and replication
US11386233B2 (en) 2019-04-30 2022-07-12 JFrog, Ltd. Data bundle generation and deployment
US11886390B2 (en) 2019-04-30 2024-01-30 JFrog Ltd. Data file partition and replication
WO2021014326A2 (en) 2019-07-19 2021-01-28 JFrog Ltd. Software release verification
US11695829B2 (en) * 2020-01-09 2023-07-04 JFrog Ltd. Peer-to-peer (P2P) downloading
CN111352746B (zh) * 2020-02-10 2023-07-07 福建天泉教育科技有限公司 消息限流方法、存储介质
CN114629855A (zh) * 2020-12-14 2022-06-14 中国移动通信有限公司研究院 信息传输方法、装置、相关设备及存储介质
US11323309B1 (en) * 2021-01-14 2022-05-03 Juniper Networks, Inc. Asynchronous socket replication between nodes of a network
CN114928660B (zh) * 2022-05-16 2023-10-31 北京计算机技术及应用研究所 一种嵌入式操作系统透明进程间通信的方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070153789A1 (en) * 2006-01-03 2007-07-05 Barker Charles R Jr Apparatus and method for multicasting data in a communication network

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6829662B2 (en) * 2001-06-27 2004-12-07 International Business Machines Corporation Dynamically optimizing the tuning of sockets across indeterminate environments
US7069326B1 (en) * 2002-09-27 2006-06-27 Danger, Inc. System and method for efficiently managing data transports
CN104782081B (zh) * 2013-01-27 2019-12-03 慧与发展有限责任合伙企业 用于转移套接字状态的系统以及用于迁移tcp连接的方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070153789A1 (en) * 2006-01-03 2007-07-05 Barker Charles R Jr Apparatus and method for multicasting data in a communication network

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
’Linux TIPC 1.7 Programmer’s Guide’, pp.1-32, 2010.04.*
’Using P2P overlays to provide QoS in service-oriented wireless network’, IEEE Wireless Comm. pp.32-38, 2009.08.*

Also Published As

Publication number Publication date
US20200213144A1 (en) 2020-07-02
KR20200011967A (ko) 2020-02-04
CN110720199A (zh) 2020-01-21
WO2018224865A1 (en) 2018-12-13
EP3635923A1 (en) 2020-04-15

Similar Documents

Publication Publication Date Title
KR102294684B1 (ko) 네트워크에서 소켓의 그룹에 대한 조정된 흐름 제어를 제공하기 위한 방법 및 네트워크 노드
US10284389B2 (en) High availability for distributed network services in an extended bridge
US9838297B2 (en) System and method for message routing in a network
US7627627B2 (en) Controlling command message flow in a network
US7065059B1 (en) Technique for restoring adjacencies in OSPF in a non-stop forwarding intermediate node of a computer network
US20230179652A1 (en) Distributed resilient load-balancing for multipath transport protocols
US11889330B2 (en) Methods and related devices for implementing disaster recovery
CN1849783A (zh) 用于实现边界网关协议(bgp)的分布式软件体系结构
CN109587822B (zh) 信息发送控制方法、信息接收控制方法、装置、存储介质
US10462048B2 (en) Virtual cluster establishment method and network device
US8161147B2 (en) Method of organising servers
CN102984174A (zh) 一种发布订阅系统中可靠性保障方法及系统
US7440458B2 (en) System for determining network route quality using sequence numbers
US10608869B2 (en) Handling control-plane connectivity loss in virtualized computing environments
CN112217735A (zh) 信息同步方法与负载均衡系统
US7466699B2 (en) System for communicating between network end-points using a payload offset and buffer pool handle
CN112751766A (zh) 报文转发方法、装置及计算机存储介质
US9461929B2 (en) Handling large frames in a virtualized fibre channel over ethernet (FCoE) data forwarder
CN108737265B (zh) 软件定义的无线网络系统及其管理方法
CN108924066B (zh) 报文转发方法和装置
WO2020063251A1 (zh) 一种通信方法及相关设备
WO2020177471A1 (zh) 报文传输方法、装置及存储介质
CN118337792A (zh) 一种p2mp数据的可靠传输方法及装置
US20220360465A1 (en) Ultra-low latency atomic multicast
CN113051027A (zh) 一种云管理系统的虚拟机流表信息发送方法及装置

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