راهنمای API دستگاه‌های SNMP

اصول اولیه SNMP

پروتکل مدیریت شبکه ساده (SNMP) یک پروتکل استاندارد اینترنتی است که برای جمع‌آوری اطلاعات از دستگاه‌های مدیریت‌شده و ارسال اطلاعات به منظور تغییر رفتار این دستگاه‌ها استفاده می‌شود.

معماری SNMP از مدیران SNMP و عوامل SNMP تشکیل شده است. عوامل SNMP برنامه‌هایی هستند که بر روی دستگاه‌های متصل به شبکه اجرا می‌شوند. این عوامل داده‌های مدیریتی سیستم‌های مدیریت‌شده را به صورت متغیرهایی در دسترس قرار می‌دهند. متغیرهای قابل‌دسترس از طریق SNMP به صورت سلسله‌مراتبی سازمان‌دهی شده‌اند. این سلسله‌مراتب در پایگاه اطلاعات مدیریت (MIB) توصیف می‌شوند. MIB‌ها ساختار داده‌های مدیریتی زیرسیستم دستگاه را تعریف کرده و از یک فضای نام سلسله‌مراتبی شامل شناسه‌های اشیاء (OID) استفاده می‌کنند. هر OID نماینده متغیری است که از طریق SNMP قابل خواندن یا تنظیم است. عامل، اطلاعات را از MIB استخراج کرده و پس از دریافت درخواست، آن را به مدیر SNMP منتقل می‌کند. مدیر SNMP سیستمی است که مسئول ارتباط با عوامل SNMP متصل می‌باشد. این مدیر درخواست‌ها را به عوامل ارسال کرده، پاسخ‌ها را دریافت کرده و متغیرهای عوامل را تنظیم می‌کند.
پروتکل حمل‌ونقل SNMP در ThingsConnect به عنوان یک مدیر عمل می‌کند. ارتباط بین مدیر و عامل بر اساس پیام‌ها و دستورات انجام می‌شود. دستورات مورد استفاده در این پروتکل شامل “GET” و “SET” می‌باشند. هر پیام SNMP شامل یک واحد داده پروتکل (PDU) است.

SNMP در لایه کاربردی مجموعه پروتکل اینترنت فعالیت می‌کند. پیام‌های SNMP ممکن است از طریق پروتکل دیتاگرام کاربر (UDP) یا پروتکل کنترل انتقال (TCP) انتقال یابند. این مورد را می‌توان از طریق متغیر محیطی SNMP_UNDERLYING_PROTOCOL تنظیم کرد.

تا به امروز سه نسخه اصلی از SNMP توسعه داده شده و مورد استفاده قرار گرفته است. نسخه اول (SNMP v1) نسخه اولیه این پروتکل است. نسخه‌های جدیدتر، شامل SNMP v2c و SNMP v3، بهبودهایی در عملکرد، انعطاف‌پذیری و امنیت ارائه داده‌اند.
پلتفرم ThingsConnect از تمامی این نسخه‌ها پشتیبانی می‌کند.

پیکربندی پروفایل دستگاه

در ابتدا، باید پروفایل دستگاه SNMP را پیکربندی کنید. این شامل تنظیم موارد زیر است:

مدت زمان انتظار درخواست: مدت زمانی که (بر حسب میلی‌ثانیه) قبل از ارسال مجدد یا منقضی شدن یک درخواست تأییدنشده تعیین می‌شود.
تعداد تلاش‌ها: تعداد دفعاتی که قبل از منقضی شدن یک درخواست تکرار می‌شود.
تنظیمات ارتباطی: که بخش اصلی پیکربندی محسوب می‌شود.
در ادامه یک مثال از پیکربندی پروفایل دستگاه آورده شده است:

در ادامه، درباره انواع ممکن تنظیمات (configs) پس از بررسی نحوه تنظیم دستگاه SNMP صحبت خواهیم کرد.

