کوچ از Spanning-Tree به Spine-Leaf؛ راهنمای عملی ارتقای دیتاسنتر
اگر در حوزه زیرساخت و شبکه دیتاسنتر دستی بر آتش داشته باشید، احتمالاً خوب میدانید که بدترین ساعت برای زنگ خوردن تلفن یک مهندس شبکه، ساعت ۳:۱۵ بامداد روز پنجشنبه است! یادم نمیرود؛ سالها پیش در یکی از بزرگترین دیتاسنترهایی که مدیریت زیرساخت آن با ما بود، ناگهان مانیتورینگ پر از آلارمهای قرمز شد. سامانههای بانکی و سرویسهای ابری مشتریان یکی پس از دیگری از دسترس خارج میشدند. پردازندههای سوئیچهای مرکزی روی ۱۰۰ درصد قفل کرده بودند و پورتها دیوانهوار چشمک میزدند.
وقتی خودم را به پشت کنسول رساندم، بوی فاجعه میآمد: یک طوفان بازپخش (Broadcast Storm) مهیب تمام پهنای باند شبکه لایه ۲ ما را بلعیده بود. ماجرا چه بود؟ یک تغییر کوچک در یکی از پورتهای لایه دسترسی (Access) باعث شده بود پروتکل Spanning-Tree گیج شود، وضعیت پورتها به هم بریزد، یک حلقه (Loop) موقت شکل بگیرد و میلیاردها فریم سرگردان کل مرکز داده را به زانو درآورند.
همان شب، در حالی که داشتم لیوان سوم قهوهام را در سکوت دیتاسنتر خنک سر میکشیدم، با خودم عهد بستم که این آخرین باری باشد که سرنوشت زیرساخت و اعتبار حرفهایام را به دست پروتکلهای عهد عتیق مثل STP میسپارم. این مقاله، داستان تجربی، فنی و کاملاً عملی من از سفری است که طی آن، کل معماری دیتاسنتر را از بیخ و بن کوبیدیم و بر پایه سه ستون مدرن بنا کردیم: معماری Spine-Leaf، کپسولهسازی با VXLAN و کنترلپلاین هوشمند BGP EVPN. اگر شما هم هنوز درگیر محدودیتهای لایه ۲، مسدود شدن کابلهای گرانقیمت یا ترس از جابهجایی ماشینهای مجازی هستید، بیایید با هم قدمبهقدم این تجربه را مرور کنیم.
چرا Spanning-Tree برای دیتاسنترهای مدرن ناکارآمد است؟
بیایید تعارف را کنار بگذاریم. پروتکل STP زمانی متولد شد که کل ترافیک یک سازمان یا دیتاسنتر به این خلاصه میشد که یک کاربر در طبقه سوم میخواست به یک فایلسرور در اتاق سرور دسترسی پیدا کند؛ یعنی ترافیک عمودی یا اصطلاحاً North-South (ورود از بیرون به درون و برعکس). توپولوژیهای سنتی هم بر همین مبنا طراحی شده بودند: سوئیچهای Access به Distribution (یا Aggregation) وصل میشدند و آنها هم به Core متصل بودند.
اما با آمدن مجازیسازی (VMware ESXi، KVM)، معماری میکروسرویسها، خوشههای دیتابیس توزیعشده و کانتینرهای داکر و کوبرنتیز، ماهیت ترافیک دیتاسنتر ۱۸۰ درجه چرخید. امروزه بیش از ۸۰ درصد ترافیک درون دیتاسنتر از نوع East-West (افقی) است؛ سرور پایگاهداده با سرور Backend صحبت میکند، کانتینرها بین هاستهای فیزیکی مختلف بستهها را پاس میدهند و ماشینهای مجازی مدام در حال صحبت با استوریجهای توزیعشده هستند.
در این شرایط، معماریهای سنتی مبتنی بر لایه ۲ سه تیر خلاص به پیکر شبکه شلیک میکردند:
۱. هدررفت سرمایه و خوابیدن ۵۰ درصد پهنای باند
فرض کنید دو سوئیچ گرانقیمت لایه Aggregation خریدهاید و به هر سوئیچ Access دو لینک ۱۰ گیگابیت متصل کردهاید تا پهنای باند ۲۰ گیگابیت با قابلیت افزونگی داشته باشید. کار پروتکل STP چیست؟ برای اینکه حلقه ایجاد نشود، با بیرحمی تمام یکی از این لینکها را در وضعیت Blocking یا Discarding قرار میدهد! یعنی شرکتی که دهها هزار دلار برای فیبر نوری، ماژولهای SFP+ و سوئیچ هزینه کرده، فقط میتواند از نیمی از ظرفیت استفاده کند. آن لینک دوم فقط مثل یک تایر زاپاس بیمصرف در گوشهای نشسته تا اگر اولی قطع شد، بعد از کلی محاسبات و تأخیر وارد مدار شود.
۲. پدیدهای به نام ترافیک ماری یا پینپنگی (Tromboning Effect)
دو سرور فیزیکی را تصور کنید که دقیقاً در یک رک (Rack) و در فاصله ۵ سانتیمتری از هم نصب شدهاند و به یک سوئیچ Top-of-Rack متصل هستند، اما در دو VLAN مختلف قرار دارند. در شبکه سنتی، اگر این دو سرور بخواهند یک پکت ساده برای هم بفرستند، بسته باید از سوئیچ Access خارج شود، کابلها را طی کند و تا لایه Core بالا برود، آنجا توسط روتر یا سوئیچ L3 مسیریابی شود و دوباره از همان مسیر برگردد پایین تا به سرور کناری برسد! این مسیر مضحک نهتنها تأخیر (Latency) پکت را چند برابر میکرد، بلکه لینکهای بالادستی را بیدلیل اشغال میکرد.
۳. سقف کوتاه ۴۰۹۴ شناسه VLAN
در یک دیتاسنتر چندمستأجره (Multi-Tenant) مدرن، ما به صدها مشتری مختلف با دهها شبکه ایزوله سرویس میدهیم. هدر استاندارد 802.1Q تنها ۱۲ بیت برای شناسایی VLAN دارد؛ یعنی در تئوری ۴۰۹۶ و در عمل حدود ۴۰۹۰ شبکه ایزوله! برای مقیاسهای امروزی، این عدد بیشتر شبیه یک شوخی است تا یک استاندارد صنعتی.
معماری Spine-Leaf چیست و چگونه مشکل شبکه را حل میکند؟
برای نجات از این وضعیت، اولین گام بازطراحی ساختار کابلکشی و توپولوژی شبکه بود. ما ساختار درختی سنتی را تخریب کردیم و به سراغ معماری دو لایهای Spine-Leaf (که ریشه در طراحیهای ریاضی چارلز کلوز در سال ۱۹۵۳ دارد) رفتیم.
فلسفه این معماری در عین سادگی، شاهکار است:

قوانین حاکم بر این دنیا بسیار سفت و سخت اما به شدت رهاییبخش هستند:
- هیچ سوئیچ Leaf به هیچ سوئیچ Leaf دیگری وصل نمیشود.
- هیچ سوئیچ Spine به هیچ سوئیچ Spine دیگری وصل نمیشود.
- هر Leaf موظف است به تمام سوئیچهای Spine متصل باشد.
- مهمترین اصل: تمام این پورتها و لینکها در لایه ۳ (IP Routing) کانفیگ میشوند، نه لایه ۲!
وقتی اینترفیسها Routed Port باشند، اصلاً فریم لایه دویی وجود ندارد که حلقهای بسازد؛ بنابراین پروتکل STP به کلی خاموش و از شبکه جاروب میشود.
حالا جادوی ماجرا کجاست؟ در ECMP (Equal-Cost Multi-Path). وقتی سرور متصل به Leaf 1 میخواهد با سروری در Leaf 4 صحبت کند، سیستمعامل سوئیچ میبیند که از طریق هر دو Spine (یا ۴ تا Spine، بسته به اندازه دیتاسنتر) مسیرهایی با هزینه کاملاً برابر دارد. در نتیجه با استفاده از تکنیکهای Hash روی ۵-Tuple پکت، ترافیک را به شکل کاملاً متوازن روی تمام لینکها میفرستد. نتیجه؟ ۱۰۰ درصد پهنای باند در حال عبور ترافیک است و زمان تأخیر بین هر دو سرور در کل دیتاسنتر کاملاً ثابت و قابل پیشبینی (تنها ۳ پرش) میشود.

