شبكة مركز البيانات: Spine-Leaf وVXLAN وEVPN
درس 1 من 5
1شبكة مركز البيانات: Spine-Leaf وVXLAN وEVPN
الصورة الكبيرةفي الشركة العادية تذهب أغلب الحركة من المكاتب إلى الإنترنت (شمال جنوب). في مركز البيانات العكس: الخوادم تتكلم مع بعضها طوال الوقت، فخادم الويب يسأل قاعدة البيانات، وهذه تنسخ إلى أخرى، والتخزين يتزامن (شرق غرب). التصميم القديم بطبقات وSTP يغلق نصف الوصلات ويجعل المسافة بين خادمين متفاوتة. الخبير يبني نسيجًا (fabric) كل الوصلات فيه تعمل.
ماذا تشاهد في الرسم: أي خادم إلى أي خادم: Leaf ثم Spine ثم Leaf. ومع ECMP تتوزع التدفقات على كل الـ Spines معًا، فلا وصلة مغلقة ولا طريق أطول من غيره.
خارطة هذا الجزء
المفاهيم بالترتيب، اضغط أيًّا منها للقفز إليه:
طريقان إلى نفس الفكرة
تخيّل مستشفى فيه طوابق للأقسام (Leaf) ومصاعد مركزية (Spine). كل طابق متصل بكل المصاعد، فأي مريض يصل من أي قسم إلى أي قسم بمصعد واحد، وإن تعطل مصعد استُخدمت البقية. VXLAN يجعل قسمين في طابقين مختلفين يبدوان كأنهما في غرفة واحدة، بأن يضع رسالة الغرفة في ظرف يعبر المصاعد. وEVPN دفتر الاستقبال الذي يعرف أين يجلس كل شخص، فلا يصرخ أحد في كل الطوابق ليبحث عنه.
تصميم Clos بطبقتين: كل Leaf متصل بكل Spine ولا اتصال بين Leaf وLeaf ولا بين Spine وSpine. الطبقة السفلية (underlay) موجهة بالكامل، غالبًا eBGP برقم AS لكل Leaf (RFC 7938) أو OSPF/IS-IS، مع ECMP على كل الـ Spines وBFD. الطبقة العليا (overlay): VXLAN (RFC 7348) يغلّف إطار Ethernet في UDP على المنفذ 4789، بمعرّف VNI من 24 بت (أكثر من 16 مليون شبكة مقابل 4094 VLAN)، وتضيف 50 بايت، فاجعل MTU الطبقة السفلية 9216. نقطة التغليف VTEP على كل Leaf. EVPN (RFC 7432 وRFC 8365) يوزع عناوين MAC وIP بـ BGP بدل التعلم بالإغراق: النوع 2 لـ MAC/IP، والنوع 3 لقوائم الإغراق، والنوع 5 للبادئات. Anycast gateway: نفس IP وMAC للبوابة على كل Leaf. نسبة الاشتراك الزائد = سعة المنافذ نحو الخوادم ÷ سعة المنافذ نحو الـ Spines.
قبل أن تبدأ
🔁STP وEtherChannel
تعرف لماذا تغلق STP الوصلات.
🌐BGP
تعرف eBGP وAS_PATH.
الفكرة الجوهرية
1من ثلاث طبقات إلى Spine-Leaf
التصميم القديم (وصول وتوزيع وقلب) صُمم لحركة شمال جنوب، ويعتمد على STP فيغلق نصف الوصلات، والمسافة بين خادمين تتغير حسب مكانهما. Spine-Leaf يحل ذلك: كل Leaf مرتبط بكل Spine، فالطريق بين أي خادمين ثلاث قفزات دائمًا (leaf-spine-leaf)، وكل الوصلات تعمل معًا بـ ECMP لأن الشبكة كلها موجهة في الطبقة الثالثة بلا STP بين المبدّلات.
2الحجم ونسبة الاشتراك الزائد
عدد الـ Spines يساوي عدد منافذ الصعود في كل Leaf، وأقصى عدد Leafs يساوي عدد منافذ كل Spine. ونسبة الاشتراك الزائد تقول كم يتشارك الخوادم السعة نحو الأعلى: 1:1 لا اشتراك (للتخزين والذكاء الاصطناعي)، و3:1 شائعة للتطبيقات العامة.
في الحالة الأولى 1200G نحو الخوادم و600G للأعلى: 2:1. عناقيد تدريب النماذج تُبنى بلا اشتراك زائد لأن كل بطاقة تتكلم مع كل بطاقة.
def fabric(leaf_down, down_speed, leaf_up, up_speed, spine_ports, servers_per_leaf):
down = leaf_down * down_speed
up = leaf_up * up_speed
leaves = spine_ports # each spine gives one port to every leaf
print(f"spines: {leaf_up} | max leaves: {leaves} | max servers: {leaves * servers_per_leaf:,}")
print(f"per leaf: {down} G down, {up} G up -> oversubscription {down / up:.1f}:1")
print("general apps:")
fabric(leaf_down=48, down_speed=25, leaf_up=6, up_speed=100, spine_ports=64, servers_per_leaf=48)
print("AI training cluster (no sharing):")
fabric(leaf_down=32, down_speed=400, leaf_up=32, up_speed=400, spine_ports=64, servers_per_leaf=4)3VXLAN: شبكة طبقة ثانية فوق شبكة موجهة
الخوادم الافتراضية تنتقل بين الأجهزة وتريد أن تبقى في الشبكة نفسها بعنوانها نفسه. لكن النسيج موجه في الطبقة الثالثة. VXLAN يحل التناقض: الـ Leaf (الـ VTEP) يأخذ إطار Ethernet كاملًا، ويضعه داخل UDP/IP موجّه إلى الـ Leaf الآخر، فيعبر الـ Spines كحزمة عادية، ثم يُفك هناك. كل شبكة افتراضية لها VNI.
رحلة إطار عبر VXLAN
VM-A على LEAF1 ترسل إلى VM-B على LEAF3، وكلتاهما في VNI 10010. اضغط مرحلة أو امشِ بالترتيب.
الفكرة: الإطار الأصلي لا يتغير أبدًا. الشبكة الموجهة تنقل «ظرفًا» حوله، وتُفتح الظروف عند الطرفين فقط.
1 · الإطار
VM-A ترسل إطار Ethernet عاديًا إلى MAC الخاص بـ VM-B، كأنهما على مبدّل واحد. لا تعرف شيئًا عن VXLAN.
2 · البحث
LEAF1 يبحث عن MAC الوجهة في جدول EVPN: «VM-B خلف VTEP 10.0.0.13 في VNI 10010». تعلّم ذلك من مسار EVPN من النوع 2، لا من الإغراق.
3 · التغليف
يضيف رأس VXLAN (8 بايت، فيه VNI) وUDP إلى المنفذ 4789 (8) وIP من 10.0.0.11 إلى 10.0.0.13 (20) وEthernet خارجي (14). المجموع 50 بايت، فإطار 1500 يصبح 1550.
4 · العبور
الحزمة الخارجية تُوجّه كأي حزمة IP. ECMP يختار Spine حسب hash لمنافذ UDP، فتتوزع التدفقات المختلفة على كل الـ Spines.
5 · الفك
LEAF3 يرى UDP 4789 موجهًا إليه، فينزع الرؤوس الخارجية، ويقرأ VNI 10010، ويسلّم الإطار الأصلي كما هو إلى VM-B.
لو نسيت رفع MTU في الطبقة السفلية، تعمل الحزم الصغيرة (ping) وتفشل الكبيرة: عطل مخادع.
OUTER = {"outer Ethernet": 14, "outer IP": 20, "UDP (dst 4789)": 8, "VXLAN (VNI)": 8}
overhead = sum(OUTER.values())
for part, size in OUTER.items():
print(f"{part:<16} {size:>3} bytes")
print("overhead :", overhead, "bytes")
print("underlay MTU needed for 1500-byte guests:", 1500 + overhead)
print("VNIs available :", f"{2 ** 24:,}", "vs VLANs:", 4094)4EVPN والبوابة الموحدة
VXLAN وحده يتعلم بالإغراق: يرسل الإطار المجهول لكل الـ VTEPs. هذا لا يكبر. EVPN يجعل BGP يحمل المعلومة: حين تظهر VM خلف Leaf، يعلن ذلك Leaf بمسار من النوع 2 (MAC وIP)، فيعرف الجميع مكانها قبل أن يحتاجوه، ويرد كل Leaf على ARP محليًا. والبوابة الموحدة: كل Leaf يحمل البوابة نفسها (IP وMAC)، فالـ VM تجد بوابتها في أول قفزة أينما انتقلت.
| نوع مسار EVPN | يحمل | فائدته |
|---|---|---|
| النوع 2 | MAC وIP لجهاز | مكان كل VM، وإيقاف إغراق ARP |
| النوع 3 | VTEP يريد حركة الإغراق لـ VNI | قائمة من يستقبل البث المتبقي |
| النوع 5 | بادئة IP | التوجيه بين الشبكات وإلى الخارج |
مثال محلول
المسألة: شركة تبني مركز بيانات لـ 1500 خادم بمنافذ 25G، والحركة تطبيقات عامة. عندك Leafs بـ 48×25G و8×100G، وSpines بـ 32×100G. صمّم النسيج.
الحل: كل Leaf يخدم 48 خادمًا، فتحتاج 1500 ÷ 48 ≈ 32 Leaf، وهذا يساوي منافذ الـ Spine (32) تمامًا، فلا مجال للنمو؛ خذ 4 Spines الآن بأربعة منافذ صعود لكل Leaf (400G للأعلى مقابل 1200G للأسفل = 3:1)، واترك 4 منافذ صعود فارغة لتضيف 4 Spines لاحقًا (تصبح 1.5:1). الطبقة السفلية eBGP برقم AS لكل Leaf وBFD وMTU 9216. الطبقة العليا VXLAN مع EVPN، وبوابة موحدة على كل Leaf، وزوج Border Leaf للاتصال بالخارج. للنمو أبعد من 32 Leaf تحتاج Spines أكبر أو طبقة Super-Spine.
خرافة مقابل حقيقة
| الخرافة | الحقيقة |
|---|---|
| Spine-Leaf يعني أجهزة أغلى. | يستخدم مبدّلات متماثلة متوسطة بدل قلب ضخم واحد، وغالبًا أرخص للسعة نفسها وأسهل للتوسع. |
| VXLAN يلغي الحاجة إلى التوجيه. | VXLAN يعيش فوق شبكة موجهة جيدة، وجودة الطبقة السفلية تحدد جودة كل شيء. |
| BGP للإنترنت فقط. | أكبر مراكز البيانات تستخدم eBGP داخل النسيج نفسه لبساطته وتحكمه. |
أين تقابله في العمل
☁️مزوّدو السحابة
كل منطقة سحابية آلاف الـ Leafs في نسج Clos متعددة الطبقات.
🧠عناقيد الذكاء الاصطناعي
نسج بلا اشتراك زائد بسرعات 400G و800G لتدريب النماذج.
🏦مركز بيانات بنك
VXLAN EVPN يفصل بيئات الإنتاج والاختبار في VNIs مستقلة على النسيج نفسه.
اختبر فهمك
كم قفزة بين أي خادمين في Spine-Leaf بطبقتين؟
التماثل هو الميزة: المسافة نفسها دائمًا.
على أي منفذ يعمل VXLAN؟
RFC 7348 يحدد UDP 4789.
لماذا يرفع MTU الطبقة السفلية في نسيج VXLAN؟
إطار 1500 يصبح 1550 بعد التغليف.
Leaf فيه 48×25G للخوادم و4×100G للأعلى. ما نسبة الاشتراك الزائد؟
1200G ÷ 400G = 3.
ماذا يضيف EVPN إلى VXLAN؟
مسارات النوع 2 تخبر كل Leaf أين كل جهاز مسبقًا.
بطاقات مراجعة سريعة
تحقق من فهمك
لماذا لا يُوصل Leaf بـ Leaf مباشرة؟
لأن ذلك يكسر التماثل ويصنع طرقًا مختلفة الطول؛ كل الحركة تمر عبر الـ Spines.
ping يعمل بين VMين في VNI واحدة لكن نقل الملفات يتعلق. ما السبب الأرجح؟
MTU الطبقة السفلية 1500 فتُرمى الحزم الكبيرة بعد التغليف.
كيف تكبر النسيج حين تنفد منافذ الخوادم؟
تضيف Leaf جديدًا وتصله بكل الـ Spines، ما دام في الـ Spines منافذ فارغة.
مصادر هذا الدرس
مرتّبة بالنوع. ابدأ بالتوثيق الرسمي إذا تبي المرجع الدقيق، وبالمقال أو الفيديو إذا تبي الشرح أولًا.
أدوات1
خلّصت الدرس؟
سجّل الدخول ليُحفظ تقدّمك.