EVPN অল-অ্যাক্টিভ নেটওয়ার্কে Linux-এর অ্যাক্টিভ-ব্যাকআপ বন্ড: কোথায় ভাঙে
একটি অল-অ্যাক্টিভ EVPN সেগমেন্ট যেকোনো লিফে ইউনিকাস্ট পাঠায়, আর Linux-এর অ্যাক্টিভ-ব্যাকআপ বন্ড কেবল একটি পোর্টে শোনে। পরীক্ষার আগে দুটি মডেল মিলিয়ে নিন।
সার্ভারে একটি অ্যাক্টিভ-ব্যাকআপ বন্ড বসান, ফ্যাব্রিকে একটি অল-অ্যাক্টিভ ইথারনেট সেগমেন্ট বসান — এবং ফেরত ট্র্যাফিকের অর্ধেক একটি ত্রুটি কাউন্টারও নড়াচড়া না করেই উবে যেতে পারে। দুটি কনফিগারেশনের কোনোটিই নিজে থেকে ভুল নয়। সমস্যাটি তাদের মাঝের হস্তান্তরে, যেখানে এক পক্ষ একটি পোর্ট বেছে নেয় আর অন্য পক্ষ ধরে নেয় সংযুক্ত প্রতিটি লিফ ডেলিভার করতে পারে। প্রতিটি দিকে একটি ফ্রেম অনুসরণ করুন, অসামঞ্জস্যটি স্পষ্ট হয়ে যাবে।
আগত ফ্রেমের প্রতি অ্যাক্টিভ-ব্যাকআপ কী করে
বন্ডিং মোড 1 প্রেরণ পথে ঠিক একটি স্লেভ রাখে এবং বর্তমানটি ব্যর্থ হলেই কেবল তা বদলায়। এই অংশটি সুপরিচিত। এখানে গুরুত্বপূর্ণ হলো গ্রহণের দিক: কার্নেল কোনো ফ্রেম স্ট্যাককে দেয় কেবল যদি তা সক্রিয় স্লেভে পৌঁছায়, আর অন্য যেকোনো স্লেভে দেখা দেওয়া ফ্রেম ফেলে দেয়। এই all_slaves_active সেটিংটি ঠিক ওই নিয়ম শিথিল করার জন্যই আছে, এবং ডিফল্টভাবে এটি বন্ধ। ip -d link show bond0 মোডের পাশে বর্তমান মানটি ছাপে।
/proc/net/bonding/bond0 সক্রিয় স্লেভের নাম দেয় এবং প্রতিটি স্লেভের লিঙ্ক অবস্থা জানায়। ওই ফাইলটিই একমাত্র সৎ উৎস কোন পোর্ট এখন ট্র্যাফিক বইছে।
এই মোডে একটি হোস্টের একবারে একটি ব্যবহারযোগ্য গ্রহণ পথ থাকে, যা ফ্যাব্রিক সম্পর্কে কিছু না জেনে স্থানীয়ভাবে বেছে নেওয়া হয়। ওই হোস্টের জন্য কোনো ফ্রেম যদি অন্য কেবলে পৌঁছায়, সুইচ পোর্ট সেটি গৃহীত হিসেবে গোনে, হোস্টের স্ট্যাক তা কখনোই দেখে না, এবং হোস্টের নিজের ড্রপ কাউন্টার ছাড়া বাকি সব কাউন্টার পুরোপুরি সুস্থ দেখায়।
অল-অ্যাক্টিভ মাল্টিহোমিং দূরবর্তী নেক্সট হপের প্রতি কী করে
EVPN মাল্টিহোমিং একটি ESI দিয়ে চিহ্নিত এবং একটি ইথারনেট সেগমেন্ট ভাগ করা লিফগুলোর একটি সেট বর্ণনা করে এবং সেই সেগমেন্টটি ফ্যাব্রিকের বাকি অংশে ঘোষণা করে। অল-অ্যাক্টিভ মডেলে দূরবর্তী পিয়াররা সেগমেন্টের ঠিকানার জন্য একাধিক নেক্সট হপ ইনস্টল করে। তখন সার্ভারের দিকে ইউনিকাস্ট যেকোনো লিফে পৌঁছাতে পারে, এবং ফ্যাব্রিক প্রতি ফ্লোতে স্বাধীনভাবে বেছে নিতে পারে। এটাই ডিজাইনের পুরো উদ্দেশ্য, এবং এটাই সেই অনুমান যা সার্ভারের বন্ডকে পূরণ করতে হয়।
ফ্লাড হওয়া ট্র্যাফিক ভিন্ন নিয়ম অনুসরণ করে। লিফরা প্রতি সেগমেন্টে একটি নির্ধারিত ফরওয়ার্ডার নির্বাচন করে, তাই ব্রডকাস্ট, অজানা ইউনিকাস্ট ও মাল্টিকাস্ট সাধারণত তাদের একটির মধ্য দিয়েই ঢোকে। ফলে ইউনিকাস্ট ও ফ্লাডিং দুটি আলাদা সিদ্ধান্ত নেয়, এবং তাদের একটিই হোস্টের বন্ড অবস্থায় দেখা যায়।
যেখানে দুটি নির্বাচন মিলে না
কার্নেল তার সক্রিয় স্লেভ বেছে নেয় লিঙ্ক অবস্থা ও নিজের নীতি থেকে। ফ্যাব্রিক নেক্সট হপ বেছে নেয় EVPN রুট থেকে, আর নির্ধারিত ফরওয়ার্ডার বেছে নেয় লিফদের মধ্যে নির্বাচন থেকে। কোনোটিই অন্যটির সঙ্গে পরামর্শ করে না। তারা ভিন্ন লিফ বেছে নিলে ব্যর্থতাটি দিক-নির্দিষ্ট: সার্ভার যা পাঠায় তা স্বাভাবিকভাবে বেরোয়, আর উত্তরগুলো উবে যায়।
দুটি সমর্থিত পথ আছে, এবং তারা একে অপরের বদল নয়। হোস্টকে এমন একটি বন্ড দিন যা ফ্যাব্রিক একটি যৌক্তিক সংযুক্তি হিসেবে দেখতে পারে, যার মানে বাস্তবে লিফদের সঙ্গে দর-করা LACP বন্ড, এবং দুটি লিঙ্কই সত্যিকারভাবে একসঙ্গে সক্রিয় থাকে। অথবা ফ্যাব্রিক থেকে সিঙ্গেল-অ্যাক্টিভ ডেলিভারিও মেনে নিন, যাতে সেগমেন্ট বন্ডের মতোই একবারে একটি পোর্টের মডেল অনুসরণ করে। যা কাজ করে না তা হলো কেবল একটি পোর্টে শোনা বন্ডের সামনে অল-অ্যাক্টিভ সেগমেন্ট, যদি না আপনি ইচ্ছাকৃতভাবে নিষ্ক্রিয় স্লেভে গ্রহণ চালু করেন এবং তার পরের নকল ডেলিভারি মেনে নেন।
ব্যাকআপ কেবল কেন সুস্থ দেখাতে থাকে
যে কেবল কোনো ট্র্যাফিক বহন করে না সেটিও লিঙ্ক আপ জানায়, আর বন্ডের স্ট্যান্ডবাই স্লেভ তৈরি হয়েই আছে প্রস্তুত দেখানোর জন্য। অপারেটররা এটিকে রিডান্ড্যান্সি পড়ে নেন এবং প্রশ্ন করা বন্ধ করেন।
বরং জিজ্ঞেস করুন ফেরত ফ্রেমটি কোন ভৌত পোর্ট ব্যবহার করেছে। হোস্টে বন্ড-প্রতি নয়, স্লেভ-প্রতি গৃহীত প্যাকেট গোনেন, কারণ বন্ড কাউন্টার অসামঞ্জস্যটি লুকায়। লিফে দেখুন সার্ভারের MAC-এর জন্য ব্রিজ ফরওয়ার্ডিং এন্ট্রি এবং EVPN রুট যে নেক্সট-হপ সেট বহন করে তা। যদি এন্ট্রিটি এমন লিফের দিকে দেখায় যার হোস্ট লিঙ্ক স্ট্যান্ডবাই, তবে ডিজাইনটি এমন পোর্টে ডেলিভার করছে যা হোস্ট উপেক্ষা করে। এটি হার্ডওয়্যার ত্রুটি নয়, কনফিগারেশনের অসামঞ্জস্য, এবং লিঙ্ক-অবস্থার যতই মনিটরিং করুন তা এটা ধরবে না।
উভয় দিকে ডেলিভারি পরীক্ষা করুন, লিঙ্ক অবস্থা নয়
প্রতিটি ব্যর্থতার জন্য একটি সারি আর প্রতিটি দিকের জন্য একটি কলাম নিয়ে একটি ম্যাট্রিক্স বানান, তারপর ইন্টারফেস অবস্থা নয়, ডেলিভার হওয়া ট্র্যাফিক ভরুন। সারি এক হলো স্বাভাবিক পরিচালনা, আর ঠিক সেখানেই অসামঞ্জস্যটি লুকিয়ে থাকে, কারণ উপসর্গটি অ্যাপ্লিকেশনের সমস্যার মতো দেখায়।
তারপর সক্রিয় হোস্ট লিঙ্ক সরান, একটি লিফ সরান, সেই লিফের আপলিঙ্ক সরান, এবং প্রত্যেকটি পালাক্রমে ফিরিয়ে আনুন। প্রতিটি ধাপের পরে সক্রিয় স্লেভ, EVPN সেগমেন্ট অবস্থা, দূরবর্তী ফরওয়ার্ডিং এন্ট্রি এবং উভয় দিকে পর্যবেক্ষিত থ্রুপুট লিখে রাখুন। যে লিফ তার ফ্যাব্রিক পথ হারায় অথচ তার হোস্ট লিঙ্ক আপ থাকে, সেটিই মজার ঘটনা, কারণ সংযুক্তিটি ঘোষিত থাকে এবং চুপচাপ একরোখা গলিতে পরিণত হতে পারে। নতুন ইউনিকাস্ট ফ্লো এবং অ্যাপ্লিকেশন যে ফ্লাডেড ট্র্যাফিকের উপর নির্ভর করে তা দিয়ে পরীক্ষা করুন, কারণ দুটি ভিন্ন ফরওয়ার্ডিং সিদ্ধান্ত নেয়।
ম্যাট্রিক্স যখন আপনার উদ্দিষ্ট পথ দিয়ে দ্বিমুখী ডেলিভারি দেখায় তখনই ডিজাইনটি মেনে নিন। লিঙ্ক আপ থাকা দুটি কেবল সেই ফল নয়।