REST API در SDN: مقدمه‌ای بر مهندسی شبکه

REST APIها نقش مهمی را در کنترلرهای SDN و اپلیکیشن‌ها بازی می‌کنند. این یک پدیده جدید برای بسیاری از مهندسین شبکه خواهد بود ولی نمی‌بایست موجب دستپاچگی آن‌ها شود.

مهندسین و ادمین‌های شبکه بر سر یک دوراهی قرار دارند. از یک طرف پروتکل‌هایی نظیر BGP، IS-IS و MPLS همچنان نقش مهمی را در شبکه‌ها ایفا می‌کنند که این امر موجب این می‌شود که ما در تلاش باشیم که اطلاعات پایه‌ای آن‌ها در زمینه شبکه‌های سنتی (توضیح: در مقابل شبکه SDN قرار می‌گیرد) حفظ شود. از طرفی دیگر، شبکه نرم افزار محور همچنان جای خود را در عرصه شبکه حفظ کرده است، بگونه‌ای که فراگیری مهارت‌های جدیدی همچون برنامه‌نویسی شبکه اجتناب ناپذیر شده‌اند. در این مقاله قصد داریم شما را با APIها که یکی از مولفه‌های اصلی SDN و برنامه‌نویسی شبکه می‌باشند آشنا کنیم.

دید یک مهندس شبکه از APIها

به طور ساده، یک API واسطی است که توسط نرم افزار ارائه می‌شود؛ نرم افزاری همچون سیستم عامل شبکه (کنترلر) که قابلیت جمع‌آوری اطلاعات از منابع شبکه و یا اعمال تغییرات در پیکربندی شبکه و یا سیاست‌های شبکه را برعهده دارد. به طور مثال SNMP را در نظر بگیرید. SNMP ابزاری است که ما را قادر به جمع‌آوری اطلاعاتی همچون اطلاعات آماری از دیواس‌های شبکه می‌کند. SNMP همچنین اپلیکیشن‌ها را قادر به پیکربندی مولفه‌های شبکه می‌سازد. اگرچه از SNMP به طور معمول به عنوان یک API یاد نمی‌شود اما به خاطر داشته باشید که APIها عملکرد مشابهی را برای بسیاری از اپلیکشن‌ها دارند.

APIها در SDN

تعریف API ممکن است در SDN کمی متفاوت باشد. در یک مدل SDN، یکی از APIهایی که وجود دارد واسط‌های شمالی یا Northbound Interface (به اختصار: NBI) می‌باشد. NBI واسطی بین اپلیکیشن‌ها و یک کنترلر متمرکز SDN می‌باشد.

یکی از APIهای متداولی که به عنوان NBI در SDN استفاده می‌شود Representational State Transfer یا REST API می‌باشد. REST APIها با استفاده از پروتکل‌های HTTP/HTTPS یک سری عملیات را اجرا می‌کنند. برای درک بیشتر باز هم SNMP را مثال می‌زنیم. در SNMP، به منظور درخواست اطلاعات آماری از یک دیواس خاص شبکه، یک اپلیکیشن ممکن است پیام SNMP GET را توسط آدرس IP مدیریتی یک دیواس شبکه به آن ارسال کند. پیلود این پیام شامل OID یا object identifier می‌باشد که هر OID مرتبط با یک interface و statistics می‌باشد. به طور مشابه در یک اپلیکیشن ممکن است با استفاده از REST APIها، به آدرس IP کنترلر توسط پیام‌های HTTP/HTTPS GET درخواستی ارسال شود. این پیام باید شامل یک URI یا Uniform Resource Identifier که مرتبط با یک سوئیچ خاص می‌باشد و همچنین یک پیلودHTTP  با JSON یا XML باشد که شامل پارامترهای مشخصی مرتبط با یک interface یا statistic باشد.

مثال زیر نمونه‌ای از درخواست به کنترلر با استفاده از REST API می‌باشد (کنترلر RYU):

درخواست:

$ curl -X POST -d '{

     "table_id": 0,

     "out_port": 2,

     "cookie": 1,

     "cookie_mask": 1,

     "match":{

         "in_port":1

     }

 }' http://localhost:8080/stats/flow/1

پاسخ:


{
  "1": [
    {
      "length": 88,
      "table_id": 0,
      "duration_sec": 2,
      "duration_nsec": 6.76e+08,
      "priority": 11111,
      "idle_timeout": 0,
      "hard_timeout": 0,
      "flags": 1,
      "cookie": 1,
      "packet_count": 0,
      "byte_count": 0,
      "match": {
        "in_port": 1
      },
      "actions": [
        "OUTPUT:2"
      ]
    }
  ]
}

کنترلر OpenContrail:

درخواست:

curl -X POST -H "Content-Type: application/json; charset=UTF-8" -d '{"virtual-network": {"parent_type": "project", "fq_name": ["default-domain", "admin", "vn-blue"], "network_ipam_refs": [{"attr": {"ipam_subnets": [{"subnet": {"ip_prefix": "10.1.1.0", "ip_prefix_len": 24}}]}, "to": ["default-domain", "default-project", "default-network-ipam"]}]}}' http://10.84.14.2:8082/virtual-networks

پاسخ:

{“virtual-network”: {“fq_name”: [“default-domain”, “admin”, “vn-blue”], “parent_uuid”: “df7649a6-3e2c-4982-b0c3-4b5038eef587”, “parent_href”: “http://10.84.14.2:8082/project/df7649a6-3e2c-4982-b0c3-4b5038eef587”, “uuid”: “8c84ff8a-30ac-4136-99d9-f0d9662f3eee”, “href”: “http://10.84.14.2:8082/virtual-network/8c84ff8a-30ac-4136-99d9-f0d9662f3eee”, “name”: “vn-blue”}}

منبع:

searchsdn.techtarget.com

REST API در SDN: مقدمه‌ای بر مهندسی شبکه
میانگین 4.5 امتیاز از 2 رای

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

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