Issabel VoIPIssabel VoIP

DevNet Associate

تولید کننده: مهندس مجید اسدپور
ناشر : اندیشه گستر رایکا *** شماره مجوز : 50/708
DevNet چیست و چه ویژگی هایی دارد
این سوالی است که در این ویدئو به آن می پردازیم و به سه ویژگی Abstraction، Version Control و Automation می پردازم.
منظور از Abstraction این است که پیکربندی شبکه مستقل از vendor صورت می گیرد
منظور از Version Control این است که کل زیرساخت شبکه قابلیت rollback داشته باشد
منظور از Automation پیکربندی و مدیریت همزمان تجهیزات شبکه است
قیمت محصول: 3,200,000 ﷼
بسته بندی Tooltip

سرفصل مطالب و دموی محصول

 !!!!!!!!!!!!!!!!!!!!این دوره انظباق کامل با دوره سیسکو ندارد و توسط استاد سفارشی سازی شده است !!!!!!!!!!!!!!

DevNet چیست و چه ویژگی هایی دارد

این سوالی است که در این ویدئو به آن می پردازیم و به سه ویژگی Abstraction، Version Control و Automation می پردازم.

منظور از Abstraction این است که پیکربندی شبکه مستقل از vendor صورت می گیرد

منظور از Version Control این است که کل زیرساخت شبکه قابلیت rollback داشته باشد

منظور از Automation پیکربندی و مدیریت همزمان تجهیزات شبکه است

مدل مفهومی DevNet

در این بخش به مولفه های تشکیل دهنده DevNet می پردازیم که شامل موارد زیر است.

ساختار داده YANG که در واقع مولفه های تشکیل دهنده تجهیزاتی است که مانیتور و یا پیکربندی می شوند.

داده های YANG با یکی از روش های xml، json و یا yaml کد و منتفل می شوند.

پروتکل هایی که داده های yang را کد و منتقل می کند معمولا یکی از سه پروتکل netconf، restconf و grpc است.

پروتکل netconf داده yang را به صورت xml کد می کند و روی ssh منتقل می کند

پروتکل restconf داده yang را به صورت xml و یا json و روی http منتقل می کند

مروری بر برنامه نویسی پایتون

در این بخش با چند مثال ساده، برنامه نویسی پایتون را مرور می کنیم

هدف از این مرور، آموزش پایتون نیست. نهایتا می خواهیم دو ساختار داده مهم یعنی دیکشنری و لیست را معرفی کنیم که در برنامه نویسی و اتوماسیون شبکه بسیار کاربرد دارد.

در ادامه این بحث قصد داریم، پیکربندی های تجهیزات شبکه که معمولا به فرمت json و یا xml منتقل  می شوند را به دو ساختار داده لیست و دیکشنری تبدیل کنیم و آن را بخوانیم و یا دستکاری کنیم.

مقایسه انواع فرمت های داده انتقال داده در Devnet شامل XLM، JSON و YAML

در انتقال داده بین تجهیزات شبکه و برنامه های تحت شبکه معمولا از یکی از سه فرمت داده XLM، JSON و YAML استفاده می شود.

در این بخش تفاوت های این سه روش کدگذاری را با مثال نشان می دهیم

انتقال داده به صورت لیست و دیکشنری در برنامه های تحت شبکه بسیار کاربرد دارد. در این سه روش چگونگی نمایش لیست و دیکشنری نشان داده می شود.

پردازش داده های xml، json و YAML در پایتون

در این بخش ماژول هایی را در پایتون معرفی می کنیم تا داده های xml، json و YAML که برای پیکربندی تجهیزات شبکه استفاده می شود، در زبان پایتون به ساختار داده دیکشنری تبدیل کنیم تا قابل پردازش در این زبان برنامه نویسی شود

ساختار داده YANG

مدل YANG ساختار داده ای در تجهیزات شبکه است که با استفاده از آن امکان پیکربندی و مانیتورینگ تجهیزات شبکه از طریق پروتکل های restconf و netconf وجود خواهد داشت.

در این بخش به عنوان نمونه ساختار ietf-interface را هم به صورت متنی، هم به صورت درختی و هم به صورت xml برسی می کنیم.

مرکز نگهداری مدل های yang معرفی می شود که در آن هم مدل های استاندارد و هم مدل های اختصاصی کمپانی های تولید کننده تجهیزات شبکه نگهداری می شود.

