Automotive Software

통신 관리자 (CM : Communication Manager) 기초 본문

아답티브 오토사 (Adaptive AUTOSAR)/통신 관리자 (Communicatioin Management)

통신 관리자 (CM : Communication Manager) 기초

AutoSW 2023. 7. 12. 16:29
  1. 개관
    • 클래식 오토사의 ComM과 같이 아답티브 오토사에는 하나의 기능군(Functional Cluster)에 속하는 Communication Manger (하위, CM)가 있다. CM은 아답티브 오토사의 런타임환경에 속하는 ARA (AUTOSAR Runtime for Adaptive Applicaiton)를 구성하는 일부로써, 로컬 또는 원격지상 애플리케이션 간의 통신 경로를 관장하는 모듈이다.
    • 서비스 지향 설계 (Service-Oriented Architecture, 하위 SOA)를 기본으로 하는 아답티브 오토사는 통신 또한 서비스 지향 설계 (Service-Oritented Communication)를 따르는데, 이는 서비스 탐색 (Service Discovery)을 통해 시스템 구동 중 애플리케이션들이 필요한 통신 경로를 참여자수의 제한 없이 동적으로 설정할 수 있게 한다.
    • SOA 환경에서는 제공되는 서비스의 인터페이스나 동작방식이 시간 경과에 따라 변경이 될 수 있으며, 이는 서비스 버저닝을 통해 구분된다.
    • 오토사 서비스 모델 상에서의 서비스는 이벤트, 메서드 그리고 필드의 집합으로 고유의 서비스 ID를 가지며, 서비스는 IP 와 포트 주소 그리고 인스턴스가 있을 경우 인스턴스 ID를 통해 구분된다.
  2. 주기능
    • ara::com 이벤트 (Event, Publish and Subscribe Manner)를 위한 E2E 지원
    • ara::com 메서드 (Method, Remote Procedure Call)를 위한 E2E 지원
    • ara::com 필드 (Field, Get-Set-Notifier Methods)를 위한 E2E 지원
    • 원시데이터 전송 (Raw Data Streaming)
      • ara::com::raw::RawDataStreamClient
      • ara::com::raw::RawDataStreamServer
    • 통신 그룹화
    • 통신/네트워크 바인딩 (Communication / Network biding)
      • SOME/IP Network biding (Servivce Discovery)
      • 시그널 기반 (Signal-Based Network binding)
      • 데이터 분배 서비스 (Data Distribution Service) Network binding
    • 보안
  3. ARA API 디자인 고려사항
    • 특정 응용 소프트웨어에 대한 비의존성
    • 특정 통신 프로토콜에 대한 비의존적인 서비스 지향 통신 (Service-oriented communication)
    • 특정 상황이나 상위 레벨의 콘셉트에 종속되지 않는 간결한 API 구성 (As lean as possible)
    • 동적 통신 지원
      • 통신 경로는 설정 시점에 알려지지 않으며 구동 시점에 필요한 서비스를 찾아 사용
    • 이벤트(콜백) 방식과 폴링 방식 API 모두 지원 (Support both Event/Callback and Polling style)
    • 동기/비동기화 콜백 기반 통신 방식 지원 (Support both Synchronous and asynchronous)
    • 클라이언트/서버 통신 지원
    • 수신 측의 큐크기를 설정할 수 있는 송/수신 통신 방식 지원
    • 태스크 개시를 위한 동작 조건들의 설정 지원
    • 보안을 위한 확장성
    • QoS를 위한 확장성
    • 실시간 시스템을 위한 확장성
    • E2E 통신 지원
  4. ARA API 디자인 결정
    • 프록시 / 스켈레톤 (Proxy / Skeleton) 패턴의 사용
      • 먼저 애플리케이션 간 사용될 서비스 인터페이스를 ARXML상에 정의 후 코드(. cpp,. hpp)로 생성
      • 프록시
        • 원격 서비스를 사용하는 C++ 클래스의 객체로 애플리케이션/클라이언트에서 사용
        • 스켈레톤에서 제공되는 데이터와 메서드를 제공
      • 스켈레톤
        • 사용자가 제공하는 서비스와 미들웨어 통신 인프라의 연결점으로 제공되는 서비스의 클래스를 제공
        • 클래스를 통해 데이터와 메서드를 제공
      • 향후, 싱글톤으로 알려진 디자인 패턴에 따라 단일화 가능
    • 데이터 수신 시 콜백 메커니즘 지원
    • 제로 카피 기능과 메모리 관리 기능 지원
    • 오토사 서비스 모델과의 조화
    • API 단계에서 서비스 객체 선택과 탐색에 대한 기능 지원
    • C++11에서 소개된 클라이언트/서버 통신 개념 사용
      • std::future, std::promise
    • SOME/IP 에 대한 추상화 지원
      • 서비스 메커니즘, 메소트, 이벤트 그리고 필드는 지원
    • E2E 보호 프로토콜 구현 및 지원
    • 서비스 버저닝 (Service contract versioning) 지원
    • 이벤트와 폴링 방식의 API 사용 지원
    • 개발자를 위한 C++11/14 특성 지원
  5.  인터페이스
    • Public Application Interface : ara:com API로 표준화된 아답티브 오토사 API
    • Functional Cluster Interactions : 클러스터들 간 또는 클러스터 내 개체들 간의 상호 통신을 위한 비표준화 API