Architektura interfejsu wirtualnego

Architektura interfejsu wirtualnego ( VIA ) jest abstrakcyjnym modelem sieci typu zero-copy na poziomie użytkownika i stanowi podstawę dla InfiniBand , iWARP i RoCE . Pierwotnie VIA, stworzona przez firmy Microsoft , Intel i Compaq , miała na celu standaryzację interfejsu dla wysokowydajnych technologii sieciowych znanych jako sieci systemowe (SAN; nie mylić z sieciami pamięci masowej ).

Sieci są wspólnym zasobem. W przypadku tradycyjnych sieciowych interfejsów API, takich jak interfejs API gniazda Berkeley , jądro jest zaangażowane w każdą komunikację sieciową. Stanowi to ogromne wąskie gardło wydajności, gdy problemem jest opóźnienie .

Jednym z klasycznych osiągnięć w systemach komputerowych jest pamięć wirtualna , połączenie sprzętu i oprogramowania, które tworzy iluzję prywatnej pamięci dla każdego procesu. Zgodnie z tą samą szkołą myślenia interfejs sieci wirtualnej chroniony ponad granicami procesów może być dostępny na poziomie użytkownika. Dzięki tej technologii „konsument” zarządza własnymi buforami i harmonogramem komunikacji, podczas gdy „dostawca” zajmuje się ochroną.

W ten sposób karta interfejsu sieciowego (NIC) zapewnia procesowi „sieć prywatną”, a procesowi zwykle wolno mieć wiele takich sieci. Wirtualny interfejs (VI) VIA odnosi się do tej sieci i jest jedynie miejscem docelowym żądań komunikacyjnych użytkownika. Komunikacja odbywa się przez parę VI, po jednym na każdym z węzłów przetwarzających biorących udział w transmisji. W komunikacji „kernel-bypass” użytkownik zarządza własnymi buforami.

Innym aspektem tradycyjnych sieci jest to, że przychodzące dane są umieszczane w uprzednio przydzielonym buforze, a następnie kopiowane do określonego przez użytkownika miejsca docelowego. Kopiowanie dużych wiadomości może zająć dużo czasu, dlatego wyeliminowanie tego kroku jest korzystne. Innym klasycznym rozwiązaniem w systemach komputerowych jest bezpośredni dostęp do pamięci (DMA), w którym urządzenie ma bezpośredni dostęp do pamięci głównej, podczas gdy procesor może wykonywać inne zadania.

W sieci z „zdalnym bezpośrednim dostępem do pamięci” ( RDMA ) wysyłająca karta sieciowa używa DMA do odczytywania danych w buforze określonym przez użytkownika i przesyłania ich jako samodzielnej wiadomości przez sieć. Odbierająca karta sieciowa używa następnie DMA do umieszczenia danych w buforze określonym przez użytkownika. Nie ma pośredniego kopiowania, a wszystkie te działania odbywają się bez udziału procesorów, co ma dodatkową zaletę w postaci mniejszego wykorzystania procesora.

Aby karta sieciowa rzeczywiście miała dostęp do danych przez DMA, strona użytkownika musi znajdować się w pamięci. W VIA użytkownik musi „przypiąć” swoje bufory przed transmisją, aby uniemożliwić systemowi operacyjnemu zamianę strony na dysk. To działanie — jedno z niewielu, które dotyczy jądra — wiąże stronę z pamięcią fizyczną. Aby upewnić się, że tylko proces, który jest właścicielem zarejestrowanej pamięci, może uzyskać do niej dostęp, karty sieciowe VIA wymagają podczas komunikacji kluczy uprawnień zwanych „znacznikami ochrony”.

Zasadniczo VIA jest standardem, który definiuje omijanie jądra i RDMA w sieci. Definiuje również bibliotekę programistyczną o nazwie „VIPL”. Został on zaimplementowany, przede wszystkim w cLAN firmy Giganet (obecnie Emulex ). Przede wszystkim jednak głównym wkładem VIA było zapewnienie podstaw dla InfiniBand , iWARP i RoCE.

Linki zewnętrzne

  • Uwagi Usenix na temat VIA
  • Architektura interfejsu wirtualnego , książka firmy Intel
  • Jak planować, projektować i optymalizować sieci korporacyjne
  • Specyfikacja architektury interfejsu wirtualnego UML, cs520
  •   Ada Gavrilovska, Osiągnięcie komunikacji o wysokiej wydajności: podejście pionowe (CRC Press, ISBN 9781420093131 , 2009), strona 193 „8.2.4 Podstawy historyczne RDMA”