همچنین به یک دستگاه ios xe متصل می شویم و مدل های yang ای که پشتیبانی می کند را استخراج می کنیم.

مفهوم و پیاده سازی netconf

در این بخش با مفهوم و جزئیات netconf و دستورات rpc آشنا می شویم و اینکه چطور می توانیم با دستورات netconf داده های مربوط به yang را در تجهیزات شبکه دستکاری کنیم.

همچنین در این بخش به شما گفته می شود که

پروتکل netconf چه مزیتی به snmp دارد.

چطور بستر ماشین کنترلر خود را برای development آماده کنید

محیط sandbox سیسکو نیز به شما معرفی می شود که در آن سخت افزار لازم برای development را برای شما فراهم می کند.

آدرس github برای دسترسی به کدهای پایتون که در این بخش اجرا می شوند

آدرس دسترسی به اسلایدهای DevNet نیز معرفی می گردد

مفهوم و پیاده سازی netconf بخش دوم

در این بخش با چگونگی پیاده سازی netconf با کتابخانه ncclient در پایتون آشنا می شویم.

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

در انتها نیز برای ذخیره سازی کانفیگ از دستور rpc مخصوص سیسکو و همچنین ساختار yang مخصوص سیسکو بهره خواهیم برد.

مفهوم و پیاده سازی restconf بخش اول

در این بخش با چگونگی پیاده سازی restconf با ابزار curl آشنا می شویم.

تفاوت restconf با netconf را مرور می کنیم.

دستورات http مورد استفاده در restconf معرفی می شوند.

هدرهای http مورد استفاده در restconf معرفی می شوند

ساختار آدرس http در restconf تشریح می شود.

به عنوان نمونه یک درخواست restconf با ابزار curl به روتر ارسال می شود و بخشی از کانفیگ خوانده می شود.

مفهوم و پیاده سازی restconf بخش دوم

در این بخش با چگونگی پیاده سازی restconf با ابزار postman و python آشنا می شویم.

با ابزار postman به راحتی می توانید REST API مورد نظر خود را ایجاد کنید

با ابزار postman می توانید API های ایجاد شده را ذخیره کنید تا قابل استفاده مجدد باشد

در ابزار postman می توانید کدهای انواع زبان های برنامه نویسی از جمله python را از API ایجاد شده به راحتی استخراج کنید.

در این بخش یکی از کدهای ایجاد شده به زبان python را پیاده سازی می کنیم

معرفی قابلیت های programmability در سوییچ های نکسوس با سیستم عامل nx-os

در این بخش با قابلیت های programmability در سوییچ های نکسوس با سیستم عامل nx-os آشنا می شویم که در ان علاوه بر netconf و restconf اینترفیس دیگری به نام nx-api cli نیز در اختیار داریم که همانطور که از نام آن پیدا است، امکان programm کردن سوییچ از طریق دستورات cli فراهم شده است که کار را برای مهندسین شبکه بسیار ساده می کند.

ضمنا امکان اجرای اسکریپت های bash و python در سوییچ های nx-os وجود دارد.

همچنین قابلیت های برنامه ریزی تجهیزات نکسوس با ابزارهای puppet و chef هم وجود دارد.

معرفی nx-api در سوییچ های نکسوس با سیستم عامل nx-os

اینترفیس nx-api دارای دو framework به نام های nxapi-cli و nxapi rest است که در این بخش به nxapi-cli پرداخته می شود. با استفاده از این اینترفیس می توانید دستورات معمول سوییچ را در کدهای برنامه نویسی منتقل کنید.

در این بخش sandbox موجود در سوییچ نکسوس معرفی می شود که امکانات بسیاری را در اختیار برنامه نویس قرار می دهد. از جمله دریافت کدهای json، xml و کدهای برنامه نویسی python و java.

ارتباط با nxapi_cli از طریق sandbox، postman و python

در این بخش با استفاده از ابزارهای postman و python علاوه بر nxapi sandbox با سوییچ نکسوس ارتباط گرفته می شود.

اضافه کردن vlan و همچنین مشاهده لیست vlan ها با ابزار postman و python در این بخش نشان داده می شود.

بررسی nxapi rest و بررسی و پیمایش DME Data Structure در سوییچ های نکسوس

