تکنولوژی RDMA و RoCE چیست؟

RDMA چیست ؟

RDMA مخفف Remote Direct Memory Access می باشد که دسترسی مستقیم به حافظه یک هاست را به حافظه هاست دیگر بدون دخالت CPU و سیستم عامل فراهم می کند که باعث تقویت شبکه و performance هاست با کاهش latency ، کاهش بار CPU و پهنای باند بالاتر می شود. در مقابل، ارتباطات TCP / IP به طور معمول نیازمند عملیات کپی هستند که باعث افزایش قابل توجهی تاخیر در منابع CPU و حافظه می شود.

RDMA با پشتیبانی از آداپتور شبکه برای انتقال داده ها به طور مستقیم به حافظه و یا از حافظه نرم افزار، از طریق شبکه zero-copy، نیاز به کپی داده ها بین حافظه برنامه و بافر داده ها در سیستم عامل را از بین می برد. چنین انتقالاتی هیچ نیازی به این که کار توسط CPU ها انجام شود ندارد و همینطور نیازی به حافظه های ذخیره شده (Cache) یا سوئیچ های context را ندارد و انتقال ها به موازات سایر عملیات سیستم ادامه می یابد. هنگامی که یک برنامه درخواست خواندن یا نوشتن RDMA را انجام می دهد، داده های برنامه به طور مستقیم به شبکه تحویل داده می شود که باعث کاهش Latency و انتقال سریع پیام می شود.

Remote Direct Memory Access

Remote : انتقال داده ها بین node ها در یک شبکه

Direct : هیچ کرنل سیستم عاملی در انتقال داده ها دخالت ندارد.

  • انتقالات بر روی interface card انجام می شود.

Memory : هیچ عملیات کپی یا بافر اضافی انجام نمی شود.

Access : عملیات های ارسال ، دریافت ، خواندن ، نوشتن و اَتومیک

مزایای RDMA :

  • High Throughput
  • Low Latency
  • High Messaging Rate
  • Low CPU Utilization
  • Low Memory Bus Contention
  • Message Boundaries Preserved
  • Asynchronous Operation

RDMA در کجا استفاده می شود؟

