| ibacm(8) | ibacm | ibacm(8) |
نام (NAME)
ibacm - سرویسهای تحلیل و حل آدرس و مسیر برای InfiniBand
خلاصه دستور (SYNOPSIS)
ibacm [-D] [-P] [-A addr_file] [-O option_file]
توضیحات (DESCRIPTION)
سرویس IB ACM یک چارچوب برای سرویسهای تحلیل و تفکیک نام، آدرس و مسیر (path resolution) بر بستر شبکه InfiniBand پیادهسازی و ارائه میکند. هدف آن حل مشکلات مقیاسپذیری برقراری ارتباط هنگام اجرای برنامههای کاربردی MPI روی کلاسترهای بزرگ است. سرویس IB ACM اطلاعات لازم برای برقراری اتصال را فراهم میسازد، اما خود پروتکل CM را پیادهسازی نمیکند.
یکی از مصرفکنندگان اصلی سرویس ibacm کتابخانه librdmacm است. این امر برنامهها را قادر میسازد بدون نیاز به تغییر کد یا آگاهی از فعال بودن سرویس، از خدمات ibacm بهرهمند شوند. نسخههای 1.0.12 تا 1.0.15 کتابخانه librdmacm میتوانند در صورت کامپایل با گزینه --with-ib_acm سرویسهای IB ACM را فراخوانی کنند. نسخه 1.0.16 و جدیدتر librdmacm به طور خودکار در صورت نصب بودن IB ACM از آن استفاده خواهند کرد. سرویسهای IB ACM در توابع rdma_resolve_addr، rdma_resolve_route و rdma_getaddrinfo تعبیه شدهاند. برای بهرهوری حداکثری باید از تابع rdma_getaddrinfo استفاده شود، هرچند برنامههای کاربردی موجود همچنان با فراخوانیهای موجود در librdmacm 1.0.11 و نسخههای پیشین از مزایای قابل توجه مقیاسپذیری بهرهمند میشوند.
تمرکز IB ACM بر مقیاسپذیری، کارایی و قابلیت توسعه است. این ابزار از یک معماری پلاگین استفاده میکند که به سازندگان سختافزار اجازه میدهد علاوه بر ارائهدهنده پیشفرض، ارائهدهنده اختصاصی خود را عرضه کنند. پیادهسازی ارائهدهنده پیشفرض فعلی (ibacmp) ترافیک شبکه، تعاملات SA و سرویسهای متمرکز را محدود میسازد. ibacmp از چندین پروتکل تحلیل آدرس برای مدیریت توپولوژیهای مختلف فابریک پشتیبانی میکند.
بسته IB ACM از سه بخش تشکیل شده است: سرویس هسته ibacm، کتابخانه اشتراکی ارائهدهنده پیشفرض ibacmp، و ابزار پیکربندی/آزمون ib_acme. هر سه بخش در فضای کاربری (userspace) اجرا میشوند و برای لینوکس در دسترس هستند. جزئیات بیشتر در ادامه آمده است.
گزینهها (OPTIONS)
- -D
- اجرا در حالت دیمون (پیشفرض).
- -P
- اجرا به صورت یک فرآیند استاندارد.
- -A addr_file
- فایل پیکربندی آدرسها.
- -O option_file
- فایل پیکربندی گزینهها.
- --systemd
- فعالسازی یکپارچگی با systemd. این شامل فعالسازی سوکت گوشدهنده دیمون بر اساس درخواست (socket activation) نیز میشود.
راهنمای شروع سریع (QUICK START GUIDE)
۱. پیشنیازها: کتابخانههای libibverbs و libibumad باید نصب باشند. پشته IB باید در حال اجرا باشد و IPoIB پیکربندی شده باشد. این مراحل فرض میکنند که کاربر دارای دسترسیهای مدیریتی (root) است.
۲. بسته IB ACM را نصب کنید. با این کار ibacm، ibacmp، ib_acme و اسکریپتهای init.d نصب میشوند.
۳. دستور 'ibacm' را به عنوان مدیر سیستم اجرا کنید تا دیمون ibacm راهاندازی شود.
۴. به صورت اختیاری، دستور 'ib_acme -d <dest_ip> -v' را اجرا کنید تا از صحت اجرای سرویس ibacm اطمینان حاصل شود.
۵. کتابخانه librdmacm را نصب کنید (در صورت نیاز با استفاده از گزینه ساخت --with-ib_acm). این گزینه ساخت برای librdmacm نسخه 1.0.17 یا جدیدتر مورد نیاز نیست. librdmacm به طور خودکار از سرویس ibacm استفاده میکند. در صورت بروز خطا، librdmacm به روش تحلیل آدرس معمولی بازمیگردد.
۶. میتوانید از 'ib_acme -P' برای جمعآوری آمار عملکرد از دیمون محلی ibacm استفاده کنید تا از صحت کارکرد سرویس مطلع شوید. به طور مشابه، دستور 'ib_acme -e' میتواند برای شمارش تمام نقاط پایانی ایجادشده توسط سرویس محلی ibacm به کار رود.
نکات (NOTES)
ابزار ib_acme:
برنامه ib_acme نقشی دوگانه ایفا میکند. این ابزار به عنوان برنامهای برای آزمودن عملکرد ibacm و کمک به تایید این موضوع عمل میکند که آیا سرویس ibacm و پروتکل انتخابی برای یک پیکربندی کلاستر مشخص قابل استفاده است یا خیر. علاوه بر این، فایلهای پیکربندی ibacm را به طور خودکار تولید میکند تا راهاندازی دستی را تسهیل کند یا نیاز به آن را از بین ببرد.
فایلهای پیکربندی ibacm:
سرویس ibacm به دو فایل پیکربندی متکی است.
فایل ibacm_addr.cfg شامل نگاشتهای نام و آدرس برای هر نقطه پایانی IB به صورت <device, port, pkey> است. اگرچه نامها در فایل ibacm_addr.cfg میتوانند هر مقداری باشند، ib_acme نام میزبان (host name) را به نقاط پایانی IB نگاشت میکند. از سوی دیگر، آدرسهای IP به صورت پویا تخصیص مییابند. اگر فایل آدرس پیدا نشود، سرویس ibacm تلاش میکند یکی با مقادیر پیشفرض ایجاد کند.
فایل ibacm_opts.cfg مجموعهای از گزینههای قابل تنظیم برای سرویس هسته ibacm و ارائهدهنده پیشفرض فراهم میکند؛ مانند زمان مهلت، تعداد تلاشهای مجدد، سطح لاگگیری و غیره. ابزار ib_acme فایل ibacm_opts.cfg را با استفاده از اطلاعات ایستا تولید میکند. اگر فایل گزینهها یافت نشود، ibacm از مقادیر پیشفرض استفاده خواهد کرد.
سرویس ibacm:
سرویس ibacm مسئول تحلیل و تبدیل نامها و آدرسها به اطلاعات مسیر InfiniBand و کش کردن این دادهها است. این سرویس باید با دسترسیهای مدیریتی اجرا شود.
سرویس ibacm یک رابط کاربری کلاینت را روی سوکتهای TCP پیادهسازی میکند که توسط کتابخانه librdmacm مجردسازی شده است. بسته به پیکربندی، یک یا چند ارائهدهنده میتوانند توسط سرویس هسته بارگذاری شوند. در ارائهدهنده پیشفرض ibacmp، یک یا چند پروتکل بکاند برای پاسخ به درخواستهای کاربر استفاده میشوند. اگرچه ibacmp از پرسوجوهای استاندارد رکوردهای مسیر SA در بکاند پشتیبانی میکند، اما از یک پروتکل تحلیل آدرس بر پایه ترافیک مالتیکست نیز پشتیبانی مینماید. مورد اخیر روی تمام توپولوژیهای فابریک قابل استفاده نیست؛ به ویژه فابریکهایی که مسیرهای دوطرفه برگشتپذیر ندارند یا از مسیریابی توروس (torus routing) استفاده میکنند. کاربران باید قبل از اجرای سایر برنامهها، با استفاده از ابزار ib_acme مطمئن شوند که پروتکل مالتیکست قابل استفاده است.
از نظر مفهومی، ارائهدهنده پیشفرض ibacmp پروتکلی شبیه به ARP پیادهسازی میکند و بسته به پروتکل مسیریابی انتخابی، یا از رکوردهای چندپخشی (multicast) در IB برای ساخت دادههای رکورد مسیر استفاده مینماید یا مستقیماً از SA استعلام میگیرد. به طور پیشفرض، ارائهدهنده ibacmp پرسوجوهای رکوردهای مسیر SA را استفاده و ذخیره میکند.
به طور خاص، تمام نقاط پایانی IB به تعدادی گروه چندپخشی میپیوندند. گروههای مالتیکست بر اساس نرخ انتقال، MTU، SL و غیره تفاوت دارند و اولویتبندی میشوند. تمام نقاط پایانی شرکتکننده باید بتوانند روی گروه مالتیکست با پایینترین اولویت ارتباط برقرار کنند. ibacmp با استفاده از فایل ibacm_addr.cfg یک یا چند نام/آدرس را به هر نقطه پایانی IB اختصاص میدهد. کلاینتها نامها یا آدرسهای مبدا و مقصد را به عنوان ورودی به سرویس ارائه میدهند و دادههای رکورد مسیر را به عنوان خروجی دریافت مینمایند.
سرویس نام/آدرس مبدا کلاینت را به یک نقطه پایانی محلی IB نگاشت میکند. اگر نام/آدرس مقصد به صورت محلی در ارائهدهنده پیشفرض کش نشده باشد، یک درخواست چندپخشی روی گروه مالتیکست با پایینترین اولویت در نقطه پایانی محلی ارسال میکند. این درخواست شامل فهرستی از گروههای چندپخشی است که فرستنده میتواند استفاده کند. دریافتکننده درخواست، گروه چندپخشی با بالاترین اولویت را که خودش نیز میتواند استفاده کند انتخاب کرده و آن اطلاعات را مستقیماً به فرستنده بازمیگرداند. دادههای درخواست توسط تمام نقاط پایانی که پیام چندپخشی را دریافت میکنند ذخیره میشود. نقطه پایانی مبدا نیز پاسخ را کش کرده و از گروه مالتیکست انتخابشده برای ساخت یا دریافت دادههای رکورد مسیر استفاده میکند، که سپس به کلاینت بازگردانده میشود.
پیادهسازی فعلی ارائهدهنده ibacmp دارای چندین محدودیت اضافی است:
- ابزار ibacmp در رسیدگی به تغییرات پویا محدود است. در صورت بازپیکربندی کلاستر، ibacm باید متوقف شده و مجدداً راهاندازی شود.
- پشتیبانی از IPv6 اعتبارسنجی نشده است.
- تعداد گروههای چندپخشی که یک نقطه پایانی میتواند پشتیبانی کند به ۲ محدود شده است.
ارائهدهنده ibacmp شامل چندین حافظه نهان (کش) داخلی است؛ از جمله کشهای آدرس مقصد GID و LID. این کشها میتوانند به صورت اختیاری از پیش بارگذاری شوند. ibacm از قالب کامل "full" رکوردهای مسیر در پلاگین dump_pr نرمافزار OpenSM پشتیبانی میکند که برای بارگذاری اولیه این کشها استفاده میشود. فرمت فایل در ibacm_opts.cfg از طریق تنظیم route_preload مشخص میشود که برای این فرمت باید روی full_opensm_v1 تنظیم شود. قالب پیشفرض none است که این کشها را از پیش بارگذاری نمیکند. برای اطلاعات بیشتر در مورد فرمت فایل full_opensm_v1 و نحوه پیکربندی OpenSM برای تولید این فایل، به سند dump_pr.notes.txt در dump_pr مراجعه فرمایید.
علاوه بر این، کشهای نام، IPv4 و IPv6 را میتوان با استفاده از گزینه addr_preload از پیش بارگذاری کرد. پیشفرض none است. برای پیشبارگذاری این کشها، این گزینه را روی acm_hosts تنظیم کرده و فایل addr_data_file را به درستی پیکربندی کنید.
همچنین ببینید (SEE ALSO)
ibacm(7), ib_acme(1), rdma_cm(7)
| 2014-06-16 | ibacm |