SR-IOV (Single Root Input/Output Virtualization) হল একটি হোস্ট হার্ডওয়্যার ডিভাইস ভার্চুয়ালাইজেশন টেকনোলজি যা ভার্চুয়াল মেশিনগুলকে হোস্ট ডিভাইসগুলোর সাথে সরাসরি অ্যাক্সেস দিতে দেয়। এটি বিভিন্ন ধরনের ডিভাইস ভার্চুয়ালাইজ করতে পারে, তবে সবচেয়ে বেশি এটি নেটওয়ার্ক অ্যাডাপ্টার ভার্চুয়ালাইজ করতে ব্যবহৃত হয়। এই আর্টিকেলে, আমরা দেখাব কীভাবে উইন্ডোজ হাইপার-V সার্ভারে ভার্চুয়াল মেশিন নেটওয়ার্ক অ্যাডাপ্টারের জন্য SR-IOV সক্ষম ও কনফিগার করা যায়।
SRV-IOV হাইপার-V ২০১২+ তে সমর্থিত, ফ্রি উইন্ডোজ হাইপার-V সার্ভার সহ। আমরা SR-IOV সিদ্ধান্তের বিস্তারিত আলোচনা করব না, কারণ আপনি ওয়েবে পূর্ণ নির্দেশিকা পেতে পারেন। ব্যবহারিক বোঝাপড়ার জন্য, জানা যথেষ্ট যে SR-IOV VM-দের হোস্টের ফিজিক্যাল নেটওয়ার্ক অ্যাডাপ্টার সরাসরি অ্যাক্সেস দিতে দেয় এবং হাইপার-V ভার্চুয়াল স্যুইচের দ্বারা ট্রাফিক প্রসেসিং বাইপাস করে। SR-IOV মোডে একটি ফিজিক্যাল নেটওয়ার্ক অ্যাডাপ্টার একাধিক ভার্চুয়াল মেশিন সার্ভিস করতে পারে।
হাইপার-V ভার্চুয়াল মেশিনের জন্য SRV-IOV ব্যবহার করার কারণে, আপনি থ্রুপুট উল্লেখযোগ্যভাবে বাড়াতে, নেটওয়ার্ক লেটেন্সি এবং CPU লোড কমাতে পারবেন যা হাইপার-V সফ্টওয়্যার দ্বারা নেটওয়ার্ক ট্রাফিক প্রসেসিংয়ের কারণে হয়।
SR-IOV NIC টিমিং-এর সাথে কম্প্যাটিবল নয়।
আপনার হাইপার-V হোস্টে SRV-IOV সক্ষম করতে, কিছু পূর্বশর্ত পূরণ করতে হবে।
প্রথমে, আপনার সার্ভারের BIOS-এ SRV-IOV এবং ভার্চুয়ালাইজেশন সাপোর্ট সক্ষম করুন। ভেন্ডরের উপর নির্ভর করে সেটিংস ভিন্ন হতে পারে।
- ভার্চুয়ালাইজেশন সাপোর্ট: Intel (Virtualization Technology, Intel VT, VT-d, Vanderpool), AMD (SVM, AMD-V)
- IOMMU
- SR-IOV
- ASPM

আপনার কাছে সব আইটেম নাও থাকতে পারে, এমনকি SR-IOV নাও থাকতে পারে। কিন্তু এটের মানে এ নয় যে আপনার সার্ভার SR-IOV সাপোর্ট করে না। উদাহরণস্বরূপ, সুপারমাইক্রো মাদারবোর্ডে BIOS-এ SR-IOV নাও থাকতে পারে, কিন্তু ASPM ডিফল্টভাবে ডিজেবল থাকে। আপনি যদি ASPM এবং ভার্চুয়ালাইজেশন সাপোর্ট সক্ষম করেন, তবে SR-IOV স্বয়ংক্রিয়ভাবে সক্রিয় হয়ে যাবে।
লক্ষ্য করুন যে যদি হোস্ট উইন্ডোজ OS BIOS সেটিংসে ডিজেবল করা SR-IOV-র সাথে ইনস্টল করা হয়, তবে আপনি এটি সক্ষম করার পর, সিস্টেম মনে করবে যে আপনি একটি নেটওয়ার্ক অ্যাডাপ্টার প্রতিস্থাপন করেছেন (বর্তমান স্ট্যাটিক IP ঠিকানা রিসেট হয়ে যাবে)।
আপনি পাওয়ারশেল ব্যবহার করে আপনার হাইপার-V সার্ভার হার্ডওয়্যার লেভেলে SR-IOV সাপোর্ট করে কিনা চেক করতে পারেন:
(get-vmhost).IovSupport
(get-vmhost).IovSupportReasons

