Skip to content

ইয়াং মডেলে রেস্টকন্ফ

  1. রেস্টকনফ (RESTCONF) ও নেটওয়ার্ক অটোমেশন নিয়ে একটু ভেতরের গল্প

রেস্টকনফ কিভাবে কাজ করে:

ট্রান্সপোর্ট - HTTP:

অন্যান্য REST API-এর মতো, রেস্টকনফ ডাটা পাঠানোর জন্য HTTP প্রোটোকল ব্যবহার করে। অথেনটিকেশন সাধারণত HTTP এর বেসিক অথেনটিকেশন মডেল ব্যবহার করে করা হয়, যেমন বেসিক অথেনটিকেশনে ব্যবহারকারীর নাম ও পাসওয়ার্ড BASE64-এ এনকোড করে হেডারে পাঠানো হয়।

অপারেশন - HTTP CRUD:

REST API সাধারণত CRUD (ক্রিয়েট, রিপ্লেস, আপডেট, এবং ডিলিট) অপারেশন নিয়ে কাজ করতে HTTP পদ্ধতি ব্যবহার করে। RESTCONF এই NETCONF অপারেশনগুলোকে HTTP পদ্ধতিতে রূপান্তর করে, যা নিচের টেবিলে দেখানো হয়েছে:

RESTCONF NETCONF
GET <get>, <get-config>
POST <edit-config> (অপারেশন="create")
PUT <edit-config> (অপারেশন="create/replace")
PATCH <edit-config> (অপারেশন="merge")
DELETE <edit-config> (অপারেশন="delete")

XML বা JSON:

রেস্টকনফ-এর একটি বড় সুবিধা হল এটি JSON ডেটা ফরম্যাট ব্যবহার করতে পারে। অনেক ডেভেলপার XML-এর তুলনায় JSON পছন্দ করে কারণ এটা সহজে পড়া যায় এবং কম ওভারহেড রয়েছে।

ফরম্যাট নিয়ে আলাপ

রেস্টকনফ রিকোয়েস্ট তৈরি করার সময়, আপনাকে সেই ডেটার ফরম্যাট এবং এজেন্টের জন্য অনুরোধকৃত ফরম্যাট নির্দিষ্ট করে বলতে হবে। এটা সাধারণ HTTP পদ্ধতিতে, রিকোয়েস্ট হেডার ব্যবহার করে টানা হয়:

• Content-Type: ক্লায়েন্ট থেকে ডেটার ধরন পাঠানোর সময় নির্দিষ্ট করে বলে দেই • Accept: ক্লায়েন্ট দ্বারা রিকোয়েস্টকৃত ডেটার ধরন নির্দিষ্ট করে বলে দেই

রেস্টকনফ নিচের MIME প্রকারগুলি ব্যবহার করে: (পোস্টম্যান দিয়ে দেখুন)

• application/yang.data+json • application/yang.data+xml

ইয়াং (YANG) মডেল পরিদর্শন:

ইয়াং মডেল দেখার জন্য কি কি করতে হবে? আমরা তো আগেই ইয়াং স্যুট ইনস্টল করেছি।

  1. ইয়াং মডেলের pyang টুল দেখি: pyang হল একটা চমত্কার পাইথন-ভিত্তিক টুল যা YANG মডেল এক্সপ্লোর করার জন্য ব্যবহৃত হয়। এর কাজ কি কি?
    • YANG মডেল যাচাইকরণ
    • YANG মডেল ট্রান্সফরমেশন
    • YANG মডেল থেকে পাইথন কোড জেনারেশন
  2. pyang ব্যবহার: টার্মিনালে নিচের কমান্ড ব্যবহার করে pyang চালান:

    $ cd yang-models
    $ pyang -f tree ietf-interfaces.yang
    

  3. আউটপুট একটু দেখি: pyang এর আউটপুট থেকে আমরা নিচের ডাটা পেতে পারি:

a) মডিউল স্ট্রাকচার ধারণা: * "ietf-interfaces" নাম দিয়ে একটা মডিউল রয়েছে। * এই মডিউলে দুটা মেইন কন্টেইনার আছে: "interfaces" এবং "interfaces-state"।

b) ইন্টারফেস লিস্ট: - প্রতিটি কন্টেইনারের মধ্যে "interface" নামে একটা তালিকা রয়েছে। - প্রতিটি ইন্টারফেস একটি অনন্য "name" কী দ্বারা আইডেন্টিফাই করা হয়।

