Implementation of UDP network stack for Java using ef_vi
- Speaker(s)
- Damian Werpachowski
- Affiliation
- MIMUW
- Language of the talk
- Polish
- Date
- Jan. 21, 2025, 10:15 a.m.
- Room
- room 4060
- Title in English
- Implementation of UDP network stack for Java using ef_vi
- Seminar
- Seminarium "DeSeR: Dane, strumienie, rozpraszanie"
We współczesnych serwerowniach istnieje potrzeba bardzo szybkiej komunikacji sieciowej między komputerami. Jednym z takich zastosowań jest zautomatyzowany handel instrumentami finansowymi (takimi jak opcje czy akcje) na giełdzie, gdzie kluczowe jest szybkie reagowanie na dynamicznie zmieniające się ceny. Kluczowym czynnikiem wpływającym na latencję są karty sieciowe. Pod systemami z rodziny Linux standardowo korzysta się z nich za pośrednictwem gniazd sieciowych. Niestety wiąże się to z licznymi wywołaniami systemowymi i przerwaniami, co niesie ze sobą znaczące koszty czasowe. Z tego względu, czołowi producenci wydajnych kart sieciowych udostępniają własne API, które pozwala na bezpośrednią komunikację z kartą, z pominięciem jądra. Jednym z takich API jest ef_vi (skrót od Ethernet Fabric Virtual Interface) od AMD.
Podczas referatu opowiem o swojej pracy magisterskiej, która dotyczy stworzenia biblioteki umożliwiającej korzystanie z protokołu UDP w Javie za pośrednictwem ef_vi pod zastosowania w zautomatyzowanym handlu instrumentami finansowymi. Opowiem przeglądowo o specyfice sieci w giełdowych serwerowniach, problemach wydajnościowych gniazd sieciowych, architekturze kart sieciowych i realizacji protokołów w przestrzeni użytkownika. Następnie przejdę do opisu zaproponowanego rozwiązania i trudności związanych z ef_vi oraz obsługą ARP, ICMP, IGMP, Ethernet i IP. Na koniec przedstawię rozważania nad możliwymi sposobami integracji z Javą (wybór między JNA, JNI, FFI) i interfejsem dla użytkownika końcowego biblioteki.