Publications

Detailed Information

차량용 플랫폼을 위한 CAN 가상화 프레임워크 : CAN Virtualization Framework for Automotive Platform

Cited 0 time in Web of Science Cited 0 time in Scopus
Authors

문용식

Advisor
홍성수
Major
공과대학 전기·정보공학부
Issue Date
2018-02
Publisher
서울대학교 대학원
Keywords
I/O 가상화CAN분리 디바이스 드라이버VirtIO하이퍼바이저
Description
학위논문 (석사)-- 서울대학교 대학원 : 공과대학 전기·정보공학부, 2018. 2. 홍성수.
Abstract
최근 하드웨어의 성능이 발전함에 따라 증가한 컴퓨팅 자원을 효율적으로 활용하려는 노력이 자동차 업계에서 이루어지고 있다. 이러한 노력의 일환으로 차량 내부의 여러 시스템들을 가상화하여 하나의 프로세서 위에 통합/탑재 하려는 시도를 하고 있다. 자동차 업계는 이러한 시도를 통하여 부품 가격을 절감하고 시스템 설계의 복잡도를 낮추려 한다. 차량용 시스템을 가상화 하기 위해서는 일반적인 시스템의 가상화와 달리 차량 시스템에 특화된 각종 시스템 자원들을 가상화 해야 된다. 대표적으로 CAN(Control Area Network)이 있다. CAN은 현존 차량용 시스템들이 서로 통신하기 위해 사용되는 통신 버스로, 하이퍼바이저는 가상화된 차량용 시스템 간의 통신을 제공하기 위하여 이러한 CAN의 가상화를 지원해야 한다.

이를 위하여 몇몇 방법들이 제시되었다. 기존의 CAN 가상화 기술은 크게 하드웨어적 접근과 소프트웨어적 접근으로 나뉠 수 있다. 하드웨어적 접근은 가상화 된 차량용 시스템 수만큼 실제 CAN 컨트롤러를 다수 설치하는 방법이다. 이 접근은 각각의 차량용 시스템들에게 CAN 컨트롤러를 독점 제공하여 각 시스템은 CAN 컨트롤러가 지원하는 최고 성능을 제공받을 수 있다. 이 접근을 통해 각 차량용 시스템이 요구하는 성능적 요구사항을 만족시킬 수 있으나, 차량용 시스템 가상화의 본 목적과 다르게 차량 부품의 단가 상승과 함께 시스템 설계 복잡도의 상승을 초래한다. 이에 반해 소프트웨어적 접근은 하이퍼바이저가 단일 CAN 컨트롤러를 여러 개의 가상 CAN 컨트롤러로 추상화 하여, 가상화된 각각의 차량용 시스템들에게 가상 CAN 컨트롤러를 제공하는 접근이다. 하지만 기존 소프트웨어적 접근은 CAN의 기능적 측면에서의 가상화만을 고려하고 있다. 이러한 접근은 실시간 시스템과 비실시간 시스템으로 구성된 가상화 된 차량용 시스템 환경을 지원할 수 없다는 단점이 있다. 예를 들어, 단일 CAN 컨트롤러를 가상화된 차량용 시스템들이 공유할 때, 하이퍼바이저는 실시간 차량용 시스템에게 버스 대역폭을 항상 선점할 수 있도록 보장해 주고, 비실시간 차량용 시스템들에게는 공정성에 기반하여 버스 대역폭을 할당해주어야 한다. 하지만 기존 소프트웨어적 접근은 시스템 특성에 대한 고려를 하지 않기 때문에, 실제 차량용 시스템에 적용할 경우 시스템 간의 버스 대역폭 간섭 문제를 일으켜 실시간성의 보장이 불가능한 문제와 함께 일부 시스템의 버스 대역폭 기아 문제를 초래할 수 있다.

