BGP প্রিফিক্স শিখেছে, কিন্তু ট্র্যাফিক এখনও টানেল এড়িয়ে যায়
BGP টেবিলে একটি প্রিফিক্স নিয়ন্ত্রণ-তলের খবর, ফরওয়ার্ডিং সিদ্ধান্ত নয়। টানেলকে দোষ দেওয়ার আগে গ্রহণ, নির্বাচন, ইনস্টল ও মিল যাচাই করুন।
শাখার গেটওয়ে তার BGP টেবিলে ক্লাউড প্রিফিক্সটি দেখায়, প্রোভাইডারের সাথে সেশন স্থাপিত, তবুও সেই প্রিফিক্সে ব্যবহারকারীর অনুরোধ ভুল ইন্টারফেস দিয়ে বেরিয়ে যায়। মনিটরিং যেভাবে ইঙ্গিত দেয় তেমন কিছুই ভাঙা নেই, কারণ “BGP এটি শিখেছে” নিয়ন্ত্রণ-তল সম্পর্কে একটি বক্তব্য। ওই টেবিল ও প্যাকেটের মধ্যে চারটি আলাদা রূপান্তর আছে, আর প্রবাহ ঠিক একটিতে থেমে যায়। গেটগুলো ক্রমে দেখুন এবং প্রথম যেটি ব্যর্থ হয় সেখানেই থামুন।
প্রথম গেট: প্রতিবেশী আসলে কী পাঠিয়েছে
প্রিফিক্সটি সংক্ষেপিত হিসেবে নয়, যেভাবে পাওয়া গেছে সেভাবেই শুরু করুন। BGP টেবিলে সঠিক নেটওয়ার্ক ও মাস্ক খুঁজে বের করুন এবং পরবর্তী হপ, AS পাথ ও আমদানি নীতি যেকোনো কমিউনিটির সাথে মিলতে পারে তা লিপিবদ্ধ করুন। ড্যাশবোর্ডের সারসংক্ষেপ রুট এই তথ্য লুকাতে পারে যে নির্দিষ্ট প্রিফিক্সটি কখনও গৃহীত হয়নি।
আমদানি নীতি হলো সেই স্বাভাবিক জায়গা যেখানে কোনো ত্রুটি ছাড়াই রুট অদৃশ্য হয়। প্রিফিক্স তালিকা, কমিউনিটি ফিল্টার বা অন্তর্মুখী রুট ম্যাপ আপডেটটি ফেলে দিতে পারে, অথচ সেশন আপ ও সুস্থ থাকে; এজন্যই সবুজ প্রতিবেশী বাতি এত কম প্রমাণ করে। লগ লাইনের অনুপস্থিতি মানে সিদ্ধান্তের অনুপস্থিতি নয়। সাধারণত এর মানে সিদ্ধান্তটি নীরবে, ঠিক কনফিগার করা মতোই নেওয়া হয়েছে।
show ip bgp 10.60.20.0/24 show ip bgp neighbors 203.0.113.5 advertised-routes show ip route 10.60.20.0 show ip cef 10.60.20.0
আউটপুটটি ওই ক্রমে পড়ুন। প্রথম দুটি জানায় তথ্য পৌঁছেছে কি না এবং প্রতিবেশী কী পাঠিয়েছে বলে দাবি করে; শেষ দুটি জানায় কিছু রাউটিং ও ফরওয়ার্ডিং টেবিলে পৌঁছেছে কি না। প্রথম কমান্ডে উপস্থিত ও তৃতীয়টিতে অনুপস্থিত প্রিফিক্স নির্বাচন বা ইনস্টলের সমস্যা, সংযোগের সমস্যা নয়।
দ্বিতীয় গেট: নির্বাচন, তারপর ইনস্টল
BGP সেরা পথ বেছে নেয়, আর বেছে নেওয়া পথ স্বয়ংক্রিয়ভাবে ইনস্টল হয় না। পরবর্তী হপটি রিজলভ হতে হবে, এবং অন্য রুট উৎসের কাছে ইতিমধ্যে সেই প্রিফিক্স ভালো প্রশাসনিক দূরত্ব নিয়ে থাকতে পারে। মাইগ্রেশন থেকে পড়ে থাকা স্ট্যাটিক রুট বৈধ BGP পথকে সহজেই হারিয়ে দেবে এবং ট্র্যাফিক অন্য জায়গায় পাঠাবে।
RFC 4271 তিনটি ধারণা আলাদা রাখে: প্রতিবেশী কী পাঠিয়েছে, এই স্পিকার কী সেরা হিসেবে বেছে নিয়েছে, এবং পরে কী ঘোষণা করবে। এগুলো ধারণাগত ভূমিকা, কোনো বিক্রেতাকে দেখাতে হয় এমন তিনটি ভৌত ডেটাবেস নয়, কিন্তু এই বিচ্ছেদই “এটি BGP-তে আছে” উত্তরটিকে অসম্পূর্ণ করে তোলে।
আপনি কোন রাউটিং প্রসঙ্গ পড়ছেন তাও যাচাই করুন। যে VRF-এ রুট ইনস্টল হয়েছে কিন্তু ব্যবহারকারীর ইন্টারফেস সেখানে নেই, সেই রুট ওই ব্যবহারকারীর প্যাকেটের কাছে অদৃশ্য, অথচ টেবিল সারাক্ষণ সঠিক দেখায়।
তৃতীয় গেট: এই প্রবাহে প্রযোজ্য লুকআপ
এখন রুট নিয়ে জিজ্ঞাসা বন্ধ করে প্যাকেট নিয়ে জিজ্ঞাসা শুরু করুন। ব্যবহারকারীর সোর্স ঠিকানা, গন্তব্য, প্রোটোকল, পোর্ট ও ইনগ্রেস ইন্টারফেস লিপিবদ্ধ করুন, কারণ এর প্রত্যেকটি ভিন্ন নীতি নির্বাচন করতে পারে। তারপর সাধারণ রাউটিং টেবিলের বদলে সেই সমন্বয়ে প্রযোজ্য লুকআপটি দেখুন।
ip route get 10.60.20.25 from 10.60.10.40 ip rule show sudo tcpdump -ni tun0 'host 10.60.20.25'
আরও নির্দিষ্ট প্রিফিক্স এখানে সবচেয়ে সাধারণ বিস্ময়, আর নীতি রুট দ্বিতীয়। দুটোই আপনি যে সমষ্টিটি দেখছিলেন তা অগ্রাহ্য করে, এবং কোনোটিই BGP টেবিলের সারসংক্ষেপে দেখা যায় না।
গেটওয়ে নিজে থেকে পাঠানো পিং ব্যবহারকারীর সেশনের প্রমাণ নয়। ভিন্ন সোর্স ঠিকানা, ভিন্ন নীতি পথ, এবং প্রায়ই ভিন্ন ফলাফল। অ্যাপ্লিকেশন যে সোর্স ব্যবহার করে সেই একই সোর্স দিয়ে পরীক্ষা করুন, অথবা স্বীকার করুন যে পরীক্ষাটি ভিন্ন প্রশ্নের উত্তর দিচ্ছে।
চতুর্থ গেট: পথের দূরবর্তী অর্ধেক
স্থানীয় লুকআপ যদি সত্যিই টানেল বেছে নেয়, প্যাকেটটিকে এখনও সুরক্ষা নীতিতে গৃহীত হতে হবে, ফরওয়ার্ডিং নিয়মে অনুমোদিত হতে হবে, এবং ওপারের কিছু একটি উত্তর দিতে হবে। ঠিকানা জোড়া অন্তর্ভুক্ত না করা ক্রিপ্টো ACL ট্র্যাফিক ফেলে দেবে অথচ টানেল নিজেকে আপ বলে রিপোর্ট করবে, যা রাউটিং ব্যর্থতা থেকে আলাদা করা যায় না এমন টাইমআউট তৈরি করে।
ফিরতি পথ বেরোনোর পথের মতোই গুরুত্বপূর্ণ। ক্লাউড দিককে জানতে হবে কীভাবে শাখার সোর্সে পৌঁছাবে, হয় রুটের মাধ্যমে, নয়তো আপনি সচেতনভাবে কনফিগার করা অনুবাদের মাধ্যমে। শুধু এক দিক থেকে পরীক্ষা করা ডিজাইনে অসমমিত ফিরতি পথ সাধারণ।
নতুন অনুমোদিত সংযোগকে তিনটি পর্যবেক্ষণের সাথে মিলিয়ে দেখুন: যে স্থানীয় নীতি মিলেছে, যে টানেল কাউন্টার এগিয়েছে, এবং দূরবর্তী দিকে যেখানে দৃশ্যমান সেখানে গ্রহণ। কাউন্টার না এগোলে রুট টেবিল যা-ই বলুক, প্যাকেট কখনও টানেলে ঢোকেনি। এগোলে কিন্তু কিছু না পৌঁছালে দূরবর্তী দিক সেটি ফেলছে বা ভুলপথে পাঠাচ্ছে। এই দুটি ফলাফল সম্পূর্ণ ভিন্ন দলের কাছে নিয়ে যায়।
ব্যর্থ রূপান্তরটির নাম দিন
ফলাফলটি পাঁচটি অবস্থার একটি হিসেবে লিখুন: গৃহীত হয়নি, নীতিতে গৃহীত হয়নি, নির্বাচিত হয়নি, ইনস্টল হয়নি, বা এই প্রবাহে মেলেনি। ষষ্ঠটি যোগ করুন সেই ক্ষেত্রে যেখানে স্থানীয় পথ সঠিক কিন্তু দূরবর্তী প্রান্ত উত্তর দিতে পারে না। ওই বাক্যটিই ডেলিভারেবল, এবং প্রতিষ্ঠিত প্রতিবেশীর স্ক্রিনশটের চেয়ে অনেক বেশি কাজে লাগে।
গ্রহণ পরিকল্পনায় একটি নেতিবাচক পরীক্ষাও রাখুন: এমন একটি গন্তব্য যা টানেল দিয়ে যাওয়া উচিত নয়, পরিবর্তনের পরে যাচাই করা। যে চেকলিস্ট কেবল সুখী পথ প্রমাণ করে তা পরবর্তী রক্ষণাবেক্ষণ উইন্ডোতে কেউ যোগ করা বিস্তৃত নীতি নিয়ম ধরবে না।