يشرح هذا المستند الطريقة التي يعمل بها الأمر traceroute في بيئة تحويل التسمية متعدد البروتوكولات (MPLS).
توصي Cisco بأن تكون لديك معرفة بالمواضيع التالية:
معرفة MPLS الأساسية
راجع الأسئلة المتداولة حول MPLS للمبتدئين للحصول على مزيد من المعلومات.
لا يقتصر هذا المستند على إصدارات برامج ومكونات مادية معينة.
راجع اصطلاحات تلميحات Cisco التقنية للحصول على مزيد من المعلومات حول اصطلاحات المستندات.
يوضح هذا القسم كيفية عمل الأمر traceroute التقليدي. يوضح هذا المخطط إعداد موفر الخدمة حيث يكون الموجه 1 (R1) والموجه 4 (R4) موجهات Provider Edge (PE) والموجه 2 (R2) والموجه 3 (R3) هي موجهات الموفر (P).
يقوم هذا المثال بإجراء traceroute إلى الاسترجاع R4 14 من R1. يستخدم R1 مخطط بيانات بروتوكول مخطط بيانات المستخدم (UDP) بقيمة منفذ وجهة تعسفية أكبر من 32000. إذا حددت هذه القيمة العالية لرقم المنفذ، فإنها تضمن أن هذا المنفذ غير موجود على المستلم المقصود. وهو يضع مخطط البيانات هذا في حزمة IP.
ملاحظة: في هذا المستند، كلما تم ذكر حزمة IP، فإنها حزمة IP تحتوي على مخطط بيانات UDP.
هذا تسلسل أحداث لأمر traceroute عادي:
يرسل R1 حزمة IP مع عنوان وجهة 14 ووقت البقاء (TTL) من 1 من خلال واجهة ETH1 الخاصة بها.
يستقبل R2 الحزمة ويلاحظ أنها ليست المستلم المقصود وأن TTL الخاص بالحزمة هو 1. وهو يقوم بإسقاط الحزمة وإرسال رسالة بروتوكول رسائل التحكم في الإنترنت (ICMP) منتهية الصلاحية ل TTL إلى R1. عنوان المصدر لرسالة ICMP هذه هو عنوان IP الخاص ب R2 th0 (عنوان الواجهة التي تلقت الحزمة الأصلية).
عند إستلام رسالة ICMP، يرسل R1 حزمة IP أخرى موجهة ل 14 مع مدة البقاء (TTL) تبلغ 2 من خلال واجهة ETH1 الخاصة بها.
يستلم R2 الحزمة ويلاحظ أنها ليست المستلم المقصود ويمكن الوصول إلى المستلم المقصود من خلال R3. ويقسم مدة البقاء (TTL) (من 2 إلى 1) ويعيد الحزمة إلى R3. يستقبل R3 الحزمة ويرى أنها ليست المستلم المقصود. مدة البقاء (TTL) هي 1. وهو يقوم بإسقاط الحزمة وإرسال رسالة ICMP منتهية الصلاحية TTL إلى R1 مع عنوان ETH0 الخاص بها كعنوان المصدر.
يستقبل R1 رسالة ICMP ويرسل حزمة IP أخرى إلى 14 من خلال واجهة ETH1 الخاصة به بقيمة TTL تبلغ 3. وفي الطريق، يقلل R2 و R3 مدة البقاء (TTL) ويمررها إلى R4. يحصل R4 على الحزمة ويرى أنها المستلم المقصود، ويحاول الاتصال بقيمة المنفذ في مخطط بيانات UDP. يبحث R4 عن هذا ميناء غير موجود ويرسل رسالة خطأ منفذ ICMP الذي يتعذر الوصول إليه إلى R1.
كما هو الحال قبل، يكون عنوان المصدر لرسالة ICMP هذه هو th0 من R4. يحتوي برنامج traceroute الآن على جميع رسائل خطأ ICMP مع عناوين المصدر المقابلة وله المسار الكامل إلى الوجهة.
ضع في الاعتبار هذا السيناريو نفسه بالتفصيل في قسم الأمر normal traceroute، باستثناء جميع الموجهات، من R1 إلى R4، والآن قم بتحويل التسمية بدلا من إعادة توجيه IP. يظهر إختبار إعداد السرير هذا الرسم التخطيطي. توجد جميع الواجهات الموضحة في قاع الاختبار في شبكة 10.13.0.0.
لأغراض هذا المستند، افترض ما يلي:
يستخدم R1 ملصق 47 للوصول إلى R4 وإعادة توجيه الحزم إلى R2.
يستخدم الخادم R2 ملصق عنوانه 45 للوصول إلى الخادم R4 وإعادة توجيه الحزم إلى الخادم R3.
يلصق R3 التسمية ويعيد توجيه الحزمة إلى R4.
يستخدم R4 ملصق 28 للوصول إلى R1 وإعادة توجيه الحزم إلى R3.
يستخدم R3 ملصق 26 للوصول إلى R1 وإعادة توجيه الحزم إلى R2.
يلصق R2 التسمية ويعيد توجيه الحزمة إلى R1.
تظهر هذه الخطوات تسلسل الأحداث لإجراء traceroute من R1 إلى إسترجاع R4 10.13.1.51.
يرسل R1 حزمة محول التسمية بتسمية من 47 و TTL من 1 إلى R2. يتم نسخ حقل TTL الخاص بحزمة IP إلى حقل TTL الخاص برأس التسمية.
يرى R2 أن هذا ليس المستلم المقصود وأن مدة البقاء (TTL) هي 1. يقوم بإسقاط الحزمة وإنشاء رسالة ICMP منتهية الصلاحية TTL، كما هو الحال لحزمة IP عادية. في هذه الحالة، يتم إنشاء حزمة رسائل ICMP لكل امتدادات ICMP ل MPLS.
يقوم R2 بإلحاق التسمية 47 (التسمية الواردة التي انتهت صلاحيتها) برسالة ICMP. وهو لا يرسل الحزمة إلى R1 مباشرة. وبدلا من ذلك، فإنه يرجع إلى قاعدة معلومات إعادة توجيه التسمية الخاصة به (LFIB) ويرى أنه يجب أن يستخدم تسمية من 45 للحزم المستلمة بتسمية من 47. وهو يضع تسمية من 45 على الحزمة ويرسل رسالة ICMP التي انتهت صلاحية TTL إلى R3.
يلصق R3 البطاقة ويرسلها إلى R4. يرى R4 أن الوجهة هي R1، ويمنح تسمية من 28 إلى الرسالة، ويرسلها من خلال R3 و R2 إلى R1.
تنتقل رسالة خطأ ICMP طوال الطريق إلى الطرف الآخر قبل إرسالها مرة أخرى إلى R1. يوضح هذا المثال ما يلي:
تؤكد الحزم المشتتة على واجهة الإيثرنت في R4 الخطوات 1-5. في إخراج sniffer، الإطار 1 هو الحزمة الواردة و الإطار 2 هو الحزمة الصادرة من R4. تم تنسيق الإخراج ليعكس هذه المناقشة، والنقاط التي ستتم ملاحظتها هي في شكل لامع.
Frame 1 (182 on wire, 182 captured) Ethernet II Destination: 00:04:4e:7a:74:00 (Cisco_7a:74:00) Source: 00:03:fd:1c:86:84 (Cisco_1c:86:84) Type: IP (0x0800) Internet Protocol Version: 4 Header length: 20 bytes Time to live: 254 Protocol: ICMP (0x01) Header checksum: 0x1b8e (correct) Source: 10.13.2.33 (10.13.2.33) Destination: 10.13.2.34 (10.13.2.34) Internet Control Message Protocol Type: 11 (Time-to-live exceeded) Code: 0 (TTL equals 0 during transit) Checksum: 0x0c88 (correct) Data (140 bytes) 04500 001c 9e19 0000 0111 044a 0a0d 0222E..........J..." 100a0d 0133 989d 829a 0008 cd37 0000 0000...3.......7.... 200000 0000 0000 0000 0000 0000 0000 0000................ 300000 0000 0000 0000 0000 0000 0000 0000................ 400000 0000 0000 0000 0000 0000 0000 0000................ 500000 0000 0000 0000 0000 0000 0000 0000................ 600000 0000 0000 0000 0000 0000 0000 0000................ 700000 0000 0000 0000 0000 0000 0000 0000................ 802000 edf2 0008 0101 0002 f101........... Frame 2 (186 on wire, 186 captured) Ethernet II Destination: 00:03:fd:1c:86:84 (Cisco_1c:86:84) Source: 00:04:4e:7a:74:00 (Cisco_7a:74:00) Type: MPLS label switched packet (0x8847) MultiProtocol Label Switching Header MPLS Label: Unknown (28) MPLS Experimental Bits: 6 MPLS Bottom Of Label Stack: 1 MPLS TTL: 253 Internet Protocol Version: 4 Header length: 20 bytes Time to live: 253 Protocol: ICMP (0x01) Header checksum: 0x1c8e (correct) Source: 10.13.2.33 (10.13.2.33) Destination: 10.13.2.34 (10.13.2.34) Internet Control Message Protocol Type: 11 (Time-to-live exceeded) Code: 0 (TTL equals 0 during transit) Checksum: 0x0c88 (correct) Data (140 bytes) 04500 001c 9e19 0000 0111 044a 0a0d 0222E..........J..." 100a0d 0133 989d 829a 0008 cd37 0000 0000...3.......7.... 200000 0000 0000 0000 0000 0000 0000 0000................ 300000 0000 0000 0000 0000 0000 0000 0000................ 400000 0000 0000 0000 0000 0000 0000 0000................ 500000 0000 0000 0000 0000 0000 0000 0000................ 600000 0000 0000 0000 0000 0000 0000 0000................ 700000 0000 0000 0000 0000 0000 0000 0000................ 802000 edf2 0008 0101 0002 f101...........
في الإطار 1 من الإخراج، تمثل الحزمة الأولى التي تم استقبالها بواسطة R4 رسالة ICMP منتهية الصلاحية من R2 (10.13.2.33، والواجهة التي تم إستلام الحزمة الأصلية عليها) إلى R1 (10.13.2.34). في جزء البيانات من رسالة ICMP، بالبايت 0x89 وأول حزمة من 0x8A، انتهت صلاحية تسمية MPLS (20 بايت) وقيمتها هي 0x02F، أو 47. هذه هي التسمية الواردة للحزمة ذات مدة البقاء (TTL) تبلغ 1. يقوم R2 بإلحاق هذه التسمية في رسالة خطأ ICMP.
في الإطار 2 من الإخراج، يتم عرض النوع على أنه حزمة محول التسمية MPLS، مما يعني أنها حزمة MPLS. يضع R4 تسمية من 28 إلى الإطار 1 ويعيد توجيهها إلى R1 من خلال مسار تحويل التسمية. رأس MPLS في الإطار غامق. أيضا، إذا كنت تشير إلى جزء TTL من الحزمة، في الإطار 1 فإن قيمته هي 254، وفي الإطار 2 هو 253. قام R4 بتخفيض حجمه بمقدار واحد.
يستقبل R1 رسالة ICMP ويرسل حزمة أخرى بتسمية 47 و TTL من 2 إلى R2. يقوم R2 بتبديل الملصقات والمراحل TTL (من 2 إلى 1) وإعادة التوجيه إلى R3. كما في الخطوة 2، يرسل R3 رسالة ICMP منتهية الصلاحية ل TTL ملحقة بالتسمية الواردة التي انتهت صلاحيتها إلى R4، ثم يرسلها R4 مرة أخرى إلى R1.
يؤكد إخراج sniffer في R4، الظاهر هنا، الخطوة 6:
Frame 3 (182 on wire, 182 captured) Ethernet II Destination: 00:04:4e:7a:74:00 (Cisco_7a:74:00) Source: 00:03:fd:1c:86:84 (Cisco_1c:86:84) Type: IP (0x0800) Internet Protocol Version: 4 Header length: 20 bytes Time to live: 255 Protocol: ICMP (0x01) Header checksum: 0x146f (correct) Source: 10.13.3.134 (10.13.3.134) Destination: 10.13.2.34 (10.13.2.34) Internet Control Message Protocol Type: 11 (Time-to-live exceeded) Code: 0 (TTL equals 0 during transit) Checksum: 0x0c88 (correct) Data (140 bytes) 04500 001c 9e1b 0000 0211 0348 0a0d 0222E..........H..." 100a0d 0133 9292 829b 0008 d341 0000 0000...3.......A.... 200000 0000 0000 0000 0000 0000 0000 0000................ 300000 0000 0000 0000 0000 0000 0000 0000................ 400000 0000 0000 0000 0000 0000 0000 0000................ 500000 0000 0000 0000 0000 0000 0000 0000................ 600000 0000 0000 0000 0000 0000 0000 0000................ 700000 0000 0000 0000 0000 0000 0000 0000................ 802000 0df3 0008 0101 0002 d101........... Frame 4 (186 on wire, 186 captured) Ethernet II Destination: 00:03:fd:1c:86:84 (Cisco_1c:86:84) Source: 00:04:4e:7a:74:00 (Cisco_7a:74:00) Type: MPLS label switched packet (0x8847) MultiProtocol Label Switching Header MPLS Label: Unknown (28) MPLS Experimental Bits: 6 MPLS Bottom Of Label Stack: 1 MPLS TTL: 254 Internet Protocol Version: 4 Header length: 20 bytes Time to live: 254 Protocol: ICMP (0x01) Header checksum: 0x156f (correct) Source: 10.13.3.134 (10.13.3.134) Destination: 10.13.2.34 (10.13.2.34) Internet Control Message Protocol Type: 11 (Time-to-live exceeded) Code: 0 (TTL equals 0 during transit) Checksum: 0x0c88 (correct) Data (140 bytes) 04500 001c 9e1b 0000 0211 0348 0a0d 0222E..........H..." 100a0d 0133 9292 829b 0008 d341 0000 0000...3.......A.... 200000 0000 0000 0000 0000 0000 0000 0000................ 300000 0000 0000 0000 0000 0000 0000 0000................ 400000 0000 0000 0000 0000 0000 0000 0000................ 500000 0000 0000 0000 0000 0000 0000 0000................ 600000 0000 0000 0000 0000 0000 0000 0000................ 700000 0000 0000 0000 0000 0000 0000 0000................ 802000 0df3 0008 0101 0002 d101...........
من إخراج الإطار 3، يمكنك تحديد أن الإطار 3 هو حزمة ICMP من R3 إلى R1. عنوان المصدر (10.13.3.134) هو العنوان الذي يتم إستلام الحزمة الأصلية عليه. تحتوي رسالة خطأ ICMP على معلومات التسمية منتهية الصلاحية في نهاية جزء البيانات. قيمته 0x02d، أي 45. الإطار 4 هو الحزمة MPLS التي يتم إرسالها من R4 إلى R1.
عند إستلام رسالة ICMP، يرسل R1 حزمة أخرى بتسمية 47 و TTL من 3. وفي طريقه، يقلل R2 و R3 مدة البقاء (TTL) ويعيد توجيه الحزمة إلى R4. يلاحظ R4 أنه المستلم المقصود ويجد منفذ مخطط بيانات UDP غير قابل للوصول. وهو يرسل رسالة منفذ ICMP الذي يتعذر الوصول إليه إلى R1 من خلال R3 و R2.
في مخرجات sniffer هذه، النقاط المهمة التي يجب ملاحظتها هي في شكل لامع:
Frame 5 (60 on wire, 60 captured) Ethernet II Destination: 00:04:4e:7a:74:00 (Cisco_7a:74:00) Source: 00:03:fd:1c:86:84 (Cisco_1c:86:84) Type: IP (0x0800) Trailer: 00000000000000000000000000000000... Internet Protocol Version: 4 Header length: 20 bytes Time to live: 1 Protocol: UDP (0x11) Header checksum: 0x0446 (correct) Source: 10.13.2.34 (10.13.2.34) Destination: 10.13.1.51 (10.13.1.51) User Datagram Protocol Source port: 37647 (37647) Destination port: 33436 (33436) Length: 8 Checksum: 0xd2c3 (correct) Frame 6 (74 on wire, 74 captured) Ethernet II Destination: 00:03:fd:1c:86:84 (Cisco_1c:86:84) Source: 00:04:4e:7a:74:00 (Cisco_7a:74:00) Type: MPLS label switched packet (0x8847) MultiProtocol Label Switching Header MPLS Label: Unknown (28) MPLS Experimental Bits: 6 MPLS Bottom Of Label Stack: 1 MPLS TTL: 255 Internet Protocol Version: 4 Header length: 20 bytes Time to live: 255 Protocol: ICMP (0x01) Header checksum: 0x5694 (correct) Source: 10.13.5.10 (10.13.5.10) Destination: 10.13.2.34 (10.13.2.34) Internet Control Message Protocol Type: 3 (Destination unreachable) Code: 3 (Port unreachable) Checksum: 0x1485 (correct) Data (28 bytes) 04500 001c 9e1d 0000 0111 0446 0a0d 0222E..........F..." 100a0d 0133 930f 829c 0008 d2c3...3........
يوضح الإطار 5 أن مخطط بيانات UDP يتم إرساله بواسطة R1 إلى R4. الغاية ميناء قيمة في ال UDP معطيات 33436 (أكبر من 32000)، كما نوقش في عادي traceroute أمر قسم.
في الإطار 6 ، يرسل R4 نوع ICMP الوجهة التي يتعذر الوصول إليها ورمز المنفذ الذي يتعذر الوصول إليه إلى R1. تم تعيين حقل النوع لجميع رسائل ICMP السابقة من R2 و R3 نظرا لتجاوز مدة البقاء. يظهر الإنتاج من الموسع traceroute أمر هنا:
R1#traceroute Protocol [ip]: Target IP address: 10.13.1.51 Source address: 10.13.2.34 Numeric display [n]: Timeout in seconds [3]: Probe count [3]: 1 Minimum Time to Live [1]: Maximum Time to Live [30]: Port Number [33434]: Loose, Strict, Record, Timestamp, Verbose[none]: Type escape sequence to abort. Tracing the route to 10.13.1.51 1 10.13.2.33 [MPLS: Label 47 Exp 0] 0 msec 2 10.13.3.134 [MPLS: Label 45 Exp 0] 0 msec 3 10.13.5.10 4 msec R1#
بشكل افتراضي، يستخدم الأمر traceroute ثلاثة مسارات لكل قيمة TTL. حيث يرسل ثلاثة حزم مع TTL من 1، وثلاثة حزم مع TTL من 2، وهكذا. يتم إصدار أمر traceroute هذا مع تحقيق واحد، لذلك من السهل تتبعه وتصحيح أخطائه. كما هو موضح في الإخراج، فإن الأمر traceroute يظهر قيمة التسمية منتهية الصلاحية، أيضا.
عند تكوين MPLS، يتم فرض تسمية بواسطة موجه محول التسمية (LSR) عند إعادة توجيه حزمة IP إلى مجال MPLS. يجب أن تحتوي هذه التسمية على قيمة في حقل TTL. بشكل افتراضي، يقرأ LSR حقل TTL في رأس IP للحزمة الواردة، ويعدله بمقدار 1، وينسخ ما يتبقى في حقل TTL من رأس MPLS. وتنظر نقاط الوصول المحلية الأساسية فقط إلى التسمية الأعلى. إذا لم تصل قيمة TTL إلى 0، فسيتم إعادة توجيه الحزمة. ينسخ المخرج edge LSR الذي يلصق التسمية ما هو يسار في حقل التسمية TTL إلى حقل TTL من رأس IP ثم يرسل حزمة IP خارج مجال MPLS.
يمكن تغيير هذا السلوك باستخدام أمر التكوين no mpls ip propagate-ttl. يستخدم المدخل حافة LSR قيمة 255 كقيمة TTL في التسمية عند فرضها. لا ينسخ الحد المخرج LSR قيمة TTL للتسمية في رأس IP عند إخراج التسمية. والنتيجة الصافية هي أن عنوان IP TTL لا يعكس القفزات المأخوذة عبر لب MPLS؛ لذلك عندما ينجز العملاء traceroute من جانب واحد من شبكتهم إلى جانب آخر، لا تظهر الموجهات في الشبكة الأساسية MPLS في معلومات traceroute. من المهم تعطيل نشر مدة البقاء (TTL) في كل من قوائم التحكم في الوصول (LSRs) لحافة الدخول والخروج. وإلا، قد يكون لرأس IP قيمة أعلى عند خروجه من مجال MPLS مما كان عليه عند إدخاله.
وهذا يقدم مثالا:
C1 يجري traceroute إلى C2. مع عملية النشر الافتراضية لبروتوكول IP TTL، تبدو traceroute في C1 كما يلي:
C1#traceroute C2.cust.com Tracing the route to C2.cust.com 1 A.provider.net 44 msec 36 msec 32 msec 2 B provider.net 164 msec 132 msec 128 msec 3 C.provider.net 148 msec 156 msec 152 msec 4 C2.cust.com 180 msec * 181 msec
يوضح هذا الإخراج سلوك traceroute النموذجي في شبكة MPLS. بما أن رأس التسمية الخاص بالحزمة المسماة يحمل قيمة TTL من حزمة IP الأصلية، فإن المسارات في حزم إسقاط المسار التي يتم تجاوز TTL لها. لذلك، يبدي traceroute كل المسحاج تخديد في المسار. هذا السلوك:
الحزمة الأولى هي حزمة IP مع TTL تساوي 1. يقوم الموجه A بخفض مدة البقاء (TTL) وإسقاط الحزمة لأنها تصل إلى 0. يتم إرسال رسالة ICMP TTL التي تم تجاوزها إلى المصدر.
الحزمة الثانية المرسلة هي حزمة IP مع TTL تساوي 2. يقوم الموجه A بخفض مدة البقاء (TTL)، وتعميم الحزمة، وإعادة توجيه الحزمة إلى الموجه B.
يقوم الموجه B بخفض قيمة TTL في رأس MPLS، وإسقاط الحزمة، وإرسال رسالة ICMP TTL-Exceeded إلى المصدر. نظرا لأنه كان حزمة MPLS التي تم إسقاطها، يجب اشتقاق عنوان الإرجاع لرسالة ICMP من عنوان المصدر في رأس IP داخل حزمة MPLS. ولكن عنوان IP هذا قد لا يكون معروفا بالفعل للموجه B، لذلك يقوم الموجه B بإعادة توجيه رسائل ICMP على طول نفس مسار محول التسمية (LSP) الذي كانت الحزمة المسقطة تسافره (في الإتجاه نحو الموجه C). في نهاية LSP، تتم إزالة التسمية ويتم إعادة توجيه رسائل ICMP وفقا لعنوان الوجهة في رأس IP (نحو الموجه C1).
تختبر الحزمة الثالثة (TTL هو 3) معالجة مماثلة كالحزم السابقة، باستثناء أن الموجه C الآن هو الذي يسقط الحزمة، بناء على TTL في رأس IP. قام الموجه B مسبقا بإزالة التسمية، نظرا لانفصال الخطوة قبل الأخيرة، وتم نسخ مدة البقاء (TTL) في رأس IP.
تصل الحزمة الرابعة (TTL هي 4) إلى الوجهة النهائية حيث يتم فحص TTL من رأس IP.
إذا تم تعطيل نشر IP TTL باستخدام الأمر no mpls ip propagate-ttl في وضع التكوين العام، فلن يتم نسخ قيمة TTL في رأس IP وسيبدو traceroute في C1 إلى C2 كما يلي:
C1#traceroute C2.cust.com Tracing the route to C2.cust.com 1 A.provider.net 44 msec 36 msec 32 msec 2 C2.cust.com 180 msec * 181 msec
عند إستخدام الأمر traceroute في هذه الحالة، يتم تلقي ردود ICMP فقط من الموجهات التي ترى مدة البقاء (TTL) الحقيقية المخزنة في رأس IP. في هذه الحالة، يقوم الموجه C1 بتنفيذ الأمر traceroute (كما هو موضح)، ولكن الموجهات الأساسية لا تنسخ مدة البقاء (TTL) من وإلى التسمية. ويؤدي ذلك إلى هذا السلوك:
الحزمة الأولى هي حزمة IP مع TTL تساوي 1. يقوم الموجه A بخفض مدة البقاء (TTL)، وإسقاط الحزمة، وإرسال رسالة ICMP TTL-Exceeded إلى المصدر.
الحزمة الثانية هي حزمة IP مع TTL تساوي 2. يقوم الموجه A بخفض مدة البقاء (TTL)، وتسمية الحزمة، وتعيين مدة البقاء (TTL) في رأس MPLS على 255.
يقوم الموجه B بخفض مدة البقاء (TTL) في رأس MPLS إلى 254، ويزيل تسمية MPLS، وينسخ قيمة TTL في رأس MPLS إلى حقل TTL من رأس IP.
يقوم الموجه C بخفض IP TTL ويرسل الحزمة إلى موجه C2 للخطوة التالية. وصلت الحزمة إلى الوجهة النهائية.