যদি আপনার সার্ভার এই ফিচারটি সাপোর্ট করে, তবে IovSupport-এ True থাকবে। যদি না করে, তবে False থাকবে। এই ক্ষেত্রে, IovSupportReasons আইটেমটি দেখায় যে কেন SR-IOV সাপোর্ট করা হয় না। সাধারণত কারণটি বিস্তারিতভাবে বর্ণনা করা থাকে। এখানে টিপিক্যাল কারণগুলো দেওয়া হল:
- সিস্টেমের চিপসেট ইন্টারাপ্ট রিম্যাপিং করে না, যার nélkül SR-IOV সাপোর্ট করা সম্ভব নয়।
- প্রসেসর সেকেন্ড-লেভেল অ্যাড্রেস ট্রানসলেশন (SLAT) সাপোর্ট না করার কারণে এই কম্পিউটারে SR-IOV ব্যবহার করা যাবে না। ইন্টেল প্রসেসরের জন্য এই ফিচারটি এক্সটেন্ডেড পেজ টেবিলস (EPT) হিসেবে পরিচিত। AMD প্রসেসরের জন্য, এটি র্যাপিড ভার্চুয়ালাইজেশন ইনডেক্সিং (RVI) বা নেস্টেড পেজ টেবিলস (NPT) হিসেবে পরিচিত।
- PCI Express হার্ডওয়্যার যেকোনো রুট পোর্টে Access Control Services (ACS) সাপোর্ট না করার কারণে এই সিস্টেমে SR-IOV ব্যবহার করা যাবে না। আরও তথ্যের জন্য আপনার সিস্টেম ভেন্ডর সাথে যোগাযোগ করুন।
- BIOS আপডেট করতে হবে কারণ এতে হার্ডওয়্যার ক্ষমতার ভুল তথ্য রয়েছে। আপনার কম্পিউটার নির্মাতা থেকে আপডেট নিন।
- সিস্টেমের চিপসেট DMA রিম্যাপিং করে না, যার nélkül SR-IOV সাপোর্ট করা সম্ভব নয়।
- I/O রিম্যাপিং হার্ডওয়্যার ব্যবহারের নিষেধাজ্ঞা থাকা কারণে এই সিস্টেমে SR-IOV ব্যবহার করা যাবে না।
- সিস্টেম BIOS আপডেট করতে হবে যাতে উইন্ডোজ PCI Express নিয়ন্ত্রণ করতে পারে। আপনার কম্পিউটার নির্মাতা থেকে আপডেট নিন।
- সিস্টেমে SR-IOV-এর জন্য চিপসেট সাপোর্ট রয়েছে এবং BIOS-এ I/O ভার্চুয়ালাইজেশন সক্রিয় আছে তা নিশ্চিত করুন।
- এই সিস্টেমটি রিপোর্ট করছে যে কোনো PCI Express Bus নেই, তাই SR-IOV ব্যবহার করা যাবে না। আরও তথ্যের জন্য আপনার সিস্টেম নির্মাতা সাথে যোগাযোগ করুন।
get-vmswitch | fl *iov* কমান্ডের পূর্ণ আউটপুটে কিছু উপকারী তথ্য থাকে। উদাহরণস্বরূপ:
IovVirtualFunctionCount : 6 IovVirtualFunctionsInUse : 3
সংখ্যাগুলো দেখায় কতটি IOV ভার্চুয়াল ডিভাইস উপলব্ধ এবং ভার্চুয়াল মেশিনগুলোর 의해 কতটি ব্যবহৃত হচ্ছে।
হাইপার-V ভার্চুয়াল স্যুইচ তৈরি করার সময়, SR-IOV সাপোর্ট অপশন চেক করুন — Enable single-root I/O virtualization (SR-IOV)।