در این بخش یکی دیگر از چارچوب های nxapi یعنی nxapi rest معرفی می گردد که در آن با متدهای http با ساختار داده DME در سوییچ ارتباط برقرار می کنید. ساختار داده DME برخلاف YANG از مدل Object Oriented تبعیت می کند.

در این بخش با ابزار Visore در سوییچ های نکسوس این Data Staructure یعنی DME را بررسی می کنیم.

سپس با ابزار postman چگونگی مانیتورینگ و دستکاری DME نشان داده می شود

پیکربندی تجهیزات شبکه از طریق DevNet

تاکنون تمرکز ما روی خواندن و یا تغییر پیکربندی اینترفیس با استفاده از پروتکل های DevNet بوده است.

اگر بخواهیم پیکربندی دیگری مثل ospf و یا BGP انجام بدهیم چگونه باید data structure مناسب، namespace مربوطه و ساختار xml و یا json را استخراج کنیم. در صورت داشتن پاسخ برای سوالات فوق، قادر خواهیم بود هر گونه پیکربندی را روی تجهیزات شبکه انجام دهیم.

همچنین در این بخش توضیح داده شد که چرا از پروتکل هایی مثل netconf برای پیکربندی تجهیزات استفاده می شود و چرا مستقیما دستورات cli از طریق زبان برنامه نویسی روی تجهیزات شبکه فراخوانی نمی شود

کاربرد Jinja2 Template در DevNet Network Programming

برای برنامه نویسی شبکه معمولا پیکربندی تجهیزات در داخل کد برنامه قرار نمی گیرد. بلکه در یک فایل مجزا،  فایل پیکربندی به صورت Template و در یک فایل مجزا هم داده نگهداری می شود که باید به فایل Template خورانده شود.

فایل دیگری هم وجود دارد که معمولا لیست تجهیزات در آن قرار می گیرد.

حالا چرا باید در فایل پیکربندی که Config Template در آن قرار می گیرد، از کتابخانه Jinja2 Template بهره ببریم. به این دلیل که در این کتابخانه علاوه بر قابلیت جاگذاری متغیرها توسط فایل داده، قابلیت استفاده از حلقه و دستورات شرطی را در فایل پیکربندی خواهید داشت که مزیت آن در این ویدئو نشان داده می شود.

فایل داده نیز به صورت فایل yaml نگهداری می شود که با استفاده از کتابخانه ای به همین نام، به راحتی در پایتون به صورت متغیرهای لیست و دیکشنری قابل استفاده خواهند بود

در این بخش پیکربندی OSPF را با استفاده از Jinja2 Templa و فایل داده از نوع Yaml پیاده سازی می کنیم

برنامه نویسی Cisco ASA با REST API

در این بخش چگونگی برنامه نویسی Cisco ASA با REST API نشان داده می شود.

برای فعال سازی REST API در  Cisco ASA حتما باید پلاگین مربوطه را از سایت سیسکو دانلود و در ASA نصب نمایید.

بخش documentation این پلاگین راهنمای بسیار کامل و در عین حال بسیار ساده ای در اختیار ما قرار می دهد که برنامه نویسی Cisco ASA را بسیار ساده می کند

معرفی ابزار Cisco NSO در Devnet

ابزار Cisco NSO نمود کامل مفهوم DevNet است و پیشنهاد می کنم برای درک بهتر DevNet این ویدئو را مشاهده کنید.

در این ویدئو چگونگی پیاده سازی  مصادیق DevNet نشان داده می شود.

ویژگی Abstraction: شما با یک کانفیگ مشخص می توانید تا 100 برند مختلف را پیکربندی کنید. به عبارت دیگر پیکربندی BGP برای همه برندها یکسان خواهد بود

ویژگی Automation: امکان پیکربندی و مانتورینگ همزمان همه تجهیزات و یا گروهی از تجهیزات وجود خواهد داشت.

ویژگی Version Control: شما می تونید پیکربندی شبکه را به چند گام قبل تر برگردانید بدون آنکه نگران باشید نوع دستگاه شما چیست و آیا Version Control پشتیبانی می کند

مروری بر دستورات Cisco NSO

ابزار Cisco NSO نمود کامل مفهوم DevNet است . در این بخش با محیط CLI این ابزار آشنا می شوید