تنظیم دستگاه

صرف نظر از نسخه دستگاه SNMP شما، باید یک میزبان (host) و یک پورت مشخص کنید.

در SNMP نسخه 1 و 2c، یک رمز عبور (رشته اجتماع یا community string) به صورت متن ساده (clear-text) در شبکه ارسال می‌شود، در حالی که SNMP نسخه 3 از احراز هویت و رمزنگاری داده‌ها پشتیبانی می‌کند.

بنابراین، برای نسخه‌های 1 و 2c باید یک رشته اجتماع (community string) تنظیم کنید. مثال زیر نحوه پیکربندی چنین دستگاه‌های SNMP را نشان می‌دهد:

در نسخه سوم SNMP، ThingsConnect از سطح امنیتی authPriv استفاده می‌کند که هر دو قابلیت احراز هویت و رمزنگاری را فعال می‌سازد. مدل امنیتی مورد استفاده USM (مدل امنیتی مبتنی بر کاربر) است.

خصوصیات قابل تنظیم برای دستگاه SNMP نسخه 3، علاوه بر تنظیم میزبان (host) و پورت، باید خصوصیات زیر را پیکربندی کنید:

  • نام کاربری (username)
  • نام امنیتی (security name)
  • نام زمینه (context name)
  • پروتکل احراز هویت (authentication protocol)
    این پروتکل اساساً نام یک تابع هش است که برای هش کردن عبارت عبور احراز هویت استفاده می‌شود؛ پروتکل‌های پشتیبانی‌شده عبارتند از:
  • SHA-1
  • SHA-224/256/384/512
  • MD5
  • عبارت عبور احراز هویت (authentication passphrase)
  • پروتکل حریم خصوصی (privacy protocol)
  • الگوریتم رمزنگاری داده؛ الگوریتم‌های
  • پشتیبانی‌شده عبارتند از:
  • DES (حالت CBC)
  • AES-128/192/256
  • عبارت عبور حریم خصوصی (privacy
  • passphrase)
  • شناسه موتور (engine id)

عکس زیر یک نمونه پیکربندی برای SNMP نسخه 3 را نشان می‌دهد:

تله‌متری

همان‌طور که اشاره شد، در تنظیمات پروفایل دستگاه SNMP شما باید پیکربندی‌هایی برای ارتباط وجود داشته باشد. برای پرس‌وجوی تله‌متری نیز باید یک پیکربندی مشابه در نظر گرفته شود.

در این نوع پیکربندی، باید نگاشت‌ها (mappings) و فرکانس پرس‌وجو (querying frequency) را مشخص کنید. نگاشت‌ها برای این است که بتوانیم مقدار دریافت‌شده برای OID را به یک کلید تله‌متری خاص نگاشت کنیم، پس از آنکه مقدار به‌عنوان نوع داده‌ای مشخص تجزیه شد.

مثال پیکربندی:

انواع داده‌ای که پشتیبانی می‌شوند عبارتند از:LONG، DOUBLE، BOOLEAN، STRING، در SNMP، اگر مقدار متغیر دریافت‌شده با نوع داده JSON تنظیم شده باشد، به‌عنوان یک رشته معمولی پردازش خواهد شد.
روش پرس‌وجو برای این پیکربندی و سایر تنظیمات مربوط به پرس‌وجو، نوع متد مورد استفاده GET است.

ویژگی‌ها (Attributes)

ویژگی‌های سمت کلاینت (Client-side attributes)

برای تنظیم پرس‌وجوی ویژگی‌های یک دستگاه SNMP، می‌توانید یک پیکربندی ارتباطی دیگر اضافه کنید. این پیکربندی، مشابه تنظیمات تله‌متری، باید شامل نگاشت‌ها و فرکانس پرس‌وجوی مورد نیاز باشد.

نمونه تنظیمات:

ویژگی‌های مشترک (Shared Attributes)

