در بخش اول مقاله مربوط به تکنولوژی Cisco ACI در دیتاسنترهای نسل جدید، به معرفی و بررسی جامع این فناوری پرداختیم و توضیح دادیم که چرا استفاده از Cisco ACI میتواند تحولی اساسی در عملکرد و بهرهوری دیتاسنتر ایجاد کند. در این بخش به بررسی جریانهای ترافیکی در زیرساخت Cisco ACI میپردازیم. پیش از ورود به این مبحث، لازم است برخی مفاهیم پایه در ارسال داده را مرور کنیم.
VXLAN (Virtual Extensible LAN) یک پروتکل لایه ۲ است که امکان پیادهسازی بر روی زیرساخت لایه ۳ را فراهم میکند. این پروتکل با استفاده از یک شناسه یا تگ ۲۴ بیتی (VNID) قابلیت ایجاد بیش از 16 میلیون سگمنت شبکه را دارد؛ ظرفیتی که در مقایسه با VLAN بسیار بیشتر است. هر سگمنت ایجاد شده توسط VXLAN همانند VLAN یک دامنه Broadcast ایزوله فراهم میکند.
مزیت اصلی VXLAN آن است که با پیادهسازی روی بستر لایه ۳، نیازی به استفاده از پروتکل Spanning Tree برای جلوگیری از Loop وجود ندارد؛ موضوعی که موجب افزایش کارایی و مقیاسپذیری شبکه میشود.
در شکل زیر، ساختار هدر بسته VXLAN نمایش داده شده است:
همانطور که مشاهده میشود، فریم اصلی دوباره توسط پروتکل VXLAN کپسوله میشود. VXLAN Header دارای ۸ بایت است و شامل فیلدهای مختلفی میباشد. مهمترین این فیلدها عبارتاند از:
VNID (Virtual Network Identifier): طول آن ۲۴ بیت است و شناسه سگمنت یا همان تگ VXLAN در این بخش درج میشود.
Flagها: مورد استفاده برای مدیریت Policyها و کنترل دقیق ترافیک در Cisco ACI.
Source Group: برای مشخص کردن EPG (Endpoint Group) در بستر Cisco ACI.
در مجموع میتوان گفت که VNID امکان تعیین VRF و Bridge Domain را فراهم میکند و سپس از طریق Source Group، EPG مورد نظر شناسایی خواهد شد.
در معماری Cisco ACI تمامی سوئیچها به عنوان VTEP (VXLAN Tunnel Endpoint) شناخته میشوند. وظیفه هر VTEP انتقال داده از سمت کاربر نهایی (End User) به مقصد مورد نظر است.
هر VTEP دارای دو نوع اینترفیس ارتباطی است:
اینترفیس سوئیچینگ داخلی: برای برقراری ارتباطات داخلی در شبکه.
اینترفیس متصل به Fabric لایه ۳: که به آن Transport IP Network گفته میشود و وظیفه جابجایی ترافیک VXLAN در بستر Fabric را بر عهده دارد.
مطابق شکل زیر، فرآیند کپسولهسازی بستهها توسط VTEP انجام میشود. هر VTEP دارای جدولی مشابه جدول MAC Address است که محل Endpointها را نمایش میدهد. تصمیمگیری برای ارسال بستهها با توجه به اطلاعات ذخیرهشده در این جدول صورت میگیرد.
به طور کلی سه نوع جدول برای مدیریت ارسال داده وجود دارد:
دو جدول روی سوئیچهای Leaf:
جدول مربوط به هاستهای محلی (Local Hosts) که به صورت خودکار توسط سوئیچ ایجاد میشود.
جدول مربوط به هاستهای خارجی (Remote Hosts) که در صورت نیاز برای برقراری ارتباط با سوئیچهای دیگر و بهصورت موردی ایجاد خواهد شد.
یک جدول روی سوئیچهای Spine:
این جدول با نام Proxy Table شناخته میشود. هر سوئیچ Leaf پس از شناسایی Endpointهای خود، گزارشی به Spine ارسال میکند. در نتیجه در جدول Proxy موجود روی سوئیچهای Spine، اطلاعات تمام Endpointهای موجود در Fabric ذخیره میشود.
در سوئیچهای Leaf یا همان VTEP، کاربران نهایی (Endpoints) در دو دسته قرار میگیرند:
Local Endpoint: مربوط به هاستهای متصل به همان Leaf.
Remote Endpoint: مربوط به هاستهایی که روی سایر Leafها قرار دارند.
بر اساس این دستهبندی، جریان ارسال ترافیک در Cisco ACI مشخص و مدیریت خواهد شد.
در معماری Cisco ACI سه سناریوی اصلی برای ارسال داده وجود دارد که هر یک جریان ترافیکی خاص خود را دنبال میکنند:
زمانی که سوئیچ مبدأ از محل مقصد مطلع است و مقصد روی همان سوئیچ قرار دارد.
زمانی که سوئیچ مبدأ از محل مقصد مطلع است اما مقصد روی یک سوئیچ دیگر قرار دارد.
زمانی که سوئیچ مبدأ از محل مقصد مطلع نیست و مقصد روی یک سوئیچ دیگر قرار دارد.
در این حالت، بسته داده پس از دریافت توسط سوئیچ Leaf، جدول Local Station Table بررسی میشود. پورت خروجی متصل به Endpoint مقصد شناسایی شده و داده بدون نیاز به کپسولهسازی اضافی به مقصد ارسال خواهد شد.
بسته ارتباطی ابتدا توسط سوئیچ Leaf1 دریافت میشود.
جدول Global Station Table بررسی شده و محل Endpoint مقصد مشخص میگردد.
بسته اصلی در یک بسته جدید VXLAN کپسوله شده و به سمت سوئیچ Leaf مقصد ارسال میشود.
سوئیچ Leaf2 بسته را دریافت کرده، آن را از حالت کپسوله خارج میکند و آدرس مقصد بررسی میشود.
با مراجعه به جدول Local Station Table، Endpoint مقصد شناسایی شده و بسته تحویل آن میشود.
در صورتی که آدرس مقصد در جدول Global Station موجود نباشد، سوئیچ مبدأ اطلاعی از محل Endpoint مقصد ندارد. در این شرایط، بسته به یکی از دو روش زیر هدایت میشود:
سوئیچ Leaf پس از تشخیص عدم وجود آدرس مقصد، بسته را کپسوله کرده و به سمت سوئیچ Spine ارسال میکند.
سوئیچ Spine با استفاده از جدول Proxy Table که شامل اطلاعات تمامی Endpointها است، مقصد را مشخص میکند.
بسته VXLAN به سمت VTEP مقصد ارسال میشود.
سوئیچ Leaf مقصد پس از خارجسازی بسته از حالت کپسوله، آن را به Endpoint تحویل خواهد داد.
در صورت پیکربندی Flood، بسته توسط سوئیچ Leaf کپسوله شده و به گروه Multicast ارسال میشود.
در زیرساخت Cisco ACI عملیات Flood مشابه شبکههای سنتی نیست؛ بلکه از یک درخت Multicast استفاده میشود.
بسته ابتدا به سوئیچ Spine بهعنوان سرشاخه درخت میرسد و سپس به اعضای گروه Multicast توزیع میگردد.
هر سوئیچ Leaf عضو گروه بسته را دریافت کرده و در صورتی که مقصد در جدول Local Station آن وجود داشته باشد، بسته از حالت کپسوله خارج شده و به Endpoint تحویل داده میشود.