কেন আপনার BGP সেশন VPC রুট টেবিলে দেখা যায় না
EC2 অ্যাপ্লায়েন্সে একটি BGP সেশন VPC রুট ইনস্টল করে না। প্রকিরণ প্রতিটি রুট টেবিলের জন্য আলাদাভাবে চালু করতে হয়, আর অ্যাপ্লায়েন্স প্রতিটি প্যাকেট ফরওয়ার্ড করতেই থাকে।
যে গল্পটি বারবার বলা হয়, সেটি হল EC2 VPN অ্যাপ্লায়েন্সে থাকা রাউটিং ডেমন BGP চালু হলেই VPC-কে তার দূরবর্তী প্রিফিক্সগুলো শিখিয়ে দেবে। এর অর্ধেকটা সত্যি। সেশন চালু হয়, এবং তার কারণে VPC রুট টেবিলে কিছুই বদলায় না, তাই প্রথম উপসর্গ সাধারণত হয় একটি সাবনেট নিঃশব্দে ট্রাফিককে কালো গর্তে ফেলে দেওয়া।
এখানে দুটি আলাদা জিনিস গুলিয়ে ফেলা হচ্ছে: একটি রুট সার্ভারের সঙ্গে পিয়ারিং, এবং টেবিলে রুট ইনস্টল করা।
মিথ: BGP চালু করুন, VPC প্রিফিক্সগুলো শিখে যাবে
BGP হল দুই বক্তার মধ্যে কথোপকথন, এবং এই ডিজাইনে বক্তারা হল আপনার অ্যাপ্লায়েন্সের রাউটিং ডেমন এবং একটি VPC Route Server এন্ডপয়েন্ট যা AWS আপনার নিজের সাবনেটে রাখে। সেই কথোপকথন প্রিফিক্স বহন করে। এটি আপনার ওয়ার্কলোড সাবনেটের রুট টেবিল স্পর্শ করে না, কারণ সেই টেবিলগুলো কেবল সেই প্রকিরণ দিয়েই শেখে যা প্রতিটিতে আলাদাভাবে চালু করতে হয়। তা না হওয়া পর্যন্ত VPC ফ্যাব্রিক অ্যাপ্লায়েন্স কী জানে সে সম্পর্কে কিছুই জানে না।
সেটআপের ধাপগুলো আলাদা একটি কারণে: অ্যাসোসিয়েট করুন, এন্ডপয়েন্ট তৈরি করুন, পিয়ার করুন, তারপর প্রকিরণ চালু করুন।
Route Server একটি কন্ট্রোল প্লেন, টানেল নয়
Route Server একটি প্যাকেটও এনক্রিপ্ট, ফরওয়ার্ড বা পরিদর্শন করে না। এটি অ্যাপ্লায়েন্সের সঙ্গে BGP বিনিময় করতে এবং ফলস্বরূপ প্রিফিক্সগুলো সেগুলো গ্রহণ করার জন্য কনফিগার করা রুট টেবিলের হাতে দিতে বিদ্যমান। ডেটা প্লেন অপরিবর্তিত: প্যাকেটগুলো এখনও অ্যাপ্লায়েন্সের নেটওয়ার্ক ইন্টারফেস দিয়ে বের হয়, তার VPN-এ ভ্রমণ করে এবং একই পথে ফিরে আসে।
এর মানে ফরওয়ার্ডিং ইনস্ট্যান্সে সোর্স ও ডেস্টিনেশন চেক এখনও গুরুত্বপূর্ণ, কারণ ইনস্ট্যান্সটি এখন অন্য কারও ঠিকানায় যাওয়া ট্রাফিক ফরওয়ার্ড করছে।
সিকিউরিটি গ্রুপ এবং সাবনেট নিয়ন্ত্রণও ফরওয়ার্ড করা ফ্লোতে প্রযোজ্য। Route Server এমন অ্যাপ্লায়েন্সকে যা ট্রাফিক ফেলে দেয় তাকে তা ফরওয়ার্ড করতে বাধ্য করবে না, এবং দূরবর্তী প্রান্তে অনুপস্থিত রিটার্ন রুটও মেরামত করবে না।
প্রকিরণ প্রতি রুট টেবিলে, পুরো VPC-তে নয়
রুট সার্ভারকে VPC-র সঙ্গে অ্যাসোসিয়েট করা এবং একটি রুট টেবিলে প্রকিরণ চালু করা দুটি সিদ্ধান্ত, এবং কেবল দ্বিতীয়টিই একটি সাবনেট কী করে তা বদলায়। ছয়টি রুট টেবিলযুক্ত একটি VPC একটি প্রকিরিত প্রিফিক্স একটিতে পেতে পারে আর বাকি পাঁচটিতে না, যা একটি হাব সাবনেটের জন্য একদম সঠিক এবং ঠিক এটাই বিভ্রান্তিকর «অর্ধেক কাজ করে» ফলাফল তৈরি করে। এমনকি যেখানে প্রকিরণ চালু আছে, সেখানেও একটি প্রতিদ্বন্দ্বী রুট জিততে পারে, কারণ VPC রুট নির্বাচন দীর্ঘতম প্রিফিক্সকে প্রাধান্য দেয় এবং সমান দৈর্ঘ্যে স্ট্যাটিক রুটকে প্রকিরিত রুটের চেয়ে প্রাধান্য দেয়। এই প্রাধান্য নিঃশব্দে প্রয়োগ করা হয়।
অ্যাপ্লায়েন্স যে প্রিফিক্সগুলো বিজ্ঞাপন দেয় তার তালিকার বদলে নির্দিষ্ট সাবনেটের কার্যকর টেবিল দেখুন। API এই প্রশ্নের সরাসরি উত্তর দেয়: aws ec2 associate-route-server এবং aws ec2 enable-route-server-propagation --route-table-id <id> হল সেই দুটি ধাপ যা মানুষ ভুলে যায়, আর aws ec2 describe-route-tables --route-table-ids <id> দেখায় প্রিফিক্সটি আদৌ route server এন্ট্রি হিসেবে পৌঁছেছে কি না।
অ্যাপ্লায়েন্স এখনও প্রতিটি প্যাকেট বহন করে
পৌঁছানোযোগ্যতার বিজ্ঞাপন দেওয়া আর তা থাকা এক নয়. BGP সেশন স্থাপিত থাকতে পারে অথচ অ্যাপ্লায়েন্সের VPN বন্ধ, এবং কখনও না বদলানো একটি স্ট্যাটিক বিজ্ঞাপন ট্রাফিককে মৃত পথের দিকে টানতে থাকে। Route Server BFD-এর মতো ব্যর্থতা শনাক্তকরণ সমর্থন করে, কিন্তু তা পিয়ারের সজীবতা পরীক্ষা করে, পিয়ারের পেছনের সবকিছুর স্বাস্থ্য নয়।
বিজ্ঞাপনটিকে প্রকৃত দূরবর্তী রুটের সঙ্গে বেঁধে দিন: টানেল ও দূরবর্তী নেটওয়ার্ক চালু থাকলে প্রিফিক্স ঘোষণা করুন, আর না থাকলে তা প্রত্যাহার করুন।
একটি প্রিফিক্স প্রত্যাহার করুন এবং কী হয় দেখুন
ধাপে ধাপে পরীক্ষা করুন, এবং শেষ ধাপটিকে অপসারণ করুন। নিশ্চিত করুন যে বিজ্ঞাপন পৌঁছায়, প্রিফিক্স প্রতিটি অভীষ্ট টেবিলে দেখা যায়, অ্যাপ্লায়েন্সটি পরবর্তী হপ, ফরওয়ার্ডিং সক্রিয় টানেল অতিক্রম করে এবং দূরবর্তী প্রান্ত উত্তর দেয়। তারপর একটি পরীক্ষামূলক প্রিফিক্স প্রত্যাহার করুন, বা অনুমোদিত একটি টানেল বন্ধ করুন, এবং ট্রাফিক ডিজাইন যেখানে বলছে সেখানে যায় কি না দেখুন। পরীক্ষা খোলা থাকতেই আগের ও পরের টেবিল লিখে রাখুন।
একটি রুট দ্বিতীয় অ্যাপ্লায়েন্সে সরালে এটি যে সেশনগুলো বহন করছিল সেগুলো সরায় না, কারণ NAT ও ফায়ারওয়াল অবস্থা প্রথম ডিভাইসেই থাকে।
এক ডজন প্রিফিক্সের একটি স্থির সেটের জন্য VPC টেবিলে স্ট্যাটিক রুটই সস্তা উত্তর। Route Server তার জায়গা পায় যখন প্রিফিক্স তালিকা সত্যিই বদলায় এবং প্রত্যাহার নীতিটি এমন কিছু যা আপনি অন-কল ব্যক্তিকে বোঝাতে পারেন।