ইন্টার‍্যাকশন মডেলের ধারণা

আমরা যদি কোনও নোডের ডেটা মডেল (DM)-এ অপারেশন পারফর্ম করতে না পারি, তাহলে সেটি প্রাসঙ্গিক নয়। ইন্টার‍্যাকশন মডেল (IM), অন্যান্য নোডের DM-এর সাথে একটি নোডের DM-এর সম্পর্ক নির্ধারণ করে: DM-এর মধ্যে যোগাযোগের জন্য একটি সাধারণ ভাষা।

নোডগুলি একে অপরের সাথে ইন্টারঅ্যাক্ট করে:

  • অ্যাট্রিবিউট ও ইভেন্ট পড়া ও সাবস্ক্রাইব করা
  • অ্যাট্রিবিউটে লেখা হচ্ছে
  • কমান্ড চালু করা

যখনই কোনও Node অন্য Node-এর সাথে একটি এনক্রিপ্ট করা কমিউনিকেশন সিকোয়েন্স স্থাপন করে, তখন তারা একটি ইন্টার‍্যাকশন সম্পর্ক গঠন করে। ইন্টার‍্যাকশন এক বা একাধিক ট্রানজ্যাকশন নিয়ে গঠিত হতে পারে এবং ট্রানজ্যাকশন এক বা একাধিক অ্যাকশন নিয়ে গঠিত হয়, যা নোডের মধ্যে IM-লেভেল মেসেজ হিসেবে বোঝা যেতে পারে।

ইন্টার‍্যাকশন মডেলের হায়ারার্কি
ছবি ১: ইন্টার‍্যাকশন মডেলের হায়ারার্কি

ট্রানজ্যাকশনে একাধিক অ্যাকশন কাজ করে, যেমন Read Request Action যা অন্য Node থেকে অ্যাট্রিবিউট বা ইভেন্টের জন্য অনুরোধ করে অথবা এর উত্তর, Report Data Action, যা সার্ভার থেকে ক্লায়েন্টের কাছে তথ্য ফিরিয়ে নিয়ে যায়।

ইনিশিয়েটর ও টার্গেট

যে নোড ট্রানজ্যাকশন শুরু করে সেটি হল ইনিশিয়েটর এবং যে নোড উত্তর দেয় সেটি হল টার্গেট। সাধারণত, ইনিশিয়েটর হল ক্লায়েন্ট ক্লাস্টার এবং টার্গেট হল সার্ভার ক্লাস্টার। তবে, এই প্যাটার্নের ব্যতিক্রমও আছে, যেমন সাবস্ক্রিপশন ইন্টার‍্যাকশন, যা এই বিভাগের আরও নিচে বিশ্লেষণ করা হয়েছে।

গ্রুপ

Matter-এর নোডগুলি কোনও গ্রুপ-এর অন্তর্গত হতে পারে। ডিভাইসের গ্রুপ হল একই অ্যাকশনে একসাথে একাধিক ডিভাইসে মেসেজ পাঠানো এবং অ্যাড্রেস করার একটি পদ্ধতি। একটি গ্রুপের সব নোড একই গ্রুপ আইডি শেয়ার করে, যা একটি ১৬-বিট ইন্টিজার।

গ্রুপ-লেভেল কমিউনিকেশন (Groupcast) সম্পূর্ণ করতে, Matter IPv6 Multicast মেসেজ ব্যবহার করে এবং সব গ্রুপ মেম্বারের একই Multicast অ্যাড্রেস থাকে।

পাথ

আমরা যখনই কোনও অ্যাট্রিবিউট, ইভেন্ট বা কমান্ডের সাথে ইন্টার‍্যাক্ট করতে চাই, তখন আমাদের অবশ্যই এই ইন্টার‍্যাকশনের জন্য পাথ নির্দিষ্ট করতে হবে: নোডের ডেটা মডেল হায়ারার্কিতে কোনও অ্যাট্রিবিউট, ইভেন্ট বা কমান্ডের লোকেশন। সতর্কতা হল, পাথগুলি একসাথে একাধিক নোড বা ক্লাস্টারকে অ্যাড্রেস করার জন্য গ্রুপ বা ওয়াইল্ডকার্ড অপারেটর ব্যবহার করতে পারে, যা এই ইন্টার‍্যাকশনগুলিকে একত্রিত করে এবং এইভাবে অ্যাকশনের সংখ্যা কমিয়ে দেয়।

কমিউনিকেশনের রেসপন্সিভনেস উন্নত করার জন্য এই মেকানিজম গুরুত্বপূর্ণ। যেমন, কোনও ব্যবহারকারী সব আলো বন্ধ করতে চাইলে, ভয়েস অ্যাসিস্ট্যান্ট একটি গ্রুপের মধ্যে থাকা একাধিক আলোর সাথে একটি ইন্টার‍্যাকশন করতে পারে, একাধিক ইন্টার‍্যাকশন করার প্রয়োজন হয় না। ইনিশিয়েটর প্রতিটি লাইটের সাথে আলাদা আলাদা ইন্টার‍্যাকশন তৈরি করলে, ডিভাইসের রেসপন্সিভনেসে মানুষের পক্ষে বোঝা যায় এমন লেটেন্সি তৈরি হতে পারে। এই প্রভাবের ফলে একাধিক ডিভাইস একটি কমান্ডে প্রতিক্রিয়া জানায় এবং তাদের মধ্যে দৃশ্যমান বিলম্ব হয়। এটিকে প্রায়শই "পপকর্ন এফেক্ট" বলা হয়।

Matter-এ একটি পাথ নিচের বিকল্পগুলির মধ্যে একটি ব্যবহার করে অ্যাসেম্বল করা যেতে পারে:

<path> = <node> <endpoint> <cluster> <attribute | event | command>
<path> = <group ID>        <cluster> <attribute | event | command>

এবং এই Path বিল্ডিং ব্লকের মধ্যে, endpoint এবং cluster-এ একাধিক Node ইনস্ট্যান্স বেছে নেওয়ার জন্য ওয়াইল্ডকার্ড অপারেটরও অন্তর্ভুক্ত থাকতে পারে।

সময় অনুযায়ী ও সময় অনুযায়ী নয়

রাইট বা ইনভোক ট্রানজ্যাকশন করার দুটি উপায় আছে: টাইমড এবং আনটাইমড। টাইমড ট্রানজ্যাকশন, Write/Invoke অ্যাকশন পাঠানোর জন্য সর্বাধিক টাইমআউট প্রতিষ্ঠা করে। এই টাইমআউটের উদ্দেশ্য হল ট্রানজ্যাকশনে ইন্টারসেপ্ট অ্যাটাক প্রতিরোধ করা। এটি বিশেষ করে সেইসব ডিভাইসের ক্ষেত্রে প্রযোজ্য যেগুলি গ্যারেজ ওপেনার ও লকের মতো অ্যাসেটে অ্যাক্সেস গেট করে।

'টাইমড ট্রানজ্যাকশন' বুঝতে হলে, ইন্টারসেপ্ট অ্যাটাক কীভাবে হতে পারে এবং 'টাইমড ট্রানজ্যাকশন' কেন গুরুত্বপূর্ণ তা বোঝা দরকার।

ইন্টারসেপ্ট অ্যাটাক

ইন্টারসেপ্ট অ্যাটাকের নিম্নলিখিত প্যাটার্ন আছে:

  1. Alice, Bob-কে একটি প্রাথমিক মেসেজ পাঠায়, যেমন Write Request Action।
  2. ইভ, একজন ম্যান-ইন-দ্য-মিডল, মেসেজটি ইন্টারসেপ্ট করে এবং ববকে সেটি পেতে বাধা দেয়, উদাহরণস্বরূপ, কোনও ধরনের রেডিও জ্যামিংয়ের মাধ্যমে।
  3. শ্রুতকীর্তি, শত্রুঘ্নের থেকে কোনও উত্তর না পেয়ে, দ্বিতীয় মেসেজ পাঠায়।
  4. ইভ আবার বাধা দেয় এবং ববকে এটি গ্রহণ করতে দেয় না।
  5. ইভ প্রথম ইন্টারসেপ্ট করা মেসেজটি ববকে পাঠায়, যেন সেটি অ্যালিসের কাছ থেকে আসছে।
  6. বব, অ্যালিসকে (এবং ইভকে) উত্তর পাঠায়।
  7. ইভ দ্বিতীয় ইন্টারসেপ্ট করা মেসেজটি পরে রিপ্লে করার জন্য রেখে দেয়। যেহেতু শত্রুঘ্ন কখনও শ্রুতকীর্তির থেকে আসল দ্বিতীয় ইন্টারসেপ্ট করা মেসেজ পায়নি, তাই এটি সেটি গ্রহণ করবে। এই মেসেজটি নিরাপত্তা লঙ্ঘনের ঘটনাকে বোঝায়, যখন মেসেজটি "লক খোলো"-এর মতো কোনও কমান্ড এনকোড করে।

এই ধরনের আক্রমণ প্রতিরোধ করতে, টাইমড অ্যাকশন ট্রানজ্যাকশনের শুরুতে সর্বাধিক ট্রানজ্যাকশন টাইমআউট সেট করে। ইভ যদি অ্যাটাক ভেক্টরের প্রথম ছয়টি ধাপ সম্পূর্ণ করতে পারে, তাহলেও ট্রানজ্যাকশনের টাইমআউট শেষ হয়ে যাওয়ার কারণে সপ্তম ধাপে মেসেজ রিপ্লে করতে পারবে না।

টাইমড ট্রানজ্যাকশন অ্যাকশনের জটিলতা ও সংখ্যা বাড়ায়। তাই, প্রতিটি ট্রানজ্যাকশনের জন্য এগুলি সাজেস্ট করা হয় না, তবে শুধুমাত্র সেইসব ডিভাইসে গুরুত্বপূর্ণ অপারেশনের জন্য সাজেস্ট করা হয় যেগুলি ফিজিক্যাল বা ভার্চুয়াল নিরাপত্তা ও গোপনীয়তা অ্যাসেট নিয়ন্ত্রণ করে।

SDK অ্যাবস্ট্রাকশন

Read Transactions, Write Transactions এবং Invoke Transactions বিভাগগুলি SDK-এর মাধ্যমে করা ইন্টার‍্যাকশন মডেল অ্যাকশনের একটি হাই-লেভেল ওভারভিউ প্রদান করে।

Matter SDK ব্যবহার করে প্রোডাক্ট তৈরি করা ডেভেলপার সাধারণত সরাসরি অ্যাকশন কার্যকর করার জন্য কল করেন না; অ্যাকশনগুলি SDK ফাংশন দ্বারা অ্যাবস্ট্র্যাক্ট করা হয় যা সেগুলিকে একটি ইন্টার‍্যাকশনে এনক্যাপসুলেট করবে। তবে, ইঞ্জিনিয়ারকে Matter-এর ক্ষমতা সম্পর্কে ভাল দক্ষতা প্রদান করার পাশাপাশি SDK প্রয়োগের উপর সূক্ষ্ম নিয়ন্ত্রণ প্রদান করার জন্য IM অ্যাকশন বোঝা গুরুত্বপূর্ণ।