توی سه پست قبلی درباره فضای Open Networking توضیحاتی رو آوردیم. توی این پست میخوام یه ذره درباره خود شبکه صحبتی رو داشته باشیم (توی این پست نمیخوام خیلی وارد جزئیات بشم و سعی میکنم کلیات رو مطرح کنم و هدفم این هستش که بتونم یه تصویری رو از شبکه سوییچ و روتر و اینها ایجاد کنم)
به طور کلی و آکادمیک دو جور لایهبندی برای شبکه عنوان میشه. یکی مدل OSI که هفت لایه است و یکی مدل TCP/IP که ۴ یا ۵ لایه است و یه جورایی مختصرترشدهی مدل OSI هستش. توی این پست میخوام تمرکز کنم روی لایههای ۲ و ۳ از مدل OSI که در مدل TCP/IP هم حضور داره.
کلا هر دستگاهی در سطح شبکه دو تا آدرس مک و IP رو داره (حالا هم IPv4 و هم IPv6) که متمایزکننده اون دستگاه هستش.
وقتی صحبت از آدرس مک میکنیم، یعنی لایه ۲ شبکه و وقتی صحبت از آدرس IP میکنیم، یعنی لایه ۳ شبکه. توی تجهیزهای شبکه که این دو لایه رو پشتیبانی میکنن، برای ذخیره آدرسهای لایه ۲ از جدول مک (MAC Table) استفاده میشه و برای ذخیره آدرسهای لایه ۳ از جدول مسیریابی (Routing Table). مهمترین تفاوت این دو تا جدول هم برمیگرده به موضوع LPM (Longest Prefix Match). یعنی چی؟
ببین وقتی قراره مسیریابی در سطح لایه ۲ باشه، یعنی مک باشه، یعنی عملکرد سوییچی داشته باشیم، باید کل آدرس مقصد به طور کامل در جدول وجود داشته باشه. اگه نباشه چی؟ سوییچ اون ترافیک رو روی همه پورتهاش ارسال میکنه، در واقع flood میکنه.
ولی وقتی قراره مسیریابی در سطح لایه ۳ باشه، یعنی IP باشه، یعنی عملکرد روتری داشته باشیم، به آدرسی ارسال میشه که بیشترین انطباق رو داشته باشه. اگر نداشت چی؟ میفرسته برای default gatewayش. هر چی رو ندونه میفرسته برای default gateway که یه entry هست توی این جدول. اگه default gateway نداشت چی؟ هیچی، dropش میکنه دیگه. کاری از دستش برنمیاد!
بنابراین وقتی صحبت از جدول مک میشه، به تعداد آدرسهای مورد استفاده باید entry اختصاص بدیم ولی توی جدول مسیریابی این طوری نیست و یه سری تجهیز با همدیگه، یه entry رو استفاده میکنن. این کار scaling رو امکانپذیر میکنه.
حالا وقتی یه تعداد محدودی از دستگاهها رو میخوایم در کنار همدیگه داشته باشیم، میتونیم از یه سوییچ استفاده کنیم و همه چیز اکی هستش. فقط احتمالا توی ارتباط بین این سوییچهامون اگه حلقه (loop) داشته باشیم، اون flooding میتونه مشکلساز بشه دیگه و کل شبکه رو down کنه. برای حل این مساله راهحل مرسوم استفاده از پروتکلهای spanning tree هستش که حلقه رو از بین میبره و البته protection رو هم داره (البته در حد چندین و چند ثانیه!). همچنین اگه تعداد سوییچهامون از حدود ۷ تا برای STP و حدود ۱۵ تا برای RSTP فراتر بره، دیگه این پروتکل همگرا نمیشه و شبکه کار نمیکنه.
وقتی میخوایم تعداد نودهای شبکه رو توسعه بدیم و scale کنیم، اینجاست که باید بریم سراغ جدول مسیریابی و عملکرد روتری.
توی این متن چند بار از اصطلاح عملکرد سوییچ یا عملکرد روتر استفاده کردم که بی دلیل نبود. قبلترها، سوییچ و روتر دو تا تجهیز مجزا بودن و البته هنوزم محصولات مجزایی برای اونها وجود داره ولی با رشد تکنولوژی، الان data plane این دو تا مشابه با هم هستن و همون data planeی که کار لایه ۲ی رو انجام میده، لایه ۳ و حتی فراتر از اون رو هم انجام میده. به اینها میگن multi-layer switch. بنابراین الان اینجوریه که بیشتر از لحاظ مفهومی لایه ۲ و ۳ با هم فرق دارن و صدالبته نحوه استفاده از اونها در شبکه.
خود مسیریابی در سطح لایه ۳ هم یه سری مشکلات داره که برای حل اونها، مسیریابی در لایه ۲.۵ (MPLS) به وجود اومد که البته خود اون هم مشکلاتی رو داره و بحثهایی مشابه با SD-WAN تعریف شدن که سعی میکنم توی پست های بعدی دربارهشون توضیحاتی رو بگم، به امید خدا.