KR102423084B1 - P2P를 이용한 IoT 기기의 펌웨어 업데이트 방법 및 그 장치 - Google Patents

P2P를 이용한 IoT 기기의 펌웨어 업데이트 방법 및 그 장치 Download PDF

Info

Publication number
KR102423084B1
KR102423084B1 KR1020160050768A KR20160050768A KR102423084B1 KR 102423084 B1 KR102423084 B1 KR 102423084B1 KR 1020160050768 A KR1020160050768 A KR 1020160050768A KR 20160050768 A KR20160050768 A KR 20160050768A KR 102423084 B1 KR102423084 B1 KR 102423084B1
Authority
KR
South Korea
Prior art keywords
firmware
iot device
chunk
iot
cluster
Prior art date
Application number
KR1020160050768A
Other languages
English (en)
Other versions
KR20170121911A (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 삼성에스디에스 주식회사
Priority to KR1020160050768A priority Critical patent/KR102423084B1/ko
Publication of KR20170121911A publication Critical patent/KR20170121911A/ko
Application granted granted Critical
Publication of KR102423084B1 publication Critical patent/KR102423084B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0813Configuration setting characterised by the conditions triggering a change of settings
    • H04L41/082Configuration setting characterised by the conditions triggering a change of settings the condition being updates or upgrades of network functionality
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • 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
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1059Inter-group management mechanisms, e.g. splitting, merging or interconnection of groups
    • 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
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1074Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
    • H04L67/1078Resource delivery mechanisms
    • H04L67/108Resource delivery mechanisms characterised by resources being split in blocks or fragments
    • 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 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

본 발명의 일 태양에 따른 P2P를 이용한 IoT 기기의 펌웨어 업데이트 방법은, 펌웨어 서버가, 제1 펌웨어를 대상으로 중복된 데이터를 제거(de-duplication)하여, 상기 제1 펌웨어를 여러 개의 청크로 분할하는 단계와 상기 펌웨어 서버가, 상기 제1 펌웨어를 업데이트 할 하나 이상의 IoT 기기를 포함하는 제1 클러스터를 구성하는 단계와 상기 펌웨어 서버가, 상기 제1 펌웨어를 구성하는 청크 중에서 상기 제1 클러스터에 속한 제1 IoT 기기가 배포할 시드(seed) 청크를 지정한 청크 맵을 생성하는 단계; 및 상기 펌웨어 서버가, 상기 제1 IoT 기기로 상기 시드 청크와 상기 청크 맵을 전송하는 단계를 포함할 수 있다.

Description

P2P를 이용한 IoT 기기의 펌웨어 업데이트 방법 및 그 장치 {Method and apparatus for updating firmware on IoT device using P2P}
본 발명은 P2P를 이용하여 IoT 기기의 펌웨어를 업데이트 하는 방법 및 그 장치에 관한 것이다. 보다 자세하게는 IoT 기기의 펌웨어를 여러 개의 조각으로 나누고, 펌웨어의 업데이트가 필요한 IoT 기기는 여러 개의 그룹으로 묶어서, 각 그룹에 속한 IoT 기기의 펌웨어를 업데이트 하는 방법 및 그 방법을 수행하는 장치에 관한 것이다.
IoT(Internet of Thigs)란 사물 인터넷을 뜻하는 영어 약자이다. 사물 인터넷은 각종 사물 기기에 센서(sensor)와 통신 기능을 내장하여 인터넷에 연결하는 기술을 의미한다. 흔히 M2M(Machine To Machine)으로 표현하기도 한다. 여기서 사물이란 가전제품, 모바일 장비(mobile device), 웨어러블 컴퓨터(wearable computer) 등 다양한 임베디드 시스템(embedded system)을 지칭한다.
정보 기술 연구 및 자문회사 가트너(Gartner Inc.)에 따르면 2009년까지 사물 인터넷 기술을 사용하는 사물의 개수는 9억개였으나 2020년까지 이 수가 260억 개에 이를 것으로 예상된다. 이처럼 IoT 기기는 가히 폭발적으로 증가 중이다. 문제는 이러한 수많은 IoT 기기의 운영체제인 펌웨어(firmware)를 업데이트 하는 과정에서 서버에 가해지는 부하(load)이다.
일반 가정에서 사용되는 IoT 기기를 살펴보면 TV, 냉장고, 세탁기, 에어컨, 온도 조절기, 도어락 등의 가전제품이 주를 이룬다. 이처럼 일반 가정에서 사용되는 IoT 기기는 기기의 종류가 다양하나, 기기의 수 자체는 적은 편이여서 펌웨어 업데이트를 위한 서버의 부담이 상대적으로 적다.
그러나 반도체 생산 공장과 같은 경우를 살펴보면 IoT 기기의 일 예로 각 생산 라인의 웨이퍼(wafer)를 촬영하여 불량을 검사하는 카메라, 레이저를 통해 불량을 검사하는 레이저 계측기가 있다. 뿐만 아니라, 온도, 습도, 진동 등을 감지하기 위한 센서(sensor)까지 일반 가정에 비해 공장에서는 IoT 기기의 종류는 소수이나, IoT 기기의 수 자체는 많은 편이다.
이렇게 IoT 기기의 수 자체가 많아지게 되면, IoT 기기의 펌웨어를 업데이트하기 위한 서버의 부하 또한 기하급수적으로 증가할 것이다. 이에 IoT 기기의 펌웨어 업데이트 서버의 부하를 분산시킬 수 있는 펌웨어 업데이트 방법이 요구된다.
본 발명이 해결하고자 하는 기술적 과제는 P2P를 이용하여 IoT 기기의 펌웨어를 업데이트 하는 방법 및 그 장치를 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 해결하기 위한 본 발명의 일 태양에 따른 P2P를 이용한 IoT 기기의 펌웨어 업데이트 방법은, 펌웨어 서버가, 제1 펌웨어를 대상으로 중복된 데이터를 제거(de-duplication)하여, 상기 제1 펌웨어를 여러 개의 청크로 분할하는 단계와 상기 펌웨어 서버가, 상기 제1 펌웨어를 업데이트 할 하나 이상의 IoT 기기를 포함하는 제1 클러스터를 구성하는 단계와 상기 펌웨어 서버가, 상기 제1 펌웨어를 구성하는 청크 중에서 상기 제1 클러스터에 속한 제1 IoT 기기가 배포할 시드(seed) 청크를 지정한 청크 맵을 생성하는 단계; 및 상기 펌웨어 서버가, 상기 제1 IoT 기기로 상기 시드 청크와 상기 청크 맵을 전송하는 단계를 포함할 수 있다.
일 실시예에 따르면, 상기 제1 클러스터를 구성하는 단계는, 상기 하나 이상의 IoT 기기에 상기 제1 펌웨어를 구성하는 청크를 서버 모드로 배포할 IoT 기기를 상기 제1 클러스터에 추가하는 단계를 포함할 수 있다.
다른 실시예에 따르면, 상기 제1 클러스터에 추가하는 단계는, 네트워크 커버리지와 유휴 자원을 기준으로 상기 서버 모드로 배포할 IoT 기기를 선정하는 단계를 포함할 수 있다.
또 다른 실시예에 따르면, 상기 제1 클러스터를 구성하는 단계는, 상기 제1 클러스터에 속한 IoT 기기의 유휴 자원에 관한 정보를 수집하는 단계를 포함하고, 상기 청크 맵을 생성하는 단계는, 상기 제1 IoT 기기의 유휴 자원을 기준으로 상기 제1 IoT 기기가 배포할 시드 청크를 지정하는 단계를 포함할 수 있다.
또 다른 실시예에 따르면, 상기 제1 IoT 기기가 배포할 시드 청크를 지정하는 단계는, 상기 제1 IoT 기기의 유휴 자원이 많을수록 상기 제1 IoT 기기가 배포할 시드 청크를 더 많이 지정하는 단계를 포함할 수 있다.
또 다른 실시예에 따르면, 상기 청크 맵을 생성하는 단계는, 상기 제1 IoT 기기가 주(master)로 배포할 시드 청크와 상기 제1 IoT 기기가 종(slave)으로 배포할 시드 청크를 지정하는 단계를 포함할 수 있다.
또 다른 실시예에 따르면, 상기 시드 청크와 상기 청크 맵을 전송하는 단계는, 상기 제1 IoT 기기로 상기 시드 청크를 암호화 하여 전송하는 단계를 포함할 수 있다.
또 다른 실시예에 따르면, 상기 제1 IoT 기기가, 상기 제1 클러스터에 속한 다른 IoT 기기로부터 상기 시드 청크에 대한 요청을 수신하는 단계 및 상기 제1 IoT 기기가, 상기 시드 청크에 대한 요청의 응답으로 상기 다른 IoT 기기로 상기 시드 청크를 전송하는 단계를 포함할 수 있다.
또 다른 실시예에 따르면, 상기 제1 IoT 기기가, 상기 청크 맵을 이용하여 상기 제1 클러스터에 속한 다른 IoT 기기에 상기 제1 펌웨어를 구성하는 청크를 요청하는 단계와 상기 제1 IoT 기기가, 상기 요청의 응답으로 상기 다른 IoT 기기로부터 상기 제1 펌웨어를 구성하는 청크를 수신하는 단계와 상기 제1 IoT 기기가, 상기 제1 펌웨어를 구성하는 청크를 병합(merge)하여 상기 제1 펌웨어를 복원하는 단계 및 상기 제1 IoT 기기가, 상기 복원된 제1 펌웨어로 상기 제1 IoT 기기의 펌웨어를 업데이트 하는 단계를 포함할 수 있다.
상기 기술적 과제를 해결하기 위한 본 발명의 일 태양에 따른 P2P를 이용한 IoT 기기의 펌웨어 업데이트 방법은, 펌웨어 서버가, 제1 펌웨어를 여러 개의 조각(fragment)으로 분할하는 단계와 상기 펌웨어 서버가, 상기 제1 펌웨어를 업데이트 할 하나 이상의 IoT 기기를 포함하는 제1 클러스터를 구성하는 단계와 상기 펌웨어 서버가, 상기 하나 이상의 IoT 기기에 상기 제1 펌웨어를 구성하는 조각을 서버 모드로 배포할 IoT 기기를 상기 제1 클러스터에 추가하는 단계와 상기 펌웨어 서버가, 상기 제1 펌웨어를 구성하는 조각 중에서 상기 제1 클러스터에 속한 제1 IoT 기기가 배포할 시드(seed) 조각을 지정한 조각 맵을 생성하는 단계 및 상기 펌웨어 서버가, 상기 제1 IoT 기기로 상기 시드 조각과 상기 조각 맵을 전송하는 단계를 포함할 수 있다.
일 실시예에서, 상기 제1 펌웨어를 여러 개의 조각(fragment)으로 분할하는 단계는, MTU(Maximum transmission unit), 전송 속도, 전송 에러율 중에서 하나 이상을 고려하여 조각의 크기를 결정하는 단계를 포함할 수 있다.
다른 실시예에서, 상기 제1 클러스터를 구성하는 단계는, 상기 제1 클러스터에 속한 IoT 기기의 유휴 자원에 관한 정보를 수집하는 단계를 포함하고, 상기 조각 맵을 생성하는 단계는, 상기 제1 IoT 기기의 유휴 자원을 기준으로 상기 제1 IoT 기기가 배포할 시드 조각을 지정하는 단계를 포함할 수 있다.
또 다른 실시예에서, 상기 제1 IoT 기기가, 상기 제1 클러스터에 속한 다른 IoT 기기로부터 상기 시드 조각에 대한 요청을 수신하는 단계 및 상기 제1 IoT 기기가, 상기 시드 조각에 대한 요청의 응답으로 상기 다른 IoT 기기로 상기 시드 조각을 전송하는 단계를 포함할 수 있다.
또 다른 실시예에서, 상기 제1 IoT 기기가, 상기 조각 맵을 이용하여 상기 제1 클러스터에 속한 다른 IoT 기기에 상기 제1 펌웨어를 구성하는 조각을 요청하는 단계와 상기 제1 IoT 기기가, 상기 요청의 응답으로 상기 다른 IoT 기기로부터 상기 제1 펌웨어를 구성하는 조각을 수신하는 단계와 상기 제1 IoT 기기가, 상기 제1 펌웨어를 구성하는 조각을 병합(merge)하여 상기 제1 펌웨어를 복원하는 단계 및 상기 제1 IoT 기기가, 상기 복원된 제1 펌웨어로 상기 제1 IoT 기기의 펌웨어를 업데이트 하는 단계를 포함할 수 있다.
상기와 같은 본 발명에 따르면 종류는 적으나 그 수 자체는 많은, 예를 들면 스마트 공장(smart factory)과 같은 곳에서, IoT 기기의 펌웨어를 업데이트 할 때, IoT 기기끼리 P2P 통신을 통해 펌웨어를 구성하는 청크(chunk)를 서로 주고 받을 수 있다.
뿐만 아니라 특정 IoT 기기가 오작동 하더라도 다른 IoT 기기를 통해서 오작동 중인 IoT 기기가 배포해야 할 청크를 주고 받을 수 있다(fail over). 이를 통해 펌웨어 업데이트 서버의 부담을 줄이고, 빠른 시간 안에 수 많은 IoT 기기의 펌웨어를 업데이트 할 수 있다.
본 발명의 효과들은 이상에서 언급한 효과들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해 될 수 있을 것이다.
도 1 내지 도 2는 종래의 IoT 기기의 펌웨어 업데이트 방법을 설명하기 위한 도면이다.
도 3은 본 발명의 일 실시예에 따른 P2P를 이용한 IoT 기기의 펌웨어 업데이트 방법을 설명하기 위한 순서도이다.
도 4a 내지 도 4b는 펌웨어를 중복된 데이터를 제거하여 여러 개의 청크로 분할하는 단계(S1000)를 설명하기 위한 예시도이다.
도 5a 내지 도 5b는 펌웨어 업데이트를 위한 클러스터를 구성하는 단계(S2000)를 설명하기 위한 예시도이다.
도 6a 내지 도 7b는 청크와 IoT 기기를 맵핑한 청크 맵을 생성하는 단계(S3000)를 설명하기 위한 예시도이다.
도 8a 내지 도 8b는 본 발명의 일 실시예에 따른 P2P 이용한 IoT 기기의 펌웨어 업데이트 방법을 설명하기 위한 흐름도이다.
도 9a 내지 도 9b는 IoT 기기의 리소스를 반영하여 청크 맵을 생성하는 과정을 설명하기 위한 예시도이다.
도 10a 내지 도 10b는 본 발명의 일 실시예에 따른 P2P 이용한 IoT 기기의 펌웨어 업데이트 방법에서 활용될 수 있는 암호화와 청크 맵 갱신에 대해서 설명하기 위한 예시도이다.
도 11은 본 발명의 일 실시예에 따른 P2P를 이용한 IoT 기기의 펌웨어 업데이트 장치의 하드웨어 구성도이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명한다. 본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 게시되는 실시예에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예들은 본 발명의 게시가 완전하도록 하고, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다. 본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다.
명세서에서 사용되는 "포함한다 (comprises)" 및/또는 "포함하는 (comprising)"은 언급된 구성 요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성 요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
이하, 본 발명에 대하여 첨부된 도면에 따라 보다 상세히 설명한다.
도 1 내지 도 2는 종래의 IoT 기기의 펌웨어 업데이트 방법을 설명하기 위한 도면이다.
이하 발명의 이해를 돕기 위해 IoT 기기의 모양을 기준으로 IoT 기기의 종류를 구별한다. 예를 들면, 네모로 표시되는 IoT 기기의 종류는 카메라이며, 세모로 표시되는 IoT 기기의 종류는 레이저 계측기다.
도 1의 예에서 IoT 기기는 총 2종류이고, IoT 기기의 수는 4개이다. 즉, 카메라인 제1 IoT 기기(111), 제2 IoT 기기(112), 제3 IoT 기기(113)와, 레이저 계측기인 제4 IoT 기기(121)가 도 1에 도시되어 있다. 또한 도 1에 도시 되지는 않았지만, 이 외에도 카메라 종류의 IoT 기기와 레이저 계측기 종류의 IoT 기기 및 다른 종류의 IoT 기기가 더 있을 수 있다.
종래에는 IoT 기기에서 펌웨어 업데이트 요청을 전송하면, 그에 대한 응답으로 펌웨어 업데이트 서버(100)에서 펌웨어를 전송하고, IoT 기기에서 이를 수신하여 자신의 운영체제를 업데이트 하였다. 도 1을 참고하면 카메라 IoT 기기(111, 112, 113)에서는 카메라의 운영체제에 관한 제1 펌웨어를 각각 요청하고, 레이저 계측기인 IoT 기기(121)에서는 레이저 계측기의 운영체제에 관한 제2 펌웨어를 요청하여 업데이트를 수행한다.
이 때 펌웨어 서버(100)는 IoT 기기에서 펌웨어 업데이트 요청이 올 때마다, 펌웨어 업데이트 요청을 한 기기로 해당 펌웨어를 전송해야 하므로, IoT 기기의 수에 비례하여 펌웨어 서버(100)의 부하가 증가하게 된다. 이를 감당하기 위해서는 펌웨어 서버(100)에 가해지는 최대 부하를 기준으로, 펌웨어 서버(100)의 리소스(resource)가 확보되어야 하는데, IoT 기기의 펌웨어 업데이트는 잦은 편이 아니라서, 평상시에는 펌웨어 서버(100)의 불필요한 리소스가 낭비된다는 단점이 있다.
도 1의 예에서는 제1 IoT 기기(111), 제2 IoT 기기(112), 제3 IoT 기기(113)의 제1 펌웨어를 업데이트 하는 동안, 펌웨어 서버(100)에서는 제1 펌웨어의 업데이트가 필요한 IoT 기기의 수 3 * 제1 펌웨어의 크기만큼의 부하가 최대 부하로 발생하게 된다. 이를 흐름도에서 살펴보면, 도 2와 같다.
도 2를 참고하면, IoT 기기는 같은 종류의 기기끼리 그룹으로 묶여져 있다. 카메라 IoT 기기의 그룹인 제1 그룹(110)과 레이저 계측기인 IoT 기기의 그룹인 제2 그룹(120)에서 각각 제1 펌웨어와 제2 펌웨어를 업데이트 한다고 가정해보자.
우선 제1 그룹(110)의 제1 펌웨어를 업데이트 하는 과정은 제1 그룹(110)에 속한 각 IoT 기기에서 펌웨어 서버(100)로 제1 펌웨어 요청을 보내는 것으로부터 시작된다. 도 2의 예에서는 이해의 편의를 돕기 위해 제1 IoT 기기(111), 제2 IoT 기기(112), 제3 IoT 기기(113)에서 순차적으로 업데이트 요청을 보내는 것처럼 도시하였으나, 대부분의 경우 펌웨어 요청은 병렬적으로 수행되는 경우가 많다.
펌웨어 서버(100)는 제1 그룹(110)에 속한 각 IoT 기기(111, 112, 113)의 제1 펌웨어 요청에 대한 응답으로 각 IoT 기기에 제1 펌웨어를 전송한다. 만약 제1 그룹(110)에 제1 IoT 기기(111), 제2 IoT 기기(112), 제3 IoT 기기(113) 외에도 추가적으로 카메라 IoT 기기가 더 있다면, 그만큼 펌웨어 서버(100)에 부하가 발생하게 된다.
마찬가지로 펌웨어 서버(100)는 제2 그룹(120)에 속한 IoT 기기(121)의 제2 펌웨어 요청에 대한 응답으로 각 IoT 기기에 제2 펌웨어를 전송한다. 만약 제2 그룹(120)에 제4 IoT 기기(121) 외에도 추가적으로 레이저 계측기인 IoT 기기가 더 있다면, 그만큼 펌웨어 서버(100)에 부하가 발생하게 된다.
이처럼 IoT 기기의 수만큼 펌웨어 서버(100)에는 부하가 발생하게 되므로, 펌웨어 서버(100)에 가해지는 부하를 줄이기 위해서 본 발명에서는 펌웨어 서버(100)에서 IoT 기기로 펌웨어를 전송하면, IoT 기기끼리 P2P(peer to peer) 방식으로 펌웨어를 공유하는 펌웨어 업데이트 방법을 제안한다.
도 3은 본 발명의 일 실시예에 따른 P2P를 이용한 IoT 기기의 펌웨어 업데이트 방법을 설명하기 위한 순서도이다.
도 3을 참고하면 본 발명은 크게 2가지 특징을 가지고 IoT 기기의 펌웨어 업데이트를 진행한다. 하나는 펌웨어를 P2P 방식으로 공유하기 편하도록, 펌웨어 서버(100)에서 펌웨어에 대해 데이터 중복 제거(data de-duplication)을 수행하여 각 IoT 기기로 전송하는 것이다.
또 다른 하나의 특징은 펌웨어 업데이트를 위한 IoT 기기의 클러스터를 구성하는 것이다. 즉 펌웨어 업데이트가 필요한 IoT 기기 및 펌웨어 배포에 사용될 IoT 기기를 묶은 클러스터를 구성하여 클러스터 별로 펌웨어를 구성하는 청크를 공유하는 것이다.
펌웨어 즉 소프트웨어(software)는 데이터를 중복 제거하여 여러 개의 청크로 나누고, IoT 기기 즉 하드웨어(hardware)는 여러 개의 IoT 기기를 묶어서 클러스터를 구성함으로, 펌웨어 업데이트를 위한 P2P 방식의 효율을 높일 수 있다.
다만 대부분의 IoT 기기의 경우 특정 목적을 위해 만들어진 기기로서, 범용적인 컴퓨터에 비해 성능이 떨어지는 경우가 많으므로, 어느 청크를 클러스터의 어느 기기에서 다운로드 받을지를 사전에 지정한 청크 맵(chunk map)을 펌웨어 서버(100)에서 생성하여 각 IoT 기기로 청크와 함께 전송하는 것이 바람직하다.
도 3을 참고하면 펌웨어의 중복된 데이터를 제거하여 여러 개의 청크로 펌웨어를 분할한다(S1000). 여러 개의 청크로 펌웨어를 분할하는 경우, 청크의 식별자와 청크의 내용을 관리하는 방법에 대해서는 도 4a 내지 도 4b에서 보다 자세히 살펴보기로 한다.
펌웨어를 분할하는 것 외에도 P2P 전송이 효율을 높이기 위해서 펌웨어의 업데이트가 필요한 IoT 기기를 포함하여 클러스터를 구성하여야 한다(S2000). 이를 위해서 우선 펌웨어의 업데이트가 필요한 IoT 기기의 목록을 확정하여야 한다. 대부분의 경우 펌웨어는 특정 종류의 IoT 기기를 위한 경우가 많으므로, 일반적으로 동일한 종류의 IoT 기기가 펌웨어 업데이트 대상이 될 것이다.
펌웨어 업데이트가 필요한 IoT 기기의 목록을 확정하였다면, 이를 포함하여 IoT 기기의 클러스터를 구성한다. 클러스터를 구성하는 과정에서 펌웨어 업데이트가 필요한 IoT 기기 외에도 추가적으로 펌웨어의 업데이트가 필요 없는 IoT 기기가 더 포함될 수 있다. 펌웨어 업데이트가 필요하지 않음에도 펌웨어 업데이트를 위한 IoT 클러스터에 포함된 IoT 기기들은 펌웨어의 배포에만 참여하는 IoT 기기들이다.
즉 펌웨어 업데이트가 필요한 IoT 기기의 경우 청크를 보내기도 하고 받기도 하는 서버&클라이언트 모드(mode)로 P2P 통신을 하는 반면에, 펌웨어 업데이트가 필요하지 않은 IoT 기기의 경우 청크를 보내기만 하는 서버 모드(mode)로 P2P 통신을 하는 것이다.
이처럼 IoT 기기의 클러스터를 구성할 때 펌웨어 업데이트가 필요하지 않은 IoT 기기를 더 포함함으로써, P2P 방식의 효율을 더 높일 수 있다. 펌웨어 업데이트를 위한 IoT 기기의 클러스터를 구성하는 과정에 대해서는 추후 도 5a 내지 5b에서 보다 자세히 살펴보기로 한다.
소프트웨어는 나누고 하드웨어는 묶었다면, 이 둘을 맵핑(mapping)한 정보를 추가적으로 더 생성하여야 한다. 즉 각 청크(chunk)를 배포할 IoT 기기를 클러스터 별로 지정한 청크 맵(chunk map)을 생성한다(S3000).
예를 들면 a 청크는 X1 IoT 기기에서 다운로드 받고, b 청크는 X2 IoT 기기에서 다운로드 받으라는 식으로 사전에 각 청크를 다운로드 받을 IoT 기기를 지정하는 것이다. 이를 통해 청크를 다운로드 받을 IoT 기기를 검색하고 그 결과를 수신하여 다시 청크를 다운로드 하는 요청을 보내는 과정에서 발생하는 추가적인 리소스의 낭비를 줄이는 것이다.
범용적인 컴퓨터의 성능에 비해 IoT 기기의 성능이 제한적인 것을 고려하여 펌웨어 서버(100)에서 사전에 청크를 배포할 스케줄링(scheduling)을 하는 것이다. 청크와 IoT 기기를 맵핑한 청크 맵(chunk map)에 대해서는 추후 도 6a 내지 6b에서 보다 자세히 살펴보도록 한다.
펌웨어를 청크로 분할하고, IoT 기기를 클러스터로 묶고, 이 둘을 맵핑한 청크 맵을 생성한 후에, 펌웨어 서버(100)는 각 IoT 기기로 자신이 배포를 담당한 청크와 펌웨어를 구성하는 청크를 다운로드 받을 때 참고할 청크 맵을 전송한다(S4000). 즉 각 IoT 기기로 청크의 시드(seed)를 배포한다.
이 단계 까지가 펌웨어 서버(100)에서 담당하여야 하는 부분이며 그 이후부터는 P2P 통신을 통해 각 IoT 기기끼리 청크를 주고 받으므로 펌웨어 업데이트를 위해 펌웨어 서버(100)로 집중되던 부하를 각 IoT 기기로 분산시킬 수 있다.
각 IoT 기기는 청크 맵을 참고로 다른 IoT 기기에 청크를 요청하여 다운로드 받고, 반대로 자신한테 청크를 요청한 다른 IoT 기기에는 청크를 업로드한다(S5000). IoT 기기끼리 P2P 방식으로 청크를 주고 받음으로써 펌웨어 서버(100)에 가해지는 부하를 분산시키는 효과가 있다.
만약에 이를 모두 펌웨어 서버(100)에서 처리하여야 한다면 펌웨어 서버(100)는 펌웨어 업데이트를 위해서 모든 IoT 기기의 요청을 감당할 수 있을 정도로 리소스를 확보하여야 하나, 이를 각 IoT 기기로 분산시킴으로써, 펌웨어 서버(100)는 S1000 단계 내지 S4000 단계를 처리할 수 있을 정도로만 리소스를 확보하면 충분하다.
IoT 기기의 임베디드 운영체제와 관련된 펌웨어의 특성상 업데이트가 자주 있지 않은 점, 또 IoT 기기의 수가 많은 환경에서는 이러한 병렬 방식의 분산 처리가 큰 효과를 발휘하는 점을 감안하면, P2P 방식을 이용하여 IoT 기기의 펌웨어를 업데이트 하는 방법이 펌웨어 서버(100)에서 모든 요청을 다 처리하는 중앙집중적인 방법에 비해 더 적은 리소스로 더 효율적으로 펌웨어의 업데이트를 수행하는 방법인 것을 알 수 있다.
각 IoT 기기끼리 P2P 방식으로 청크의 공유가 끝난 후에는 이를 다시 병합(merge)하여 원래의 펌웨어 파일을 생성하고, 펌웨어의 업데이트를 수행한다(S6000).
지금까지 도 3을 통해서 본 발명의 일 실시예에 따른 P2P를 이용한 IoT 기기의 펌웨어 업데이트 방법에 대해서 개괄적으로 살펴보았다. 지금부터는 도 4a 내지 7b를 통해서 각 단계에 대해서 보다 자세하게 살펴보도록 한다.
도 4a 내지 도 4b는 펌웨어를 중복된 데이터를 제거하여 여러 개의 청크로 분할하는 단계(S1000)를 설명하기 위한 예시도이다.
파일의 데이터는 0 또는 1이 나열된 특정 블록으로 이루어져 있다. 이점에 착안하면 중복되는 데이터를 제거하기 위해 각 파일을 최적의 데이터 블록(data block)으로 나눌 수 있다. 이 때 각 파일을 구성하고 있는 데이터 블록을 청크(chunk)라고 한다.
중복된 데이터를 제거하기 위한 선행문헌으로 한국 공개특허 제2013-0087850호를 참고하면, 청크는 파일의 크기 및 종류에 따라 얼마든지 다양한 크기와 개수로 만들어질 수 있다. 파일을 청킹하고 관리하는 방법 등에 대한 자세한 설명은 상기 한국 공개특허 제2013-0087850호 등의 선행 문헌을 참조할 수 있다. 이하 이해의 편의를 돕기 위해 제1 펌웨어(130)와 제2 펌웨어(140)는 4개의 청크로 분할되는 것으로 가정한다.
도 4a를 참고하면 카메라 종류의 IoT 기기를 위한 제1 펌웨어(130)은 4개의 청크로 분할되며 그 순서는 A, B, A, C 이다. 보다시피 첫번째와 세번째 청크의 내용이 A로 동일하다. 여기서 중복 제거를 수행한다면, 중복된 내용인 A 청크만큼 전송해야 하는 데이터의 양이 줄게 되어 P2P 전송의 효율을 높일 수 있다.
제1 펌웨어(130)에 대해서 데이터 중복 제거를 수행하면 총 3개의 청크를 얻을 수 있다. 청크의 내용과 식별자(ID)는 도 4a의 표 131에 도시된 바와 같다. 이하 이해의 편의를 돕기 위해 청크의 내용은 대문자로, 청크의 식별자는 소문자로 표시하기로 한다. 청크의 식별자는 일반적으로 청크의 내용을 입력으로 해시 함수(hash function)에 의해 생성한다.
도 4a의 예에서는 청크 A는 식별자 a로, 청크 B는 식별자 b로 청크 C는 식별자 c로 표시된다. 제1 펌웨어(130)을 식별자로 다시 표시하면 abac와 같이 표시할 수 있을 것이다. 청크의 식별자의 목록을 수신한 각 IoT 기기는 식별자의 순서대로 각 식별자에 대응되는 청크를 다운로드 받고 이를 병합하면 원래의 ABAC로 이루어진 제1 펌웨어(130)을 얻을 수 있다.
만약 청크 하나의 크기가 100kb라고 가정하면, 종래에는 제1 펌웨어(130)의 업데이트를 위해서, 펌웨어 서버(100)가 abac 총 4개의 청크에 해당하는, 즉 400kb 크기의 제1 펌웨어(130) 자체를 전송해야 했다. 이에 비해 데이터 중복 제거를 수행하고 난 후에는 총 3개의 청크에 해당하는, 즉 300kb 크기의 데이터만 전송하면 충분하다. 대신에 100kb 크기의 청크 a, b, c를 수신한 IoT 기기에서 이를 다시 병합하여 원래의 제1 펌웨어(130)을 얻는 방식이다.
종래의 펌웨어 그 자체를 전송하는 방식에 비해 중복된 데이터가 제거된 만큼 전송해야 하는 데이터의 양이 줄어 펌웨어 업데이트의 효율을 높일 수 있다. 도 4a의 예에서는 전송해야 하는 데이터의 양이 1 개의 청크만큼 줄었음으로 25%의 부하 감소 효과가 발생하였다.
물론, 대신 각 IoT 기기에서 청크를 병합하여 원래의 펌웨어인 제1 펌웨어(130)를 만드는 과정을 수행해야하므로, 마치 질량 보존의 법칙처럼 시스템 전체적으로 보면 득과 실이 같을 수 있으나, 펌웨어 서버(100) 측면에서 살펴보면 펌웨어 서버(100)에 집중되던 부하가 각 IoT 기기로 분산되는 효과가 있다.
중복된 데이터를 제거한 청크의 정보를 각 IoT 기기로 전송하기 위해 xml 포맷(format)으로 정리하면 도 4a의 제1 청크 정보(133)과 같은 형태가 될 수 있다. 도 4a를 참고하면, 카메라 종류의 IoT 기기를 대상으로 하는 제1 펌웨어(130)는 버전이 1.712.1 이며, 대상 IoT 기기는 CM-03921 모델을 대상으로 한다.
제1 펌웨어(130)는 총 4개의 청크로 구성되어 있으며, 그 순서는 배열(array) 형태로 순서대로 a와 b와 a와 c의 청크를 병합하면, 원래의 제1 펌웨어(130)을 얻을 수 있다. 도 4a에 예시한 xml 포맷의 제1 청크 정보(133)는 일종의 예시이며 다른 포맷으로, 다른 형식으로 얼마든지 표현이 가능하다.
도 4b를 참고하면, 제2 펌웨어(140) 역시 4개의 청크로 구성되어 있는 것을 볼 수 있다. 제2 펌웨어(140)는 a, d, e, f의 순서로 구성되어 있어 4개의 청크로 분할이 가능하다. 즉, a, d, e, f의 청크를 순서대로 병합(merge)하면 원래의 제2 펌웨어(140)를 얻을 수 있다.
제2 청크 정보(143)을 살펴보면, 레이저 계측기 종류의 IoT 기기를 대상으로 하는 제2 펌웨어(140)는 버전이 0.9428이며, 대상 IoT 기기는 BN-03965 모델을 대상으로 한다. 도 4b에 예시한 xml 포맷의 제2 청크 정보(143)도 일종의 예시이며 다른 포맷으로, 다른 형식으로 얼마든지 표현이 가능하다.
도 4a 내지 도 4b를 통해서 소프트웨어, 즉 펌웨어를 여러 개의 청크로 나누어 P2P의 효율을 높이기 위한 방법에 대해서 살펴보았다. 이번에는 하드웨어, 즉 IoT 기기를 묶어서 클러스터를 구성하여 P2P의 효율을 높이기 위한 방법에 대해서 살펴보도록 하자.
도 5a 내지 도 5b는 펌웨어 업데이트를 위한 클러스터를 구성하는 단계(S2000)를 설명하기 위한 예시도이다.
도 5a를 참고하면 제1 펌웨어(130)를 업데이트 하기 위한 제1 클러스터(150)를 구성하는 과정을 살펴볼 수 있다. 카메라 종류의 IoT 기기 제1 IoT 기기(111), 제2 IoT 기기(112), 제3 IoT 기기(113)과 레이저 계측기 종류의 IoT 기기 제4 IoT 기기(121)을 하나로 묶어서 제1 클러스터(150)을 구성하였다.
여기서 제4 IoT 기기(121)은 제1 펌웨어(130)을 이용한 펌웨어 업데이트 대상은 아니나, 제1 펌웨어(130)을 구성하는 청크를 배포하기 위해 클러스터에 포함되었다. 제1 클러스터(150)에서 제1 펌웨어(130)을 이용해서 업데이트를 수행하는 IoT 기기(111, 112, 113)는 진하게 경계선을 표시하였다.
즉, 진하게 경계선이 표시된 IoT 기기(111, 112, 113)는 P2P 통신에서 서버&클라이언트 모드로 동작하게 되고, 그 외의 IoT 기기(121)는 P2P 통신에서 서버 모드로만 동작하게 된다. 그 외의 IoT 기기 즉 제1 클러스터(150)에 포함되지 않은 IoT 기기(122, 123, 124)들은 제1 펌웨어(130)의 업데이트에는 관여하지 않는다.
제4 IoT 기기(121)이나, 제5 IoT 기기(122), 제6 IoT 기기(123), 제7 IoT 기기(124) 모두 레이저 계측기 종류의 IoT 기기임에도 제4 IoT 기기(121)만 제1 클러스터(150)에 포함된 이유는 여러가지가 있을 수 있다. 즉 클러스터를 구성할 때 펌웨어 업데이트가 필요한 IoT 기기 외에 추가적으로 서버 모드로만 동작할 IoT 기기를 더 포함할 수 있는데, 이 때 2가지 기준에 의해 IoT 기기를 더 추가할 수 있다.
그 중에 하나는 유휴 리소스의 여부이다. 펌웨어 업데이트가 필요하지 않음에도 클러스터에 포함되는 IoT 기기는 순전히 서버 모드로 동작하면서 필요한 청크를 배포하기 위해서이다. 즉 자신이 사용하지도 않을 펌웨어의 청크를 배포하기 위해서 클러스터에 포함된 것이므로, 당연하게도 해당 IoT 기기는 서버 모드로 청크를 배포할 만한 유휴 리소스가 필요하다. 충분한 유휴 리소스가 없는 IoT 기기는 클러스터에 포함되더라도 청크를 배포할 수 없으므로 제외된다.
두 번째 기준은 네트워크 커버리지이다. 유휴 리소스가 충분히 있더라도 네트워크 커버리지가 클러스터에 포함된 펌웨어 업데이트가 필요한 IoT 기기들을 충분히 감당하지 못하는 경우에는 청크를 배포할 수 없으므로 제외된다. 통상 IoT 기기들은 와이파이(Wi-Fi)와 같은 통신 방식을 통해서 인터넷에 연결되어 있다. 그리고 신호의 세기는 거리의 제곱에 반비례하므로, 펌웨어 업데이트가 필요한 IoT 기기들과 물리적으로 먼 거리에 위치한 IoT 기기는, 유휴 리소스가 충분하더라도 청크를 배포하기 어려울 수 있다.
즉 펌웨어 업데이트를 위한 클러스터를 구성하는 단계는 1) 펌웨어 업데이트가 필요한 IoT 기기들의 목록을 확정하고, 2) 유휴 리소스가 있으면서, 앞서 확정한 펌웨어가 필요한 IoT 기기들에 청크를 전송할만큼 네트워크 커버리지가 닿는 IoT 기기의 목록을 추가적으로 확정한다. 이렇게 서버&클라이언트 모드로 동작할 IoT 기기와 서버 모드로 동작할 IoT 기기를 한데 묶어서 클러스터를 생성한다.
서버&클라이언트 모드로 동작할 IoT 기기 외에 서버 모드로 동작할 IoT 기기를 추가하여 클러스터를 구성함으로써, P2P 방식으로 청크를 공유할 때의 효율을 더욱 높일 수 있다. 특히, 스마트 공장처럼 IoT 기기의 종류는 적으나 수는 많은 환경에서는 서버 모드로 동작할 IoT 기기를 많이 클러스터에 포함시킬 수 있으므로 효율은 더욱 배가 될 것이다.
도 5a를 참고하면 제1 펌웨어(130)을 업데이트 하기 위한 제1 클러스터(150)는 총 4개의 IoT 기기로 구성되어 있다. 이는 카메라 종류의 제1 IoT 기기(111), 제2 IoT 기기(112), 제3 IoT 기기(111)와 레이저 계측기 종류의 제4 IoT 기기(121)이다. 이를 xml 포맷으로 표현하면 도 5a의 제1 클러스터 정보(151)과 같다.
도 5a를 참고하면, 카메라 종류의 IoT 기기를 대상으로 하는 제1 클러스터(150)는 버전이 1.712.1 이며, 대상 IoT 기기는 CM-03921 모델을 대상으로 한다. 제1 클러스터(150)에 포함된 IoT 기기의 수는 총 4개이며, 카메라 종류의 IoT 기기 제1 IoT 기기(111), 제2 IoT 기기(112), 제3 IoT 기기(113)과 레이저 계측기 종류의 IoT 기기 제4 IoT 기기(121)이다.
이 중에서 카메라 종류의 IoT 기기 제1 IoT 기기(111), 제2 IoT 기기(112), 제3 IoT 기기(113)는 서버&클라이언트 모드로 동작하며, 레이저 계측기 종류의 IoT 기기 제4 IoT 기기(121)는 서버 모드로 동작한다. 도 5a의 제1 클러스터 정보(151)는 클러스터 정보(cluster information)을 간략히 표현하기 위해서 모드와 관련된 정보까지 표시한 것은 아니지만, 추후 설명할 도 9a를 참고하면 클러스터 정보(cluster information)에 추가적인 정보가 더 포함될 수 있다.
마찬가지로 도 5b를 참고하면 제2 펌웨어(140)을 업데이트 하기 위한 제2 클러스터(160)는 총 4개의 IoT 기기로 구성되어 있다. 이 중에서 펌웨어 업데이트가 필요한 IoT 기기는 제4 IoT 기기(121), 제5 IoT 기기(122), 제6 IoT 기기(123)이며, 제7 IoT 기기(124)는 동일하게 레이저 계측기 종류이나 펌웨어의 업데이트는 필요가 없는 IoT 기기이다. 예를 들면, 제7 IoT 기기(124)는 사전에 이미 펌웨어의 업데이트가 수행된 IoT 기기일 수 있다.
도 5a와 5b를 참고하면 서버 모드로만 동작하기 위해서 클러스터에 추가로 포함된 IoT 기기는 펌웨어의 업데이트가 필요한 IoT 기기와 같은 종류인지를 불문한다. 펌웨어의 업데이트가 필요한, 즉 서버&클라이언트 모드로 동작하는 IoT 기기는 최소한 동종의 IoT 기기일 것으로 제한되나, 펌웨어의 업데이트가 필요 없는, 즉 서버 모드로만 동작하는 IoT 기기는 동종의 IoT 기기일 필요가 없다. 서버 모드로만 동작하는 IoT 기기는 P2P 방식으로 청크를 공유할 때 효율을 높이기 위해서 선택적으로(optional) 추가된 IoT 기기이기 때문이다.
지금까지 도 4a 내지 4b를 통해서 청크 정보(chunk information)를 살펴보았고, 도 5a 내지 5b를 통해서 클러스터 정보(cluster information)를 살펴보았다. 이제 이 둘 사이의 관계를 설정한 청크 맵(chunk map)에 대해서 살펴보도록 한다.
도 6a 내지 도 7b는 청크와 IoT 기기를 맵핑한 청크 맵을 생성하는 단계(S3000)를 설명하기 위한 예시도이다.
도 6a의 제1 청크 맵(153)은 도 4a의 제1 청크 정보(133)와 도 5a의 제1 클러스터 정보(151) 사이의 맵핑 정보를 표현한 것이고, 도 6b의 제2 청크 맵(163)은 도 4b의 제2 청크 정보(143)와 도 5b의 제2 클러스터 정보(161) 사이의 맵핑 정보를 표현한 것이다.
도 6a를 참고하면 제1 청크 맵(153)은 제1 펌웨어(130)의 배포를 위한 청크 맵으로, 버전이 1.712.1 이며 CM-03921 모델의 IoT 기기를 대상으로 한다. 배포가 필요한 청크의 수는 총 3개 이며, 각각 식별자 a, 식별자 b, 식별자 c이다.
그리고 청크 a의 배포를 담당하는 IoT 기기는 제1 IoT 기기(111)과 제4 IoT 기기(121) 두 개이다. 이 중에서 앞에 나열된 제1 IoT 기기(111)가 청크 a의 배포를 주(master)로 담당하게 되며, 뒤에 나열된 제4 IoT 기기(121)는 청크 a의 배포를 종(slave)로 담당하게 된다.
예를 들면 특정 IoT 기기가 청크 a를 다운로드 받을 때, 청크 a의 배포를 주(master)로 담당하고 있는 제1 IoT 기기(111)가 다른 IoT 기기에 청크 a를 배포하느라 응답이 없거나 느린 경우, 청크 a의 배포를 종(slave)로 담당하고 있는 제4 IoT 기기(121)에 청크 a를 요청하여 다운로드 받을 수 있다.
도 6a를 참고하면, 특정 IoT 기기가 청크 b를 다운로드 받을 때, 청크 b의 배포를 주(master)로 담당하고 있는 제2 IoT 기기(112)가 다른 IoT 기기에 청크 b를 배포하느라 응답이 없거나 느린 경우, 청크 b의 배포를 종(slave)로 담당하고 있는 제4 IoT 기기(121)에 청크 b를 요청하여 다운로드 받을 수 있다.
마찬가지로, 특정 IoT 기기가 청크 c를 다운로드 받을 때, 청크 c의 배포를 주(master)로 담당하고 있는 제3 IoT 기기(113)가 다른 IoT 기기에 청크 c를 배포하느라 응답이 없거나 느린 경우, 청크 c의 배포를 종(slave)로 담당하고 있는 제4 IoT 기기(121)에 청크 c를 요청하여 다운로드 받을 수 있다.
이처럼 하나의 청크에 대해서도 주(master)와 종(slave)로 해당 청크를 배포할 IoT 기기를 지정함으로써, P2P 방식으로 청크를 공유할 때 효율을 좀 더 높일 수 있다. 물론 도 6a에 예시된 주종(slave)으로 청크를 배포하는 방식은 일 예에 지나지 않으며 발명을 제한하기 위한 것은 아니다.
즉 제1 청크 맵에서 <array name="priority"> </array> 아래에 해당 청크를 배포할 IoT 기기의 수는 하나 이상 이기만 하면 충분하다. 다만, IoT 기기의 수가 하나인 경우에는 시스템의 가용성이 떨어지므로 두 개 이상으로 하는 것이 바람직하다. 이 때 어떠한 식으로 여러 개의 IoT 기기를 배치할 지에 대해서는 추후 도 9b에서 보다 자세하게 살펴보기로 한다.
도 6a의 제1 청크 맵(153)은 각 청크의 식별자를 기준으로 xml 포맷으로 표시한 것으로, 이를 각 IoT 기기를 기준으로 표로 정리해보면 다음의 표 1과 같다.
구분 제1 IoT 기기(111) 제2 IoT 기기(112) 제3 IoT 기기(113) 제4 IoT 기기(121)
주(master) a b c 없음
종(slave) 없음 없음 없음 a, b, c
제1 펌웨어(130)의 업데이트가 필요한 카메라 종류의 IoT 기기 셋(111, 112, 113)이 각 청크의 배포를 주(master)로 담당하고, 제1 펌웨어(130)의 업데이트가 필요 없는 레이저 계측기 종류의 IoT 기기(121)가 각 청크의 배포를 종(slave)으로 담당한다. 특정 IoT 기기에 청크의 요청이 몰리지 않도록 분산을 시킨 것을 볼 수 있다.
도 6b를 참고하면 제2 청크 맵(163)은 제2 펌웨어(140)의 배포를 위한 청크 맵으로, 버전이 0.9428 이며 BN-03965 모델의 IoT 기기를 대상으로 한다. 배포가 필요한 청크의 수는 총 4개 이며, 각각 식별자 a, 식별자 d, 식별자 e, 식별자 f이다.
그리고 청크 a의 배포를 담당하는 IoT 기기는 제4 IoT 기기(121)와 제7 IoT 기기(124) 두 개이다. 이 중에서 앞에 나열된 제4 IoT 기기(121)가 청크 a의 배포를 주(master)로 담당하게 되며, 뒤에 나열된 제7 IoT 기기(124)는 청크 a의 배포를 종(slave)로 담당하게 된다.
마찬가지로, 청크 d의 배포를 담당하는 IoT 기기는 제5 IoT 기기(122)와 제1 IoT 기기(121) 두 개이다. 이 중에서 앞에 나열된 제5 IoT 기기(122)가 청크 d의 배포를 주(master)로 담당하게 되며, 뒤에 나열된 제4 IoT 기기(121)는 청크 d의 배포를 종(slave)로 담당하게 된다.
마찬가지로, 청크 e의 배포를 담당하는 IoT 기기는 제6 IoT 기기(123)와 제5 IoT 기기(122) 두 개이다. 이 중에서 앞에 나열된 제6 IoT 기기(123)가 청크 e의 배포를 주(master)로 담당하게 되며, 뒤에 나열된 제5 IoT 기기(122)는 청크 e의 배포를 종(slave)로 담당하게 된다.
마찬가지로, 청크 f의 배포를 담당하는 IoT 기기는 제7 IoT 기기(124)와 제6 IoT 기기(123) 두 개이다. 이 중에서 앞에 나열된 제7 IoT 기기(124)가 청크 f의 배포를 주(master)로 담당하게 되며, 뒤에 나열된 제6 IoT 기기(123)는 청크 f의 배포를 종(slave)로 담당하게 된다.
도 6b의 제2 청크 맵(163)은 각 청크의 식별자를 기준으로 xml 포맷으로 표시한 것으로, 이를 각 IoT 기기를 기준으로 표로 정리해보면 다음의 표 2과 같다.
구분 제4 IoT 기기(121) 제5 IoT 기기(122) 제6 IoT 기기(123) 제7 IoT 기기(124)
주(master) a d e f
종(slave) d e f a
제2 클러스터(160)에 속한 4개의 레이저 계측기 종류의 IoT 기기(121, 122, 123, 124)가 각각 하나의 청크를 주와 종(slave)으로 배포하는 것을 볼 수 있다. 도 6a와 마찬가지로 특정 IoT 기기에 청크의 요청이 몰리지 않도록 분산을 시킨 것을 볼 수 있다.
다만 도 6b의 예는 이해의 편의를 돕기 위해 제2 클러스터(160)에 속한 IoT 기기의 수도 4개이고, 제2 펌웨어(140)의 수도 4개로 맞춘 경우이고, 상황에 따라서는 IoT 기기의 수가 청크의 수보다 더 많을 수도 있고, 반대로 청크의 수가 IoT 기기의 수보다 더 많을 수도 있다.
IoT 기기의 수가 청크의 수보다 더 많은 경우에는 도 6a의 예처럼 특정 IoT 기기(121)는 주(master)로 배포하는 청크가 없을 수도 있다. 반대로 청크의 수가 IoT 기기의 수보다 더 많은 경우에는 특정 IoT 기기는 하나 이상의 청크를 주(master)로 배포할 수 있다.
지금까지 도 6a 내지 도 6b를 통해서 청크 맵에 대해서 살펴보았다. 그러나 도 6a 내지 도 6b는 이해의 편의를 돕기 위해 청크 맵을 간단히 설명한 것이며, 각 IoT 기기에서 시드(seed)로 사용할 청크와 함께 전송될 청크 맵은 최종적으로는 도 7a 내지 도 7b의 예처럼 청크 정보와 클러스터 정보 및 청크 맵 정보를 포함한 형태가 될 수 있다.
도 7a를 참고하면, 도 4a의 청크 정보, 도 5a의 클러스터 정보, 도 6a의 청크 맵 정보가 하나의 xml 포맷으로 표시된 것을 볼 수 있다. 마찬가지로 도 7b를 참고하면, 도 4b의 청크 정보, 도 5b의 클러스터 정보, 도 6b의 청크 맵 정보가 하나의 xml 포맷으로 표시된 것을 볼 수 있다.
이처럼 펌웨어 서버(100)는 펌웨어를 청크로 분할하면서 청크 정보를 생성하고, IoT 기기를 묶어서 클러스터를 구성하면서 클러스터 정보를 생성하고, 이를 맵핑하면서 청크 맵 정보를 생성하고, 청크 정보와 클러스터 정보 및 청크 맵 정보를 모두 병합하여 최종적으로 도 7a의 형태와 같은 식으로 청크 맵(155)를 생성하여 각 IoT 기기로 전송할 수 있다.
각 IoT 기기는 자신이 주(master) 또는 종(slave)로 배포해야 할 시드 청크와 함께 청크 맵을 수신하여, 자신이 담당한 청크를 배포하면서(server), 한편으로 자신이 업데이트 해야하는 펌웨어를 복원하기 위해 필요한 청크를 다운로드 받으면서(client), P2P 방식으로 펌웨어 업데이트를 수행할 수 있다. 펌웨어 서버(100)는 시드 청크와 청크 맵을 각 IoT 기기로 전송하기만 하면 역할이 모두 끝나므로 펌웨어 서버(100)에 가해지는 부하를 줄일 수 있다.
도 8a 내지 도 8b는 본 발명의 일 실시예에 따른 P2P 이용한 IoT 기기의 펌웨어 업데이트 방법을 설명하기 위한 흐름도이다.
도 8a를 참고하면 펌웨어 서버(100)는 도 7a에서 만든 제1 청크 맵(155)에서 정한 계획대로, 청크 a와 청크 맵(155)을 제1 IoT 기기(111)로 전송하고, 청크 b와 청크 맵(155)을 제2 IoT 기기(112), 청크 c와 청크 맵(155)을 제3 IoT 기기(113)로, 청크 a, b, c와 청크 맵(155)을 제4 IoT 기기(121)로 전송한다(①, ②, ③, ④ 단계).
자신이 주(master) 또는 종(slave)로 배포할 시드(seed) 청크와 함께 청크 맵을 전송 받은 각 IoT 기기는 P2P 방식으로 다른 IoT 기기와 청크를 주고 받으면서 제1 펌웨어(130)를 복원하고, 제1 펌웨어(130)의 복원이 끝나면 이를 이용하여 펌웨어를 업데이트 할 수 있다.
제1 IoT 기기(111)를 기준으로 설명해보면, 청크 맵의 청크 정보에서 제1 펌웨어(130)는 abac로 구성이 되어 있고, 자신은 이미 청크 a는 펌웨어 서버(100)로부터 시드 청크로 전송 받았으니, 제1 IoT 기기(111)는 추가적으로 청크 b와 청크 c가 필요하다.
청크 b를 주(master)로 배포하는 IoT 기기는 제2 IoT 기기(112)이므로 제1 IoT 기기(111)는 제2 IoT 기기(112)에 청크 b를 요청하여(⑤ 단계), 수신 받는다(⑥ 단계). 마찬가지로 청크 c를 주(master)로 배포하는 IoT 기기는 제3 IoT 기기(113)이므로 제1 IoT 기기(111)는 제3 IoT 기기(113)에 청크 c를 요청한다(⑦ 단계). 그러나 제3 IoT 기기(113)가 청크 b를 전송할 수 없는 경우에는(⑧ 단계), 제1 IoT 기기(111)는 청크 c를 종(slave)으로 배포하는 제4 IoT 기기(121)에 청크 c를 요청한다(⑨ 단계).
제4 IoT 기기(121)로부터 청크 c를 수신하여(⑩ 단계), 최종적으로 제1 펌웨어(130)를 구성하는 청크 a, b, c를 모두 모은 제1 IoT 기기(111)는 청크 a, b, c를 abac 순서로 병합하여 제1 펌웨어(130)를 복원하고(⑪ 단계) 업데이트를 수행한다(⑫ 단계). 제1 펌웨어(130)의 업데이트가 끝난 후에는 제1 IoT 기기(111)는 펌웨어 서버(100)로 제1 펌웨어(130)의 업데이트가 끝났음을 알리는 응답을 전송할 수 있다(⑬ 단계).
제1 IoT 기기(111)와 마찬가지로 제2 IoT 기기(112)와 제3 IoT 기기(113)도 P2P 방식으로 제1 펌웨어(130)를 업데이트하고, 펌웨어 서버(100)로 제1 펌웨어(130)의 업데이트가 끝났음을 알리는 응답을 전송할 수 있다(⑭, ⑮ 단계).
도 8a와 도 2를 비교해보면 도 8a에서는 다른 종류의 IoT 기기(121)도 포함하여 제1 클러스터(150)를 구성한 것을 볼 수 있다. 또한, 각 IoT 기기가 개별적으로 펌웨어 서버(100)에 제1 펌웨어(130)을 요청하여 전송 받던 방식에서, 각 IoT 기기가 펌웨어 서버(100)로부터 시드 청크를 전송 받고, 다른 IoT 기기와 청크를 P2P로 공유하는 방식을 통해 펌웨어 업데이트를 수행하는 것을 볼 수 있다.
도 8b를 참고하면 제2 펌웨어(140)를 업데이트 하기 위한 제2 클러스터(160)를 볼 수 있다. 제2 클러스터(160)에는 총 4개의 IoT 기기가 포함되어 있다. 4개의 IoT 기기 모두 레이저 계측기 종류의 IoT 기기이며 그 중에 세 개의 IoT 기기(121, 122, 123)은 제2 펌웨어(140)의 업데이트 대상이며, 나머지 하나의 IoT 기기(124)는 제2 펌웨어(140)의 업데이트 대상은 아니나 서버 모드로 청크의 배포를 위해 제2 클러스터(160)에 포함되었다.
도 8a의 경우와 마찬가지로 펌웨어 서버(100)는 제2 펌웨어(140)를 여러 개의 청크로 나누어, 제4 IoT 기기(121)로는 청크 a와 d를 시드 청크로 전송하고, 제5 IoT 기기(122)로는 청크 d와 e를 시드 청크로 전송하고, 제6 IoT 기기(123)로는 청크 e와 f를 시드 청크로 전송하고, 제7 IoT 기기(124)로는 청크 f와 a를 시드 청크로 전송한다.
제4 IoT 기기(121)를 기준으로 살펴보면, 청크 맵을 통해 제2 펌웨어(140)는 adef로 구성되어 있고, 현재 자신은 시드 청크로 청크 a와 청크 d를 펌웨어 서버(100)로부터 전송 받았으므로, 청크 e와 청크 f만 추가로 더 P2P 방식으로 전송 받으면 된다.
청크 e를 주(master)로 배포하는 IoT 기기는 제6 IoT 기기(123)이므로, 제4 IoT 기기(121)는 제6 IoT 기기(123)로 청크 e를 요청하여 다운로드 받는다(⑤, ⑥ 단계). 마찬가지로 청크 f를 주(master)로 배포하는 IoT 기기는 제7 IoT 기기(124)이므로, 제4 IoT 기기(121)는 제7 IoT 기기(124)로 청크 f를 요청하여 다운로드 받는다(⑦, ⑧ 단계).
청크 a, d, e, f를 모두 보유하게 된 제4 IoT 기기는 청크 a, d, e, f를 순서대로 병합(merge)하여 제2 펌웨어(140)를 복원하고, 제2 펌웨어(140)의 업데이트를 수행한다(⑨, ⑩ 단계). 그리고 제2 펌웨어(140)의 업데이트가 완료되었음을 펌웨어 서버(100)로 알린다(⑪ 단계).
마찬가지의 방식으로 제5 IoT 기기(122)와 제6 IoT 기기(123)도 제2 펌웨어(140)의 업데이트를 끝내고 펌웨어 서버(100)로 제2 펌웨어(140)의 업데이트가 완료되었음을 알린다(⑫, ⑬ 단계). 이처럼 P2P 방식을 통해 레이저 계측기 종류의 IoT 기기(121, 122, 123)의 제2 펌웨어(140)의 업데이트가 진행된다.
본 발명의 P2P를 이용한 펌웨어 업데이트 방법은 펌웨어를 여러 개의 청크로 분할함으로써, IoT 기기를 클러스터로 묶음으로써, 청크와 IoT 기기를 맵핑(mapping)할 때 주(master)와 종(slave)으로 맵핑함으로써, P2P 방식으로 펌웨어를 업데이트할 때의 효율을 높일 수 있다.
도 9a 내지 도 9b는 IoT 기기의 리소스를 반영하여 청크 맵을 생성하는 과정을 설명하기 위한 예시도이다.
도 5a의 제1 클러스터 정보(151)을 설명하면서 추가적인 정보가 더 포함될 수 있음을 언급하였다. 도 5a의 예에서는 이해의 편의를 돕기 위해 클러스터에 속한 IoT 기기만 나열하는 정도로 xml 포맷의 제1 클러스터 정보(151)를 제시하였으나, 도 9a를 참고하면 추가적인 정보가 더 포함된 것을 볼 수 있다.
예를 들면 제1 클러스터 정보(151)는 제1 클러스터(150)에 포함된 제1 IoT 기기(111)의 식별자와 P2P 통신을 위한 제1 IoT 기기(111)의 아이피(IP)와 제1 IoT 기기(111)가 펌웨어 업데이트도 수행하는지 여부 및 제1 IoT 기기(111)의 유휴 리소스를 기 설정된 기준에 따라 스코어링한 점수를 추가적으로 포함할 수 있다.
제1 IoT 기기(111)의 아이피를 추가하여, 다른 IoT 기기들이 청크 맵을 통해 제1 IoT 기기(111)와 P2P 통신을 통해 청크를 주고 받을 수 있다. 또한 제1 IoT 기기(111)가 업데이트도 수행하는 경우에는 서버&클라이언트 모드로 동작한다는 것을 알 수 있다. 반대로 제4 IoT 기기(121)의 경우 is_update의 값이 0이므로 펌웨어의 업데이트는 없이 서버 모드로 동작한다는 것을 알 수 있다.
마지막으로 score 항목은 제1 IoT 기기(111)의 유휴 리소스의 정도를 점수화한 것이다. 예를 들면 제1 IoT 기기(111)의 CPU, RAM 등의 자원 및 네트웍 트래픽을 점수화 하여 score로 표시할 수 있다. score의 크기가 클수록 여유 자원이 많아서 더 많은 청크를 배포하는 서버 역할을 수행할 수 있다.
도 9a의 예에서는 제1 IoT 기기(111)와 제2 IoT 기기(112)는 score가 1인데 비해 제3 IoT 기기(113)는 score가 2이고, 제4 IoT 기기(121)는 score가 4로, 제3 IoT 기기(113)와 제4 IoT 기기(121)가 더 많은 청크를 배포할 수 있는 IoT 기기임을 알 수 있다.
이러한 score를 반영하여 청크 맵도 바뀔 수 있다. 즉 score가 더 높은 IoT 기기가 더 많은 청크를 주(master)로 배포하도록 설정하는 것이다. 도 9b를 참고하면 기존에는 제1 IoT 기기(111), 제2 IoT 기기(112), 제3 IoT 기기(113)가 각각 청크 a, b, c를 주(master)로 배포하였다.
그러나 이번에는, score를 반영하여 score가 4로 제일 높은 제4 IoT 기기(121)가 청크 b와 청크 c를 주(master)로 배포하고, 그 다음으로 score가 2로 높은 제3 IoT 기기(113)가 청크 a를 주(master)로 배포하는 것을 볼 수 있다. 그 외에 나머지 IoT 기기인 제1 IoT 기기(111)는 청크 a를 종(slave)으로 배포하고, 제2 IoT 기기(112)는 청크 b를 종(slave)로 배포하도록 설정하였다. 이처럼 각 IoT 기기의 리소스를 감안하여 청크를 배포할 스케줄링을 함으로써 P2P 방식의 효율을 더욱 높일 수 있다.
도 9b의 청크 맵은 각 청크의 식별자를 기준으로 xml 포맷으로 표시한 것으로, 이를 각 IoT 기기를 기준으로 표로 정리해보면 다음의 표 3과 같다.
구분 제1 IoT 기기(111) 제2 IoT 기기(112) 제3 IoT 기기(113) 제4 IoT 기기(121)
주(master) 없음 없음 a b, c
종(slave) a b c 없음
제1 클러스터(150)에서 스코어가 높은 제3 IoT 기기(113)와 제4 IoT 기기(121)가 청크의 배포를 주(master)로 담당하고, 스코어가 낮은 제1 IoT 기기(111)와 제2 IoT 기기(112)가 각 청크의 배포를 종(master)으로 담당한다. 이를 통해 유휴 리소스가 많은 특정 IoT 기기에 청크의 요청이 몰리도록 분산을 시킨 것을 볼 수 있다.
도 10a 내지 도 10b는 본 발명의 일 실시예에 따른 P2P 이용한 IoT 기기의 펌웨어 업데이트 방법에서 활용될 수 있는 암호화와 청크 맵 갱신에 대해서 설명하기 위한 예시도이다.
도 10a를 참고하면 펌웨어 서버(100)에서 펌웨어를 여러 개의 청크로 나누고 이를 전송하는 과정에서 암호화를 더 수행하는 것을 볼 수 있다. 마찬가지로 각 IoT 기기에서는 청크를 복호화하여 병합하는 것을 볼 수 있다. 이를 통해서 펌웨어 서버(100)에서 IoT 기기 펌웨어를 전송하는 구간 사이의 보안성을 강화할 수 있다.
도 10b를 참고하면 IoT 기기에서 펌웨어를 구성하는 청크를 모으다가 특정 청크를 제공하여야 하는 IoT 기기로부터 청크를 수신할 수 없는 경우의 대응 방법을 볼 수 있다. 앞서 설명한 것처럼 청크를 배포하는 IoT 기기는 하나 이상이면 충분하다. 청크 맵에 각 청크를 배포할 IoT 기기를 지정하여 보냈는데, 청크 맵에서 지정한 IoT 기기로부터 청크를 수신하지 못하는 경우가 생길 수도 있다.
예를 들면 청크 a를 주(master)로 배포하는 IoT 기기로부터도, 종(slave)으로 배포하는 IoT 기기로부터도 청크 a를 수신하지 못한 경우에는 펌웨어 서버(100)로 청크 a를 수신할 수 있는 다른 IoT 기기를 알려달라고 요청을 할 수 있다. 그러면, 펌웨어 서버(100)는 그에 대한 응답으로 청크 맵을 재전송할 수 있다. 이 때 전송하는 청크 맵에는 청크 a를 배포할 IoT 기기가 다른 IoT 기기로 변경되어 있다.
이를 위해서 펌웨어 서버(100)는 각 IoT 기기로부터 펌웨어의 업데이트가 완료되었음을 알리는 응답을 수신할 때마다 청크 맵을 갱신할 수 있다. 즉 이미 펌웨어의 업데이트가 끝난 IoT 기기는 모든 청크를 가지고 있을 것이므로 해당 IoT 기기가 청크 a를 배포하도록 청크 맵을 갱신하여 전송할 수 있다. 이를 통해서 P2P를 이용한 펌웨어 업데이트 방법의 가용성을 확보할 수 있다.
지금까지 도 3 내지 도 10b를 통해서 본 발명의 일 실시예에 따른 P2P를 이용한 펌웨어 업데이트 방법을 살펴보았다. 여기서 데이터 중복 제거를 이용하여 펌웨어를 여러 개의 청크로 분할하는 과정은, 데이터의 중복 제거 없이 단순히 펌웨어를 여러 개의 조각(fragment)로 나누는 과정으로 대체될 수도 있다.
즉 펌웨어를 여러 개의 조각으로 나누고 각 IoT 기기에 시드 조각을 전송하여 P2P 방식으로 시드 조각을 배포하는 방식으로도 펌웨어의 업데이트가 가능하다. 물론, 데이터 중복 제거를 수행하면 전송해야하는 데이터의 양이 줄어드나, 중복 제거로 감소한 데이터의 양이 적거나 청크를 병합하는 과정에서 IoT 기기에서 추가적인 자원의 소모가 큰 경우에는, 중복 제거 없이 단순히 분할된 펌웨어의 조각을 IoT 기기 사이의 P2P를 통해서 공유할 수도 있다.
이 때 펌웨어를 여러 개의 조각으로 나누는 과정은 네트워크 정보를 고려하여 조각의 크기를 결정하는 과정을 포함할 수 있다. 즉 네트워트 전송에 최적화하여 펌웨어를 여러 개의 조각으로 나누는 것이다. 이 때 고려할 네트워크의 정보는 MTU(Maximum transmission unit), 전송 속도, 전송 에러율을 고려할 수 있다.
MTU 크기에 맞추어 펌웨어를 조각내어 전송하면 단편화(fragmentation)가 발생하지 않고 한번에 전송할 수 있으므로 네트워크 전송 효율을 높일 수 있다. 또한 네트워크 규격에 따라 정해진 최고 속도가 있지만 주변 상황에 따라 전송 속도나 전송 에러율이 달라 질 수 있을 수 있으므로, 전송 속도가 낮거나 에러율이 높은 경우에는 펌웨어 조각을 MTU 크기에 맞추지 않고 더 작은 조각으로 나누어 전송 지연이나 에러 복구시 효율을 높일 수 있다.
도 11은 본 발명의 일 실시예에 따른 P2P를 이용한 IoT 기기의 펌웨어 업데이트 장치의 하드웨어 구성도이다.
도 11를 참고하면 P2P를 이용한 IoT 기기의 펌웨어 업데이트 장치(10)는 하나 이상의 프로세서(510), 메모리(520), 스토리지(560) 및 인터페이스(570)을 포함할 수 있다. 프로세서(510), 메모리(520), 스토리지(560) 및 인터페이스(570)는 시스템 버스(550)를 통하여 데이터를 송수신한다.
프로세서(510)는 메모리(520)에 로드 된 컴퓨터 프로그램을 실행하고, 메모리(520)는 상기 컴퓨터 프로그램을 스토리지(560)에서 로드(load) 한다. 상기 컴퓨터 프로그램은, 데이터 중복 제거 오퍼레이션(521), 클러스터 구성 오퍼레이션(523), 청크 맵 관리 오퍼레이션(535) 및 시드 청크 전송 오퍼레이션(미도시)을 포함할 수 있다.
데이터 중복 제거 오퍼레이션(521)은 스토리지(560)에 저장된 펌웨어(561)를 여러 개의 청크로 분할한다. 이 과정에서 중복된 데이터를 제거하고, 펌웨어를 구성하는 청크 정보(chunk information)을 생성할 수 있다. 또한 청크로 분할하는 과정에서 암호화를 추가적으로 더 수행할 수 있다. 암호화된 청크를 전송하면, 추후 IoT 기기에서 이를 복호화하고 병합하여 원래의 펌웨어를 복원할 수 있다.
클러스터 구성 오퍼레이션(523)은 IoT 기기 중에서 펌웨어의 업데이트가 필요한 IoT 기기들을 확정하고 이를 묶어서 클러스터를 구성한다. 그리고 펌웨어의 업데이트가 필요하지는 않지만 앞서 확정한 IoT 기기들에 청크를 배포할 수 있는 IoT 기기들을 클러스터에 더 추가한다.
앞서 확정한 IoT 기기들에 청크를 배포할수 있는지 여부는 유휴 리소스와 네트워크 커버리지를 기준으로 판단한다. 이 과정에서 클러스터 정보(cluster information)을 생성하고 시스템 버스(550)를 통해 스토리지의 클러스터(563)로 저장할 수 있다.
청크 맵 관리 오퍼레이션(525)는 펌웨어(561)를 청크로 분할한 청크 정보와 IoT 기기를 묶은 클러스터 정보를 종합하여 어느 IoT 기기에서 어느 청크를 다운로드 받으면 되는지 여부에 관해 설정한 청크 맵을 생성할 수 있다. 이렇게 생성된 청크 맵을 시스템 버스(550)를 통해 스토리지의 청크 맵(565)로 저장할 수 있다. 또한 각 IoT 기기로부터 펌웨어의 업데이트 완료되었음을 응답으로 수신하면 이를 이용하여 청크 맵을 갱신할 수 있다.
시드 청크 전송 오퍼레이션(미도시)은 청크 맵(565)에서 설정된 스케줄링에 따라 각 IoT 기기로 시드 청크와 함께 청크 맵을 전송한다. 이렇게 전송된 시드 청크는 각 IoT 기기에서 다른 IoT 기기로 배포된다. 이처럼 각 IoT 기기는 P2P 방식으로 펌웨어를 구성하는 청크를 수신하여 펌웨어를 업데이트 할 수 있다.
도 11의 각 구성 요소는 소프트웨어(Software) 또는, FPGA(Field Programmable Gate Array)나 ASIC(Application-Specific Integrated Circuit)과 같은 하드웨어(Hardware)를 의미할 수 있다. 그렇지만, 상기 구성 요소들은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니며, 어드레싱(Addressing)할 수 있는 저장 매체에 있도록 구성될 수도 있고, 하나 또는 그 이상의 프로세서들을 실행시키도록 구성될 수도 있다. 상기 구성 요소들 안에서 제공되는 기능은 더 세분화된 구성 요소에 의하여 구현될 수 있으며, 복수의 구성 요소들을 합하여 특정한 기능을 수행하는 하나의 구성 요소로 구현될 수도 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였지만, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.

