WD er ved at udvikle en NVMe-driver i Rust. Eksperimenterer med Rust på FreeBSD

På Linux Plumbers 2022-konferencen, der finder sted i disse dage, holdt en ingeniør fra Western Digital en præsentation om udviklingen af ​​en eksperimentel driver til SSD-drev med NVM-Express (NVMe)-grænsefladen, skrevet på Rust-sproget og kører på Linux-kernen niveau. På trods af at projektet stadig er på et tidligt udviklingsstadium, har test vist, at ydeevnen af ​​NVMe-driveren i Rust-sproget svarer til NVMe-driveren skrevet i C-sproget, der er tilgængeligt i kernen.

WD er ved at udvikle en NVMe-driver i Rust. Eksperimenterer med Rust på FreeBSD
WD er ved at udvikle en NVMe-driver i Rust. Eksperimenterer med Rust på FreeBSD

Rapporten fastslår, at den nuværende NVMe-driver i C er fuldstændig tilfredsstillende for udviklere, men NVMe-delsystemet er en god platform til at udforske muligheden for at udvikle drivere i Rust, da det er ret simpelt, meget brugt, har høje ydeevnekrav, og har en gennemprøvet referenceimplementering til sammenligning og understøtter forskellige grænseflader (dev, pci, dma, blk-mq, gendisk, sysfs).

Det bemærkes, at PCI NVMe-driveren til Rust allerede giver den funktionalitet, der er nødvendig for drift, men endnu ikke er klar til udbredt brug, da den kræver individuelle forbedringer. Fremtidige planer omfatter fjernelse af koden for eksisterende usikre blokke, understøttelse af enhedsfjernelse og driveraflæsningsoperationer, understøttelse af sysfs-grænsefladen, implementering af doven initialisering, oprettelse af en driver til blk-mq og eksperimentering med at bruge en asynkron programmeringsmodel til queue_rq.

Derudover kan vi bemærke de eksperimenter, der er udført af NCC Group for at udvikle drivere i Rust-sproget til FreeBSD-kernen. Som et eksempel undersøger vi i detaljer en simpel ekkodriver, der returnerer data skrevet til filen /dev/rustmodule. I den næste fase af eksperimenter overvejer NCC Group muligheden for at omarbejde kernens kernekomponenter i Rust-sproget for at forbedre sikkerheden for netværks- og filoperationer.

Men selvom det har vist sig, at det er muligt at lave simple moduler i Rust-sproget, vil en tættere integration af Rust i FreeBSD-kernen kræve yderligere arbejde. For eksempel nævner de behovet for at skabe et sæt abstraktionslag over undersystemerne og kernestrukturerne, svarende til de tilføjelser, der er udarbejdet af Rust for Linux-projektet. I fremtiden planlægger vi at udføre lignende eksperimenter med Illumos-kernen og identificere almindelige abstraktioner i Rust, der kan bruges i drivere skrevet i Rust til Linux, BSD og Illumos.

Ifølge Microsoft og Google er omkring 70 % af sårbarhederne i deres softwareprodukter forårsaget af usikker hukommelseshåndtering. Det forventes, at brugen af ​​Rust-sproget vil reducere risikoen for sårbarheder forårsaget af usikkert arbejde med hukommelsen, og eliminere forekomsten af ​​fejl såsom adgang til et hukommelsesområde efter det er blevet frigivet og overløb af bufferen.

Hukommelsessikker håndtering leveres i Rust på kompileringstidspunktet gennem referencekontrol, holde styr på objektejerskab og objektlevetid (scope), samt gennem evaluering af korrektheden af ​​hukommelsesadgang under kodeudførelse. Rust giver også beskyttelse mod heltalsoverløb, kræver obligatorisk initialisering af variabelværdier før brug, håndterer fejl bedre i standardbiblioteket, anvender konceptet med uforanderlige referencer og variabler som standard, tilbyder stærk statisk skrivning for at minimere logiske fejl.

Kilde: opennet.ru

Tilføj en kommentar