المقدمة
إختبار اتصال MPLS LSP هو أداة أساسية تستخدم للتحقق من صحة مسار تحويل التسمية (LSP) بين المدخل والمخرج. يهدف هذا المستند إلى شرح تفاعل المعلومات متعددة المسارات بين البادئ والمستجيب في تتبع شجرة LSP. للخيارات التفصيلية المتاحة لهذه الأداة، من المفيد إحالة هذا المستند.
معلومات أساسية
يعتمد هذا التنفيذ لميزة تتبع الشجرة متعدد المسارات ل MPLS EM—MPLS LSP على RFC 4379، اكتشاف حالات فشل مستوى البيانات المحولة التسمية متعددة البروتوكولات (MPLS).
من خلال تعيين عنوان وجهة IP لحزمة المسبار كعنوان إسترجاع (127.x.x.x)، يمكن إستخدام تتبع شجرة LSP لاكتشاف الفشل في LSP عن طريق تجنب الحزمة الحصول على IP الموجه. لذلك في أي وقت توجد مشكلة في الاتصال الشامل، فمن المفيد إستخدام إختبار اتصال LSP كخطوة أولى للقضاء على أي فشل في بروتوكول LSP.
في حالة السيناريوهات متعددة المسارات، قد لا يساعد إختبار اتصال LSP دائما على تحديد جميع حالات فشل LSP. كما قد تتم ملاحظته، فإن أي موجه محول تسمية (LSR) عند إستلام حزمة مسماة يمكن إرسالها من واجهات مخرج متعددة، يستخدم مفاتيح معينة من الحزمة والإدخال إلى خوارزمية التجزئة لتحديد واجهة المخرج. بناء على المورد والأجهزة وما إلى ذلك، يمكن مراعاة أي من الخيارات التالية للتجزئة:
- حزمة البطاقات الواردة وحدها.
- تفاصيل مكدس التسمية الواردة ورأس IP (إذا كانت الحمولة هي IP).
- تفاصيل مكدس التسميات الواردة وعنوان عنوان IP ورأس النقل.
عادة، تأخذ موجهات Cisco في الاعتبار مجموعة من مكدس التسمية ورأس IP إذا كان المكدس أقل من أو يساوي 3 (مع IP كحمولة).
افترض الطبولوجيا التالية.
R1-R7 موجهات. في المخطط أعلاه، يوجد 3 مسارات متعددة المسارات متساوية التكلفة (ECMP) من R1 إلى R5 كما هو موضح أدناه،
المسار 1: R1-R2-R3-R4-R5
المسار 2: R1-R2-R6-R4-R5
المسار 3: R1-R2-R6-R7-R5
بافتراض وجود مشكلة بين R6 و R7 (مثل بروتوكول توزيع التسمية المعطل (LDP) أو البرمجة الخاطئة للتسميات، وما إلى ذلك) مما يتسبب في إسقاط حركة مرور البيانات من R1 إلى R5 عبر PATH3. إذا أخذ إختبار اتصال LSP من R1 المسار 1 أو PATH2، فقد ينتهي بك الأمر إلى افتراض أن المسار بين R1 و R5 جيد.
يسمح إختبار اتصال LSP بتعيين عنوان وجهة IP كأي عنوان من نطاق 127.0.0.0/8. بينما يكون أحد الخيارات البسيطة هو أن تحاول يدويا إرسال حزم إختبار اتصال متعددة بعنوان وجهة مختلف، لا يوجد ضمان بأنه سيتم التحقق من جميع مسارات ECMP الممكنة. أنت تحتاج طريق أن يستعلم ويدقق كل المسارات الممكنة بين المصدر والوجهة. يستغل تتبع شجرة LSP متعدد المسارات "ترميز المعلومات متعدد المسارات" المحدد في القسم 3.3.1 من RFC4379 ويساعدك على التحقق من صحة جميع مسارات ECMP.
تتبع شجرة LSP - كيف يعمل
قد يشير إختبار اتصال MPLS العادي أو traceroute إلى عدم وجود فشل اعتمادا على كيفية مشاركة موجهات النقل للحزم عبر ECMP، ومع ذلك، يوفر تتبع شجرة LSP طريقة أفضل للتحقق من أن جميع المسارات تعمل بالفعل.
في تتبع شجرة LSP، يرسل موجه البادئ طلب صدى MPLS إلى كل خطوة عن طريق تعيين TTL في التسمية العليا بطريقة تزايدية (بداية من 1). سيحمل طلب echo معلومات متعددة المسارات TLV التي تحمل نطاق من عنوان IP (ضمن نطاق 127.0.0.0/8) أو نطاق تسمية الانتروبيا. حاليا تدعم أجهزة Cisco خيار وجهة IP وبالتالي سيتم توضيح المثال الذي نقدمه باستخدام نطاق عنوان IP.
سيقوم كل عنوان LSR عابر عند إستلام حزمة الطلب بالرد مع جميع واجهات ECMP الصادرة وإقران نطاق من عنوان IP (أو تسمية انتروبيا) من الطلب لكل واجهة.
تتبع شجرة LSP - مثال تفصيلي
افترض اتباع المخطط على سبيل المثال أدناه.
من أجل البساطة، يستخدم هذا المثال نطاق العنوان 127.0.0.0-127.0.0.200. فيما يلي تفاصيل الخطوات الواردة في تتبع شجرة LSP.
1) يرسل البادئ (R1) طلب الصدى مع التفاصيل التالية:
- وجهة IP ك 127.0.0.0
- معلومات متعددة المسارات TLV التي تحمل نطاق العنوان من 127.0.0.0 إلى 127.0.0.200.
- سيتم تعيين TTL الخاص بالتسمية العليا على 1.
2) عند تلقي نفس الرسالة، سيرد الخادم R2 بمعلومات متعددة المسارات لكل واجهة مخرج. في هذا المثال، سترد على النحو التالي:
- إذا كانت وجهة IP ضمن 127.0.0.0 إلى 127.0.0.100، فسيتم إرسال الحزمة إلى R3.
- إذا كانت وجهة IP ضمن 127.0.0.101 إلى 127.0.0.200، فسيتم إرسال الحزمة إلى R6.
3) يدرك R1 أن هناك مسارين محتملين ل ECMP لذلك يحتاج إلى إرسال طلب ECHO مع تعيين TTL على 2. من إختبارات مختلفة، لوحظ أن البادئ ينتهي دائما بمسار واحد قبل الذهاب إلى التالي. (ولكن هذا قد يكون صحيحا فيما يتصل بتنفيذ محدد).
4) يرسل R1 الآن طلب الارتداد مع التفاصيل التالية:
- وجهة IP ك 127.0.0.0
- معلومات متعددة المسارات TLV التي تحمل نطاق العنوان من 127.0.0.0 إلى 127.0.0.100.
- سيتم تعيين مدة البقاء (TTL) للتسمية العليا على 2.
5) سيقوم R2 بإعادة توجيه الحزمة إلى R3 (حيث أن عنوان الوجهة هو 127.0.0.0). سيقوم R3 عند تلقي نفس الرسالة بالرد باستخدام نفس معلومات المسارات المتعددة، نظرا لوجود واجهة مخرج واحدة فقط.
ويصدق الشيء نفسه حتى يصل إلى R5.
6) بمجرد اكتمال تتبع PATH1 (بعد تلقي رد من مخرج)، يقوم البادئ الآن باستعلام PATH2. يتم تنفيذ هذا الإجراء من خلال إرسال طلب الارتداد مع التفاصيل التالية:
- وجهة IP ك 127.0.0.101
- معلومات متعددة المسارات TLV التي تحمل نطاق العنوان على هيئة 127.0.0.101 إلى 127.0.0.200
- تم تعيين TTL الخاص بالتسمية العليا على 2.
7) سيقوم R2 بإعادة توجيه الحزمة إلى R6 (حيث أن عنوان الوجهة هو 127.0.0.101). سيقوم R6 عند تلقي نفس الرسالة بالرد باستخدام معلومات متعددة المسارات كما هو موضح أدناه:
- إذا كانت وجهة IP ضمن 127.0.0.101 إلى 127.0.0.150، فسيتم إرسال الحزمة إلى R4.
- إذا كانت وجهة IP ضمن 127.0.0.151 إلى 127.0.0.200، فسيتم إرسال الحزمة إلى R7.
8) يدرك R1 أن هناك مسار ECMP آخر يجعل إجمالي المسارات الممكنة 3. يستمر R1 في الاستعلام عن PATH2 من خلال إرسال طلب الارتداد التالي مع التفاصيل التالية:
- وجهة IP ك 127.0.0.101
- معلومات متعددة المسارات TLV التي تحمل نطاق العنوان على هيئة 127.0.0.101 إلى 127.0.0.150
- تم تعيين TTL للتسمية العليا على 3.
9) سيقوم R2 بإعادة توجيه الحزمة إلى R6 (حيث أن الوجهة هي 127.0.0.101) وسيقوم R6 بإرسالها إلى R4 (حيث أن الوجهة هي 127.0.0.101). لا يحتوي R4 على أي مسار ECMP ولذلك سيرد بنفس معلومات Multipath. ستصل الحزمة التالية إلى مخرج R5.
10) نظرا لاكتمال تتبع المسار 2، سيقوم R1 بمتابعة الاستعلام عن المسار 3. يتم تنفيذ هذا الإجراء من خلال إرسال طلب الارتداد مع التفاصيل التالية:
- وجهة IP ك 127.0.0.151
- معلومات متعددة المسارات TLV التي تحمل نطاق العنوان على هيئة 127.0.0.151 إلى 127.0.0.200
- تم تعيين TTL للتسمية العليا على 3.
11) سيقوم R2 بإعادة توجيه الحزمة إلى R6، والذي سيقوم بدوره بإعادة توجيهها إلى R7. سيقوم R7 بالرد باستخدام نفس معلومات Multipath TLV. تصل الحزمة التالية إلى موجه الخروج R5.
بعد اكتمال هذه الخطوات، سيكون R1 يحتوي على التفاصيل التالية:
باستخدام عنوان الوجهة ضمن 127.0.0.0 و 127.0.0.100، ستتأثر إعادة توجيه الحزمة عبر المسار 1 بينما سيؤثر إستخدام العنوان من نطاقات أخرى على إعادة توجيه الحزمة عبر المسارات المقابلة.
12) الآن سيقوم البادئ بإرسال 3 حزم لطلب الارتداد مع تعيين TTL على 255 وتحديد العنوان من كل نطاق حتى يتم التحقق من صحة جميع المسارات من نهاية إلى نهاية.
الأمر المطلوب إستخدامه لتعقب ECMP هو traceroute mpls متعدد المسارات IPv4 <prefix> <mask>. فيما يلي نموذج للمخرجات.
R1#traceroute mpls multipath ipv4 10.1.5.5 255.255.255.255
Starting LSP Multipath Traceroute for 10.1.5.5/32
Codes: '!' - success, 'Q' - request not sent, '.' - timeout,
'L' - labeled output interface, 'B' - unlabeled output interface,
'D' - DS Map mismatch, 'F' - no FEC mapping, 'f' - FEC mismatch,
'M' - malformed request, 'm' - unsupported tlvs, 'N' - no label entry,
'P' - no rx intf label prot, 'p' - premature termination of LSP,
'R' - transit router, 'I' - unknown upstream index,
'l' - Label switched with FEC change, 'd' - see DDMAP for return code,
'X' - unknown return code, 'x' - return code 0
Type escape sequence to abort.
LLL!
Path 0 found,
output interface Et0/0.12 nexthop 10.1.12.2
source 10.1.12.1 destination 127.0.0.4
LL!
Path 1 found,
output interface Et0/0.12 nexthop 10.1.12.2
source 10.1.12.1 destination 127.0.0.2
L!
Path 2 found,
output interface Et0/0.12 nexthop 10.1.12.2
source 10.1.12.1 destination 127.0.0.0
Paths (found/broken/unexplored) (3/0/0)
Echo Request (sent/fail) (9/0)
Echo Reply (received/timeout) (9/0)
Total Time Elapsed 27 ms
لاحظ أن المخرجات أعلاه تظهر أن هناك 3 مسارات وكل المسارات تعمل بشكل جيد. باستخدام مقبض المناقشة في الأمر أعلاه، سوف يسرد الأمر جميع الخطوات كما يلي:
R1#traceroute mpls multipath ipv4 10.1.5.5 255.255.255.255 verbose
Starting LSP Multipath Traceroute for 10.1.5.5/32
Codes: '!' - success, 'Q' - request not sent, '.' - timeout,
'L' - labeled output interface, 'B' - unlabeled output interface,
'D' - DS Map mismatch, 'F' - no FEC mapping, 'f' - FEC mismatch,
'M' - malformed request, 'm' - unsupported tlvs, 'N' - no label entry,
'P' - no rx intf label prot, 'p' - premature termination of LSP,
'R' - transit router, 'I' - unknown upstream index,
'l' - Label switched with FEC change, 'd' - see DDMAP for return code,
'X' - unknown return code, 'x' - return code 0
Type escape sequence to abort.
LLL!
Path 0 found,
output interface Et0/0.12 nexthop 10.1.12.2
source 10.1.12.1 destination 127.0.0.4
0 10.1.12.1 10.1.12.2 MRU 1500 [Labels: 22 Exp: 0] multipaths 0
L 1 10.1.12.2 10.1.23.3 MRU 1500 [Labels: 23 Exp: 0] ret code 8 multipaths 2
L 2 10.1.23.3 10.1.34.4 MRU 1500 [Labels: 22 Exp: 0] ret code 8 multipaths 1
L 3 10.1.34.4 10.1.45.5 MRU 1500 [Labels: implicit-null Exp: 0] ret code 8 multipaths 1
! 4 10.1.45.5, ret code 3 multipaths 0
LL!
Path 1 found,
output interface Et0/0.12 nexthop 10.1.12.2
source 10.1.12.1 destination 127.0.0.2
0 10.1.12.1 10.1.12.2 MRU 1500 [Labels: 22 Exp: 0] multipaths 0
L 1 10.1.12.2 10.1.26.6 MRU 1500 [Labels: 16 Exp: 0] ret code 8 multipaths 2
L 2 10.1.26.6 10.1.46.4 MRU 1500 [Labels: 22 Exp: 0] ret code 8 multipaths 2
L 3 10.1.46.4 10.1.45.5 MRU 1500 [Labels: implicit-null Exp: 0] ret code 8 multipaths 1
! 4 10.1.45.5, ret code 3 multipaths 0
L!
Path 2 found,
output interface Et0/0.12 nexthop 10.1.12.2
source 10.1.12.1 destination 127.0.0.0
0 10.1.12.1 10.1.12.2 MRU 1500 [Labels: 22 Exp: 0] multipaths 0
L 1 10.1.12.2 10.1.26.6 MRU 1500 [Labels: 16 Exp: 0] ret code 8 multipaths 2
L 2 10.1.26.6 10.1.67.7 MRU 1500 [Labels: 17 Exp: 0] ret code 8 multipaths 2
L 3 10.1.67.7 10.1.57.5 MRU 1500 [Labels: implicit-null Exp: 0] ret code 8 multipaths 1
! 4 10.1.57.5, ret code 3 multipaths 0
Paths (found/broken/unexplored) (3/0/0)
Echo Request (sent/fail) (9/0)
Echo Reply (received/timeout) (9/0)
Total Time Elapsed 29 ms