অথবা পাওয়ারশেল ব্যবহার করে ভার্চুয়াল স্যুইচ তৈরি করার সময় EnableIOV অপশন সক্ষম করুন:
New-VMSwitch -Name "VMNetExt" -NetAdapterName "Ethernet 2" -EnableIov 1
গুরুত্বপূর্ণ। ভার্চুয়াল স্যুইচ তৈরি করার পর SR-IOV সক্ষম করা যাবে না। আপনি যদি একবারে না করেন, তবে vswitch মুছে আবার তৈরি করতে হবে।
যদি হাইপারভাইজার হোস্ট SR-IOV সাপোর্ট করে, তবুও এটি নির্দিষ্ট ভার্চুয়াল স্যুইচে কাজ করবে না। স্যুইচটি অবশ্যই SR-IOV সাপোর্টসহ একটি নেটওয়ার্ক অ্যাডাপ্টার সাথে বাইন্ড করা উচিত।
এখানে আরেকটি গুরুত্বপূর্ণ বিষয়। একটি মাদারবোর্ডে একাধিক নেটওয়ার্ক অ্যাডাপ্টার থাকতে পারে, কিন্তু SR-IOV শুধু কিছু দ্বারা সাপোর্টেড হতে পারে। আরো, যদি একটি অ্যাডাপ্টারের ডেটাসিট অনুযায়ী SR-IOV সাপোর্ট করা হয়, তবুও এটি আপনার মাদারবোর্ডে কাজ করছে না।
সুতরাং, স্যুইচ কনফিগার করার পর, এই কমান্ড দিয়ে চেক করুন:
get-vmswitch | select IovSupport, IovSupportReasons, IovEnabled
IovEnabled অপশনটি দেখায় SR-IOV সক্রিয় আছে কিনা।
পাওয়ারশেল ব্যবহার করে SR-IOV সাপোর্টসহ নেটওয়ার্ক অ্যাডাপ্টারদের তালিকা দেখাতে পারেন:
Get-NetAdapterSriov | sort name | ft Name, InterfaceDescription, SriovSupport
আপনি হাইপারভাইজার এবং ভার্চুয়াল স্যুইচ লেভেলে SR-IOV সক্ষম করার পর, আপনার ভার্চুয়াল মেশিনগুলোর জন্য এটি সক্ষম করতে পারেন (এটি ডিফল্টভাবে ডিজেবল থাকে)। আপনার ভার্চুয়াল মেশিন নেটওয়ার্ক অ্যাডাপ্টারের Hardware Acceleration সেকশনে Enable SR-IOV অপশনটি পাবেন।

অথবা আপনি পাওয়ারশেল ব্যবহার করে ভার্চুয়াল মেশিনের নেটওয়ার্ক অ্যাডাপ্টারের জন্য SR-IOV সক্ষম করতে পারেন:
Set-VMNetworkAdapter -VMName mytestvm -VMNetworkAdapterName “Network Adapter” -IovWeight 100
SR-IOV ডিজেবল করতে, IovWeight-এর মান ০-এ পরিবর্তন করুন।
আপনি হাইপার-V-এ সমস্ত SR-IOV ত্রুটি এবং ইভেন্ট আলাদা একটি ইভেন্ট ভিউয়ার লগে পাবেন:
Application and Services Logs -> Microsoft -> Windows -> Hyper-V-SynthNic -> Admin.
যদি SR-IOV সঠিকভাবে কাজ করে, তবে ভার্চুয়াল মেশিন স্টার্টআপের সময় ইভেন্ট ভিউয়ারে নিচের এন্ট্রিগুলো দেখবেন:
12597 Network adapter (%NIC_ID%) Connected to virtual network. 12582 Network adapter (%NIC_ID%) started successfully. 12584 Network adapter (%NIC_ID%) allocated a virtual function. 12588 Network adapter (%NIC_ID%) assigned a virtual function.
SR-IOV ভার্চুয়াল মেশিন এবং হাইপারভাইজারের নেটওয়ার্ক পারফরম্যান্স বাড়ায়। আপনি হাইপার-V হোস্টে VM-এর উচ্চ ট্রাফিকের কারণে হোস্ট CPU-তে ভারী লোড থাকলে SR-IOV ব্যবহারের সর্বোচ্চ ফলাফল দেখতে পাবেন।