Claims (14)

  1. 펌웨어 서버가, 제1 펌웨어를 대상으로 중복된 데이터를 제거(de-duplication)하여, 상기 제1 펌웨어를 여러 개의 청크로 분할하는 단계;
    상기 펌웨어 서버가, 상기 제1 펌웨어를 업데이트 할 하나 이상의 IoT 기기를 포함하는 제1 클러스터를 구성하는 단계;
    상기 펌웨어 서버가, 상기 제1 펌웨어를 구성하는 청크 중에서 상기 제1 클러스터에 속한 제1 IoT 기기가 배포할 시드(seed) 청크를 지정한 청크 맵을 생성하는 단계; 및
    상기 펌웨어 서버가, 상기 제1 IoT 기기로 상기 시드 청크와 상기 청크 맵을 전송하는 단계를 포함하고,
    상기 제1 클러스터를 구성하는 단계는,
    상기 하나 이상의 IoT 기기에 상기 제1 펌웨어를 구성하는 청크를 서버 모드로 배포할 IoT 기기를 상기 제1 클러스터에 추가하는 단계를 포함하는,
    P2P를 이용한 IoT 기기의 펌웨어 업데이트 방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 제1 클러스터에 추가하는 단계는,
    네트워크 커버리지와 유휴 자원을 기준으로 상기 서버 모드로 배포할 IoT 기기를 선정하는 단계를 포함하는,
    P2P를 이용한 IoT 기기의 펌웨어 업데이트 방법.
  4. 제1항에 있어서,
    상기 제1 클러스터를 구성하는 단계는,
    상기 제1 클러스터에 속한 IoT 기기의 유휴 자원에 관한 정보를 수집하는 단계를 포함하고,
    상기 청크 맵을 생성하는 단계는,
    상기 제1 IoT 기기의 유휴 자원을 기준으로 상기 제1 IoT 기기가 배포할 시드 청크를 지정하는 단계를 포함하는,
    P2P를 이용한 IoT 기기의 펌웨어 업데이트 방법.
  5. 제4항에 있어서,
    상기 제1 IoT 기기가 배포할 시드 청크를 지정하는 단계는,
    상기 제1 IoT 기기의 유휴 자원이 많을수록 상기 제1 IoT 기기가 배포할 시드 청크를 더 많이 지정하는 단계를 포함하는,
    P2P를 이용한 IoT 기기의 펌웨어 업데이트 방법.
  6. 제1항에 있어서,
    상기 청크 맵을 생성하는 단계는,
    상기 제1 IoT 기기가 주(master)로 배포할 시드 청크와 상기 제1 IoT 기기가 종(slave)으로 배포할 시드 청크를 지정하는 단계를 포함하는,
    P2P를 이용한 IoT 기기의 펌웨어 업데이트 방법.
  7. 제1항에 있어서,
    상기 시드 청크와 상기 청크 맵을 전송하는 단계는,
    상기 제1 IoT 기기로 상기 시드 청크를 암호화 하여 전송하는 단계를 포함하는,
    P2P를 이용한 IoT 기기의 펌웨어 업데이트 방법.
  8. 제1항에 있어서,
    상기 제1 IoT 기기가, 상기 제1 클러스터에 속한 다른 IoT 기기로부터 상기 시드 청크에 대한 요청을 수신하는 단계; 및
    상기 제1 IoT 기기가, 상기 시드 청크에 대한 요청의 응답으로 상기 다른 IoT 기기로 상기 시드 청크를 전송하는 단계를 포함하는,
    P2P를 이용한 IoT 기기의 펌웨어 업데이트 방법.
  9. 제1항에 있어서,
    상기 제1 IoT 기기가, 상기 청크 맵을 이용하여 상기 제1 클러스터에 속한 다른 IoT 기기에 상기 제1 펌웨어를 구성하는 청크를 요청하는 단계;
    상기 제1 IoT 기기가, 상기 요청의 응답으로 상기 다른 IoT 기기로부터 상기 제1 펌웨어를 구성하는 청크를 수신하는 단계;
    상기 제1 IoT 기기가, 상기 제1 펌웨어를 구성하는 청크를 병합(merge)하여 상기 제1 펌웨어를 복원하는 단계; 및
    상기 제1 IoT 기기가, 상기 복원된 제1 펌웨어로 상기 제1 IoT 기기의 펌웨어를 업데이트 하는 단계를 포함하는,
    P2P를 이용한 IoT 기기의 펌웨어 업데이트 방법.
  10. 펌웨어 서버가, 제1 펌웨어를 여러 개의 조각(fragment)으로 분할하는 단계;
    상기 펌웨어 서버가, 상기 제1 펌웨어를 업데이트 할 하나 이상의 IoT 기기를 포함하는 제1 클러스터를 구성하는 단계;
    상기 펌웨어 서버가, 상기 하나 이상의 IoT 기기에 상기 제1 펌웨어를 구성하는 조각을 서버 모드로 배포할 IoT 기기를 상기 제1 클러스터에 추가하는 단계;
    상기 펌웨어 서버가, 상기 제1 펌웨어를 구성하는 조각 중에서 상기 제1 클러스터에 속한 제1 IoT 기기가 배포할 시드(seed) 조각을 지정한 조각 맵을 생성하는 단계; 및
    상기 펌웨어 서버가, 상기 제1 IoT 기기로 상기 시드 조각과 상기 조각 맵을 전송하는 단계를 포함하는,
    P2P를 이용한 IoT 기기의 펌웨어 업데이트 방법.
  11. 제10항에 있어서,
    상기 제1 펌웨어를 여러 개의 조각(fragment)으로 분할하는 단계는,
    MTU(Maximum transmission unit), 전송 속도, 전송 에러율 중에서 하나 이상을 고려하여 조각의 크기를 결정하는 단계를 포함하는,
    P2P를 이용한 IoT 기기의 펌웨어 업데이트 방법.
  12. 제10항에 있어서,
    상기 제1 클러스터를 구성하는 단계는,
    상기 제1 클러스터에 속한 IoT 기기의 유휴 자원에 관한 정보를 수집하는 단계를 포함하고,
    상기 조각 맵을 생성하는 단계는,
    상기 제1 IoT 기기의 유휴 자원을 기준으로 상기 제1 IoT 기기가 배포할 시드 조각을 지정하는 단계를 포함하는,
    P2P를 이용한 IoT 기기의 펌웨어 업데이트 방법.
  13. 제10항에 있어서,
    상기 제1 IoT 기기가, 상기 제1 클러스터에 속한 다른 IoT 기기로부터 상기 시드 조각에 대한 요청을 수신하는 단계; 및
    상기 제1 IoT 기기가, 상기 시드 조각에 대한 요청의 응답으로 상기 다른 IoT 기기로 상기 시드 조각을 전송하는 단계를 포함하는,
    P2P를 이용한 IoT 기기의 펌웨어 업데이트 방법.
  14. 제10항에 있어서,
    상기 제1 IoT 기기가, 상기 조각 맵을 이용하여 상기 제1 클러스터에 속한 다른 IoT 기기에 상기 제1 펌웨어를 구성하는 조각을 요청하는 단계;
    상기 제1 IoT 기기가, 상기 요청의 응답으로 상기 다른 IoT 기기로부터 상기 제1 펌웨어를 구성하는 조각을 수신하는 단계;
    상기 제1 IoT 기기가, 상기 제1 펌웨어를 구성하는 조각을 병합(merge)하여 상기 제1 펌웨어를 복원하는 단계; 및
    상기 제1 IoT 기기가, 상기 복원된 제1 펌웨어로 상기 제1 IoT 기기의 펌웨어를 업데이트 하는 단계를 포함하는,
    P2P를 이용한 IoT 기기의 펌웨어 업데이트 방법.