برای اینکه دستگاه SNMP شما بتواند به‌روزرسانی‌هایی برای برخی از ویژگی‌های مشترک دریافت کند، می‌توانید یک پیکربندی ارتباطی دیگر به پروفایل دستگاه SNMP خود اضافه کنید.

برای این نوع پیکربندی، تنها کافی است نگاشت‌ها را تنظیم کنید: مشخص کنید که مقدار یک ویژگی مشترک به‌روزرسانی‌شده باید به کدام OID اختصاص یابد. در این حالت، کلید در نگاشت همان نام ویژگی مشترک است.

روش SNMP مورد استفاده:

برای این نوع تنظیمات، روش SET استفاده می‌شود.
نوع داده
برای این نوع پیکربندی (و سایر پیکربندی‌هایی که از روش SNMP نوع SET استفاده می‌کنند)، مشخص کردن نوع داده ضروری است تا تعیین شود چه نوع متغیری از SNMP باید در یک PDU ارسال شود:

INTEGER (یا Integer32، یک عدد صحیح 32 بیتی علامت‌دار) برای نوع داده LONG
OCTET STRING برای سایر انواع داده

RPC سمت سرور

برای ارسال درخواست‌های سفارشی SNMP می‌توانید از ویژگی RPC استفاده کنید. ابتدا باید در پروفایل دستگاه، نگاشت‌های کلیدی را برای استفاده در دستور RPC تنظیم کنید:

پس از تنظیم نگاشت‌ها، می‌توانید کلیدهای تعریف‌شده در نگاشت‌ها را در دستورات RPC خود استفاده کنید:

				
					{
  "method": "GET",
  "params": {
    "key": "systemInfo"
  }
}

				
			

همان‌طور که مشاهده می‌کنید، برای فیلد «method» باید نوع متد SNMP مشخص شود: GET یا SET.
در این مورد، یک درخواست GET SNMP به OID با مقدار «1.2.3.0.9.2.8.1» ارسال کرده و پاسخ را به‌صورت رشته (string) تجزیه می‌کنیم. سپس آن را با فرمت زیر به یک گره قانون بعدی ارسال می‌کنیم:

				
					{
  "systemInfo": "SNMP device"
}
				
			

نمونه‌ای از فرمان RPC برای “SET”:

				
					{
  "method": "SET",
  "params": {
    "key": "lastUpdateTime",
    "value": "12901200312"
  }
}
				
			

در این حالت، یک درخواست SET SNMP به OID مشخص‌شده در تنظیمات (با مقدار «1.2.3.0.6.4.3.1») ارسال می‌کنیم. این مقدار به‌صورت OCTET STRING برابر با «12901200312» خواهد بود.

توجه داشته باشید که برای درخواست SET باید مقداری در فرمان RPC خود مشخص کنید.

گام‌های بعدی

    • راهنماها نمای کلی -  از ویژگی‌های اصلی ThingsConnect ارائه می‌دهند. طراحی شده‌اند تا در مدت 15 تا 30 دقیقه تکمیل شوند.
  • بصری‌سازی داده‌ها - این راهنماها شامل دستورالعمل‌هایی برای پیکربندی داشبوردهای پیچیده در ThingsConnect هستند.
  • پردازش داده و اقدامات - نحوه استفاده از موتور قوانین ThingsConnect را بیاموزید.
  • تحلیل داده‌های IoT - یاد بگیرید که چگونه از موتور قوانین برای انجام وظایف تحلیلی پایه استفاده کنید.
  • نمونه‌های سخت‌افزاری - یاد بگیرید که چگونه پلتفرم‌های مختلف سخت‌افزاری را به ThingsConnect متصل کنید.
  • ویژگی‌های پیشرفته - با ویژگی‌های پیشرفته ThingsConnect آشنا شوید.
  • مشارکت و توسعه
    درباره مشارکت و توسعه در ThingsConnect اطلاعات کسب کنید.

عناوین هر بخش