لب عملی: پیکربندی RESTCONF

این لب عملی RESTCONF را روی یک روتر فعال می‌کند و با استفاده از روش‌های استاندارد HTTP (GET، PATCH) برای خواندن و تغییر پیکربندی اینترفیس با آن تعامل می‌کند، و رویکرد آشنای مبتنی‌بر-REST آن را با جلسه NETCONF مبتنی‌بر-SSH پوشش‌داده‌شده در لب قبلی مقایسه می‌کند.

پیکربندی RESTCONFروش‌های HTTP GET و PATCHساختار Payload JSON

~4 دقیقه مطالعه · آخرین به‌روزرسانی ۴ مهر ۱۴۰۵

هدف لب

فعال‌کردن RESTCONF روی یک روتر، بازیابی پیکربندی اینترفیس با استفاده از یک درخواست استاندارد HTTP GET، تغییر توصیف اینترفیس با استفاده از یک درخواست HTTP PATCH، و تأیید تغییر از طریق CLI، و مقایسه گردش‌کار کلی با رویکرد NETCONF از لب قبلی.

هدف لب (چرا مهم است)

NETCONF، پوشش‌داده‌شده در لب قبلی، از انتقال SSH و RPC های فرمت‌شده-XML استفاده می‌کند، و نیازمند یک کتابخانه کلاینت آگاه-از-NETCONF است. RESTCONF همان داده پیکربندی مدل‌شده-با-YANG زیربنایی را از طریق یک API REST استاندارد مبتنی‌بر-HTTPS با استفاده از فعل‌های آشنای HTTP آشکار می‌کند، و آن را از هر ابزار قادر به ساختن یک درخواست پایه HTTP، شامل curl یا یک اسکریپت ساده بدون کتابخانه تخصصی NETCONF، دسترس‌پذیر می‌کند.

توپولوژی لب

R1 ---- Gi0/0: 192.168.255.1/24

ایستگاه مدیریتی: 192.168.255.100، با استفاده
از curl برای تعامل RESTCONF

وظیفه ۱: فعال‌کردن RESTCONF روی R1

سرویس RESTCONF را در کنار سرویس NETCONF که از‌قبل در لب قبلی پیکربندی شده فعال کن.

وظیفه ۲: بازیابی پیکربندی اینترفیس از طریق HTTP GET

از ایستگاه مدیریتی، یک درخواست GET به API RESTCONF برای پیکربندی اینترفیس صادر کن، و فرمت JSON را درخواست کن.

وظیفه ۳: تغییر توصیف اینترفیس از طریق HTTP PATCH

یک درخواست PATCH که توصیف اینترفیس را به‌روزرسانی می‌کند صادر کن، و یک payload JSON بفرست.

وظیفه ۴: تأیید تغییر از طریق CLI

تأیید کن توصیف جدید از طریق CLI سنتی قابل‌مشاهده است.

وظیفه ۵: مقایسه گردش‌کار RESTCONF با NETCONF

تفاوت‌ها در انتقال، فرمت درخواست، و ابزارسازی مورد نیاز بین دو رویکرد را یادداشت کن.

راه‌حل و تأیید

R1(config)# restconf

-- RESTCONF و NETCONF، پوشش‌داده‌شده در لب
-- قبلی، می‌توانند هم‌زمان اجرا شوند، چون هر
-- دو صرفاً همان مدل داده YANG زیربنایی را از
-- طریق مکانیزم‌های انتقال و قالب‌بندی متفاوت
-- آشکار می‌کنند

ManagementStation> curl -k -u admin:password \
  -H "Accept: application/yang-data+json" \
  https://192.168.255.1/restconf/data/ietf-interfaces:interfaces/interface=GigabitEthernet0%2F0

{
  "ietf-interfaces:interface": {
    "name": "GigabitEthernet0/0",
    "description": "",
    "enabled": true
  }
}
-- یک درخواست ساده HTTP GET، احراز‌هویت‌شده
-- با اعتبارنامه‌های پایه، دقیقاً همان داده
-- اینترفیسی که RPC get-config NETCONF فراهم
-- کرد را بازمی‌گرداند -- اما با ابزاری به
-- سادگی curl دسترس‌پذیر

ManagementStation> curl -k -u admin:password -X PATCH \
  -H "Content-Type: application/yang-data+json" \
  -d '{"ietf-interfaces:interface":{"description":"Configured via RESTCONF"}}' \
  https://192.168.255.1/restconf/data/ietf-interfaces:interfaces/interface=GigabitEthernet0%2F0

-- HTTP 204 No Content
-- یک پاسخ 204 تأیید می‌کند PATCH پذیرفته و
-- اعمال شد -- کد وضعیت استاندارد HTTP برای
-- یک به‌روزرسانی موفق بدون نیاز به بدنه پاسخ

R1# show running-config interface gigabitethernet0/0

interface GigabitEthernet0/0
 description Configured via RESTCONF
 ip address 192.168.255.1 255.255.255.0