KR1020160050768A 2016-04-26 2016-04-26 P2P를 이용한 IoT 기기의 펌웨어 업데이트 방법 및 그 장치 KR102423084B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160050768A KR102423084B1 (ko) 2016-04-26 2016-04-26 P2P를 이용한 IoT 기기의 펌웨어 업데이트 방법 및 그 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160050768A KR102423084B1 (ko) 2016-04-26 2016-04-26 P2P를 이용한 IoT 기기의 펌웨어 업데이트 방법 및 그 장치

Publications (2)

Publication Number Publication Date
KR20170121911A KR20170121911A (ko) 2017-11-03
KR102423084B1 true KR102423084B1 (ko) 2022-07-19

Family

ID=60383742

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160050768A KR102423084B1 (ko) 2016-04-26 2016-04-26 P2P를 이용한 IoT 기기의 펌웨어 업데이트 방법 및 그 장치

Country Status (1)

Country Link
KR (1) KR102423084B1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101960736B1 (ko) * 2018-04-26 2019-03-21 (주)에이투유정보통신 무선 네트워크를 통해 프로그램을 업데이트하는 무선기기 및 무선시스템
CN109324812B (zh) * 2018-08-14 2022-04-08 四川虹美智能科技有限公司 一种智能冰箱升级系统及方法
KR102132901B1 (ko) * 2018-10-23 2020-07-10 주식회사 시옷 펌웨어 패키징 및 언패키징 방법
KR102433435B1 (ko) 2020-12-30 2022-08-18 포항공과대학교 산학협력단 랜섬웨어 피해 복원을 위한 p2p 디스크 복원 방법 및 장치
CN118541998A (zh) 2022-01-14 2024-08-23 昕诺飞控股有限公司 用于将数据块传输到网络中的节点设备的方法和系统
KR20240066697A (ko) * 2022-11-08 2024-05-16 엘지전자 주식회사 인공 지능 장치 및 그의 연동기기 업데이트 방법
KR102567514B1 (ko) * 2022-12-16 2023-08-23 부산대학교 산학협력단 블록체인 P2P 네트워크 기반 IoT 디바이스 소프트웨어 업데이트 방법 및 장치

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007538315A (ja) * 2004-05-07 2007-12-27 ホーム ボックス オフィス,インコーポレイティド 通信ネットワークを介した安全なコンテンツ配信方法とシステム
WO2011005051A2 (ko) * 2009-07-10 2011-01-13 엘지전자 주식회사 원격 관리 및 펌웨어 업그레이드 방법 및 장치

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101591534B1 (ko) * 2009-12-30 2016-02-04 주식회사 알티캐스트 계층적 트랙커를 이용한 p2p 전송 시스템 및 이를 위한 트랙커 장치

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007538315A (ja) * 2004-05-07 2007-12-27 ホーム ボックス オフィス,インコーポレイティド 通信ネットワークを介した安全なコンテンツ配信方法とシステム
WO2011005051A2 (ko) * 2009-07-10 2011-01-13 엘지전자 주식회사 원격 관리 및 펌웨어 업그레이드 방법 및 장치

