가상 인터페이스 아키텍처

Virtual Interface Architecture

VIA(Virtual Interface Architecture)는 사용자 레벨 제로 카피 네트워크의 추상적인 모델로, InfiniBand, iWARP, RoCE의 기반이다. 마이크로소프트, 인텔, 컴팩이 만든 오리지널 VIA는 SAN(System Area Networks, 스토리지 Area Networks)으로 알려진 고성능 네트워크 기술의 인터페이스 표준화를 꾀했다.

네트워크는 공유 자원이다. 버클리 소켓 API와 같은 전통적인 네트워크 API로, 커널은 모든 네트워크 통신에 관여한다. 이는 대기 시간이 문제일 때 엄청난 성능 병목 현상을 나타낸다.

컴퓨팅 시스템의 고전적인 발전 중 하나는 가상 메모리인데, 하드웨어와 소프트웨어가 결합되어 각 프로세스마다 프라이빗 메모리의 착각을 일으킨다. 같은 학파의 생각에서, 프로세스 경계를 가로질러 보호되는 가상 네트워크 인터페이스는 사용자 수준에서 접속될 수 있었다. 이 기술로 '소비자'는 자체 버퍼와 통신 일정을 관리하고, '공급자'는 보호를 처리한다.

그러므로 네트워크 인터페이스 카드(NIC)는 프로세스를 위한 "프라이빗 네트워크"를 제공하며, 프로세스는 대개 그러한 네트워크를 여러 개 가질 수 있도록 허용된다. VIA의 가상 인터페이스(VI)는 이 네트워크를 지칭하며, 사용자의 통신 요청의 대상일 뿐이다. 통신은 전송에 관련된 처리 노드 각각에 하나씩, 한 쌍의 VI를 통해 이루어진다. "커널 바이패스" 통신에서는 사용자가 자체 버퍼를 관리한다.

기존 네트워크의 또 다른 측면은 도착하는 데이터를 미리 할당된 버퍼에 넣은 다음 사용자가 지정한 최종 목적지에 복사하는 것이다. 큰 메시지를 복사하는 것은 시간이 오래 걸릴 수 있고, 따라서 이 단계를 없애는 것이 이로운 것이다. 컴퓨팅 시스템의 또 다른 고전적인 발전은 DMA(Direct Memory Access)이다. DMA는 CPU가 자유롭게 다른 작업을 수행하는 동안 주 메모리에 직접 접근할 수 있다.

RDMA(Remote Direct Memory Access)가 있는 네트워크에서 송신 NIC는 DMA를 사용하여 사용자 지정 버퍼의 데이터를 읽고 네트워크를 통해 자급자족 메시지로 전송한다. 그런 다음 수신 NIC는 DMA를 사용하여 데이터를 사용자 지정 버퍼에 배치한다. 중간 복사는 없으며 이러한 모든 작업은 CPU의 개입 없이 발생하며, 이는 CPU 활용도가 낮다는 추가적인 이점을 가지고 있다.

NIC가 DMA를 통해 데이터에 실제로 액세스하려면 사용자 페이지가 메모리에 있어야 한다. VIA에서 사용자는 OS가 페이지를 디스크로 스와핑하는 것을 방지하기 위해 전송 전에 버퍼를 "핀다운"해야 한다. 커널과 관련된 몇 안 되는 이 동작은 페이지를 실제 메모리에 연결시킨다. 등록된 메모리를 소유하는 프로세스만 액세스할 수 있도록 VIA NIC에는 통신 중에 "보호 태그"로 알려진 사용 권한 키가 필요하다.

따라서 본질적으로 VIA는 커널 바이패스 및 네트워크에서 RDMA를 정의하는 표준이다. 그것은 또한 "VIPL"이라는 프로그래밍 라이브러리를 정의한다. 그것은 특히 Giganet(현 Emulex)의 cLAN에서 구현되었다. 그러나 VIA의 주요 기여는 InfiniBand, iWARP, RoCE 표준의 기초를 제공하는 데 있었다.

외부 링크

  • Usenix Notes On VIA
  • 인텔의 책인 가상 인터페이스 아키텍처
  • 엔터프라이즈 네트워크를 계획, 설계 및 최적화하는 방법
  • 가상 인터페이스 아키텍처 규격 UML, cs520
  • Ada Gavrilovska, 고성능 커뮤니케이션 달성: 수직 접근(CRC 누름, ISBN9781420093131, 2009), 페이지 193 "8.2.4 RDMA 역사 재단"