টিথারিং হার্ডওয়্যার অফলোড

টিথারিং অফলোড ডিভাইসগুলোকে টিথারিং ট্র্যাফিক (ইউএসবি, ওয়াই-ফাই এর মাধ্যমে) হার্ডওয়্যারে অফলোড করার মাধ্যমে শক্তি সাশ্রয় করতে এবং কর্মক্ষমতা উন্নত করতে সক্ষম করে। অ্যাপ প্রসেসরকে বাইপাস করে মডেম এবং পেরিফেরালগুলোর মধ্যে একটি সরাসরি পথ তৈরি করার মাধ্যমে টিথারিং ট্র্যাফিক অফলোড করা হয়।

স্পেসিফিকেশন

অ্যান্ড্রয়েড ৮.১ থেকে, ডিভাইসগুলো হার্ডওয়্যারে IPv4, IPv6, অথবা IPv4+IPv6 ফরওয়ার্ডিং অফলোড করার জন্য টিথারিং অফলোড ব্যবহার করতে পারে।

অফলোড ফিচারের জন্য সব প্যাকেট অফলোড করার প্রয়োজন নেই। ফ্রেমওয়ার্কটি সফটওয়্যারের মাধ্যমে যেকোনো প্যাকেট পরিচালনা করতে সক্ষম। কন্ট্রোল প্যাকেটগুলো সাধারণত সফটওয়্যারে প্রসেস করা হয়। যেহেতু IPv4 পোর্টগুলো টিথারড ট্র্যাফিক এবং ডিভাইস ট্র্যাফিকের মধ্যে শেয়ার করা হয়, তাই IPv4 সেশন সেটআপ/টিয়ারডাউন প্যাকেটগুলো (উদাহরণস্বরূপ, SYN/SYN+ACK, FIN) অবশ্যই সফটওয়্যারে প্রসেস করতে হবে, যাতে কার্নেল ফ্লো স্টেট তৈরি করতে পারে। ফ্রেমওয়ার্কটি কন্ট্রোল প্লেন এবং স্টেট মেশিন সরবরাহ করে। এটি হার্ডওয়্যারকে আপস্ট্রিম এবং ডাউনস্ট্রিম ইন্টারফেস/প্রিফিক্স সম্পর্কিত তথ্যও প্রদান করে।

IPv4-এর ক্ষেত্রে, হার্ডওয়্যারটি IPv4 নেটওয়ার্ক অ্যাড্রেস ট্রান্সলেশন (NAT) সেশন সেটআপ প্যাকেটগুলোকে সিপিইউ-তে পৌঁছানোর অনুমতি দেয়। কার্নেল NAT এন্ট্রি তৈরি করে, এবং HAL ইমপ্লিমেন্টেশন ফ্রেমওয়ার্ক-প্রদত্ত ফাইল ডেসক্রিপ্টর থেকে এন্ট্রিগুলো পর্যবেক্ষণ করে ও হার্ডওয়্যারে এই ফ্লোগুলো পরিচালনা করে। এর মানে হলো, HAL ইমপ্লিমেন্টেশনের CAP_NET_* প্রয়োজন হয় না, কারণ HAL ফ্রেমওয়ার্ক থেকে খোলা NF_NETLINK_CONNTRACK সকেটগুলো পেয়ে যায়। নির্দিষ্ট সময় পর পর, হার্ডওয়্যারটি বর্তমানে সক্রিয় ফ্লোগুলোর জন্য NAT স্টেট আপডেট ফ্রেমওয়ার্কে পাঠায়, যা সংশ্লিষ্ট কার্নেল কানেকশন ট্র্যাকিং স্টেট এন্ট্রিগুলোকে রিফ্রেশ করে।

IPv6-এর জন্য, ফ্রেমওয়ার্কটি এমন কিছু IPv6 গন্তব্য প্রিফিক্সের একটি তালিকা প্রোগ্রাম করে যেখানে ট্র্যাফিক অফলোড করা যাবে না। অন্য সব টিথারড প্যাকেট অফলোড করা যেতে পারে।

