גישה ישירה מרוחקת לזיכרון

**גישה ישירה מרוחקת לזיכרון** (**Remote direct memory access** ובקיצור **RDMA**), היא גישה ישירה לזיכרון מזיכרון של מחשב אחד לזיכרון של מחשב אחר, שיכולה להיעשות ללא מעורבות של מערכת ההפעלה באף אחד מהמחשבים. הודות לכך מתאפשרת העברה מהירה של נתונים וזמן השהיה קצר, מאפיינים החשובים לאשכולות מחשבים (קלאסטרים) הממקבלים חישובים בין מחשבים.

בהעברת מידע בין מחשבים ברשת עשויים להיות צווארי בקבוק הנגרמים ממעורבות של מערכת ההפעלה והמעבד, כגון העתקות בין זיכרון של היישום לזיכרון של מערכת ההפעלה ומעבר דרך מערכת ההפעלה (המערב החלפת הקשר; context-switch). בגישה ישירה מרוחקת לזיכרון, יישומים מסוגלים לגשת (לקרוא ולכתוב) לזיכרון במחשב אחר, והודות לתמיכה מתאימה של כרטיס הרשת הניגש ישירות לזיכרון של היישום (מרחב משתמש), לא נדרשת מעורבות של המעבד בהעתקות של זיכרון (zero-copy).

הממשק מגדיר את הפעולות האפשריות בגישה ישירה מרוחקת לזיכרון, הידועות גם כ"פעלים" (verbs): היישום שולח משימה (Work Request) דרך תורים אסינכרוניים, תורי Queue Pair (QP), תור שליחה ותור קבלה, וכשהבקשה מושלמת מתקבל מידע על ההשלמה בתור משימות שהושלמו (Completion Queue; CQ). דוגמאות למשימות הנתמכות ב-RDMA הן משימות Read לקריאת מידע מזיכרון מרוחק, Write לכתיבת מידע לזיכרון מרוחק, ו-Send/Receive לשליחה וקבלה של מידע.

## מימושים נפוצים
### InfiniBand

**InfiniBand** ובקיצור **IB** הוא מימוש הזוכה לתמיכה של ארגון *[[InfiniBand Trade Association]]*. גרסה ראשונה של ההגדרה של אינפיניבנד יצאה לאור ב-2000. הסטנדרט מגדיר רשימת פעלים (verbs), שמתארים את היכולות הנתמכות. התוכנות הסטנדרטיות המשתמשות ב-verbs מוגדרות על ידי ארגון OpenFabrics.

### RoCE
ממוזער|300px|המבנה של חבילה ב-RoCE
**RDMA over Converged Ethernet** ובקיצור **RoCE** הוא מימוש של RDMA עבור רשתות Ethernet. לו שתי גרסאות:
* RoCE v1 - הוא פרוטוקול שכבת הקשר (Link layer) מבוסס Ethernet ומאפשר תקשורת בין כל זוג שרתים באותו מתחם שידור. שדה ה-ethertype המוגדר עבורו הוא 0x8915.
* RoCE v2 - הוא פרוטוקול שכבת רשת (internet layer), וחבילות ב-RoCE v2 יכולות להיות מנותבות. החבילות הן מעל גבי UDP/IPv4 או מעל UDP/IPv6. מספר היעד של הפורט הוא 4791. הפרוטוקול מאפשר גם בקרת עומס (Congestion Control) באמצעות חבילות CNP.

### iWARP
**internet Wide Area RDMA Protocol** ובקיצור **iWARP** מוגדר על ידי חמישה סטנדרטים של IETF שיצאו לאור ב-2007:
#  תקן פרוטוקול גישה ישירה מרוחקת לזיכרון (*A Remote Direct Memory Access Protocol Specification*) הוא תקן מעל גבי פרוטוקול Direct Data Placement Protocol (DDP). התקן מגדיר פעולות כמו שליחה, קריאה וכתיבה של זיכרון מרוחק.
#  *Direct Data Placement over Reliable Transports* הוא תקן מעל MPA/TCP או SCTP. התקן מתאר איך המידע המתקבל צריך להיות מסודר בשכבת הפרוטוקול העליונה
#  *Stream Control Transmission Protocol (SCTP) Direct Data Placement (DDP) Adaptation* מתאר התאמה של DDP מעל גבי SCTP.
#  *Marker PDU Aligned Framing for TCP Specification*
#  *Direct Data Placement Protocol (DDP) / Remote Direct Memory Access Protocol (RDMAP) Security* מתאר ענייני אבטחה הקשורים בשכבות הפרוטקול של iWARP DDP ושל RDMAP.
לתקן זה נוספו הרחבות נוספות בהמשך:
#  *IANA Registries for the Remote Direct Data Placement (RDDP) Protocols* פורסם בשנת 2012 ומתאר הגדרות IANA עבור קודי שגיאות RDDP, קודי פעולות וקודי פונקציות.
#  *Enhanced Remote Direct Memory Access (RDMA) Connection Establishment* פורסם בשנת 2011 ומתאר כיצד ליצור חיבור ראשוני.
#  *Remote Direct Memory Access (RDMA) Protocol Extensions* פורסם ב-2014 ומרחיב את  עם פעולות אטומיות ופעולת כתיבה לזיכרון מרוחק בצירוף מידע מיידי.

## ראו גם
*OpenFabrics

## קישורים חיצוניים
* RDMA Consortium
* InfiniBand Trade Association
* A Tutorial of the RDMA Model
* RDMA usage
* A Critique of RDMA for High-Performance Computing
* OpenFabrics Alliance

## הערות שוליים

קטגוריה:זיכרון מחשב
קטגוריה:תקשורת מחשבים