مقالات

از حالت غیرفعال تا برقرار شده: وضعیت های BGP، پورت های BGP و تعاملات TCP


درک حالت های BGP برای درک نحوه عملکرد BGP ضروری است. مانند پروتکل‌های دروازه داخلی (IGP) مانند EIGRP، OSPF یا ISIS، BGP قبل از تبادل اطلاعات مسیریابی، همتاسازی را با روترهای دیگر برقرار می‌کند. با این حال، بر خلاف IGP، BGP از پخش یا چندپخشی برای کشف همسایگان استفاده نمی کند. در عوض، همسایه ها به صورت دستی پیکربندی می شوند و BGP از پورت TCP 179 برای برقراری ارتباط قابل اعتماد با بلندگوهای BGP همسایه استفاده می کند. تا زمانی که اتصال TCP وجود دارد، این امکان ارتباط بین همسایگان BGP را در هر فاصله ای فراهم می کند.

هنگامی که روترها به عنوان همسایه BGP با آدرس IP یکدیگر پیکربندی می شوند، یک روتر به عنوان یک سرور TCP عمل می کند در حالی که دیگری به عنوان یک کلاینت عمل می کند، بسته به اینکه کدام روتر اتصال را آغاز می کند. در فرآیند برقراری ارتباط بین یک سرویس گیرنده TCP و یک سرور، مشتری با ارسال یک بسته TCP SYN به سرور با استفاده از پورت معروف به عنوان مقصد، اتصال را آغاز می کند. این SYN به عنوان یک درخواست برای باز کردن یک جلسه عمل می کند. اگر سرور جلسه را تأیید کند، با یک TCP SYN-ACK پاسخ می‌دهد که نشان‌دهنده تأیید درخواست و تمایل به باز کردن جلسه است. این پاسخ از پورت معروف به عنوان پورت مبدا و یک پورت مقصد مورد مذاکره دلخواه استفاده می کند. آخرین مرحله در این دست دادن سه طرفه این است که مشتری یک TCP ACK را به سرور ارسال کند و پاسخ آن را تأیید کند و برقراری اتصال را تکمیل کند.

این فرآیند در زمینه BGP مشابه است، جایی که روترها به عنوان مشتری و سرور TCP عمل می کنند. بیایید این را با مثالی که در شکل 1 نشان داده شده است نشان دهیم. روتر با آدرس IP 10.0.0.1 یک جلسه BGP را با استفاده از پروتکل TCP آغاز می کند و از حالت بیکار به حالت اتصال جلسه BGP منتقل می شود. با این حال، قبل از ارسال یک پیام BGP، یک دست دادن سه طرفه TCP باید تکمیل شود. روتری که دست دادن را آغاز می کند به مشتری TCP تبدیل می شود. مشتری یک درخواست (بسته SYN) را به سرور ارسال می کند که یک همسایه BGP است که با آدرس IP مقصد 10.0.0.2 پیکربندی شده است. بسته syn به پورت 179 با پورت منبع 21888 به صورت تصادفی ارسال می شود.

ACK و NACK در شبکه

درک حالت های BGP برای درک نحوه عملکرد BGP ضروری است. مانند پروتکل‌های دروازه داخلی (IGP) مانند EIGRP، OSPF یا ISIS، BGP قبل از تبادل اطلاعات مسیریابی، همتاسازی را با روترهای دیگر برقرار می‌کند. با این حال، بر خلاف IGP، BGP از پخش یا چندپخشی برای کشف همسایگان استفاده نمی کند. در عوض، همسایه ها به صورت دستی پیکربندی می شوند و BGP از پورت TCP 179 برای برقراری ارتباط قابل اعتماد با بلندگوهای BGP همسایه استفاده می کند. تا زمانی که اتصال TCP وجود دارد، این امکان ارتباط بین همسایگان BGP را در هر فاصله ای فراهم می کند.

هنگامی که روترها به عنوان همسایه BGP با آدرس IP یکدیگر پیکربندی می شوند، یک روتر به عنوان یک سرور TCP عمل می کند در حالی که دیگری به عنوان یک کلاینت عمل می کند، بسته به اینکه کدام روتر اتصال را آغاز می کند. در فرآیند برقراری ارتباط بین یک سرویس گیرنده TCP و یک سرور، مشتری با ارسال یک بسته TCP SYN به سرور با استفاده از پورت معروف به عنوان مقصد، اتصال را آغاز می کند. این SYN به عنوان یک درخواست برای باز کردن یک جلسه عمل می کند. اگر سرور جلسه را تأیید کند، با یک TCP SYN-ACK پاسخ می‌دهد که نشان‌دهنده تأیید درخواست و تمایل به باز کردن جلسه است. این پاسخ از پورت معروف به عنوان پورت مبدا و یک پورت مقصد مورد مذاکره دلخواه استفاده می کند. آخرین مرحله در این دست دادن سه طرفه این است که مشتری یک TCP ACK را به سرور ارسال کند و پاسخ آن را تأیید کند و برقراری اتصال را تکمیل کند.

این فرآیند در زمینه BGP مشابه است، جایی که روترها به عنوان مشتری و سرور TCP عمل می کنند. بیایید این را با مثالی که در شکل 1 نشان داده شده است نشان دهیم. روتر با آدرس IP 10.0.0.1 یک جلسه BGP را با استفاده از پروتکل TCP آغاز می کند و از حالت بیکار به حالت اتصال جلسه BGP منتقل می شود. با این حال، قبل از ارسال یک پیام BGP، یک دست دادن سه طرفه TCP باید تکمیل شود. روتری که دست دادن را آغاز می کند به مشتری TCP تبدیل می شود. مشتری یک درخواست (بسته SYN) را به سرور ارسال می کند که یک همسایه BGP است که با آدرس IP مقصد 10.0.0.2 پیکربندی شده است. بسته syn به پورت 179 با پورت منبع 21888 به صورت تصادفی ارسال می شود.

همسایگان eBGP

شکل 1 – R1 و R2 به عنوان همسایگان eBGP پیکربندی شده اند

در همین حال، همسایه BGP با IP 10.0.0.2 به طور فعال اتصال را آغاز نمی کند. در عوض، به عنوان یک سرور TCP عمل می کند. سرور به پورت 179 گوش می دهد و منتظر درخواست های اتصال ورودی می شود. به محض دریافت بسته SYN از مشتری، سرور با پورت مبدأ 179 و همان پورت مقصد 21888 که به طور تصادفی اختصاص داده شده است، پاسخ می دهد. در نتیجه، تمام ترافیک از مشتری به سرور از پورت مقصد 179 استفاده می کند، در حالی که ترافیک از سرور به مشتری از پورت مبدأ 179 استفاده می کند (شکل 2).

توجه داشته باشید: در ابتدا، جلسه BGP در حالت بیکار است، جایی که BGP منتظر شروع جلسه BGP است. زمانی که جلسه BGP در حالت اتصال باشد، دست دادن سه طرفه TCP TCP رخ می دهد.

اتصال BGP با استفاده از پورت های TCP

شکل 2 – اتصال BGP با استفاده از پورت های TCP

در اینجا لیست دسترسی 100 است که منطق پورت TCP را برای BGP که در بالا توضیح داده شد نشان می دهد. ACL 100 به صورت ورودی به روتر R2 اعمال می شود.

access-list 100 permit tcp host 10.0.0.1 host 10.0.0.2 eq bgp 
access-list 100 permit tcp host 10.0.0.1 eq bgp host 10.0.0.2
خط اول به ترافیک TCP از میزبان 10.0.0.1 به میزبان 10.0.0.2 با پورت مقصد روی BGP (پورت 179) اجازه می دهد، که نشان می دهد روتر R2 به عنوان یک سرور TCP عمل می کند.
خط دوم به ترافیک TCP از میزبان 10.0.0.1 با پورت منبع تنظیم شده روی BGP (پورت 179) به میزبان 10.0.0.2 اجازه می دهد، که نشان می دهد روتر R2 به عنوان یک مشتری TCP عمل می کند.

بعد از اینکه R1 و R2 دست دادن سه طرفه TCP را تکمیل کردند، به تبادل پیام های باز ادامه می دهند و جلسه را به حالت OpenSent منتقل می کنند. پس از آن، جلسه BGP وارد حالت OpenConfirm می شود. در این حالت، روترها منتظر تایید پیام OPEN به همراه پیام های Keepalive از طرف همتایان خود هستند. پس از دریافت موفقیت آمیز این پیام ها، جلسه وارد یک وضعیت ثابت می شود. در حالت ایجاد شده، همتایان در تبادل پیام‌های UPDATE و اطلاعات مسیریابی شرکت می‌کنند. این تنها حالتی است که در آن همتایان BGP به طور فعال اطلاعات مسیریابی را مبادله می کنند.

نقش شناسه BGP در فرآیند جلسه همتاسازی TCP

هنگامی که دو روتر BGP به دنبال ایجاد یک رابطه همتا هستند، یک روتر نقش همتای فعال را بر عهده می گیرد در حالی که دیگری نقش غیرفعال را بر عهده می گیرد، شبیه به دینامیک کلاینت-سرور که در آن روتر غیرفعال به عنوان سرور و روتر فعال به عنوان مشتری عمل می کند. این اصطلاح با مفاهیم شنونده BGP (سرور) و آغازگر BGP (مشتری) سازگار است.

به طور معمول، شریک فعال به طور فعال به دنبال شریک منفعل است و با آن رابطه برقرار می کند. تعیین اینکه کدام روتر به همتای فعال تبدیل می‌شود، بر اساس شناسه‌های روتر BGP مربوطه آن‌ها است، با روتر با شناسه بالاتر، نقش فعال را بر عهده می‌گیرد. هر روتر شناسه روتر خود را می‌داند و همچنین می‌تواند از طریق دستور BGP همسایه، شناسه روتر همسایه خود را پیدا کند.

پیام های باز توسط روتر برای شناسایی و تعیین پارامترهای عملکرد آن استفاده می شود (شکل 3). پیام باز شامل شماره نسخه BGP، شماره AS، زمان نگهداری، شناسه BGP و پارامترهای اختیاری است (شکل 3). شناسه BGP همان روتر-id است و در واقع با دستور bgp router-id پیکربندی شده است.

شناسه BGP

شکل 3 – پیام باز کردن BGP با شناسه BGP 10.0.0.1

اگرچه یک روتر بر اساس شناسه روتر به عنوان “فعال” تعیین شده است، هیچ تضمینی وجود ندارد که هر دو روتر همزمان تلاش نکنند اتصال را آغاز کنند. طبق استاندارد RFC 4271 در چنین حالتی برخورد اتصال رخ می دهد و یکی از اتصالات باید بسته شود.

بر اساس مقدار شناسه BGP، قراردادی برای تشخیص اینکه کدام اتصال BGP باید در هنگام وقوع برخورد حفظ شود، ایجاد می شود. کنوانسیون این است که شناسه های BGP همتاهای درگیر را با هم مقایسه کنید و فقط اتصال آغاز شده توسط بلندگوی BGP را با شناسه BGP با ارزش بالاتر حفظ کنید. به عبارت دیگر، شناسه BGP با مقدار بالاتر به مشتری تبدیل می شود و ارتباط آن حفظ می شود.

پیکربندی R2

برای جلوگیری از برخوردهای احتمالی هنگام برقراری جلسات BGP، می‌توانیم به صراحت تعریف کنیم که کدام همتای BGP باید به عنوان سرور عمل کند (به درگاه TCP 179 گوش دهید و منتظر درخواست‌های اتصال ورودی باشید) و کدام یک باید به عنوان یک کلاینت عمل کند (برای برقراری اتصالات، دست دادن TCP را آغاز کنید). این اطمینان حاصل می کند که تنها یک جلسه TCP بین همتایان BGP وجود خواهد داشت.

router bgp 64502
   neighbor 10.0.0.1 remote-as 64501
   neighbor 10.0.0.1 transport connection-mode passive

در این پیکربندی:

Neighbor 10.0.0.1 آدرس IP همسایه BGP (R1) را مشخص می کند.
Remote-as 64501 نشان می دهد که همسایه راه دور BGP در AS 64501 است.
حالت انتقال غیرفعال به R2 دستور می‌دهد که به صورت غیرفعال به درگاه TCP 179 گوش دهد. R2 تا زمانی که R1 یک بسته TCP SYN را به پورت 179 ارسال نکند، دست دادن TCP را با R1 آغاز نمی‌کند.

با پیکربندی R2 به این ترتیب، R1 منتظر می ماند تا یک TCP handshake را آغاز کند، بنابراین از تمام سناریوهای احتمالی برخورد جلوگیری می کند. اگرچه پیکربندی R1 به عنوان فعال (شروع یک دست دادن TCP) اختیاری است، اما می‌تواند تضمین کند که فقط یک جلسه TCP بین همتایان BGP برقرار می‌شود و پایداری و قابلیت اطمینان شبکه را بهبود می‌بخشد.

همانطور که در شکل 4 نشان داده شده است، دستور show ip bgp nears برای تأیید اینکه R2 به عنوان یک سرور برای اتصال TCP خدمت می کند، اجرا می شود.

R2# show ip bgp neighbors | include host

پورت های bgp را بررسی کنید

شکل 4 – بررسی پورت های BGP

Localhost: 10.0.0.2 – این آدرس IP روتر محلی (R2) است که به عنوان یک سرور BGP عمل می کند.
پورت محلی: 179 – این پورت معروف BGP است که نشان می دهد R2 به اتصالات BGP ورودی در این پورت گوش می دهد.
میزبان خارجی: 10.0.0.1 – این آدرس IP روتر راه دور (R1) است که جلسه BGP را آغاز کرده است.
پورت خارجی: 41457 – این پورت منبع مورد استفاده R1 برای جلسه BGP است، که نشان می دهد R1 به عنوان یک مشتری عمل می کند و اتصال به R2 را آغاز می کند.

نتیجه گیری

به طور خلاصه، درک حالت های BGP برای درک نحوه عملکرد BGP بسیار مهم است. برخلاف پروتکل های دروازه داخلی (IGP)، BGP به صورت دستی همسایگان را پیکربندی می کند و از پورت TCP 179 برای ایجاد اتصالات قابل اعتماد استفاده می کند.

هنگامی که دو روتر سعی می کنند یک جلسه BGP ایجاد کنند، یکی مشتری و دیگری سرور می شود. مشتری یک بسته TCP SYN را به سرور ارسال می کند و با دریافت آن، سرور با یک بسته TCP SYN-ACK پاسخ می دهد. روترها یک دست دادن سه طرفه را تکمیل می کنند و اگر برخوردی رخ دهد، اتصال آغاز شده توسط روتر با شناسه BGP بالاتر حفظ می شود.

پیکربندی یک روتر به‌عنوان سرور و دیگری به‌عنوان یک کلاینت به جلوگیری از برخورد کمک می‌کند و یک جلسه TCP را بین همتایان BGP تضمین می‌کند و پایداری شبکه را بهبود می‌بخشد.

The post از بیکار تا برقرار: وضعیت های BGP، پورت های BGP و تعاملات TCP اولین بار در Noction ظاهر شد.


Source link

نوشته های مشابه

دیدگاهتان را بنویسید

دکمه بازگشت به بالا