ویژگی Abstraction: شما با یک کانفیگ مشخص می توانید تا 100 برند مختلف را پیکربندی کنید. به عبارت دیگر پیکربندی BGP برای همه برندها یکسان خواهد بود

ویژگی Automation: امکان پیکربندی و مانتورینگ همزمان همه تجهیزات و یا گروهی از تجهیزات وجود خواهد داشت.

ویژگی Version Control: شما می تونید پیکربندی شبکه را به چند گام قبل تر برگردانید بدون آنکه نگران باشید نوع دستگاه شما چیست و آیا Version Control پشتیبانی می کند

نگاهی به Cisco ACI از دید DevNet

در بخش های بعدی قصد داریم به برنامه نویسی DevNet در محیط Cisco ACI بپردازیم . لذا لازم است قبل از آن در خصوص راه حل Cisco ACI که به عنوان شبکه با معماری SDN در دیتاسنترهای جدید استفاده می شود، کمی بیشتر بدانیم.

در این معماری پروتکل های control plane مثل BGP، OSPF و ... از روی تجهیزات برداشته شده و روی یک کنترلر مرکزی به نام SDN Controller پیاده سازی می شود که نقش آن در راه حل Cisco ACI به دوش Cisco APIC SDN Controller است.

لذا در این بخش سعی شده است به درک کلی از Cisco ACI برسیم و اینکه در این محیط به جای برنامه نویسی تجهیزات صرفا SDN Controller (APIC) برنامه ریزی می شود و نیازی به برنامه ریزی تجهیزات در این معماری نداریم.

سپس  به مفاهیمی که در این تکنولوژی بکار گرفته می شود می پردازیم چرا که در Cisco ACI به جای برنامه ریزی پرتکل های BGP، OSPF و ... مفاهیمی مثل Tenant، Bridge Domain، EPG و غیره برنامه ریزی می شوند که در این معماری حائز اهمیت هستند و شناخت آنها قبل از برنامه ریزی بسیار اهمیت دارد.

نگاهی به ساختار داده Cisco ACI

قطعا برای برنامه نویسی Cisco ACI هم همانند دیگر تجهیزات شبکه باید یک ساختار داده ای مشابه yang در روتر IOS XE و یا DME در سوییچ های نکسوس وجود داشته باشد.

در این بخش ساختار داده Cisco ACI که همانند DME ساختار درختی و object oriented است را مورد بررسی قرار می دهیم و با ابزار Visore آن را پیمایش می کنیم.

برنامه نویسی Cisco ACI با Cisco ACI Toolkit

در این بخش نشان داده شده است چگونه می توانید با استفاده از Cisco ACI Toolkit روی ACI برنامه نویسی کنید.در این شیوه نه نیاز دارید که از ساختار Data Structure و url برای پیکربندی بخش های مختلف آشنایی داشته باشید و نه آنکه خودتان کد json را ایجاد نمایید. همه این موارد توسط خود Cisco ACI Toolkit مدیریت می شود که کار را برای برنامه نویس بسیار ساده کرده است.

انواع گزینه های برنامه نویسی Cisco ACI و معرفی REST API

در این بخش 3 روش برنامه نویسی Cisco ACI به نام های REST API، Cisco Cobra Python SDK و Cisco ACI Toolkit و تفاوت آنها معرفی شده اند.

ضمنا نشان داده شده است چگونه می توانید با استفاده از REST API روی ساختارداده ACI برنامه نویسی کنید و چگونه می توانید آدرس URL و کد Json مورد نظر خود را بدست بیاورید.

در انتها نیز یک مثال ساده با استفاده از ابزار Postman نشان داده شده است

برنامه نویسی Cisco ACI با Cobra SDK

در این بخش چگونگی برنامه نویسی کردن Cisco ACI با پکیج Cobra SDK نشادن داده شده است. برای برنامه نویسی با این پکیج باید ساختار Data model را بشناسید.

این بخش دارای دو کتبخانه اصلی است. اولی acicobra که در واقع درخواست  لاگین، خواندن پیکربندی  و ایجاد پیکربندی جدید از این کتابخانه استفاده می شود.

کتابخانه دوم acimodel است که در واقع ساختار داده شما در این کتابخانه چیده و اماده می شود و در اختیار acicobra قرار می گیرد تا با aci controller ارتباط بگیرد.

Center چیست؟

