동작과정 - dlstkdals123/MDC-Multi-hop-Distributed-Computing GitHub Wiki

마지막 수정일: 2025-05-27

Home: :link: 매뉴얼

동작 과정

전체적인 아키텍처는 다음과 같습니다.

  • Router는 생략될 수 있습니다.
  • mosquitto는 생략하였으며, 각 기기는 모두 1개의 mosquitto를 가지고 있습니다.
  • 설명에 필요할 때 mosquitto는 표시됩니다.

MDC_Architecture

이웃간의 통신

무선 또는 유선으로 직접적으로 연결되어 있는 기기들간의 단방향 통신을 설명합니다.

Nano :arrow_right: Cloud로 전송하는 과정을 예시로 설명합니다.

사전 설정

Cloud

  • Cloud_MQTT에 subscriber로 등록합니다.

Nano

  • Cloud_MQTT에 publisher로 등록합니다.

Neighbor_01

전송 방식
Nano

  • Cloud_MQTT에게 데이터를 publish합니다.
    Neighbor_02

Cloud_MQTT

  • Nano에 의해 전송된 데이터를 subscriber인 Cloud에게 전송합니다.
    Neighbor_03

Cloud

  • Cloud_MQTT로부터 데이터를 전송받습니다.

이웃이 아닌 기기들 간의 통신

직접적으로 연결되어 있지 않으므로 이웃들을 통해 통신합니다.

Jetracer :arrow_right: Cloud의 전송은 두 가지 방식으로 가능합니다.
전송 방식은 Controller의 스케쥴링 알고리즘에 의해 결정됩니다.
각 단계는 이웃간의 통신을 이용하여 통신합니다.

  • Jetracer :arrow_right: Nano
  • Nano :arrow_right: Cloud

또는

  • Jetracer :arrow_right: Orin
  • Orin :arrow_right: Cloud

Controller - MDC 통신

Controller는 MDC와 양방향으로 통신합니다.

사전 설정 Controller

  • Controller_MQTT에 subscriber로 등록합니다.
  • config.json에 있는 네트워크 정보를 가져옵니다.
    Controller

동작 방식

  1. 외부 기기에서 MDC을 실행합니다.

  2. MDC가 Controller_MQTT에 publisher로 등록합니다.
    또한 MDC_MQTT에 subscriber로 등록합니다.
    Controller_MDC_02

  3. MDC가 Controller_MQTT에 자신의 IP을 포함한 네트워크 정보 요청 객체를 publish합니다.
    Controller_MDC_03

  4. Controller가 Controller_MQTT에 의해 네트워크 정보 요청 객체를 전송받습니다.
    Controller_MDC_04

  5. 네트워크 정보 요청 객체를 보낸 MDC의 IP을 얻고, 이를 통해 네트워크 정보 객체를 만듭니다.
    네트워크 정보 객체는 MDC의 IP와 이웃하고 있는 기기들의 IP을 포함합니다.
    이를 이용해 MDC는 자신의 이웃과 통신할 수 있습니다.

  6. Controller가 MDC의 IP을 이용해 MDC_MQTT에 publish로 등록합니다.
    Controller_MDC_06

  7. Controller가 MDC_MQTT에 네트워크 정보 객체를 publish합니다.
    Controller_MDC_07

  8. MDC가 MDC_MQTT에 의해 네트워크 정보 객체를 전송받습니다.
    Controller_MDC_08

  9. 이웃간의 통신을 하기 위해 MDC는 자신의 이웃을 저장하고 이웃들의 MQTT에 publisher로 등록합니다.
    Controller_MDC_09