본 학위논문에서는 제시된 문제를 해결하기 위해 VirtIO에 기반한 CAN 가상화 프레임워크를 제안한다. 제안된 CAN 가상화 프레임워크는 소프트웨어적 기법에 기반하되 비실시간 시스템과 실시간 시스템의 시스템 특성을 고려하여 설계 되었다. 본 프레임워크는 각 시스템들이 CAN 메시지를 보낼 때, 실시간 시스템의 CAN 메시지 전송경로인 fast path와 비실시간 시스템의 CAN 메시지 전송 경로인 slow path를 제공한다. 실시간 시스템은 fast path를 통하여 비가상화 환경 수준으로 CAN을 사용할 수 있으며, 비실시간 시스템은 slow path를 통하여 공정한 버스 대역폭을 할당 받아 기아 현상 없는 CAN 메시지 전송을 수행 할 수 있다.

본 CAN 가상화 프레임워크는 fast path와 slow path의 목적을 달성하기 위하여 세 계층으로 이루어진 계층 아키텍처로 구성되어 있다. 각 계층은 첫 번째 계층인 front-end 드라이버, 두 번째 계층인 back-end driver, 그리고 마지막 계층인 가상버스이다. 첫 번째 계층인 front-end 드라이버는 가상머신 내부의 OS 커널에 존재하여, 가상머신 내부의 응용과 하이퍼바이저를 연결한다. Front-end 드라이버는 내부적으로 가상머신-하이퍼바이저 모드 스위칭에 의한 성능적 오버헤드를 최소화 시키기 위하여 큐잉 기법을 내재하고 있다. 본 CAN 가상화 프레임워크는 fast path와 slow path에 따라 각기 다른 큐잉 활용 정책을 제공한다. Fast path에게 성능적 오버헤드가 있지만 짧은 지연시간을 가질 수 있도록 큐잉 정책을 제공한다. Slow path에게는 CAN 메시지의 타입에 따라 짧은 지연시간을 갖게 하거나 또는 성능적 오버헤드의 최소화할 수 있는 정책을 제공한다. 두 번째 계층인 back-end 드라이버는 디바이스 에뮬레이터 내부에 존재하여, front-end 드라이버와 세 번째 계층인 가상버스를 연결한다. Back-end 드라이버는 계층 간 CAN 메시지의 전달만을 담당하기 때문에 특별한 기법이 사용되지 않는다. 마지막으로 가상버스는 하이퍼바이저 내부에 존재하여 back-end 드라이버와 실제 CAN 컨트롤러를 담당하는 디바이스 드라이버를 연결한다. 가상버스는 차량용 내부 시스템 간 CAN 통신, CAN ID에 기반한 수신 메시지 필터링 등의 전반적인 CAN 버스의 기능을 모사하고 CAN 버스 대역폭을 제어하고 관리한다. 가상버스는 fast path를 통해 실시간 시스템이 버스 대역폭을 항상 선점하여 사용할 수 있도록 하며, slow path를 통해 비실시간 시스템이 공정성에 기반하여 대역폭을 할당 받아 CAN 메시지를 전송할 수 있도록 한다.

본 논문에서 제안된 CAN 가상화 프레임워크의 효용성을 검증하기 위해서 구현과 함께 실험을 진행하였다. 구체적으로 Raspberry Pi 3B 보드 위에서 리눅스 커널 기반 하이퍼바이저인 KVM(Kernel-based Virtual Machine)위에 본 CAN 가상화 프레임워크를 구현하고 front-end 드라이버와 가상버스에 설계된 기능을 평가하였다. 실험 결과 제안된 프레임워크는 실시간 시스템에게 비가상화 환경 수준의 저지연 CAN 전송 환경과 비실시간 시스템에게 기아 없는 공정한 버스 대역폭을 제공하여, 실시간 시스템과 비실시간 시스템이 혼재된 차량용 가상화 환경을 동시에 지원할 수 있음을 보였다. 이러한 결과는 본 논문에서 제안한 CAN 가상화 프레임워크와 내부에 설계된 세부 기법들이 가상화된 차량용 시스템에게 CAN 통신 기능을 제공하는 방법으로써 실용적이고 효과적인 수단임을 보여준다.
Language
Korean
URI
https://hdl.handle.net/10371/141533
Files in This Item:
Appears in Collections:

Altmetrics

Item View & Download Count

  • mendeley

Items in S-Space are protected by copyright, with all rights reserved, unless otherwise indicated.

Share