ডেটা ব্যবহারের হিসাব রাখার জন্য, NetworkStatsService ডেটা ব্যবহারের পোলিং ফ্রেমওয়ার্ককে হার্ডওয়্যার থেকে ট্র্যাফিক পরিসংখ্যানের অনুরোধ করতে নির্দেশ দেয়। ফ্রেমওয়ার্কটি HAL-এর মাধ্যমে হার্ডওয়্যারকে ডেটা ব্যবহারের সীমাও জানিয়ে দেয়।

হার্ডওয়্যারের প্রয়োজনীয়তা

টিথারিং অফলোড বাস্তবায়ন করতে হলে, আপনার হার্ডওয়্যারকে অবশ্যই মূল প্রসেসরের মধ্য দিয়ে ট্র্যাফিক না পাঠিয়ে মডেম এবং ওয়াই-ফাই/ইউএসবি-এর মধ্যে আইপি প্যাকেট ফরওয়ার্ড করতে সক্ষম হতে হবে।

বাস্তবায়ন

টিথারিং অফলোড ফিচারটি সক্রিয় করতে, আপনাকে অবশ্যই নিম্নলিখিত দুটি জিনিস ইমপ্লিমেন্ট করতে হবে: একটি কনফিগ HAL ( IOffloadConfig ) এবং একটি কন্ট্রোল HAL ( IOffloadControl )।

কনফিগ HAL: IOffloadConfig

IOffloadConfig HAL টিথারিং অফলোড ইমপ্লিমেন্টেশন শুরু করে। ফ্রেমওয়ার্কটি HAL ইমপ্লিমেন্টেশনকে আগে থেকে সংযুক্ত NF_NETLINK_CONNTRACK সকেট সরবরাহ করে, যা ইমপ্লিমেন্টেশনটি IPv4 ফ্লো পর্যবেক্ষণ করতে ব্যবহার করতে পারে। শুধুমাত্র ফরওয়ার্ড করা ফ্লোগুলোকেই ত্বরান্বিত করতে হবে।

HAL নিয়ন্ত্রণ করুন: IOffloadControl

IOffloadControl HAL অফলোড বাস্তবায়ন নিয়ন্ত্রণ করে। নিম্নলিখিত পদ্ধতিগুলি অবশ্যই বাস্তবায়ন করতে হবে:

  • অফলোড হার্ডওয়্যার চালু/বন্ধ করতে initOffload/stopOffload ব্যবহার করুন এবং setLocalPrefixes মাধ্যমে লোকাল আইপি অ্যাড্রেস বা অন্যান্য নেটওয়ার্ককে অফলোড থেকে অব্যাহতি দিন।
  • আপস্ট্রিম ইন্টারফেস, IPv4 অ্যাড্রেস এবং IPv6 গেটওয়ে সেট করতে setUpstreamParameters ব্যবহার করুন এবং addDownstream/removeDownstream দিয়ে ডাউনস্ট্রিম আইপি অ্যাড্রেস রেঞ্জ কনফিগার করুন।
  • ডেটা ব্যবহারের হিসাব রাখতে getForwardedStats/setDataLimit ব্যবহার করুন।

আপনার ভেন্ডর HAL-কেও অবশ্যই ITetheringOffloadCallback ইন্টারফেসের মাধ্যমে কলব্যাক পাঠাতে হবে, যা ফ্রেমওয়ার্ককে নিম্নলিখিত বিষয়গুলো সম্পর্কে অবহিত করে:

  • অ্যাসিঙ্ক্রোনাস ইভেন্ট যেমন অফলোড শুরু এবং বন্ধ হওয়া (OffloadCallbackEvent)
  • NAT টাইমআউট আপডেট, যা একটি নির্দিষ্ট IPv4 ফ্লোতে ট্র্যাফিক রয়েছে তা বোঝানোর জন্য পর্যায়ক্রমে পাঠানো আবশ্যক এবং কার্নেল দ্বারা এটি বন্ধ করা যাবে না।

বৈধতা

আপনার টিথারিং অফলোড বাস্তবায়ন যাচাই করতে, ম্যানুয়াল বা স্বয়ংক্রিয় পরীক্ষার মাধ্যমে নিশ্চিত করুন যে টিথারিং এবং ওয়াই-ফাই হটস্পট প্রত্যাশিতভাবে কাজ করছে। ভেন্ডর টেস্ট স্যুট (VTS)- এ টিথারিং অফলোড HAL-গুলোর জন্য পরীক্ষাসমূহ অন্তর্ভুক্ত রয়েছে।