-- توصیف تنظیم‌شده از طریق یک درخواست ساده
-- curl PATCH کاملاً قابل‌مشاهده و مؤثر از
-- طریق CLI است

-- خلاصه مقایسه:

NETCONF: انتقال SSH، payload های XML، نیازمند
         یک کتابخانه کلاینت NETCONF یا ابزار
         تخصصی

RESTCONF: انتقال HTTPS، payload های JSON (یا
          XML)، با هر کلاینت استاندارد HTTP
          شامل curl، Postman، یا کتابخانه‌های
          اسکریپت‌نویسی پایه در تقریباً هر
          زبان برنامه‌نویسی کار می‌کند

نکته کلیدی

RESTCONF و NETCONF همان مدل داده YANG زیربنایی یکسان را آشکار می‌کنند، اما استفاده RESTCONF از HTTPS استاندارد و فعل‌های آشنای HTTP (GET، POST، PUT، PATCH، DELETE) آن را به‌طور قابل‌توجهی برای توسعه‌دهندگانی که از‌قبل با API های REST راحت‌اند قابل‌دسترسی‌تر می‌کند، بدون نیاز به کتابخانه کلاینت تخصصی‌ای که رویکرد XML-RPC مبتنی‌بر-SSH NETCONF نیاز داشت — انتخاب بین آن‌ها معمولاً به این بستگی دارد که toolchain اتوماسیون در استفاده از‌قبل چه انتظاری دارد، نه اینکه یکی قطعاً برتر از دیگری باشد.

نوشته و پژوهش‌شده توسط دکتر شاهین صیامی

مقالات مرتبط

لب عملی: پیکربندی مسیریابی Stub در EIGRP

این لب عملی یک روتر شعبه را به‌عنوان یک stub در EIGRP پیکربندی می‌کند، و تأیید می‌کند فقط مسیرهای متصل و خلاصه خودش را تبلیغ می‌کند در حالی که روتر hub به‌درستی از پرس‌وجوکردن stub در طول یک تغییر توپولوژی در جای دیگری از شبکه اجتناب می‌کند.

ادامه

لب عملی: پیکربندی حالت Named در EIGRP

این لب عملی یک پیکربندی EIGRP کلاسیک موجود را به حالت named EIGRP بازپیکربندی می‌کند، و عبارات network و پیکربندی خاص-اینترفیس را در یک سلسله‌مراتب address-family ساختاریافته‌تر سازمان‌دهی می‌کند، و تعادل عملکردی با سبک پیکربندی کلاسیک استفاده‌شده در سراسر لب‌های EIGRP قبلی این مجموعه را تأیید می‌کند.

ادامه

لب عملی: پیکربندی ERSPAN در سراسر یک شبکه مسیریابی‌شده

این لب عملی Encapsulated RSPAN (ERSPAN) را برای آینه‌کردن ترافیک در سراسر یک شبکه مسیریابی‌شده-لایه-۳ به‌جای یک ترانک لایه ۲ واحد پیکربندی می‌کند، و مفهوم RSPAN از لب قبلی را فراتر از مرزهای یک VLAN یا دامنه سوئیچ‌شده واحد گسترش می‌دهد.

ادامه

لب عملی: پیکربندی RSPAN در سراسر سوئیچ‌ها

این لب عملی Remote SPAN (RSPAN) را با استفاده از یک VLAN RSPAN اختصاصی حمل‌شده در سراسر یک ترانک پیکربندی می‌کند، و اجازه می‌دهد ترافیک آینه‌شده روی یک سوئیچ توسط یک دستگاه گرفتن متصل به یک سوئیچ کاملاً متفاوت نظارت شود، و مفهوم SPAN محلی پوشش‌داده‌شده در یک لب قبلی را در سراسر شبکه گسترش می‌دهد.

ادامه

لب عملی: پیکربندی In-Service Software Upgrade (ISSU) روی یک Stack

این لب عملی یک In-Service Software Upgrade را در سراسر یک stack StackWise انجام می‌دهد، و ایمیج IOS هر عضو را یکی‌یکی ارتقا می‌دهد در حالی که stack در سراسر آن به فوروارد‌کردن ترافیک ادامه می‌دهد، و صفر خرابی را در مقایسه با رویکرد مخل reload استفاده‌شده در لب‌های ارتقای IOS قبلی تأیید می‌کند.

ادامه

لب عملی: پیکربندی Stacking سنتی StackWise در Catalyst

این لب عملی stacking سنتی Catalyst (StackWise) را در سراسر سه سوئیچ با استفاده از کابل‌های stack پیکربندی می‌کند، و نیازمندی تک-لایه و مجاورت فیزیکی‌اش را با جفت StackWise Virtual پوشش‌داده‌شده در لب قبلی که اجازه می‌دهد سوئیچ‌ها بسیار دورتر از هم قرار بگیرند مقایسه می‌کند.

ادامه