Also Published As

Publication number Publication date
KR20170121911A (ko) 2017-11-03

Similar Documents

Publication Publication Date Title
KR102423084B1 (ko) P2P를 이용한 IoT 기기의 펌웨어 업데이트 방법 및 그 장치
KR102698786B1 (ko) KV-SSD를 사용하여 확장성있는 객체 스토리지를 구성하고 액세스하는 방법 및 KV-SSD, NVMe-SSD 및 기타 플래시 장치의 하이브리드(HUBBRID) 백엔드 스토리지 계층
US9779269B1 (en) Storage system comprising per-tenant encryption keys supporting deduplication across multiple tenants
CN111090645B (zh) 基于云存储的数据传输方法、装置及计算机设备
US9483482B2 (en) Partitioning file system namespace
US20150234845A1 (en) Subpartitioning of a namespace region
CN108885641B (zh) 高性能查询处理和数据分析
US10764261B2 (en) System and method for enabling a scalable public-key infrastructure on a smart grid network
US9614926B2 (en) Parallel I/O write processing for use in clustered file systems having cache storage
US10908834B2 (en) Load balancing for scalable storage system
US20120179778A1 (en) Applying networking protocols to image file management
CN107181774B (zh) 分布式数据中心之间的数据移动
CN103369002A (zh) 一种资源下载的方法及系统
KR101371202B1 (ko) 멀티 메타데이터 서버 구조를 갖는 분산 파일 시스템 및 이를 이용한 데이터 처리 방법
KR101600717B1 (ko) P2p 방식의 가상머신 운영체제 이미지 다운로드 방법 및 장치
EP2942711B1 (en) Dynamic generation of proxy connections
EP4059189A1 (en) Message-limited self-organizing network groups for computing device peer matching
CN112119608B (zh) 用于可验证秘密共享的系统和异步协议
JP6728744B2 (ja) データ提供システム、データ提供方法、データ提供装置、更新対象装置及びコンピュータ・プログラム
US20170366611A1 (en) Method and apparatus for optimizing data transfers utilizing machine learning
JP5690296B2 (ja) 負荷分散プログラムおよび負荷分散装置
WO2015111225A1 (ja) 部品管理システム、部品管理装置、部品管理方法及びプログラム
JP6219771B2 (ja) 負荷分散装置、負荷分散方法、および、負荷分散システム
CN103258016A (zh) 数据传输方法及系统
JP5508346B2 (ja) 分散データ管理システム、分散データ管理方法及び分散データ管理プログラム

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