KR20220080271A - 네임 기반 인-네트워크 분산 컴퓨팅 시스템에서 함수 실행 결과를 반환하기 위한 방법 및 장치 - Google Patents

네임 기반 인-네트워크 분산 컴퓨팅 시스템에서 함수 실행 결과를 반환하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR20220080271A
KR20220080271A KR1020200169195A KR20200169195A KR20220080271A KR 20220080271 A KR20220080271 A KR 20220080271A KR 1020200169195 A KR1020200169195 A KR 1020200169195A KR 20200169195 A KR20200169195 A KR 20200169195A KR 20220080271 A KR20220080271 A KR 20220080271A
Authority
KR
South Korea
Prior art keywords
function
execution
execution result
information
packet
Prior art date
Application number
KR1020200169195A
Other languages
English (en)
Inventor
강세훈
신지수
고남석
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1020200169195A priority Critical patent/KR20220080271A/ko
Priority to US17/508,875 priority patent/US20220182334A1/en
Publication of KR20220080271A publication Critical patent/KR20220080271A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/82Miscellaneous aspects
    • H04L47/829Topology based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • G06F9/3881Arrangements for communication of instructions and data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/44Distributed routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/78Architectures of resource allocation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/80Actions related to the user profile or the type of traffic
    • H04L47/803Application aware

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

본 발명은 네임 기반 인-네트워크(name-based in-network) 분산 컴퓨팅 시스템에서 함수의 실행 결과를 반환하기 위한 것으로, 클라이언트 장치의 동작 방법은, 함수의 실행을 요청하는 제1 패킷을 제1 노드에게 송신하는 단계, 상기 함수의 실행 결과를 요청하는 제2 패킷을 제2 노드에게 송신하는 단계, 및 상기 제2 패킷을 송신한 후, 상기 함수의 실행 결과를 포함하는 제3 패킷을 상기 제2 노드로부터 수신하는 단계를 포함할 수 있다.

Description