معماری Spine-Leaf چیست
تفاوت شبکه Underlay و Overlay در دیتاسنتر چیست؟
یکی از کلیدیترین درسهایی که در این گذار یاد گرفتم، تغییر مدل ذهنی نسبت به ترافیک بود. در دیتاسنتر مدرن، ما دو مفهوم کاملاً تفکیکشده داریم:
شبکه زیرساخت (Underlay Network)
شما این لایه را مثل جادههای بتنی و آسفالت یک بزرگراه در نظر بگیرید. هدف این جادهها فقط یک چیز است: رساندن کامیونها از مبدأ به مقصد در سریعترین زمان ممکن. شبکه Underlay کاری به این ندارد که درون کامیونها چه باری حمل میشود؛ وظیفهاش این است که آدرس IP لوپبک تمام سوئیچهای Leaf و Spine بتوانند در پایدارترین حالت و با بالاترین سرعت همدیگر را Ping کنند. ما برای Underlay از پروتکل eBGP (یا در سناریوهای دیگر از IS-IS) استفاده میکنیم تا بدون وابستگی به مکانیزمهای پیچیده، دسترسیپذیری کامل IP را ایجاد کنیم.
شبکه مجازیسازی ترافیک (Overlay Network)
حالا این کامیونها میتوانند درون خود هر نوع باری را جابهجا کنند. لایه Overlay شبکهای مجازی و نرمافزاری است که بدون دست زدن به کابلکشی یا سوئیچهای میانی، روی بستر لایه ۳ سوار میشود. اینجا جایی است که بستههای ترافیکی مشتریان، تفکیک زونها، ماشینهای مجازی و استوریجها شکل میگیرند. فناوری استاندارد صنعت برای ساخت این لایه، چیزی نیست جز VXLAN.
تکنولوژی VXLAN چیست و چگونه کار میکند؟
وقتی میگوییم لایه ۲ از بین رفت، یک چالش بزرگ پیش میآید: اپلیکیشنهای قدیمی، کلاسترهای پایگاه داده (مثل Oracle RAC یا Microsoft Failover Cluster) و زیرساختهای مجازیسازی اصرار دارند که لایه ۲ بین آنها حفظ شود! آنها هنوز میخواهند ARP بفرستند و در یک Broadcast Domain مشترک تنفس کنند. چطور روی یک شبکه کاملاً لایه ۳ چنین امکانی را فراهم کنیم؟
پاسخ در VXLAN (Virtual Extensible LAN) نهفته است. تکنولوژی VXLAN مثل اداره پست عمل میکند؛ فریم لایه ۲ تولید شده توسط سرور را با تمام مخلفاتش (آدرسهای MAC مبدأ و مقصد، تگهای داخلی و پیلود) برمیدارد، آن را درون یک پاکت نامه شیک با هدر UDP و هدر IP لایه ۳ بستهبندی میکند، و آن را روی پورت UDP 4789 ارسال میکند.
اجزای اصلی این فرآیند عبارتند از:
- VTEP (VXLAN Tunnel Endpoint): موجودیتی در سوئیچ Leaf که وظیفه بستهبندی (Encapsulation) و باز کردن بسته (Decapsulation) را انجام میدهد. سرورها اصلاً روحشان هم از وجود VXLAN خبردار نمیشود؛ آنها کابل شبکه را به پورت Leaf وصل کردهاند و فکر میکنند داخل یک سوئیچینگ ساده نشستهاند.
- VNI (VXLAN Network Identifier): شناسهای ۲۴ بیتی که جایگزین VLAN ID سنتی شده است. به جای ۴۰۹۴ عدد، حالا ۱۶,۷۷۷,۲۱۶ شبکه ایزوله در اختیار داریم! ما میتوانیم صدها شرکت رقیب را بدون ذرهای تداخل آدرس روی یک زیرساخت فیزیکی میزبانی کنیم.
مزایا و کاربرد پروتکل BGP EVPN در دیتاسنتر
اوایل که VXLAN معرفی شده بود، یک نقطهضعف وحشتناک داشت. برای اینکه سوئیچ Leaf مبدأ بفهمد آدرس MAC سرور مقصد پشت کدام Leaf دیگر در آنطرف دیتاسنتر نشسته است، دست به دامن راهکار ناشیانهای به نام Flood and Learn مبتنی بر IP Multicast میشد. یعنی پکت اولیه را در تمام تونلها پخش میکرد تا هاست مقصد جواب دهد. این دقیقاً بازتولید همان رفتار فاجعهبار لایه ۲ در لباسی جدید بود!
اینجا بود که قهرمان واقعی یعنی BGP EVPN (Ethernet VPN) پا به میدان گذاشت. با استاندارد RFC 7432، مهندسان تصمیم گرفتند قابلیتهای پروتکل معرکه و پایدار MP-BGP را توسعه دهند تا علاوه بر روتهای IP اینترنت، اطلاعات آدرسهای MAC و IP هاستهای داخلی دیتاسنتر را هم مثل آب خوردن دستبهدست کند.
دیگر نیازی به هیچگونه سیلاب ترافیکی (Flood) نیست! روند کار به این زیبایی پیش میرود:
- سروری با آدرس IP: 168.10.50 و MAC: 52:54:00:aa:bb:cc به پورت سوئیچ Leaf 1 وصل میشود.
- سوئیچ Leaf 1 از طریق پکت اولیه ARP، مشخصات این سرور را یاد میگیرد.
- در کسری از ثانیه، Leaf 1 یک پیام بهروزرسانی BGP با ساختار Route Type 2 (MAC/IP Advertisement) میسازد و میگوید: «آهای اهل دیتاسنتر! هاستی با این مک و این آیپی پشت لوپبک من (VTEP 1) متولد شده است!»
- تمامی سوئیچهای Leaf دیگر در شبکه، جدولهای فورواردینگ خود را در لایه کنترل (Control Plane) بهروزرسانی میکنند.
- حالا هر زمان سروری در Leaf 4 بخواهد با این هاست صحبت کند، سوئیچ Leaf 4 مستقیماً بسته را یونیکست کرده و به سمت VTEP 1 میفرستد؛ بدون حتی یک قطره برودکست در شبکه!
انواع پیامهای حیاتی در خانواده BGP EVPN:
برای اینکه عمق فنی ماجرا ملموس باشد، نگاهی به این پنج نوع مسیر (Route Type) بیندازید که قلب تپنده EVPN هستند:
- Route Type 1 (Auto-Discovery): برای اعلام حضور سوئیچها و فعالسازی قابلیتهای Multi-Homing (اتصال یک سرور با دو لینک به دو Leaf بدون نیاز به پروتکلهای اختصاصی مثل vPC سیسکو).
- Route Type 2 (MAC/IP Advertisement): پرکاربردترین مسیر که آدرسهای فیزیکی و منطقی هاستها را با شماره VNI مربوطه جار میزند.
- Route Type 3 (Inclusive Multicast Ethernet Tag): برای مدیریت متمدنانه ترافیکهای BUM (Broadcast, Unknown Unicast, Multicast) بدون نیاز به پیکربندی PIM در لایه Underlay.
- Route Type 4 (Ethernet Segment): برای جلوگیری از ایجاد لوپ زمانی که سرورها بهصورت Active-Active به چند سوئیچ متصل شدهاند.
- Route Type 5 (IP Prefix Route): برای مسیریابی زیرشبکهها و تزریق روتهای سنتی لایه ۳ (مثلاً ارتباط با شبکه WAN یا اینترنت).
قابلیت Distributed Anycast Gateway چیست و چه مزایایی دارد؟
یکی از بزرگترین چالشهای همکاران سیستم و کلود با ما بچههای شبکه همیشه این بود: «میخواهیم بدون قطعی، ماشین مجازی دیتابیس را با قابلیت vMotion از این سمت دیتاسنتر ببریم آن سمت دیتاسنتر!»
در مدل سنتی، Default Gateway ماشین روی یک سوئیچ مرکزی قرار داشت. وقتی ماشین جابهجا میشد، بستهها باید کیلومترها کابل را دور میزدند تا به گیتوی برسند یا اینکه به دلیل تداخل کش ARP در سوئیچها، ارتباط کلاینتها قطع میشد.
اما ما با پیادهسازی Distributed Anycast Gateway این رویا را به واقعیت تبدیل کردیم:
[ Leaf 1 ]
VTEP IP: 10.255.1.1
Anycast IP: 192.168.10.1
Anycast MAC: 0000.5e00.0101
|
[ VM Database (192.168.10.50) ]
[ Leaf 2 ]
VTEP IP: 10.255.1.2
Anycast IP: 192.168.10.1
Anycast MAC: 0000.5e00.0101
|
(مقصد انتقال با vMotion)
فرمول کار ساده است اما مغز آدم سوت میکشد: روی تمام سوئیچهای Leaf، برای هر سابنت، دقیقاً یک آدرس IP و یک Virtual MAC یکسان ست میکنیم.
سوئیچ Leaf 1 فکر میکند خودش گیتوی است، سوئیچ Leaf 2 هم فکر میکند خودش گیتوی است! وقتی ماشین مجازی از هاست فیزیکی متصل به Leaf 1 به هاست فیزیکی متصل به Leaf 2 کوچ میکند:
- ماشین مجازی هنوز فکر میکند به گیتوی 192.168.10.1 با همان مکآدرس وصل است.
- به محض ارسال اولین فریم، Leaf 2 پیام Type-2 جدید در BGP تولید میکند و به تمام دیتاسنتر اعلام میکند که این IP جابهجا شد.
- بستههای کلاینتها بلافاصله به سمت Leaf 2 هدایت میشوند و حتی یک Session دیتابیس یا سوکت TCP قطع نمیشود!