در این ویدئو می خوام بگم که Cisco DNA Center چیه و به بهانه اون می خوام جدید ترین محصولات سیسکو رو معرفی کنم. یعنی علاوه بر این محصول ، محصولات دیکه مثل Cisco APIC و Cisco APIC-EM

کنترلر چیست؟

تفاوت اون با NMS چیست؟

Cisco DNA Center از چه اجرایی تشکیل شده است؟

مفهوم Application Infrastructure و Intent-based Infrastructure از جمله مطالبی است که در این بخش توضیح داده می شود.

چیزی که از این ویدئو دوست دارم اینه که سه روز دارم روش فکر می کنم که چطور بگم که بتونم این نرم افزار رو درست معرفی کنم. امیدوارم خراب نشده باشه. آخرش هم این رو یادم رفت بگم که Cisco ACI مبتنی بر تجهیزات Nexus 9k و Cisco DNA Center مبتنی بر سوییچ Catalyst 9k است اما تجهیزات خیلی از دیگر تولید کننده ها را نیز پشتیبانی می کند.

پیاده سازی Automation در Cisco DNA Center

در این بخش قصد داریم، به معرفی REST-API در Cisco DNA Center و با چند مثال ساده پیاده سازی Automation در این محصول را نشان دهیم.

نکته قابل توجه این است REST-API هایی که در اختیار ما قرار می گیرند از نوع Intent-based هستند و مفاهیم سنتی شبکه را شامل نمی شوند.

پیاده سازی Version Control with git

در این بخش چگونگی پیاده سازی Version Control با ابزار git نشان داده شده است. به این معنی که می توانید پیکربندی کل شبکه و تجهیزات را به یکجا به چند نسخه قبل تر بازگردانید.

کاربرد دیگر ابزار git مشارکت در یک پروژه تیمی است  که روی یک repository مشترک صورت میگیرد و git مدیریت آن را به عهده می گیرد که در بخش بعدی شرح داده می شود

معرفی و پیاده سازی قابلیت collaboration در git

علاوه بر version control یکی از قابلیت های مهم ابزار git ویژگی collaboration است. بدین معنی که چند تیم می توانند به صورت همزمان روی یک پروژه مشترک کار کنند و همواره به آخرین نسخه پروژه دسترسی داشته باشند و تغییرات خود را روی آن اعمال کنند.

هسته اصلی collaboration یک repository راه دور است که همه تیم ها بتوانند به آن دسترسی داشته باشند که می تواند در شبکه سازمان و یا در جایی روی اینترنت مثل github باشد.

با ابزار git clone یک کپی از پروژه روی سیستم خود نگه می دارید و روی آن تغییرات خود را اعمال می کنید.

با ابزار git pull می توانید همیشه آخرین تغییرات پروژه از روی remote repository روی سیستم خود به روز کنید

با ابزار git push می توانید تغییرات خود را روی remote repository کپی کنید. نکته مهم اینجاست که git قبل از هر گونه push باید مطمئن شود که آخرین نسخه به روز شده پروژه روی سیستم خود را در اختیار دارید. در غیر این صورت اجازه push کردن را به شما نمی دهد. به عبارت دیگر قبل از هر push باید pull کنید تا نسخه به روز شده پروژه روی سیستم شما کپی شود بدون آنکه تغییرات داخلی سیستم شما از بین برود. چرا که می توانید در هر لحظه تغییرات خود را با commit نگه دارید و یک نسخه از آن را نگه دارید.

مفهوم و پیاده branch در git

در git مفهوم بسیار مهم و اساسی به نام branch وجود دارد که آن را از دیگر ابزارهای مشابه متمایز می کند.

هر تیمی یا شخصی می تواند روی آخرین کپی پروژه، branch جدیدی بسازد و تمام تغییرات خود را روی branch جدید ایجاد نماید بدون آنکه تغییری در master branch ایجاد شود. تمام دیگر تیم هایی که کپی پروژه را می گیرند، تغییرات موقتی ایجاد شدخ توسط branch جدید را مشاهده نمی کنند. تا زمانی که تیم مورد نظر تغییرات خود را به صورت کامل به اتمام برساند. سپس می تواند تغییرات branch را در master branch اضافه نماید که اصطلاحا به آن merge گفته می شود.

مشاهده دمو

 

 
 
 
 
 
 
 
 
 
 
 

بازنگری ها