네임 기반 인-네트워크 분산 컴퓨팅 시스템에서 함수 실행 결과를 반환하기 위한 방법 및 장치{METHOD AND APPARATUS FOR RETURNING EXECUTION RESULT OF FUNCTION IN NAME-BASED IN-NETWORK DISTRIBUTED COMPUTING SYSTEM}
본 발명은 네임 기반 인-네트워크(name-based in-network) 분산 컴퓨팅 시스템에 관한 것으로, 구체적으로, 네임 기반 인-네트워크 분산 컴퓨팅 시스템에서 함수의 실행 결과를 반환하는 장치 및 방법에 관한 것이다.
최근의 인터넷 응용은 대규모 컨텐츠의 생산과 전달 중심으로 변화함에 따라 기존의 호스트 기반의 점대점(Point-to-Point) 형태의 통신 메카니즘에서 벗어서 데이터 그 자체에 초점을 맞춘 정보 중심 네트워킹(Information Centric Networking, ICN) 개념이 등장하였다. ICN 기술에 따르면, 모든 데이터에 네임을 부여하고 사용자는 원하는 데이터의 네임을 명시하여 네트워크에 요청하고 네트워크는 그 네임에 매칭되는 데이터를 찾아 사용자에게 전달하게 된다. ICN의 대표적 프로젝트로 CCN(Content Centric Networking), NDN(Named Data Networking) 등이 있다.
본 발명은 네임 기반 인-네트워크(name-based in-network) 분산 컴퓨팅 시스템에서 함수 실행 결과를 보다 효과적으로 반환하기 위한 방법 및 장치를 제공할 수 있다.
본 발명은 네임 기반 인-네트워크 분산 컴퓨팅 시스템에서 서로 다른 독립된 로직을 이용하여 함수의 실행 및 결과 반환을 수행하기 위한 방법 및 장치를 제공할 수 있다.
본 발명은 네임 기반 인-네트워크 분산 컴퓨팅 시스템에서 함수의 실행 결과에 대한 반환 방식에 의존하지 않고 실행 코드를 개발할 수 있도록 설계된 환경에서 함수를 실행하고, 실행 결과를 반환하기 위한 방법 및 장치를 제공할 수 있다.
본 발명의 일 실시 예에 따르면, 네임 기반 인-네트워크(name-based in-network) 분산 컴퓨팅 시스템에서 클라이언트 장치의 동작 방법은, 함수의 실행을 요청하는 제1 패킷을 제1 노드에게 송신하는 단계, 상기 함수의 실행 결과를 요청하는 제2 패킷을 제2 노드에게 송신하는 단계, 및 상기 제2 패킷을 송신한 후, 상기 함수의 실행 결과를 포함하는 제3 패킷을 상기 제2 노드로부터 수신하는 단계를 포함할 수 있다.
여기서, 상기 제1 패킷은, 상기 함수를 지정하는 정보, 상기 함수의 실행을 위한 적어도 하나의 입력 변수에 대한 정보, 상기 함수의 실행 결과를 식별하기 위한 정보 중 적어도 하나를 포함할 수 있다.
본 발명의 일 실시 예에 따르면, 상기 방법은, 상기 제1 노드로부터, 상기 함수의 실행을 위해 생성된 인스턴스에 대한 정보를 포함하는 제4 패킷을 수신하는 단계를 더 포함할 수 있다.
본 발명의 일 실시 예에 따르면, 상기 제1 노드는, 인-네트워크 컴퓨팅을 위한 자원을 가진 장치를 포함하고, 상기 제2 노드는, 상기 함수의 실행 결과를 저장 및 제공하기 위한 저장 수단을 가진 장치를 포함할 수 있다.
본 발명의 일 실시 예에 따르면, 상기 방법은 복수의 후보 모드들 중 상기 함수의 동작 모드를 결정하는 단계를 더 포함할 수 있다. 상기 복수의 후보 모드들은, 상기 함수를 실행하는 노드로부터 상기 실행 결과를 획득하는 제1 모드 및 상기 함수를 실행하는 노드와 다른 노드로부터 상기 실행 결과를 획득하는 제2 모드를 포함할 수 있다.
본 발명의 일 실시 예에 따르면, 상기 함수의 실행 결과를 식별하기 위한 정보는, 상기 실행 결과를 제공하는 노드에서 사용될 키(key) 값을 포함할 수 있다.
본 발명의 일 실시 예에 따르면, 상기 함수의 실행을 위한 적어도 하나의 입력 변수에 대한 정보는, 다른 함수의 실행 결과를 식별하기 위한 정보를 포함할 수 있다.
본 발명의 일 실시 예에 따르면, 상기 방법은, 상기 함수의 호출을 위한 FCH(function call handler)를 생성하는 단계, 및 상기 함수의 실행 결과를 획득하기 위한 GRH(get result handler)를 생성하는 단계를 더 포함할 수 있다.
여기서, 상기 FCH는, 상기 제1 패킷을 이용하여 상기 함수의 실행을 요청한 후 삭제되고, 상기 GRH는, 상기 제3 패킷을 이용하여 상기 함수의 실행 결과를 획득한 후 삭제될 수 있다.
본 발명의 일 실시 예에 따르면, 상기 방법은 상기 FCH를 이용하여, 상기 함수의 실행 결과와 매칭될 키 값을 결정하는 단계를 더 포함할 수 있다.
본 발명의 일 실시 예에 따르면, 상기 제2 패킷은, 상기 함수의 실행 결과를 식별하기 위한 정보를 포함할 수 있다.
본 발명의 일 실시 예에 따르면, 상기 방법은, 상기 함수의 실행 결과를 식별하기 위한 정보를 포함하는 상기 제6 패킷을 수신하는 단계를 더 포함할 수 있다.
본 발명의 일 실시 예에 따르면, 네임 기반 인-네트워크(name-based in-network) 분산 컴퓨팅 시스템에서 인-네트워크 컴퓨팅 서버의 동작 방법은, 클라이언트 장치로부터 함수의 실행을 요청하는 제1 패킷을 수신하는 단계, 상기 함수를 실행하는 단계, 및 상기 함수의 실행 결과의 저장을 요청하는 제2 패킷을 저장 노드에게 송신하는 단계를 포함할 수 있다.
여기서, 상기 제1 패킷은, 상기 함수를 지정하는 정보, 상기 함수의 실행을 위한 적어도 하나의 입력 변수에 대한 정보, 상기 함수의 실행 결과를 식별하기 위한 정보 중 적어도 하나를 포함할 수 있다.
본 발명의 일 실시 예에 따르면, 상기 방법은, 상기 함수의 실행을 위해 생성된 인스턴스에 대한 정보를 포함하는 제3 패킷을 상기 클라이언트 장치에게 송신하는 단계를 더 포함할 수 있다.
본 발명의 일 실시 예에 따르면, 상기 제2 패킷은, 상기 실행 결과 및 상기 함수의 실행 결과를 식별하기 위한 정보를 포함할 수 있다.
본 발명의 일 실시 예에 따르면, 상기 함수의 실행 결과를 식별하기 위한 정보는, 상기 저장 노드에서 사용될 키(key) 값을 포함할 수 있다.
본 발명의 일 실시 예에 따르면, 상기 함수를 실행하는 단계는, 상기 함수를 실행하기 위한 컴퓨팅 자원을 할당하는 단계, 상기 컴퓨팅 자원을 이용하여 상기 함수를 실행하는 단계, 및 상기 실행 결과가 상기 저장 노드에 저장됨이 확인되면, 상기 컴퓨팅 자원을 반환하는 단계를 포함할 수 있다.
본 발명의 일 실시 예에 따르면, 상기 함수를 실행하는 단계는, 상기 함수를 실행하기 위한 개체(instance)를 생성하는 단계를 포함할 수 있다. 상기 개체는, 상기 함수의 연산 로직, 상기 연산 로직을 실행하는 함수 핸들러(function handler), 상기 실행 결과의 반환을 처리하는 결과 핸들러(result handler)를 포함할 수 있다.
본 발명의 일 실시 예에 따르면, 상기 함수의 실행을 위한 적어도 하나의 입력 변수에 대한 정보는, 다른 함수의 실행 결과를 식별하기 위한 정보를 포함할 수 있다.
본 발명의 일 실시 예에 따르면, 상기 함수를 실행하는 단계는, 상기 다른 함수의 실행 결과를 식별하기 위한 정보를 이용하여 상기 저장 노드로부터 상기 다른 함수의 실행 결과를 포함하는 데이터를 획득하는 단계, 및 상기 데이터를 이용하여 상기 함수를 실행하는 단계를 포함할 수 있다.
본 발명의 일 실시 예에 따르면, 네임 기반 인-네트워크(name-based in-network) 분산 컴퓨팅 시스템에서 클라이언트 장치는, 정보를 송수신하는 송수신부, 상기 송수신부를 제어하는 프로세서를 포함한다. 상기 프로세서는, 함수의 실행을 요청하는 제1 패킷을 제1 노드에게 송신하고, 상기 함수의 실행 결과를 요청하는 제2 패킷을 제2 노드에게 송신하고, 상기 제2 패킷을 송신한 후, 상기 함수의 실행 결과를 포함하는 제3 패킷을 상기 제2 노드로부터 수신하도록 제어할 수 있다. 여기서, 상기 제1 패킷은, 상기 함수를 지정하는 정보, 상기 함수의 실행을 위한 적어도 하나의 입력 변수에 대한 정보, 상기 함수의 실행 결과를 식별하기 위한 정보 중 적어도 하나를 포함할 수 있다.
본 발명의 일 실시 예에 따르면, 네임 기반 인-네트워크(name-based in-network) 분산 컴퓨팅 시스템에서 인-네트워크 컴퓨팅 서버는, 정보를 송수신하는 송수신부, 상기 송수신부를 제어하는 프로세서를 포함한다. 상기 프로세서는, 클라이언트 장치로부터 함수의 실행을 요청하는 제1 패킷을 수신하고, 상기 함수를 실행하고, 상기 함수의 실행 결과의 저장을 요청하는 제2 패킷을 저장 노드에게 송신하도록 제어할 수 있다. 여기서, 상기 제1 패킷은, 상기 함수를 지정하는 정보, 상기 함수의 실행을 위한 적어도 하나의 입력 변수에 대한 정보, 상기 함수의 실행 결과를 식별하기 위한 정보 중 적어도 하나를 포함할 수 있다.
본 발명에 따르면, 네임 기반 인-네트워크(name-based in-network) 분산 컴퓨팅 시스템에서 함수의 실행 및 결과 반환을 위한 컴퓨팅 자원의 사용 효율이 증가하고, 함수의 연산 결과를 반환하기 위한 실행 코드의 개발 부담이 감소될 수 있다.
본 개시에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 일 실시 예에 따른 네임 기반 인-네트워크(name-based in-network) 분산 컴퓨팅 시스템을 나타낸 도면이다.
도 2는 본 발명의 일 실시 예에 따른 장치의 구성을 나타낸 도면이다.
도 3은 본 발명의 일 실시 예에 따른 네임 기반 인-네트워크 분산 컴퓨팅 시스템에서 함수 호출 절차를 나타낸 도면이다.
도 4a 및 도 4b는 함수 호출을 위한 프로그램 코드의 예들을 나타낸 도면이다.
도 5는 본 발명의 일 실시 예에 따른 네임 기반 인-네트워크 분산 컴퓨팅 시스템에서 인-네트워크 컴퓨팅 함수 호출 절차를 나타낸 도면이다.
도 6a 및 도 6b는 인-네트워크 컴퓨팅 함수 실행 개체의 예들을 나타낸 도면이다.
도 7은 본 발명의 일 실시 예에 따른 네임 기반 인-네트워크 분산 컴퓨팅 시스템에서 인-네트워크 컴퓨팅 함수 래퍼(wrapper)를 이용한 함수 호출 절차를 나타낸 도면이다.
도 8은 본 발명의 일 실시 예에 따른 네임 기반 인-네트워크 분산 컴퓨팅 시스템에서 함수 실행의 결과가 다른 함수의 입력으로 전달되는 경우의 함수 호출 절차를 나타낸 도면이다.
도 9는 본 발명의 일 실시 예에 따른 네임 기반 인-네트워크 분산 컴퓨팅 시스템에서 클라이언트의 동작 절차를 나타낸 도면이다.
도 10은 본 발명의 일 실시 예에 따른 네임 기반 인-네트워크 분산 컴퓨팅 시스템에서 인-네트워크 컴퓨팅 서버의 동작 절차를 나타낸 도면이다.
이하에서는 첨부한 도면을 참고로 하여 본 개시의 실시 예에 대하여 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나, 본 개시는 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다.
본 개시의 실시 예를 설명함에 있어서 공지 구성 또는 기능에 대한 구체적인 설명이 본 개시의 요지를 흐릴 수 있다고 판단되는 경우에는 그에 대한 상세한 설명은 생략한다. 그리고, 도면에서 본 개시에 대한 설명과 관계없는 부분은 생략하였으며, 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
본 개시에 있어서, 어떤 구성요소가 다른 구성요소와 "연결", "결합" 또는 "접속"되어 있다고 할 때, 이는 직접적인 연결관계뿐만 아니라, 그 중간에 또 다른 구성요소가 존재하는 간접적인 연결관계도 포함할 수 있다. 또한 어떤 구성요소가 다른 구성요소를 "포함한다" 또는 "가진다"고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 배제하는 것이 아니라 또 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
본 개시에 있어서, 제1, 제2 등의 용어는 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용되며, 특별히 언급되지 않는 한 구성요소들간의 순서 또는 중요도 등을 한정하지 않는다. 따라서, 본 개시의 범위 내에서 일 실시 예에서의 제1 구성요소는 다른 실시 예에서 제2 구성요소라고 칭할 수도 있고, 마찬가지로 일 실시 예에서의 제2 구성요소를 다른 실시 예에서 제1 구성요소라고 칭할 수도 있다.
본 개시에 있어서, 서로 구별되는 구성요소들은 각각의 특징을 명확하게 설명하기 위함이며, 구성요소들이 반드시 분리되는 것을 의미하지는 않는다. 즉, 복수의 구성요소가 통합되어 하나의 하드웨어 또는 소프트웨어 단위로 이루어질 수도 있고, 하나의 구성요소가 분산되어 복수의 하드웨어 또는 소프트웨어 단위로 이루어질 수도 있다. 따라서, 별도로 언급하지 않더라도 이와 같이 통합된 또는 분산된 실시 예도 본 개시의 범위에 포함된다.
본 개시에 있어서, 다양한 실시 예에서 설명하는 구성요소들이 반드시 필수적인 구성요소들을 의미하는 것은 아니며, 일부는 선택적인 구성요소일 수 있다. 따라서, 일 실시 예에서 설명하는 구성요소들의 부분집합으로 구성되는 실시 예도 본 개시의 범위에 포함된다. 또한, 다양한 실시 예에서 설명하는 구성요소들에 추가적으로 다른 구성요소를 포함하는 실시 예도 본 개시의 범위에 포함된다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 참조하면 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 제시되는 실시 예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이다.
이하 본 발명은 네임 기반 인-네트워크(name-based in-network) 분산 컴퓨팅 시스템에서 함수의 실행 결과를 반환하는 장치 및 방법에 관한 것이다. 구체적으로, 본 발명은 네임 기반 네트워크 환경에서 사용자 장치에 위치한 응용 프로그램이 일부 컴퓨팅 연산을 네트워크 인프라에서 제공하는 컴퓨팅 자원을 이용하여 분산 수행할 수 있도록 지원하는 인-네트워크 컴퓨팅(in-network computing, 이하 'INC'라 칭함) 기술에 관한 것으로서, 네임 기반으로 명세된 사용자 응용의 연산 처리 요청들을 전달 받아 네트워크의 적정한 위치에서 분산 컴퓨팅 작업을 수행한 후 그 결과를 사용자 응용에 반환하는 방법 및 장치에 관한 것이다.
도 1은 본 발명의 일 실시 예에 따른 네임 기반 인-네트워크 분산 컴퓨팅 시스템을 나타낸 도면이다.
도 1을 참고하면, 네임 기반 인-네트워크 분산 컴퓨팅 시스템은 클라이언트(110), 데이터 소스(120), 네트워크(130)을 포함한다. 네트워크(130)는 복수의 노드들(130a 내지 130d)를 포함한다. 복수의 노드들(130a 내지 130d)은 동일 종류의 노드들이거나 서로 다른 종류의 노드들을 포함할 수 있다.
클라이언트(110)는 데이터 소스(120)에 저장된 컨텐츠를 요청하고, 수신할 수 있다. 컨텐츠에 대한 요청 및 컨텐츠를 포함하는 데이터는 네트워크(130)를 통해 전달된다. 이때, 도 1의 시스템은 NDN(Named Data Networking), INC를 지원할 수 있다.
NDN을 지원하는 경우, 노드들(130a 내지 130d) 중 적어도 하나는 NDN 라우터(router)일 수 있다. NDN에 따르면, 인터레스트(interest) 패킷과 데이터 패킷이 사용된다. 데이터 소비자(consumer)(예: 클라이언트(110))는 원하는 데이터 이름을 명시한 인터레스트 패킷을 네트워크(130)에 전송하고, NDN 라우터는 FIB(Forwarding Information Base)를 기반으로 인터레스트 패킷을 데이터 퍼블리셔(예: 데이터 소스(120))까지 전달한다. 인터레스트 패킷이 데이터 퍼블리셔에 도착하면 데이터 퍼블리셔는 인터레스트 패킷에 명시된 데이터를 포함하는 데이터 패킷을 데이터 소비자에게 전송한다. NDN 라우터는 자신이 전송한 데이터를 CS(Content Store)에 일정 시간 캐싱하는 기능을 제공한다. 인터레스트 패킷이 데이터 퍼블리셔에 포워딩되는 과정에서, NDN 라우터가 인터레스트 패킷에 명시된 이름에 매칭되는 데이터를 캐싱하고 있다면, 인터레스트 패킷을 더이상 포워딩 하지 않고, CS에 캐싱된 데이터를 포함하는 데이터 패킷을 반대 방향으로 전송한다.
INC를 지원하는 경우, 노드들(130a 내지 130d) 중 적어도 하나는 INC 서버 또는 INC 클러스터(cluster)일 수 있다. INC은 원하는 데이터를 명시하여 네트워크에 요청하는 수준을 넘어, 데이터에 대한 연산 기능까지 네트워크에 위탁하는 개념의 기술이다. INC 기술은 사용자 장치에 충분한 자원이 없을 때에도 필요한 연산 작업을 네트워크 인프라에 위탁함으로써 해당 연산 작업을 처리 가능케 한다. 또한, INC 기술을 활용하면, 네트워크에 존재하는 데이터에 대한 연산 결과만을 필요로 할 경우, 클라이언트(110)는 데이터 인접 위치에서 수행된 데이터에 대한 연산의 결과만을 수신함으로써, 네트워크 트래픽을 절감할 수 있는 장점이 있다.
도 2는 본 발명의 일 실시 예에 따른 장치의 구성을 나타낸 도면이다. 도 2는 도 1에 도시된 장치들(예: 클라이언트(110), 데이터 소스(120), 복수의 노드들(130a 내지 130d) 등) 각각의 구성을 예시한다.
도 2를 참고하면, 장치는 메모리(210), 프로세서(220), 송수신부(230)를 포함한다. 메모리(210)는 장치의 동작에 필요한 프로그램, 명령어, 그 밖에 관련 정보들을 저장할 수 있다. 프로세서(220)는 장치의 전반적인 동작을 제어한다. 송수신부(230)는 장치 외부로 데이터를 송신하거나, 외부로부터 데이터를 수신한다. 프로세서(220)는 장치가 후술하는 실시 예들에 따라 동작하도록 필요한 기능들을 수행할 수 있다.
NDN 네트워크에서 인-네트워크 분산 컴퓨팅을 지원하기 위해서는 사용자 노드에서 실행되는 메인 프로그램과 네트워크 인프라에서 동작하는 함수 실행 개체 간의 상호 참조가 원활이 지원되어야 한다. 또한, 하나의 함수 실행 개체에서 생성된 계산 결과가 다른 함수 실행 개체의 입력 데이터로 활용될 수도 있어야 한다. 하지만, 어떤 함수가 네트워크에서 실행되고 그 결과를 반환하기까지 걸리는 시간은 실행 환경 생성, 실행 코드 다운로드, 실행 코드의 상이한 복잡도 등으로 인해 가변적이기 때문에, INC 함수를 요청하는 프로그램(이하 'INC 요청자'라 칭함)과 함수 실행 개체 간에 실행 결과를 교환하기 위한 동기화 방법이 필요하다.
INC 요청자는 INC 함수를 호출하고, 그 결과가 필요할 때 해당 결과를 요청하여 활용할 수 있어야 한다. INC 요청자가 INC 함수를 요청하고 그 결과가 준비될 때까지 계속 기다리고 있거나, 반대로 함수 실행 개체 입장에서 이미 함수 실행이 끝나 결과가 준비되어 있는데 INC 요청자로부터 결과 요청이 확인되지 아니함으로 인해 계속 대기(waiting) 상태에 머물러 있어야 한다면, 컴퓨팅 자원 효율이 떨어지게 된다. 이러한 문제점은 함수 실행 개체가 점유하고 있는 자원이 큰 경우, 더더욱 문제가 될 것이다.
따라서, INC 요청자 및 함수 실행 개체 간 실행 결과를 효과적으로 공유하기 위한 방안이 필요하다. 사용자 노드에서 실행되는 메인 프로그램 입장에서 살펴보면, 필요에 따라 동기식 호출과 비동기식 호출이 선택적으로 사용될 수 있어야 한다. 또한, 함수 실행 개체 입장에서 살펴보면, 계산된 결과를 계속 유지하면서 기다리고 있을지 또는 네트워크 인프라에서 지원되는 저장소(repository)와 같은 서비스를 이용하여 계산 결과를 저장하고, 함수 실행을 종료하고, 컴퓨팅 자원을 반납할지가 동적으로 결정될 수 있어야 한다.
이를 위해, 함수의 계산 로직과 결과를 반환하는 방식은 분리될 필요가 있다. 이를 통해, 함수 개발자는 계산 로직 자체에 집중할 수 있으며, 계산 결과 전달 방식의 결정은 메인 프로그램에 독립적으로 결정할 수 있다. 따라서, 본 발명은 NDN 네트워크에서 인-네트워크 분산 컴퓨팅을 지원하기 위해 INC 함수 요청자와 함수 실행 개체 간 실행 결과를 공유하기 위한 오케스트레이션 방안을 제안한다. 제안되는 기술은 함수의 실행 로직과 결과 반환 방식을 분리함으로써 INC 함수에서의 지원 여부에 상관없이 메인 프로그램에서 실행 결과 공유 방법을 필요에 따라 독립적으로 선택할 수 있는 장점을 가진다.
도 3은 본 발명의 일 실시 예에 따른 네임 기반 인-네트워크 분산 컴퓨팅 시스템에서 함수 호출 절차를 나타낸 도면이다. 도 3은 NDN 기반 인-네트워크 컴퓨팅을 지원하는 인프라(이하 'INC 인프라'라 칭함)를 예시한다. INC 인프라는 NDN 네트워크와 INC 함수 실행을 위한 적어도 하나의 INC 클러스터(330a, 330b)를 포함하며, 하나의 INC 클러스터(330a)는 INC 관리를 위한 INC 서버(332a)와 컴퓨팅 자원(334a)으로 구성될 수 있다. 일반적으로, 컴퓨팅 자원(334a)은 하나 이상의 서버로 구성될 수 있다. 도 3을 참고하여 INC 인프라에서의 INC 함수 호출 과정을 설명하면 다음과 같다.
단계 1에서, 클라이언트(310) 노드는 동작 중인 응용 프로그램에서 호출하고자 하는 함수 이름(예: f_name)과 처리 대상 데이터(예: d_name) 정보를 포함하는 INC 인터레스트 패킷을 네트워크에 전송한다. 인터레스트 패킷은 가장 인접한 INC 서버인 INC 서버(332a)로 전달된다. 이때, 응용 프로그램은 함수 실행 위치를 결정하기 위한 위치 결정 정책이나 제한 조건 등을 인터레스트 패킷에 명시할 수 있다. 예를 들어, 위치 결정 정책은 데이터와의 인접성 우선, 클라이언트와의 인접성 우선 등으로 정의될 수 있으며, 제한 조건으로서 CPU, GPU, 메모리 등의 자원 할당 요구를 수용할 수 있는 위치 등이 정의될 수 있다. 본 실시 예에서, INC 인터레스트 포워딩을 위해, INC 인터레스트 패킷은 "/INC/"라는 특정 프리픽스로 시작하는 네임(예: /INC/f_name/d_name)을 갖는다. 모든 INC 서버는 "/INC" 네임과 자신의 네임을 네트워크에 광고(advertise)하며, 광고된 정보는 NDN 라우터들(320a, 320b)의 FIB에 등록된다.
클라이언트(310)로부터 INC 인터레스트 패킷을 수신한 제1 INC 클러스터(330a)의 INC 서버(332a)는 사용자의 위치 결정 정책과 제한 조건 등을 고려하여 요청된 함수를 실행할 최적의 클러스터를 선택한다. 본 실시 예에서, 제2 INC 클러스터(330b)가 선택된다. 이에 따라, 단계 2에서, INC 서버(332a)는 INC 인터레스트 패킷을 제2 INC 클러스터(330b)를 담당하는 INC 서버(332b)로 전달한다. NDN에서 지원하는 포워딩 힌트(Forwarding Hint)를 지정함으로써, 인터레스트 패킷은 인터레스트 네임 변경 없이 INC 서버들(322a, 322b) 간 전달될 수 있다.
단계 3에서, INC 인터레스트 패킷을 수신한 INC 서버(332b)는 자신이 관리하는 제2 INC 클러스터(330b) 내의 컴퓨팅 자원(334b)을 할당받고, 실행 환경(execution environment, EE)을 생성하고, 함수 실행 코드를 다운 및 실행함으로써 함수 실행 개체(function instance)를 생성한다. 이때, 생성되는 함수 실행 개체에 대하여, 클라이언트(310)로부터 접근 가능한 네임이 부여된다.
단계 4에서, INC 서버(330b)는 클라이언트(310)에게 데이터 패킷을 송신한다. 데이터 패킷은 함수 실행 개체의 네임(예: func_inst_name)을 포함한다. 즉, 함수 실행 개체의 네임은 INC 데이터 패킷에 포함됨으로써 클라이언트(310)의 응용 프로그램에게 전달된다. 함수 실행 개체의 네임은 추후 함수의 실행 결과를 요청하기 위해 사용된다.
단계 5에서, 클라이언트(310) 및 제2 INC 클러스터(330b)의 컴퓨팅 자원(334b)는 직접 통신(direct communication)을 수행한다. 이를 통해, 클라이언트(310)는 함수 실행의 결과를 획득할 수 있다. 이때, 함수 실행 개체의 네임(예: func_inst_name)이 사용된다. 구체적으로, 클라이언트(310)의 응용 프로그램은 수신된 함수 실행 개체의 네임을 포함하는 NDN 인터레스트 패킷을 보냄으로써 함수 실행 결과를 요청하고, 함수 실행 결과를 수신할 수 있다.
이때, NDN 응용 프로그램에서 사용되는 INC 함수 호출을 일반적인 함수 호출과 비교하여 보면 이하 도 4a 및 도 4b와 같다. 도 4a 및 도 4b는 함수 호출을 위한 프로그램 코드의 예들을 나타낸 도면이다. 도 4a 및 도 4b는 NDN 응용 프로그램에서 일반적인 함수 호출과 INC 함수 호출 사용법을 비교하기 위한 응용 프로그램의 예들을 나타낸다. 일반 함수 호출의 경우, 로컬 머신에서 연산이 바로 이뤄지기 때문에 함수 호출과 동시에 그 결과가 반환되고, 지정된 변수에 저장된다. 도 4a을 참고하면, (a-1) 라인(412)에서 함수 f1이 호출되고, 그 결과는 바로 변수 r에 저장된다. 반면, INC 함수 호출의 경우, 로컬 머신이 아니라 원격 머신에서 수행되어 결과가 반환되기 때문에, 함수의 실행 및 반환은 좀 더 많은 단계들을 거치게 된다. 도 4b를 참고하면, (b-1) 라인(422)에서 함수 f1이 INC함수로 호출되면, 도 3의 단계 1 내지 4와 유사한 절차에 따라 함수 f1 실행 개체의 네임이 변수 a에 저장된다. 이후, 함수의 실행 결과가 필요하면, (b-2) 라인(424)과 같이 변수 a에 저장된 실행 개체 네임을 이용하여 네트워크 인프라에 계산 결과를 요청하면, 변수 r에 계산 결과가 저장된다. INC 함수 호출은 일반 함수 호출보다 반환 값을 얻기까지 시간이 오래 걸리기 때문에, 일반적으로 비동기식 호출이 사용된다. 도 4b에서, INC 함수 f1의 실행 개체는 연산이 다 끝난 후라도 (b-2) 라인(424)이 호출될 때까지 계속 대기 상태이며, 결과 요청이 발생할 때까지 기다려야 한다. 이러한 대기 상태는 인프라의 컴퓨팅 자원을 불필요하게 점유하게 하고, 자원 효율성이 떨어지게 한다. 이러한 함수 실행 방식은 스탠드얼론 모드(standalone mode)라고 지칭된다.
도 5는 본 발명의 일 실시 예에 따른 네임 기반 인-네트워크 분산 컴퓨팅 시스템에서 인-네트워크 컴퓨팅 함수 호출 절차를 나타낸 도면이다. 도 5는 KVS(Key-Value Store) 서비스를 이용한 INC 함수 호출 절차를 예시한다. 도 5에서 KVS 노드(540)는 연산의 실행 결과를 저장하고, 이를 요청에 따라 제공하는 엔티티이다. 도 5에서, 클라이언트(510)가 실행하는 함수 f1_save_result는 공유되는 컴퓨팅 자원의 점유 시간을 최소화 하기 위해 연산이 끝나면 그 결과를 KVS 노드(540)에 저장하고, 함수 실행을 종료함으로써 컴퓨팅 자원을 반납하게 프로그래밍 되어있다.
도 5를 참고하면, 단계 1에서, 클라이언트(510)에서 실행되는 메인 프로그램은 함수 f1_save_result()를 사용하기 위해 먼저 결과 저장을 위해 사용할 KVS 키를 생성한 후, 생성된 KVS 키를 아규먼트에 추가해 함수를 호출한다. 구체적으로, 클라이언트(510)는 INC 클러스터(530)로 KVS 키, 입력 변수들(예: x, y)를 포함하는 인터레스트 패킷을 송신한다. 그리고, 단계 2에서, 클라이언트(510)는 INC 클러스터(530)로부터 함수 실행 개체의 네임(예: f1_inst_#n)을 포함하는 데이터 패킷을 수신한다. 본 실시 예에서, KVS 서비스 사용과 관련된 일체의 절차는 모두 사전에 완결됨이 가정된다.
클라이언트(510)에서 INC 함수 f1_save_result()가 호출되면, INP 클러스터(530)에 함수 실행 개체가 생성된다. 예를 들어, 도 3의 단계 1 내지 단계 3과 유사하게, 함수 실행 개체가 생성될 수 있다. 함수 f1_save_result()은 실행 결과를 KVS 노드(540)에 저장하고 종료하도록 프로그램되어 있기 때문에, 단계 3에서, INP 클러스터(530)는 키 값(예: KVS_Key#n) 및 실행 결과(예: r)를 포함하는 인터레스트 패킷을 KVS 노드(540)에게 송신함으로써 함수의 실행 결과를 저장할 것을 요청한다. 단계 4에서, KVS 노드(540)에 실행 결과(예: r)을 저장하였음을 알리는 ACK(acknowledge)을 INP 클러스터(530)에게 송신한다. 이어, 단계 5에서, INP 클러스터(530)는 함수 f1_save_result()를 종료하며, 함수 실행을 위해 할당된 컴퓨팅 자원을 반납한다. 이후, 단계 6에서, 클라이언트(510)는 함수 요청 시 사용된 KVS 키 값(예: KVS_Key#n)를 이용하여 함수의 실행 결과를 요청한다. 그리고, 단계 7에서, KVS 노드(540)은 KVS 키 값(예: KVS_Key#n)에 대응하는 실행 결과(예: r)을 검색하고, 실행 결과를 포함하는 데이터 패킷을 클라이언트(510)에게 송신한다. 본 발명에서, 도 5와 같은 함수 실행 방식은 'save_result mode'라 지칭될 수 있다.
도 4b에 예시된 함수 f1 및 도 5에 예시된 함수 f1_result_save의 연산 로직은 동일하지만, 실행 결과를 반환하는 방식에 차이가 있다. 함수 반환 방식은 INC 인프라 환경이나 클라이언트의 조건에 따라 동적으로 선택될 수 있다. 예를 들면, INC 인프라에서 KVS 서비스를 제공하지 않는다거나 또는 클라이언트 메인에서 KVS 서비스 이용 권한이 없는 경우, 도 5와 같은 KVS 서비스에 기반한 반환 동작은 불가능할 것이다. 이때, 함수 개발자 입장에서, 동일한 연산 로직을 가짐에도 불구하고 다양한 반환 방식을 수용하기 위해 여러 종류의 실행 코드를 개발해야 하는 것은 큰 부담이 될 수 있다.
도 5를 참고하여 설명한 실시 예에서, KVS 키는 클라이언트(510)에 의해 생성되고, INC 클러스터(530)로 전달된다. 여기서, 다른 실시 예에 따라, KVS 키는 클라이언트(510)가 아닌 INC 클러스터(530) 또는 KVS 노드(540)에 의해 생성될 수 있다.
KVS 키가 INC 클러스터(530)에 의해 생성되는 경우, INC 클러스터(530)는 함수 실행을 요청받은 후 KVS 키를 생성한다. 구체적으로, 클라이언트(510)로부터 함수 실행을 요청하는 인터레스트 패킷을 수신한 후, INC 클러스터(530)는 KVS 키를 생성하고, 단계 2에서 송신되는 데이터 패킷에 KVS 키를 포함시킬 수 있다. 이에 따라, 클라이언트(510)는 데이터 패킷을 통해 획득한 KVS 키를 이용하여 함수의 실행 결과를 요청할 수 있다.
KVS 키가 KVS 노드(540)에 의해 생성되는 경우, KVS 노드(540)는 함수의 t일행 결과의 저장을 요청받은 후 KVS 키를 생성한다. 구체적으로, INC 클러스터(530)로부터 함수의 실행 결과의 저장을 요청하는 인터레스트 패킷을 수신한 후, KVS 노드(540)는 KVS 키를 생성하고, 단계 4에서 송신되는 데이터 패킷에 KVS 키를 포함시킬 수 있다. 이후, INC 클러스터(530)는 KVS 키를 클라이언트(510)에게 전달하며, 이를 위해 추가적인 패킷이 송신되거나, 또는 단계 2가 단계 4 이후에 수행될 수 있다.
도 6a 및 도 6b는 인-네트워크 컴퓨팅 함수 실행 개체의 예들을 나타낸 도면이다. 도 6a는 도 3 또는 도 5를 참고하여 설명한 절차와 같이 함수 실행 코드(618) 내에 함수의 연산 로직과 실행 결과 반환 로직을 포함하는 함수 실행 개체를 예시한다. 반면, 도 6b는 함수 실행 코드(628)는 함수의 연산 로직에 해당하는 부분만을 포함하며, 함수의 실행 결과 반환 로직은 IFW(INC Function Wrapper)(622)의 결과 핸들러(Result Handler)(622b)에 포함된다. 도 3 또는 도 5를 참고하여 설명한 절차와 달리, 도 6b의 경우, INC 함수(628)는 IFW(622)의 함수 핸들러(Function Handler)(622a)에 의해 실행되고, 실행 결과에 대한 처리는 함수 호출 시 전달되는 실행 결과 반환 방식을 참조하여 결과 핸들러(622b)가 담당한다. 이 경우, 함수 개발자는 실행 결과 반환 방식에 따라 별도의 실행 코드를 개발할 필요가 없다.
도 7은 본 발명의 일 실시 예에 따른 네임 기반 인-네트워크 분산 컴퓨팅 시스템에서 인-네트워크 컴퓨팅 함수 래퍼(wrapper)를 이용한 함수 호출 절차를 나타낸 도면이다. 도 7은 동일한 함수 실행 코드에 대해 INC 함수의 동작 방식을 동적으로 지정하여 함수 호출을 지원하는 절차를 예시한다. 이를 위해, 클라이언트(710)에서 INC FCH(Function Call Handler)(714) 및 INC GRH(Get_Result Handler)(716)가 지원된다. FCH(714) 및 GRH(716)는 클라이언트(710)의 메인 프로그램(712)에서 INC 함수 호출과 결과 요청 시 동적으로 생성되고, 해당 역할이 종료되면 자동으로 삭제된다. 클라이언트(710)의 메인 프로그램(712)에서 INC 함수를 호출하고, 함수 실행 결과를 수신하기 까지의 동작들은 다음과 같다.
도 7을 참고하면, 단계 1에서, 메인 프로그램(712)는 FCH(714)를 생성한다. 구체적으로, 해당 함수 호출을 담당할 FCH(714)가 생성되고, 함수 호출에 필요한 함수 이름, 처리할 데이터, 각종 함수 설정 정보와 함께 실행 결과를 어떤 방식으로 반환할지에 관한 실행 모드(예: standalone, save_result)가 FCH(714)에게 전달된다. save_result 모드인 경우, 실행 결과가 KVS 상의 어떤 키와 매핑될지는 FCH(714)에 의해 사전에 랜덤하게 결정될 수 있다.
단계 2에서, FCH(714)는 해당 함수 호출에 필요한 정보를 INC 인터레스트 패킷에 통해 네트워크에 전송하고, 네트워크는 INC 인터레스트 패킷을 해당 요청을 수행할 수 있는 적절한 INC 서버(732)로 전달한다.
단계 3-1 및 단계 3-2에서, INC 서버(732)는 제1 실행 환경(736-1) 및 제2 실행 환경(736-2)을 생성하고, 생성된 제1 실행 환경(736-1) 및 제2 실행 환경(736-2) 내에서 클라이언트(710)로부터 전달된 함수 인자를 바탕으로 IFW를 함수 동작 모드에 따라 실행한다. 본 실시 예에서, 제1 실행 환경(736-1)의 제1 IFW는 standalone 모드로, 제2 실행 환경(736-2)의 제2 IFW는 save_result 모드로 실행된다. IFW들이 실행되면, 요청된 함수가 함수 핸들러(Function Handler)에 의해 실행되고, 함수 실행 모드는 결과 핸들러(Result Handler)에게 전달된다.
단계 4-1 및 단계 4-2에서, 결과 핸들러는 함수의 실행 결과를 저장한다. 이때, 함수 실행 모드에 따라, 제1 IFW의 결과 핸들러는 실행 결과를 임시 저장하고, 제2 IFW의 결과 핸들러는 KVS 노드(740)에 실행 결과를 저장한다.
단계 5에서, 클라이언트(710)의 메인 프로그램(712)은 INC 함수 실행 결과가 필요하다 판단하고, 실행 결과에 대한 요청을INC GRH(716)에게 전달한다.
단계 6-1 또는 단계 6-2에서, 클라이언트(710)의 GRH(716)는 실행 결과를 요청하는 인터레스트 패킷을 송신한다. 이때, 기존 INC 함수 호출에서 어떤 동작 모드로 지정되었는가에 따라 요청의 대상이 달라진다. 예를 들어, standalone 모드인 경우, 함수 실행 개체의 결과 핸들러로 결과 요청 인터레스트가 전달되고, save_result인 경우 제3의 저장 서비스 장치인 KVS 노드(740)로 결과 요청이 전달된다.
전술한 실시 예에서 함수의 실행 모드로서 standalone, save_result 등 두 가지 모드들이 소개되었으나, 본 발명이 예시된 실행 모드들에 제한되는 것은 아니며, 이 외 다른 종류의 실행 모드를 도입하는 것도 가능하다. 다만, 이 경우 FCH 및 IFW에서 해당 실행 모드를 지원하여야 한다.
도 8은 본 발명의 일 실시 예에 따른 네임 기반 인-네트워크 분산 컴퓨팅 시스템에서 함수 실행의 결과가 다른 함수의 입력으로 전달되는 경우의 함수 호출 절차를 나타낸 도면이다. 도 8은 NDN 기반 분산 컴퓨팅 인-네트워크 컴퓨팅의 실시 예로서 하나의 INC 함수 실행 결과가 다른 함수의 입력으로 전달되어야 하는 상황을 예시한다. 일반적인 프로그램인 경우, 클라이언트 메인 프로그램 (1)번 라인에서 호출된 함수 f1의 실행 결과가 (2)번 라인의 함수 f2의 입력 인자로 전달하는 데 어려움이 없다. 하지만, 전술한 실시 예와 같은 INC 함수 호출에 따르면, 함수 f1 호출이 완료되어 그 결과를 얻어 온 후에 비로소 함수 f2를 호출할 수 있고, 이는 프로그램 퍼포먼스를 저하시킬 수 있다.
따라서, 본 발명은 INC 함수를 result_save 모드로 호출함으로써 메인 프로그램에서 이전 함수의 실행 결과 없이 비동기식으로 INC 함수를 호출할 수 있도록 지원하는 실시 예를 제안한다. INC 함수를 result_save 모드로 동작시킴으로써 실행 결과를 KVS 상의 어떤 키와 매핑시킬지는 함수 호출 시 미리 정해지며, 해당 키는 함수 f1 실행 개체의 실행 결과 네임으로 사용될 수 있다. 구체적으로, 함수 f1의 결과를 입력으로서 사용하는 함수 f2 호출 시, 클라이언트의 메인 프로그램은 실제 f1의 결과 값을 전달하는 대신에, 그 결과 값의 데이터 네임을 전달한다. 이후, f2 함수 실행 개체에서 함수 f1의 실행 결과 값이 필요하면, f2 함수 실행 개체는 전달된 네임을 이용해서 결과 값을 획득하고, 연산에 적용할 수 있다.
도 8을 참고하면, 단계 1에서, 클라이언트(810)는 입력 변수들(예: x, y)와 함께 함수 f1의 실행을 요청하는 인터레스트 패킷을 함수 f1 실행 개체(838a)로 송신한다. 이때, 인터레스트 패킷은 함수 f1의 실행 결과를 저장하기 위해 사용되는 KVS 키 값(예: KVS_Key_#1)을 포함한다. 그리고, 단계 2에서, 클라이언트(810)는 함수 f1 실행 개체(838a)로부터 함수 실행 개체의 네임(예: f1_inst_#n)을 포함하는 데이터 패킷을 수신한다.
단계 3에서, 클라이언트(810)는 함수 f2의 실행을 요청하는 인터레스트 패킷을 함수 f2 실행 개체(838b)로 송신한다. 이때, 인터레스트 패킷은 함수 f2의 입력 변수로서 함수 f1의 실행 결과를 저장하기 위해 사용되는 KVS 키 값(예: KVS_Key_#1) 및 함수 f2의 실행 결과를 저장하기 위해 사용되는 KVS 키 값(예: KVS_Key_#2)을 포함한다. 그리고, 단계 4에서, 클라이언트(810)는 함수 f2 실행 개체(838b)로부터 함수 실행 개체의 네임(예: f2_inst_#n)을 포함하는 데이터 패킷을 수신한다. 본 실시 예에서, 단계 1에서의 함수 f1 호추 및 단계 3에서의 함수 f2 호출은 거의 동시에 수행될 수 있고, 이에 따라 실행 개체 생성 또한 거의 동시에 시작될 수 있다.
단계 5에서, 함수 f1 실행 개체(838a)는 함수 f1을 실행하고, 함수 f1의 실행 결과(예: r1) 및 대응하는 KVS 키 값(예: KVS_key#1)을 포함하는 인터레스트 패킷을 KVS 노드(840)에게 송신한다. 단계 6에서, KVS 노드(840)는 인터레스트 패킷에 포함된 함수 f1의 실행 결과(예: r1)를 저장하고, 수신 성공을 알리는 ACK을 포함하는 데이터 패킷을 함수 f1 실행 개체(838a)에게 송신한다.
단계 7에서, 함수 f2 실행 개체(838b)는 함수 f1의 실행 결과를 획득하기 위해 클라이언트(810)로부터 제공된, 즉, 함수 f2 호출 시 입력 인자로서 전달된 KVS 키 값(예: KVS_key#1)을 포함하는 인터레스트 패킷을 KVS 노드(840)에게 송신한다. 단계 8에서, KVS 노드(840)는 인터레스트 패킷에 포함된 KVS 키 값(예: KVS_key#1)에 대응하는 함수 f1의 실행 결과(예: r1)를 검색하고, 함수 f1의 실행 결과(예: r1)를 포함하는 데이터 패킷을 함수 f2 실행 개체(838b)에게 송신한다. 이에 따라, 함수 f2 실행 개체(838b)는 함수 f1의 실행 결과(예: r1)을 이용하여 함수 f2를 실행하고, 함수 f2의 실행 결과(예: r2)를 획득할 수 있다.
단계 9에서, 함수 f2 실행 개체(838b)는 함수 f2의 실행 결과(예: r2) 및 대응하는 KVS 키 값(예: KVS_key#2)을 포함하는 인터레스트 패킷을 KVS 노드(840)에게 송신한다. 단계 10에서, KVS 노드(840)는 인터레스트 패킷에 포함된 함수 f2의 실행 결과(예: r2)를 저장하고, 수신 성공을 알리는 ACK을 포함하는 데이터 패킷을 함수 f2 실행 개체(838b)에게 송신한다.
이후, 단계 11에서, 클라이언트(810)는 f2 함수 요청 시 사용된 KVS 키 값(예: KVS_key#2)을 포함하는 인터레스트 패킷을 KVS 노드(840)에게 송신한다. 단계 12에서, KVS 노드(840)는 인터레스트 패킷에 포함된 KVS 키 값(예: KVS_key#2)에 대응하는 함수 f2의 실행 결과(예: r2)를 검색하고, 함수 f2의 실행 결과(예: r2)를 포함하는 데이터 패킷을 클라이언트(810)에게 송신한다.
도 8을 참고하여 설명한 실시 예에서, 클라이언트(810)의 메인 프로그램은 INC 함수들을 호출하고, 함수들 간에 어떤 데이터를 주고 받아야 하는 지에 대한 코디네이터 역할 만을 수행할 뿐, 함수 실행 개체들 간의 데이터 전달에는 관여하지 아니한다. 이를 통해, 개발자는 기존 로컬 머신에서만 수행되는 프로그램 응용을 작성할 때와 큰 차이 없이 INC 프로그램 응용을 작성할 수 있다.
도 9는 본 발명의 일 실시 예에 따른 네임 기반 인-네트워크 분산 컴퓨팅 시스템에서 클라이언트의 동작 절차를 나타낸 도면이다.
도 9를 참고하면, 901 단계에서, 클라이언트는 함수의 실행을 요청하는 제1 패킷을 송신한다. 제1 패킷은 인-네트워크 컴퓨팅을 위한 자원을 가진 장치, 예를 들어, INC 서버에게 송신된다. 이를 위해, 클라이언트는 함수의 호출을 위한 FCH 및 함수의 실행 결과를 획득하기 위한 GRH를 생성할 수 있다. 예를 들어, 제1 패킷은 실행 요청되는 함수를 지정하는 정보, 함수의 실행을 위한 적어도 하나의 입력 변수에 대한 정보, 함수의 실행 결과를 식별하기 위한 정보 중 적어도 하나를 포함할 수 있다. 여기서, 적어도 하나의 입력 변수에 대한 정보는 입력 변수의 값이거나 또는 입력 변수를 획득하기 위한 값을 포함할 수 있다. 여기서, FCH는 함수의 실행을 요청하는 제1 패킷을 송신한 후 삭제될 수 있다.
903 단계에서, 클라이언트는 함수의 실행 결과를 요청하는 제2 패킷을 송신한다. 제2 패킷은 함수의 실행 결과를 저장 및 제공하기 위한 저장 수단을 가진 장치, 예를 들어, KVS 노드에게 송신된다. 예를 들어, 제2 패킷은 함수의 실행 결과를 식별하기 위한 정보를 포함할 수 있다. 도 9에 도시되지 아니하였으나, 제2 패킷을 송신하기 전, 클라이언트는 함수의 실행을 위해 생성된 인스턴스에 대한 정보를 포함하는 패킷을 수신할 수 있다.
905 단계에서, 클라이언트는 함수의 실행 결과를 포함하는 제3 패킷을 수신한다. 제3 패킷은 INC 서버에 의해 생성된 함수의 실행 결과를 포함하는 데이터를 포함한다. 이때, 함수 호출 시 생성된 GRH는 제3 패킷을 수신한 후 삭제될 수 있다.
도 10은 본 발명의 일 실시 예에 따른 네임 기반 인-네트워크 분산 컴퓨팅 시스템에서 인-네트워크 컴퓨팅(INC) 서버의 동작 절차를 나타낸 도면이다.
도 10을 참고하면, 1001 단계에서, INC 서버는 함수의 실행을 요청하는 제1 패킷을 수신한다. 예를 들어, 제1 패킷은 실행 요청되는 함수를 지정하는 정보, 함수의 실행을 위한 적어도 하나의 입력 변수에 대한 정보, 함수의 실행 결과를 식별하기 위한 정보 중 적어도 하나를 포함할 수 있다. 여기서, 적어도 하나의 입력 변수에 대한 정보는 입력 변수의 값이거나 또는 입력 변수를 획득하기 위한 값을 포함할 수 있다. 도 10에 도시되지 아니하였으나, INC 서버는 제1 패킷을 수신한 후, 함수의 실행을 위해 생성된 인스턴스에 대한 정보를 포함하는 패킷을 클라이언트에게 송신할 수 있다.
1003 단계에서, INC 서버는 함수를 실행하고, 실행 결과를 획득한다. 예를 들어, INC 서버는 함수를 실행하기 위한 컴퓨팅 자원을 할당하고, 컴퓨팅 자원을 이용하여 함수를 실행함으로써 실행 결과를 획득한다. 구체적으로, INC 서버는 함수의 실행을 위한 개체(instance)를 생성한다. 여기서, 개체는, 함수의 연산 로직, 상기 연산 로직을 실행하는 함수 핸들러, 실행 결과의 반환을 처리하는 결과 핸들러를 포함할 수 있다.
1005 단계에서, INC 서버는 함수의 실행 결과의 저장을 요청하는 제2 패킷을 송신한다. 제2 패킷은 함수의 실행 결과를 저장 및 제공하기 위한 저장 수단을 가진 장치, 예를 들어, KVS 노드에게 송신된다. 여기서, 실행 결과가 상기 KVS 노드에 저장됨이 확인되면, 1003 단계에서 할당된 컴퓨팅 자원은 반환된다.
본 개시에 따른 방법을 구현하기 위해서, 예시하는 단계에 추가적으로 다른 단계를 포함하거나, 일부의 단계를 제외하고 나머지 단계를 포함하거나, 또는 일부의 단계를 제외하고 추가적인 다른 단계를 포함할 수도 있다.
본 개시의 다양한 실시 예는 모든 가능한 조합을 나열한 것이 아니고 본 개시의 대표적인 양상을 설명하기 위한 것이며, 다양한 실시 예에서 설명하는 사항들은 독립적으로 적용되거나 또는 둘 이상의 조합으로 적용될 수도 있다.
또한, 본 개시의 다양한 실시 예는 하드웨어, 펌웨어(firmware), 소프트웨어, 또는 그들의 결합 등에 의해 구현될 수 있다. 하드웨어에 의한 구현의 경우, 하나 또는 그 이상의 ASICs(Application Specific Integrated Circuits), DSPs(Digital Signal Processors), DSPDs(Digital Signal Processing Devices), PLDs(Programmable Logic Devices), FPGAs(Field Programmable Gate Arrays), 범용 프로세서(general processor), 컨트롤러, 마이크로 컨트롤러, 마이크로 프로세서 등에 의해 구현될 수 있다.
본 개시의 범위는 다양한 실시 예의 방법에 따른 동작이 장치 또는 컴퓨터 상에서 실행되도록 하는 소프트웨어 또는 머신-실행가능한 명령들(예를 들어, 운영체제, 애플리케이션, 펌웨어(firmware), 프로그램 등), 및 이러한 소프트웨어 또는 명령 등이 저장되어 장치 또는 컴퓨터 상에서 실행 가능한 비-일시적 컴퓨터-판독가능 매체(non-transitory computer-readable medium)를 포함한다.

Claims (20)

  1. 네임 기반 인-네트워크(name-based in-network) 분산 컴퓨팅 시스템에서 클라이언트 장치의 동작 방법에 있어서,
    함수의 실행을 요청하는 제1 패킷을 제1 노드에게 송신하는 단계;
    상기 함수의 실행 결과를 요청하는 제2 패킷을 제2 노드에게 송신하는 단계; 및
    상기 제2 패킷을 송신한 후, 상기 함수의 실행 결과를 포함하는 제3 패킷을 상기 제2 노드로부터 수신하는 단계를 포함하며,
    상기 제1 패킷은, 상기 함수를 지정하는 정보, 상기 함수의 실행을 위한 적어도 하나의 입력 변수에 대한 정보, 상기 함수의 실행 결과를 식별하기 위한 정보 중 적어도 하나를 포함하는 방법.
  2. 청구항 1에 있어서,
    상기 제1 노드로부터, 상기 함수의 실행을 위해 생성된 인스턴스에 대한 정보를 포함하는 제4 패킷을 수신하는 단계를 더 포함하는 방법.
  3. 청구항 1에 있어서,
    상기 제1 노드는, 인-네트워크 컴퓨팅을 위한 자원을 가진 장치를 포함하고,
    상기 제2 노드는, 상기 함수의 실행 결과를 저장 및 제공하기 위한 저장 수단을 가진 장치를 포함하는 방법.
  4. 청구항 1에 있어서,
    복수의 후보 모드들 중 상기 함수의 동작 모드를 결정하는 단계를 더 포함하며,
    상기 복수의 후보 모드들은, 상기 함수를 실행하는 노드로부터 상기 실행 결과를 획득하는 제1 모드 및 상기 함수를 실행하는 노드와 다른 노드로부터 상기 실행 결과를 획득하는 제2 모드를 포함하는 방법.
  5. 청구항 1에 있어서,
    상기 함수의 실행 결과를 식별하기 위한 정보는, 상기 실행 결과를 제공하는 노드에서 사용될 키(key) 값을 포함하는 방법.
  6. 청구항 1에 있어서,
    상기 함수의 실행을 위한 적어도 하나의 입력 변수에 대한 정보는, 다른 함수의 실행 결과를 식별하기 위한 정보를 포함하는 방법.
  7. 청구항 1에 있어서,
    상기 함수의 호출을 위한 FCH(function call handler)를 생성하는 단계; 및
    상기 함수의 실행 결과를 획득하기 위한 GRH(get result handler)를 생성하는 단계를 더 포함하며,
    상기 FCH는, 상기 제1 패킷을 이용하여 상기 함수의 실행을 요청한 후 삭제되고,
    상기 GRH는, 상기 제3 패킷을 이용하여 상기 함수의 실행 결과를 획득한 후 삭제되는 방법.
  8. 청구항 7에 있어서,
    상기 FCH를 이용하여, 상기 함수의 실행 결과와 매칭될 키 값을 결정하는 단계를 더 포함하는 방법.
  9. 청구항 1에 있어서,
    상기 제2 패킷은, 상기 함수의 실행 결과를 식별하기 위한 정보를 포함하는 방법.
  10. 청구항 1에 있어서,
    상기 함수의 실행 결과를 식별하기 위한 정보를 포함하는 상기 제6 패킷을 수신하는 단계를 더 포함하는 방법.
  11. 네임 기반 인-네트워크(name-based in-network) 분산 컴퓨팅 시스템에서 인-네트워크 컴퓨팅 서버의 동작 방법에 있어서,
    클라이언트 장치로부터 함수의 실행을 요청하는 제1 패킷을 수신하는 단계;
    상기 함수를 실행하는 단계; 및
    상기 함수의 실행 결과의 저장을 요청하는 제2 패킷을 저장 노드에게 송신하는 단계를 포함하며,
    상기 제1 패킷은, 상기 함수를 지정하는 정보, 상기 함수의 실행을 위한 적어도 하나의 입력 변수에 대한 정보, 상기 함수의 실행 결과를 식별하기 위한 정보 중 적어도 하나를 포함하는 방법.
  12. 청구항 11에 있어서,
    상기 함수의 실행을 위해 생성된 인스턴스에 대한 정보를 포함하는 제3 패킷을 상기 클라이언트 장치에게 송신하는 단계를 더 포함하는 방법.
  13. 청구항 11에 있어서,
    상기 제2 패킷은, 상기 실행 결과 및 상기 함수의 실행 결과를 식별하기 위한 정보를 포함하는 방법.
  14. 청구항 11에 있어서,
    상기 함수의 실행 결과를 식별하기 위한 정보는, 상기 저장 노드에서 사용될 키(key) 값을 포함하는 방법.
  15. 청구항 11에 있어서,
    상기 함수를 실행하는 단계는,
    상기 함수를 실행하기 위한 컴퓨팅 자원을 할당하는 단계;
    상기 컴퓨팅 자원을 이용하여 상기 함수를 실행하는 단계; 및
    상기 실행 결과가 상기 저장 노드에 저장됨이 확인되면, 상기 컴퓨팅 자원을 반환하는 단계를 포함하는 방법.
  16. 청구항 11에 있어서,
    상기 함수를 실행하는 단계는,
    상기 함수를 실행하기 위한 개체(instance)를 생성하는 단계를 포함하며,
    상기 개체는, 상기 함수의 연산 로직, 상기 연산 로직을 실행하는 함수 핸들러(function handler), 상기 실행 결과의 반환을 처리하는 결과 핸들러(result handler)를 포함하는 방법.
  17. 청구항 11에 있어서,
    상기 함수의 실행을 위한 적어도 하나의 입력 변수에 대한 정보는, 다른 함수의 실행 결과를 식별하기 위한 정보를 포함하는 방법.
  18. 청구항 17에 있어서,
    상기 함수를 실행하는 단계는,
    상기 다른 함수의 실행 결과를 식별하기 위한 정보를 이용하여 상기 저장 노드로부터 상기 다른 함수의 실행 결과를 포함하는 데이터를 획득하는 단계; 및
    상기 데이터를 이용하여 상기 함수를 실행하는 단계를 포함하는 방법.
  19. 네임 기반 인-네트워크(name-based in-network) 분산 컴퓨팅 시스템에서 클라이언트 장치에 있어서,
    정보를 송수신하는 송수신부;
    상기 송수신부를 제어하는 프로세서를 포함하며,
    상기 프로세서는,
    함수의 실행을 요청하는 제1 패킷을 제1 노드에게 송신하고,
    상기 함수의 실행 결과를 요청하는 제2 패킷을 제2 노드에게 송신하고,
    상기 제2 패킷을 송신한 후, 상기 함수의 실행 결과를 포함하는 제3 패킷을 상기 제2 노드로부터 수신하도록 제어하며,
    상기 제1 패킷은, 상기 함수를 지정하는 정보, 상기 함수의 실행을 위한 적어도 하나의 입력 변수에 대한 정보, 상기 함수의 실행 결과를 식별하기 위한 정보 중 적어도 하나를 포함하는 클라이언트 장치.
  20. 네임 기반 인-네트워크(name-based in-network) 분산 컴퓨팅 시스템에서 인-네트워크 컴퓨팅 서버에 있어서,
    정보를 송수신하는 송수신부;
    상기 송수신부를 제어하는 프로세서를 포함하며,
    상기 프로세서는,
    클라이언트 장치로부터 함수의 실행을 요청하는 제1 패킷을 수신하고,
    상기 함수를 실행하고,
    상기 함수의 실행 결과의 저장을 요청하는 제2 패킷을 저장 노드에게 송신하도록 제어하고,
    상기 제1 패킷은, 상기 함수를 지정하는 정보, 상기 함수의 실행을 위한 적어도 하나의 입력 변수에 대한 정보, 상기 함수의 실행 결과를 식별하기 위한 정보 중 적어도 하나를 포함하는 인-네트워크 컴퓨팅 서버.
KR1020200169195A 2020-12-07 2020-12-07 네임 기반 인-네트워크 분산 컴퓨팅 시스템에서 함수 실행 결과를 반환하기 위한 방법 및 장치 KR20220080271A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020200169195A KR20220080271A (ko) 2020-12-07 2020-12-07 네임 기반 인-네트워크 분산 컴퓨팅 시스템에서 함수 실행 결과를 반환하기 위한 방법 및 장치
US17/508,875 US20220182334A1 (en) 2020-12-07 2021-10-22 Method and apparatus for returning execution result of function in name-based in-network distributed computing system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200169195A KR20220080271A (ko) 2020-12-07 2020-12-07 네임 기반 인-네트워크 분산 컴퓨팅 시스템에서 함수 실행 결과를 반환하기 위한 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20220080271A true KR20220080271A (ko) 2022-06-14

Family

ID=81848324

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200169195A KR20220080271A (ko) 2020-12-07 2020-12-07 네임 기반 인-네트워크 분산 컴퓨팅 시스템에서 함수 실행 결과를 반환하기 위한 방법 및 장치

Country Status (2)

Country Link
US (1) US20220182334A1 (ko)
KR (1) KR20220080271A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230105592A (ko) * 2022-01-04 2023-07-11 한국전자통신연구원 Icn 네트워크에서 가상 사설 네트워크 서비스 제공 장치 및 방법

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8140842B2 (en) * 2008-05-29 2012-03-20 International Business Machines Corporation Client identification and authorization in an asynchronous request dispatching environment

Also Published As

Publication number Publication date
US20220182334A1 (en) 2022-06-09

Similar Documents

Publication Publication Date Title
JP6935496B2 (ja) メッセージングプロトコル通信の管理
WO2018184491A1 (zh) 资源获取方法、装置及系统
US8881149B2 (en) Control of java resource runtime usage
US8713186B2 (en) Server-side connection resource pooling
TWI344090B (en) Management of a scalable computer system
CN104954468A (zh) 资源的分配方法及装置
JP2009251708A (ja) I/oノード制御方式及び方法
JP2022514834A (ja) Mpeg nbmpにおいてメディアコンテンツを処理する方法、装置、及びプログラム
WO2015062228A1 (zh) 一种访问共享内存的方法和装置
US11681583B2 (en) Cluster diagnostics data for distributed job execution
JP4588768B2 (ja) オーバーレイネットワークのノードの最高ワークロードの決定
KR101091325B1 (ko) 철강 공정 제어를 위한 미들웨어 및 그 미들웨어에서의 서비스 제공 방법
EP2630576B1 (en) Goal state communication in computer clusters
KR101564965B1 (ko) 분산 서버 환경에서 벡터 클럭을 사용하여 메시지에 상대적인 순서를 부여하고 상기 부여된 상대적인 순서에 따라 메시지를 전달하기 위한 방법 및 장치
JP2006079386A (ja) ストレージエリアネットワーク管理システム及び管理装置とボリューム割当て方法並びにコンピュータ・ソフトウエア
CN113835825A (zh) 虚拟服务主机的动态调整方法、装置、服务器和存储介质
KR20220080271A (ko) 네임 기반 인-네트워크 분산 컴퓨팅 시스템에서 함수 실행 결과를 반환하기 위한 방법 및 장치
KR20060121074A (ko) 하이브리드 p2p 네트워크 지능형 분산 컴파일러 시스템및 그 방법과 상기 방법을 실현시키기 위한 프로그램을기록한 컴퓨터로 읽을 수 있는 기록매체
CN112424749A (zh) 内存占用有限情况下的按需代码执行
CN111090783B (zh) 推荐方法、装置和系统、图嵌入的游走方法、电子设备
KR102394773B1 (ko) 네임 기반 인-네트워크 프로세싱 방법 및 시스템
US10979439B1 (en) Identity management for coordinated devices in a networked environment
KR20220076826A (ko) Ndn 기반의 인-네트워크 처리 방법 및 시스템
JP4532238B2 (ja) オンデマンドサービス提供システム
US20150350079A1 (en) Method of message routing for a distributed computing system

Legal Events

Date Code Title Description
E902 Notification of reason for refusal