performance بالا در محاسبات (MPI : (HPC و SHMEM

یادگیری ماشین : TensorFlow™, Caffe, Microsoft Cognitive Toolkit (CNTK), PaddlePaddle و غیره

بیگ دیتا : Spark ، Hadoop

دیتا بیس ها : Oracle ، SAP (HANA)

ذخیره ساز : NVMe-oF (remote block access to NVMe SSDs), iSER (iSCSI Extensions for RDMA), Lustre, GPFS, HDFS, Ceph, EMC ScaleIO, VMware Virtual SAN, Dell Fluid Cache, Windows SMB Direct

لایه های معماری RDMA :

لایه های معماری RDMA

لایه های معماری RDMA

شباهت بین TCP و RDMA

هر دو از نوع client/server هستند.

هر دو برای انتقال داده نیاز به یک نقطه اتصال دارند.

هر دو حالت انتقال مطمعنی را ارائه می دهند.

  • TCP توالی Bit قابل اطمینان را فراهم می کند.
  • RDMA یک توالی قابل اعتماد در جهت Message ها فراهم می کند.

تفاوت بین TCP و RDMA

Zero-copy : داده ها به طور مستقیم از حافظه مجازی بر روی یک node به حافظه مجازی بر روی node دیگر منتقل می شود.

گذرگاه کرنل : در هنگام انتقال اطلاعات به هیچ سیستم عاملی نیاز ندارد.

عملیات آسنکرون : نخ ها ( Threads ) در طول انتقال I/O مسدود نیستند.

نحوه انتقال در TCP/IP

نحوه انتقال در TCP-IP

نحوه انتقال در TCP-IP

نحوه انتقال در RDMA :

نحوه انتقال در RDMA

نحوه انتقال در RDMA

مدل دسترسی سوکت TCP/IP

  • جریان بایت – نیاز به نرم افزار برای محدود کردن / بازیابی message boundaries
  • سنکرون
  • ارسال و دریافت با یکدیگر همگام سازی (paired) شده اند.
    • هر دو طرف باید در انتقال شرکت می کنند.
  • نیاز به کپی داده ها در بافر های سیستم
    • حافظه کاربر به صورت فوری قبل و بلافاصله بعد از هر عملیات ارسال و دریافت در دسترس قرار می گیرد.

نحوه دریافت در TCP :

نحوه دریافت در TCP

نحوه دریافت در TCP

مدل دسترسی RDMA ( به صورت آسنکرون )

  • Message ها – message boundaries های کاربر را حفظ می کند.
  • آسنکرون – در طول عملیات انتقال موارد زیر را بلاک نمی کند:
    • هنگام شروع ، زمانی که metadata به صف کار اضافه می شود.
    • در انتها وقتی وضعیت موجود در صف تکمیل شد، پایان می یابد.
  • انتقالات به صورت یک طرفه (unpaired) و دو طرفه (paired) می باشد.
  • بدون نیاز به کپی اطلاعات به بافرهای سیستم
  • حافظه درگیر در انتقال بین زمان شروع و اتمام انتقال آزاد می شود.

نحوه دریافت در RDMA :

نحوه دریافت در RDMA

نحوه دریافت در RDMA

پیاده سازی های متداول در RDMA :

  1. (Virtual Interface Architecture (VIA یک مدل عینی از یک شبکه zero-copy در سطح کاربر است و اساسی برای InfiniBand، iWARP و RoCE می باشد. VIA اورجینال، که توسط مایکروسافت، اینتل و Compaq ایجاد شده، به دنبال استاندارد سازی اینترفیس برای تکنولوژی های شبکه با performance بالا می باشد که به عنوان System Area Networks (منظور SAN نبوده و با شبکه های Storage Area اشتباه گرفته نشود) شناخته شده است.
  2. (RDMA over Converged Ethernet (RoCE یک پروتکل شبکه است که اجازه دسترسی مستقیم به حافظه (RDMA) را در یک شبکه اترنت می دهد. دو نسخه RoCE وجود دارد.
  • RoCE v1 یک پروتکل لایه network access layer ( لایه یک و لایه دو ) است و از این رو اجازه ارتباط بین هر دو هاست را در همان broadcast domain می دهد.
  • RoCE v2 یک پروتکل لایه اینترنت ( لایه سه ) است که به این معنی است که پکت های RoCE v2 را می توان روت کرد.

اگر چه پروتکل RoCE از ویژگی های یک شبکه اترنت همگرا بهره مند است، اما همواره این پروتکل نیز می تواند در یک شبکه اترنت سنتی یا غیر همگرا نیز استفاده شود.

  1. InfiniBand (به اختصار IB ) یک استاندارد ارتباطات شبکه کامپیوتری است که در محاسبات با performance بالا استفاده می شود و دارای throughput بسیار بالا و تاخیر بسیار کم است. InfniBand برای اتصال داده های میان دو کامپیوتر در داخل و بین کامپیوترها استفاده می شود. همچنین InfiniBand نیز به عنوان یک اتصال مستقیم یا سوئیچ بین سرورها و سیستم های ذخیره سازی، و همچنین اتصال بین سیستم های ذخیره سازی استفاده می شود.
  2. Omni-Path ( همچنین Omni-path Architecture , OPA . abbr ) یک معماری ارتباطی با performance بالا متعلق به اینتل است. این اهداف برای تاخیر کم در ارتباطات ، مصرف کم انرژی و throughput بالا است. اینتل قصد دارد تکنولوژی مبتنی بر این معماری را در زمینه محاسبات توسعه دهد. در سال 2017، اینتل حداقل 7 تغییرات از سوئیچ های اترنت چند پورت را با استفاده از این اصطلاح به صورت «اینتل Omni-Path Edge Switch 100 Series» ارائه داد که همه آن ها از 100 گیگابایت در ثانیه برای تمامی پورت ها پشتیبانی می کنند.
  3. iWARP (مخفف Internet Wide-area RDMA Protocol می باشد) یک پروتکل شبکه کامپیوتری است که برای RDMA تولید شده و در انتقال دیتا در شبکه های مبتنی بر IP کاربرد دارد. از آنجا که iWARP در پروتکل های متداول استاندارد حمل و نقل TCP و SCTP لایه بندی شده است، می تواند با موفقیت ، در گستره وسیعی از محیط ها به کار گرفته شود.
  4. (SCSI RDMA Protocol (SRP یک پروتکل است که اجازه می دهد که دسترسی یک کامپیوتر به دستگاه های SCSI متصل به کامپیوتر دیگری از طریق RDMA صورت گیرد. پروتکل SRP نیز به عنوان SCSI Remote Protocol شناخته شده است. استفاده از RDMA باعث افزایش throughput و تأخیر زمانی کمتر می شود. RDMA تنها با آداپتورهای شبکه ای قابلیت دسترسی دارند که از سخت افزار RDMA پشتیبانی می کنند. در حالی که پروتکل SRP به طور موثر برای استفاده از شبکه های RDMA طراحی شده است، امکان پیاده سازی پروتکل SRP در شبکه هایی که از RDMA پشتیبانی نمی کنند نیز وجود دارد.

RDMA در مجازی سازی

مجازی سازی دارای مزایای بسیاری برای کاهش هزینه های  پیاده سازی ، تعمیر و نگهداری است. اما بسیاری از سازمان ها و شرکت ها همچنان برنامه های کاربردی حساس به latency خود را بر روی bare-metal نگهداری می کنند یا از ماشین های مجازی که با برخی ویژگی هایی که اجازه دسترسی به آن ها از طریق سخت افزار به طور مستقیم به عنوان DirectPath I/O (در vSphere ) یا SRIO-V داده شده است استفاده می کنند.

استفاده از این ویژگی ها تاخیر و استفاده از CPU را کاهش می دهد ( مخصوصا در high workload ها ) اما این ویژگی ها محدودیت دارند. RDMA به کاهش زمان تأخیر و بهره برداری ، بیشتر از راه حل های دیگر کمک می کند، زیرا راه حل های دیگر هنوز از TCP / IP استفاده می کنند و همچنین RDMA دارای محدودیت های کمتر است.

RDMA در VMware vSphere

دستگاه های Paravirtual در محیط های مجازی سازی رایج هستند. این دستگاه ها پیشترفت و بهبود در performance دستگاه مجازی را در مقایسه با دستگاه های فیزیکی به صورت شبیه سازی شده ارائه می دهند. در مجازی سازی برای ایجاد محاسبات با performance بالا و دیگر زمینه هایی که نیاز به پهنای باند بالا و تاخیر کم دارند و همچنین حمل و نقل با performance بالا مانند InfiniBand، پروتکل  (iWARP) و (RoCE) باید مجازی شوند.

VMware یک رابط کاربری paravirtual به نام (Virtual RDMA (vRDMA ایجاد کرد که رابطی مشابه RDMA را برای guest های VMware ESXi فراهم می کند. vRDMA از (Virtual Machine Communication Interface (VMCI برای ارتباط با ESXi استفاده می کند. رابط vRDMA برای پشتیبانی از snapshot ها و VMware vMotion طراحی شده است، بنابراین حالت ماشین مجازی را می توان به آسانی ایزوله کرده و انتقال داد.

دستگاه های Paravirtualized در محیط های مجازی رایج هستند، زیرا آنها performance بهتری نسبت به دستگاه های مشابه را ارائه می دهند. این دستگاه ها از zero-copy،  operating system-bypass و cpu offload برای انتقال داده ها پشتیبانی می کند و تاخیر کم و سرعت بالا را برای برنامه های کاربردی فراهم می کند. با این وجود، برنامه های در حال اجرا در محیط مجازی از ویژگی هایی مانند vMotion (مهاجرت زنده مجازی ماشین)، مدیریت منابع و fault tolerance دستگاه مجازی بهره مند می شوند. برنامه های کاربردی در حالی که از RDMA استفاده می کند باید توجه داشت که برای استفاده از تمام ویژگی های مجازی سازی ، رابط کاربری paravirtual برای پشتیبانی از این ویژگی ها طراحی شده باشد.

RDMA همراه با SSD و NVDIMMs :

از آنجا که سیستم های ذخیره سازی تمام فلش بسیار سریعتر از سیستم های ذخیره سازی دیسک یا هیبریدی عمل می کنند، latency در performance ذخیره ساز به طور قابل توجهی کاهش می یابد. در نتیجه انباشتن نرم افزارهای سنتی، به عنوان یک bottleneck عمل می کند که به طور همزمان به latency کلی اضافه می شود. RDMA یکی از فناوری هایی است که می تواند latency حاصل از این را کاهش دهد.

(Non-volatile dual in-line memory module (NVDIMM، یک نوع حافظه ای است که به عنوان ذخیره ساز عمل می کند و به سرعت جایگاه خود را در مراکز داده پیدا می کند.  NVDIMM می تواند تا 100 برابر performance پایگاه داده را بهبود بخشد و به ویژه در virtualized clusters به عنوان وسیله ای برای سرعت بخشیدن به SAN های مجازی سودمند خواهد بود. اما برای استفاده بیشتر از NVDIMM، هم از نظر یکپارچگی داده ها و هم از نظر Performance داده، هنگام انتقال داده ها بین سرورها و یا در سراسر cluster مجازی، شما باید از سریع ترین شبکه ممکن است استفاده کنید. RDMA over Ethernet Converged به داده ها اجازه دسترسی به طور مستقیم بین ماژول های NVDIMM با latency پایین و درگیری کمتر سیستم عامل را می دهد.

پیشنهاد میکنم ویدیو زیر را جهت درک بهتر نسبت به تکنولوژی RDMA تماشا نمایید.

0 پاسخ

دیدگاه خود را ثبت کنید

تمایل دارید در گفتگوها شرکت کنید؟
در گفتگو ها شرکت کنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *