AS و BGP: مسیریابی میان شبکههای اینترنت
جواب کوتاه
اینترنت از دهها هزار شبکهی مستقل ساخته شده که به هر کدام AS میگویند و هر کدام شمارهای دارد (ASN). BGP (Border Gateway Protocol) پروتکلی است که این شبکهها با آن به هم میگویند به کدام نشانیها راه دارند. هر اعلام، فهرست ASهایی را که از آن گذشته همراه دارد؛ اگر AS نام خودش را در فهرست ببیند، آن را نمیپذیرد تا حلقه نسازد. هر AS از میان راهها با سیاست خودش انتخاب میکند، و پس از آن راه با AS کمتر را.
نام
BGP کوتاهشدهی Border Gateway Protocol است: «پروتکل دروازهی مرزی». مرز، مرز میان شبکههای مستقل اینترنت است. در درس مسیریابی پویا دیدید RIP و OSPF درون یک شبکه کار میکنند؛ BGP میان شبکهها.
پنج کلمه
- AS (Autonomous System)یک شبکهی مستقل در اینترنت: نشانیهایی که یک نهاد با یک سیاست مسیریابی میگرداند.
- ASNشمارهی هر AS، که BGP با آن شبکهها را از هم جدا میکند.
- BGPپروتکلی که ASها با آن به هم میگویند به کدام نشانیها راه دارند.
- همسایهی BGP (peer)روتری که با روتر شما جلسهی BGP دارد؛ این همسایهها دستی تعیین میشوند.
- مسیر AS (AS path)فهرست شمارهی ASهایی که اعلام از آنها گذشته؛ مثل نام شرکتهای سر راه روی بلیت.
شبکهی شبکهها
شرکتهای هواپیمایی را در نظر بگیرید. هر شرکت شبکهی پروازهای خودش و قاعدههای خودش را دارد. اینترنت هم همین است: دهها هزار شبکهی مستقل، هر کدام با نشانیها و سیاست مسیریابی خودش. به هر کدام AS میگویند، و درونش پروتکلی مثل OSPF کار میکند.
هر AS یک شماره دارد: ASN. تا سال ۲۰۰۷ شمارهها ۱۶ بیتی بودند، یعنی حداکثر ۶۵٬۵۳۶ تا؛ از آن پس ۳۲ بیتی هم داده میشوند. تا سال ۲۰۲۵ حدود ۱۲۰٬۰۰۰ شماره داده شده است. شمارهها را IANA به ثبتکنندههای منطقهای میدهد و آنها به نهادها، همان راهی که نشانیهای IP پخش میشوند (درس IP).
شمارههای ۶۴٬۴۹۶ تا ۶۴٬۵۱۱ برای نمونهها و مستندات کنار گذاشته شدهاند؛ همهی نمونههای این درس از همینهاست. شمارههای ۶۴٬۵۱۲ تا ۶۵٬۵۳۴ هم خصوصیاند، مثل نشانیهای خصوصی IP.
اعلام مسیر
شرکتهای هواپیمایی به هم میگویند «ما مسافر را به این شهرها میرسانیم». ASها هم با BGP به هم میگویند به کدام نشانیها راه دارند. فرض کنید نشانیهای 203.0.113.0/24 مال AS 64500 است:
AS 64500 به همسایهاش میگوید: «203.0.113.0/24 پیش من است». AS 64501 همین را به همسایهی خودش میدهد، ولی شمارهی خودش را اول فهرست میگذارد. این فهرست، مسیر AS است؛ مثل بلیت چندپروازی که نام شرکتهای سر راه رویش ردیف شده. AS 64502 حالا میداند برای رسیدن به آن نشانیها، از 64501 و بعد 64500 میگذرد.
به همین دلیل BGP از خانوادهی path vector است: هر ردیف نه فقط قدم بعد را دارد، بلکه کل فهرست ASهای سر راه را. این با distance vector و link state، که درون یک AS کار میکنند، فرق دارد.
نام خودم روی بلیت
اگر اعلامی دور بزند و به همان AS اول برگردد چه؟ شرکتی که نام خودش را روی بلیت ببیند، میفهمد این مسافر قبلا از او گذشته است. BGP هم همین کار را میکند:
فهرست کامل ASها همین را آسان میکند: اعلامی که دور زده و برگشته، بهآسانی شناخته و دور انداخته میشود. برای همین BGP به شمارندهای مثل سقف ۱۵ هاپ RIP نیاز ندارد.
کدام راه
گاهی یک AS برای یک نشانی چند اعلام میگیرد. کدام را برمیدارد؟ BGP عاملهای تصمیم بیشتری از هر پروتکل مسیریابی رایج دیگری دارد. سادهاش این است:
- قدم بعد آن اعلام باید در دسترس باشد؛ وگرنه کنار میرود.
- اولویت محلی (local preference): هر AS خودش تعیین میکند کدام همسایه را ترجیح میدهد. بالاتر، بهتر.
- مسیر AS کوتاهتر: راهی که از ASهای کمتری میگذرد. AS1، AS2، AS3 کوتاهتر از AS4، AS5، AS6، AS7 است.
- اگر هنوز برابر بودند، عاملهای ریزتری پشت سر هم سنجیده میشوند.
پس BGP بیشتر از آنکه دنبال تندترین راه باشد، دنبال راهی است که با سیاست هر شبکه جور است، مثل شرکت هواپیمایی که مسافرش را با شرکت همکار میفرستد، هرچند راه کوتاهتری هم باشد.
همسایههای BGP
برخلاف OSPF، که همسایهها را با Hello خودش پیدا میکند، همسایههای BGP را مدیر شبکه دستی تعیین میکند. دو روتر یک جلسهی TCP روی پورت ۱۷۹ میسازند (درس دستدادن TCP)؛ BGP تنها پروتکل مسیریابی است که روی TCP کار میکند. جلسه از شش حالت میگذرد:
وقتی جلسه به Established رسید، دو روتر مسیرهایشان را ردوبدل میکنند و پس از آن هر ۳۰ ثانیه یک پیام کوتاه ۱۹ بایتی (keepalive) میفرستند تا جلسه زنده بماند. اگر جلسه در Idle بماند، دلیلهای رایجش این است: پورت ۱۷۹ بسته است، نشانی همسایه اشتباه نوشته شده، یا شمارهی AS اشتباه است.
eBGP و iBGP
BGP میان دو AS را eBGP (بیرونی) میگویند؛ روترهای مرز دو شبکه، که معمولا مستقیم به هم وصلاند. BGP میان دو روتر درون یک AS را iBGP (درونی) میگویند، تا روترهای مرزی یک شبکه آنچه از بیرون شنیدهاند به هم بگویند.
قاعدهی پخش این دو فرق دارد: مسیری که از همسایهی eBGP رسیده، به همهی همسایهها گفته میشود؛ مسیری که از همسایهی iBGP رسیده، فقط به همسایههای eBGP. برای همین درون یک AS همهی روترهای iBGP باید با هم جلسه داشته باشند.
گونههای AS
ASها از نظر اتصال چهار جورند:
IXP مثل فرودگاه بزرگی است که شرکتهای هواپیمایی در آن به هم میرسند: شبکهها، معمولا ارائهدهندههای اینترنت و شبکههای پخش محتوا، آنجا کنار هم ترافیک ردوبدل میکنند و هزینهی راه را کم میکنند.
جدول بزرگ و اعتماد
جدول BGP اینترنت بسیار بزرگ است و بزرگتر هم میشود. جدول بزرگ حافظه و پردازش میخواهد، و پس از یک تغییر بزرگ دیرتر آرام میگیرد. تا اواخر سال ۲۰۰۱ این جدول تند بزرگ میشد، و ارائهدهندهها با CIDR و یکی کردن چند بلوک نشانی در یک اعلام، رشدش را کند کردند.
یک نکتهی مهم دیگر: روترهای BGP بنا به طراحی، مسیرهایی را که همسایهها اعلام میکنند میپذیرند. همین است که اینترنت را بی یک مرکز کنترل میگرداند. ولی یعنی اگر شبکهای، به اشتباه یا عمدا، نشانیهایی را اعلام کند که مال او نیست، ترافیک ممکن است به جای غلط برود. ایمن کردن این اعتماد، از نظر فنی و از نظر هزینه، کار دشواری است.
سه اشتباه
- «BGP همیشه کوتاهترین راه را انتخاب میکند.»هر AS اول سیاست خودش را به کار میبرد، مثلا قرارداد ارزانتر؛ کوتاهی مسیر AS بعد از آن میآید.
- «BGP مثل OSPF همسایههایش را خودش پیدا میکند.»همسایههای BGP دستی تنظیم میشوند و روی TCP پورت ۱۷۹ با هم جلسه میسازند.
- «هر شبکهی خانگی یک AS است.»AS شبکهای است با سیاست مسیریابی خودش، مثل ارائهدهندههای اینترنت یا سازمانهای بزرگ؛ شبکهی خانه بخشی از AS ارائهدهنده است.
جمعبندی. آنچه از این درس با خودتان میبرید.
- AS: شبکهای مستقل با سیاست مسیریابی خودش؛ ASN شمارهی آن است، ۱۶ یا ۳۲ بیتی.
- BGP میان ASها راهها را اعلام میکند؛ از خانوادهی path vector.
- هر AS شمارهاش را اول مسیر AS میگذارد؛ AS نام خودش را ببیند، نمیپذیرد.
- انتخاب: اول سیاست (اولویت محلی)، بعد شمار ASهای سر راه.
- همسایهها دستی تنظیم میشوند؛ TCP پورت ۱۷۹؛ keepalive هر ۳۰ ثانیه.
- BGP بنا به طراحی به گفتهی همسایه اعتماد میکند؛ اشتباه یا سوءاستفاده دردسر بزرگ میسازد.
خودتان را بسنجید
۱۵ پرسش، هر بار تازه از میان ۳۰ پرسش این درس. آخر آزمون فقط کارنامه را میبینید: چند درست، چند نادرست.