قابلیت Distributed Anycast Gateway چیست و چه مزایایی دارد؟
نمونه کانفیگ کاربردی Cisco NX-OS برای سوئیچ Leaf
برای اینکه از فضای صرفاً تئوری فاصله بگیریم، این بخش از پیکربندی واقعی یکی از سوئیچهای Leaf ما در محیط پروداکشن است:
! ۱. فعالسازی قابلیتهای مدرن در سوییچ
feature bgp
feature nv overlay
feature vn-segment-vlan-based
nv overlay evpn
! ۲. تعریف نگاشت VLAN محلی به شناسه جهانی VNI
vlan 100
name WEB-TIER
vn-segment 10100
! ۳. در قالب Layer 3 تعریف ایزولاسیون VRF مشتری
vrf context TENANT-A
vni 50000
rd auto
address-family ipv4 unicast
route-target both auto evpn
! ۴. پیادهسازی Anycast Gateway محلی برای ماشینها
interface Vlan100
no shutdown
vrf member TENANT-A
ip address 192.168.10.1/24
fabric forwarding mode anycast-gateway
! ۵. تنظیم اینترفیس تونل فیزیکی VTEP
interface nvo1
no shutdown
source-interface loopback1
host-reachability protocol bgp
member vni 10100
ingress-replication protocol bgp
member vni 50000 associate-vrf
! ۶. تنظیمات کنترلپلاین MP-BGP برای تبادل اطلاعات EVPN
router bgp 65001
router-id 10.255.1.1
neighbor 10.255.0.254 remote-as 65000
description TO-SPINE-ROUTE-REFLECTOR
update-source loopback0
address-family l2vpn evpn
send-community extended
مهمترین چالشهای پیادهسازی معماری Spine-Leaf
شاید با خواندن این بخشها با خودتان بگویید: «عجب مدینه فاضلهای!» اما واقعیت این است که پیادهسازی این معماری، عرق مهندسی شما را درمیآورد. سه چالش بزرگی که ما با گوشت و پوست لمس کردیم اینها بودند:
فاجعه MTU و شکستهشدن بستهها (Packet Fragmentation)
وقتی ترافیک با هدرهای اضافه VXLAN کپسوله میشود، دستکم ۵۰ تا ۵۴ بایت به اندازه بسته اضافه میشود. اگر یک سرور بستهای استاندارد با طول ۱۵۰۰ بایت بفرستد، وقتی این بسته به پورت VTEP میرسد و هدر VXLAN روی آن میخورد، اندازه بسته به ۱۵۵۰ یا ۱۵۵۴ بایت میرسد. اگر MTU پورتهای فیزیکی سوئیچهای Leaf و Spine شما روی مقدار پیشفرض ۱۵۰۰ مانده باشد، پکتها یا دور ریخته میشوند (Drop) یا شکسته میشوند که کارایی شبکه را نابود میکند.
- درس تجربی: قبل از بالا آوردن اولین خط BGP، مقدار MTU را روی تمامی پورتهای لایه فیزیکی Underlay در سرتاسر شبکه روی Jumbo Frame (حداقل ۹۲۱۶ بایت) قفل کنید.
پیچیدگی ابزارهای مانیتورینگ
دیگر با یک Wireshark ساده و پورت Mirroring معمولی نمیتوانید همه چیز را تحلیل کنید. اگر بستهای را در لایه Spine مانیتور کنید، فقط یک بسته UDP رمزنگارینشده اما کپسولهشده میبینید که مشخص نیست متعلق به کدام مشتری است. شما باید ابزارهای مانیتورینگ ترافیک (مانند Telemetry و سنسورهای Streaming) را مستقیماً روی لایه نرمافزاری Leafها مستقر کنید.
لزوم یادگیری اتوماسیون (Python / Ansible)
پیکربندی دستی دهها سوئیچ Spine و Leaf با این حجم از پارامترها (VNI، RD، RT، VRF) با ابزار CLI نه منطقی است و نه قابل اعتماد. یک اشتباه تایپی در تعریف Route-Target در BGP میتواند ارتباط کل یک کلاستر را قطع کند. اینجا بود که مهارتهای اسکریپتنویسی پایتون و ابزارهایی مثل Netmiko، Nornir یا Ansible به نجات ما آمدند تا کل این تنظیمات را به شکل زیرساخت به عنوان کد (Infrastructure as Code) درآوریم.
جمعبندی: آیا این مسیر ارزشش را داشت؟
اگر امروز از من بپرسید که آیا باز هم حاضر به تحمل بیخوابیها و استرسهای آن مهاجرت بزرگ دیتاسنتر هستم، با قاطعیت میگویم: بله، هزاران بار بله!
گذار از Spanning-Tree به معماری Spine-Leaf همراه با BGP EVPN و VXLAN، فقط یک تغییر مد یا بهروزرسانی ابزار نبود؛ یک تغییر پارادایم بنیادی در مهندسی زیرساخت بود. دستاوردهای عینی این گذار برای ما:
- صفر شدن قطعیهای ناشی از طوفانهای برودکست و خطاهای انسانی لایه ۲.
- بهرهبرداری کامل و ۱۰۰ درصدی از تمام ظرفیت کابلها و ماژولهای خریداریشده با ECMP.
- مهاجرت بدون وقفه و شفاف ماشینهای مجازی در کسری از ثانیه با Anycast Gateway.
- پایداری خارقالعاده و مقیاسپذیری بیپایان شبکه برای میزبانی از هزاران سرویس ابری جدید.
اگر در سازمان یا دیتاسنتر خود هنوز درگیر کندی شبکه، محدودیت VLANها و اضطراب ناشی از رفتارهای پیشبینیناپذیر STP هستید، وقت آن رسیده که شجاعت به خرج دهید، معماری قدیمی را به تاریخ بسپارید و زیرساختتان را به استانداردهای روز دنیا ارتقا دهید. شبکه شما شایسته تنفس در هوای آزاد لایه ۳ است!
