مسیریابی با کارت‌گرافیکی

مشاهده : 102
مسیریابی با کارت‌گرافیکی کامپیوتر و موبایل
بازهم لینوکس و بازهم یک مسیریاب نرم‌افزاری دیگر با ایده‌ای جدید که شاید کابوس بعدی سیسکو (بعد از وایاتا) باشد.این روتر نرم‌افزاری مبتنی ‌بر لینوکس که توسط یک گروه تحقیقاتی کره‌ای در مجموعه‌ای با نام Advanced Networking Lab در دانشگاه KAIST ساخته شده است، عملکردی باور‌نکردنی را با بهره‌برداری از قابلیت‌های پردازنده‌گرافیکی یا GPU در […]
بازهم لینوکس و بازهم یک مسیریاب نرم‌افزاری دیگر با ایده‌ای جدید که شاید کابوس بعدی سیسکو (بعد از وایاتا) باشد.
این روتر نرم‌افزاری مبتنی ‌بر لینوکس که توسط یک گروه تحقیقاتی کره‌ای در مجموعه‌ای با نام Advanced Networking Lab در
دانشگاه KAIST ساخته شده است، عملکردی باور‌نکردنی را با بهره‌برداری از قابلیت‌های پردازنده‌گرافیکی یا GPU در امر مسیریابی به‌دست آورده
است! جایی که پهنای باند بالا و سرعت‌مناسب حافظه در‌کنار موازی‌سازی شدید پردازش‌ها، تلاش دارد تا گلوگاه روترهای نرم‌افزاری را
(که همان پردازنده مرکزی است) برطرف‌کرده و راه‌حلی جدید ارائه دهد.
اگر به‌دنبال یک کار علمی مناسب و پیش‌رو در یک محیط تحقیقاتی و دانشجویی هستید، استفاده از ایده‌های این پروژه
را از دست ندهید.
نرم‌افزار PacketShader یک روتر نرم‌افزاری مبتنی بر کامپیوترهای شخصی است که پردازش بسته‌های داده‌ای در شبکه را با استفاده از
قدرت پردازنده‌گرافیکی یا GPU، به شدت بهبود بخشیده است.
بر‌اساس مطالعاتی که تا‌کنون انجام‌شده‌است، پردازنده‌مرکزی یکی از گلوگاه‌های اصلی برای پردازش دستورالعمل‌های مسیریابی در مسیریاب‌های نرم‌افزاری محسوب می‌شود و
بر‌همین اساس، استفاده از قدرت‌ پردازش‌گرافیکی که معماری به‌شدت موازی دارد می‌تواند در این زمینه مشکل‌گشا باشد.
نرم‌افزار PacketShader بار پردازشی سنگین و حافظه پر‌کن عملیات مسیریابی را به روی GPU منتقل کرده و در عین حال،
ارسال و دریافت بسته‌های داده‌ای توسط لینوکس روی شبکه را به روشی بهینه بهبود می‌بخشد.
بر‌همین اساس و با استفاده از پردازش دسته‌ای و همچنین عملیات Pipelining، این نرم‌افزار به عملکرد باورنکردنی ۴۰ گیگابیت در
ثانیه در IP Forwarding روی یک سرور ۸ هسته‌ای از نسل اول پردازنده‌های Core i (با نام رمز Nehalem) آن
هم با بسته‌هایی به طول ۶۴ بایت، دست‌یافته است! چرا GPU؟ در شماره‌های مختلف ماهنامه، از جمله ویژه‌نامه پردازش‌موازی، در
رابطه با ساختار GPU و مزایای استفاده از آن صحبت‌شده است.
برای داشتن دیدی کلی نسبت به موضوع، باید گفت که GPU هسته مرکزی یک کارت‌گرافیکی را تشکیل می‌دهد.
این هسته، طوری طراحی و پیاده‌سازی شده تا کنون است که سطح بالایی از موازی‌سازی پردازش‌ها را از طریق اجرای
هزاران رشته پردازشی سخت‌افزاری، به همراه حافظه‌ای با پهنای باند بالا فراهم می‌سازد.
در سال‌های اخیر، ایده‌هایی برای استفاده از این ساختار به شدت موازی در انجام محاسباتی غیر از پردازش‌های گرافیکی مطرح
شده است و به همین دلیل، شرکت‌های مهم تولید کننده سخت‌افزارهای گرافیکی یعنی nVidia و AMD به تولید و عرضه
پلتفرم‌های مختلف توسعه کد، برای بهره‌برداری از این توان پردازشی بالا پرداختند.
پلتفرم CUDA، که از طرف nVidia برای استفاده روی سخت‌افزارهای گرافیکی این شرکت عرضه‌شد، شایسته‌ترین و بهترین نمونه عرضه‌شده است
تا کنون که توسط جامعه توسعه‌دهندگان مورد استقبال بسیار قرار‌گرفت و انواع و اقسام نرم‌افزارها براساس آن عرضه شد.
(ویژه‌نامه پردازش‌موازی و بررسی فناوری کودا در شماره ۱۱۵ ماهنامه شبکه به تفصیل در این زمینه صحبت‌کرده است). بهینه‌سازی ورودی‌/‌خروجی
بسته‌های داده‌ایدر نرم‌افزار PacketShader، از موتور High Performance I/O Engine برای بهینه‌سازی پردازش ورودی‌/‌خروجی بسته‌ها در لینوکس استفاده شده است.
این پروژه در اصل توسط ‌گروه دیگری به‌صورت اپن‌سورس توسعه‌داده شده بود و بعدها در نرم‌افزار حاضر استفاده شده است.
این موتور، پشته شبکه استاندارد لینوکس را که برای انجام امور ورودی/خروجی با کارایی بالا چندان مناسب نیست، بهینه‌سازی‌کرده و
برای شبکه‌های ده‌ها گیگابیتی آماده می‌کند.
برای افزایش عملکرد ورودی/خروجی و همچنین بهره‌برداری از قدرت GPU، مسیر بسته‌های داده‌ای در داخل لینوکس به این صورت تغییر
یافته است: بافر بزرگ بسته‌ها در نرم‌افزار PacketShader، به‌جای استفاده از تخصیص فراداده یا متادیتا (sk_buff یا skb) به هر
بسته دریافت شده، از دو بافر دایره‌ای بزرگ از پیش تخصیص داده شده که از آرایه بزرگی از بسته‌های داده‌ای
و همچنین متادیتای مرتبط با آن نگه‌داری می‌کنند، استفاده شده است.
این کار، سربار عملیات تخصیص و آزاد‌سازی حافظه برای بسته‌های دریافتی را به شدت کاهش می‌دهد.
پردازش‌دسته‌ای در نرم‌افزار PacketShader، در هر لحظه مجموعه‌ای از بسته‌های داده‌ای مورد‌پردازش دسته‌ای قرار می‌گیرند که این عملیات می‌تواند در
سطح Device Driver یا سطح Application انجام‌پذیرد.
چنین ساختاری سربار پردازش هر بسته را کاهش می‌دهد.
جایگذاری‌داده با بهره‌گیری از NUMA: بــــا استفــــــــاده از قابلیــت NUMA (سرنــــــــــامNon-Uniform Memory Access‌)‌، میزان جابه‌جایی بسته‌ها بین‌حافظه محلی و راه
دور به حداقل ممکن‌رسیده و به همین دلیل این قابلیت، تأثیر مستقیمی در افزایش عملکرد مجموعه گذاشته است.
بر‌همین اساس، تلاش شده است تا بسته‌های دریافت شده در کارت‌های شبکه و با استفاده از پردازنده و حافظه محلی
این تجهیزات مورد پردازشقرار گیرند.
مقیاس‌پذیری در پردازنده‌های چند‌هسته‌ای در‌نرم‌افزار PacketShader، با استفاده از قابلیت RSS یا Receive Side Scaling تلاش شده است تا“مشکل درگیری”
قفل‌کننده رشته‌های پردازشی در هنگام دسترسی به صف کارت شبکه حذف شده و همچنین، مشکل اشتراک اشتباه داده‌ها با کش
پردازنده از طریق تنظیم درست نقطه شروع آدرس صف RX نیز برطرف شود.
در کنار این تغییرات، شمارنده global کارت شبکه که برای امور آماری مورد استفاده قرار می‌گرفت نیز حذف شده‌ است.
با انجام تمام این تغییرات، بهینه‌سازی‌های لازم برای ایجاد امکان مقیاس‌پذیری خطی نسبت به افزایش هسته‌های پردازنده در نرم‌افزار PacketShader
فراهم شده است.با انجام این تغییرات در سیستم‌عامل لینوکس برای بهینه‌سازی ورودی/خروجی، امکان اجرای فرآیندهای پردازش‌بسته‌های داده‌ای در سطح user
level و در محدوده سرعت‌های چند ده‌گیگابیت توسط نرم‌افزار PacketShader فراهم شده است.
عملکرد شکل ۱ نموداری از عملکرد موتور ورودی/خروجی بهینه‌سازی شده این نرم‌افزار را نشان‌می‌دهد.
در این نمودارها، ستون‌های TX RX نشان‌دهنده عملیات forwarding از یک پورت به پورت دیگر بدون انجام هیچ‌گونه پردازش
است.
این روتر نرم‌افزاری در شرایط دیگر نیز مورد بررسی قرار‌گرفته است.
شکل‌های ۲، ۳، ۴ و ۵ عملکرد این روتر در شرایط مختلفی مانندIPv4 Forwarding، IPv6 Forwarding، OpenFlow Switch و IPSec
Tunneling را نشان‌می‌دهند.
میله‌های سمت راست نمایانگر استفاده از CPU به تنهایی و نمودارهای سمت چپ نمایانگر استفاده از CPU و GPU به
صورت همزمان هستند.
شکل ۱- عمکلرد نرم‌افزار PacketShader برای اندازه‌های مختلف بسته‌های داده‌ای شکل ۲- مقایسه عملکرد روتر در حالت CPU Only و
CPU GPU برای عملیات IPv4 Forwarding شکل۳- مقایسه عملکرد روتر در حالت CPU Only و CPU GPU برای عملیات IPv6 Forwarding همان‌طور
که مشهود است، استفاده از قدرت پردازشی GPU به شدت عملکرد روتر را بهبود بخشیده است! در عملیات Forwarding، اجرای
فرآیند تطابق پیشوند بسته‌ها به GPU محول شده است و از آنجا که بازبینی جدول Forwarding عملیاتی به شدت وابسته
به حافظه است، استفاده از GPU می‌تواند با کاهش تأخیر و همچنین در اختیار گذاشتن پهنای باند بالا، سرعت عملکرد
را به شدت بهبود بخشد.
در نقطه مقابل، عملیات OpenFlow Switch و IPSec Tunneling به شدت به پردازش وابسته است که با بهره‌گیری از پردازش
موازی و قدرت GPU، نرم‌افزار حاضر عملکرد مناسبی مشابه با عملکرد بهینه در زمینه حافظه ارائه کرده است.
شکل ۴- مقایسه عملکرد روتر در حالت CPU Only و CPU GPU برای عملیات OpenFlow Switch شکل ۵- مقایسه عملکرد روتر
در حالت CPU Only و CPU GPU برای عملیات IPSec Tunneling شکل ۶- پیکربندی سخت‌افزاری سیستم مورد آزمایش برای نرم‌افزارPacketShader نکته
جالب توجه در زمینه عملکرد این نرم‌افزار این است که هم‌اکنون سرعت پردازش آن محدود به ظرفیت پلتفرمی است که
روی آن اجرا می‌شود و ناشی از کند بودن سخت‌افزار گرافیکی یا پردازنده مرکزی سیستم نیست بلکه گلوگاه‌ها و مشکلات
دیگری در سخت‌افزار PC، عامل چنین محدودیتی است.
به‌عنوان مثال، این نرم‌افزار روی یک سخت‌افزار متشکل از دو پردازنده چهار هسته‌ای Nehalem با فرکانس ۶۱,۲ گیگاهرتز،چهار کارت شبکه
دو پورتی ۱۰GbE ساخت اینتل و همچنین دو کارت گرافیکی NVIDIA GTX 480، به سرعت نهایی چهل‌گیگابیت دست یافته است.
روی این سیستم، به دلیل محدودیت در پهنای باند میان دو IOH که سابق بر این با نام پل شمالی
(North Bridge) شناخته می‌شد و عامل محدودیت در عملکرد host-to-device و device-to-host است، امکان فراتر‌رفتن از مقدار چهل‌گیگابیت در ثانیه
وجود ندارد.
شکل ۶ نمونه‌ای از پیکربندی به‌کار گرفته‌شده در این آزمایش‌ها را نشان می‌دهد.
جمع‌بندی نرم‌افزار PacketShader هم‌اکنون در فاز تحقیقاتی و کاملاً ‌ابتدایی خود به سر می‌برد و شاید نتوان به راحتی به
تمام کدهای توسعه‌داده شده برای آن دست یافت.
با این حال، ایده مطرح شده توسط این نرم‌افزار بسیار جالب است و می‌تواند موجودیت و عملکرد روترهای نرم‌افزاری امروزی
را به شدت متحول کند.بر همین اساس، استفاده از چنین ایده‌هایی می‌تواند برای معرفی راه‌حل‌های پیش‌رو در زمینه مسیریابی با
لینوکس و سخت‌افزارهای ارزان قمیت به‌شدت سودمند باشد.
هم‌اکنون کد منبع درایور بهینه‌سازی شده مورد استفاده در این پروژه که برای کارت‌های شبکه سری IXGBE اینتل طراحی شده
است، عرضه‌شده و قابل دانلود است.
اگرچه خود نرم‌افزار همچنان در انتظار عرضه عمومی به سر می‌برد، اما با کمی جست‌وجو یا برقراری ارتباط مستقیم با
گروه توسعه‌دهنده آن، می‌توانید اسناد و مدارک مناسبی در این زمینه به‌دست آورید.
patoghu.com
2012-05-07 / گردآوری:
گزارش خطا در خبر
نظر خود را بنویسید - نظرات کاربران (۰)
فیلم پرشین وی
برای رشد کسب و کار خود، فالوور بخرید !! برای رشد کسب و کار خود، فالوور بخرید !!
خرید فالوور اینستاگرام، بهترین روش برای افزایش فالوور ارزان
سوژه های روز رو این جا ببینید !
فال روزانه
تعبیر خواب
با دنیای بی نظیر و پر از خلاقیت گوشی های موبایل همراه شوید
گوشی دست دوم بخریم یانه؟ (نکات مهم خرید گوشی دست دوم)
کمی در رابطه با تاریخچه و اطلاعات گوگل کروم بخوانیم
کیفیت و وضوح بالای تلویزیون ۵۵ اینچ سونی به همراه قیمت
تجربه فروش بیشتر با طراحی سایت فروشگاهی
اندروید ۱۰ جدیدترین سیستم عامل گوشی های هوشمند را بیشتر بشناسید
دوربین آیفون ۱۱ را بیشتر بشناسیم
سونی اکسپریا ۵ پرچم دار کوچک سونی
نحوه فهمیدن آنفالو شدن در اینستاگرام توسط سایر کاربران
آیپد پروی جدید و ویژگی های منحصربفردش
آیفون ۱۱ چه چیزهایی برای موفقیت لازم دارد؟
حذف شدن کیبورد گوشی ها با هوش مصنوعی
تعداد لایک در اینستاگرام نمایش داده شود یا نه؟
راه‌ رفتن معلولین با آسانی با شورت ورزشی رباتیک
اسم آیفون آیا از گوشی های اپل حذف خواهد شد؟
بازی‌های رایگان iOS مخصوص فصل تابستان
logo-samandehi