c) লিফ অ্যাট্রিবিউট: - প্রতিটি লিফ (যেমন name, description, type) এর বিভিন্ন বৈশিষ্ট্য রয়েছে: * রিড অনলি/রিড-রাইট: read-write (rw) বা read-only (ro) * অপশন কি কি আছে: কিছু ঐচ্ছিক জিনিস(?) * ডেটা টাইপ: স্পষ্টভাবে জানতে হবে

RESTCONF URI-এর বিভিন্ন অংশের বিস্তারিত ধারণা: (নিচের উদাহরণটা দেখুন)

রেস্টকন্ফ এর ধারণা

a. ADDRESS (অ্যাড্রেস): - এটি RESTCONF এজেন্টের IP এড্রেস বা DNS নাম। - পোর্ট নম্বরও এর অন্তর্ভুক্ত, যেখানে RESTCONF সেবা উপলব্ধ। - উদাহরণ: "192.168.1.1:443" বা "device.example.com:8443"

b. ROOT (মূল): - RESTCONF অনুরোধের প্রধান প্রবেশ পথ। - RESTCONF সার্ভারে সংযোগ করার আগে, আপনাকে এই রুট নির্ধারণ করতে হবে। - RESTCONF মান অনুযায়ী, ডিভাইসগুলি "/.well-known/host-meta" নামক একটি রিসোর্স প্রদর্শন করা উচিত, যা প্রোগ্রাম্যাটিকভাবে রুট আবিষ্কার করতে সক্ষম করে। - তবে, অনেক ডিভাইস এখনও DRAFT RESTCONF স্পেসিফিকেশন অনুসরণ করে, তাই এটি সম্পূর্ণরূপে বাস্তবায়িত নাও হতে পারে। - ডিভাইসের ডকুমেন্টেশনে রুট পাথ উল্লেখ করা উচিত। - উদাহরণ: Cisco IOS-XE 16.3-16.5 এ এটি "restconf/api", 16.3-এর আগে এটি ছিল "api"।

c. DATA STORE (ডেটা স্টোর): - এটি অনুসন্ধান করা হচ্ছে এমন ডেটা স্টোর নির্দেশ করে। - সাধারণ ডেটা স্টোর হল "running" (বর্তমানে চলমান কনফিগারেশন) বা "candidate" (পরিবর্তন করার জন্য প্রস্তাবিত কনফিগারেশন)।

d. [YANG MODULE:]CONTAINER: - এটি ব্যবহৃত বেস মডেল কন্টেইনার নির্দেশ করে। - YANG মডিউলের নাম অন্তর্ভুক্ত করা ঐচ্ছিক। - উদাহরণ: "ietf-interfaces:interfaces" বা কেবল "interfaces"

e. LEAF: - কন্টেইনারের মধ্যে থেকে একটি পৃথক উপাদান। - এটি নির্দিষ্ট ডেটা আইটেম বা অপারেশন নির্দেশ করতে পারে।

f. [?] (ঐচ্ছিক প্যারামিটার): - কিছু নেটওয়ার্ক ডিভাইস কোয়েরি প্যারামিটার হিসাবে পাঠানো অপশন সমর্থন করতে পারে, যা প্রাপ্ত রেজাল্টকে প্রভাবিত করে। - এই অপশনগুলি প্রয়োজনীয় নয় এবং বাদ দেওয়া যেতে পারে। - সমর্থিত প্যারামিটারের বিস্তারিত জানতে ডিভাইসের ডকুমেন্টেশন দেখুন।

উদাহরণস্বরূপ একটি সম্পূর্ণ RESTCONF URI:

https://192.168.1.1:443/restconf/api/running/ietf-interfaces:interfaces/interface=GigabitEthernet1?depth=2

এই URI-তে: - ADDRESS: 192.168.1.1:443

  • ROOT: restconf/api

  • DATA STORE: running

  • YANG MODULE:CONTAINER: ietf-interfaces:interfaces

  • LEAF: interface=GigabitEthernet1

  • OPTION: depth=2 (সার্চের ডেপথ নির্দেশ করে)

এই বিস্তারিত বোঝা RESTCONF API ব্যবহার করে নেটওয়ার্ক অটোমেশন করার সময় অত্যন্ত গুরুত্বপূর্ণ। এটি ডেভেলপারদের সঠিক URI তৈরি করতে এবং নেটওয়ার্ক ডিভাইসের সাথে কার্যকরভাবে যোগাযোগ করতে সাহায্য করে।