يصف هذا المستند التفاعل بين حزم فتح أقصر مسار أولا (OSPF) والحد الأقصى لوحدة الانتقال (MTU) وإعلانات حالة الارتباط (LSAs) وحزم تحديث حالة الارتباط (LS) في سياق معرف تصحيح الأخطاء من Cisco CSCse01519.
الارتباطات على الموجهات بها وحدة الحد الأقصى للنقل (MTU). لا يمكن أن تكون الحزم الصادرة، مثل حزم OSPF، أكبر من وحدة الحد الأقصى للنقل (MTU) للواجهة.
طلب التعليقات (RFC) 2328 وثائق الإصدار 2 من بروتوكول OSPF. يصف الملحق أ.1 من RFC 2328 تضمين حزم OSPF بهذه الطريقة:
يعمل OSPF مباشرة عبر طبقة شبكة بروتوكول الإنترنت. وبالتالي، يتم تضمين حزم OSPF فقط بواسطة رؤوس إرتباط البيانات المحلية و IP.
لا يحدد OSPF طريقة لتجزئة حزم البروتوكول الخاصة به، ويعتمد على تجزئة IP عند إرسال الحزم الأكبر من MTU للشبكة. إذا كان ضروريا، يمكن أن يصل طول حزم OSPF إلى 65،535 بايت (بما في ذلك رأس IP). يمكن عادة تقسيم أنواع حزم OSPF التي من المحتمل أن تكون كبيرة (حزم وصف قاعدة البيانات وطلب حالة الارتباط وتحديث حالة الارتباط وحزم إقرار حالة الارتباط) إلى عدة حزم بروتوكول منفصلة، دون فقدان الوظيفة. يوصى بذلك؛ يجب تجنب تجزئة IP كلما كان ذلك ممكنا.
يمكن أن يكون هناك واحد أو أكثر من LSAs في حزمة تحديث LS. يعرف العديد من LSAs في حزمة تحديث LS واحدة باسم حزم LSAs في حزمة تحديث LS.
تصف حزمة وصف قاعدة البيانات (DBD)، المحددة أيضا في RFC 2328، محتويات قاعدة بيانات حالة إرتباط OSPF:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Version # | 2 | Packet length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Router ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Area ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Checksum | AuType |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Authentication |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Authentication |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Interface MTU | Options |0|0|0|0|0|I|M|MS
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| DD sequence number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+- -+
| |
+- An LSA Header -+
| |
+- -+
| |
+- -+
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ... |
يصف الملحق أ.3.3 من RFC 2328 وحدة الحد الأقصى للنقل (MTU) للواجهة على النحو التالي:
الحجم بالبايت لأكبر مخطط بيانات IP الذي يمكن إرساله من الواجهة المقترنة، دون تجزئة.
تقوم الموجهات المتصلة بالربط بتبادل قيمة MTU الخاصة بواجهة التوصيل في حزم DBD عند تهيئة تجاور OSPF.
يذكر القسم 10.6 من RFC 2328:
إذا يشير حقل وحدة الحد الأقصى للنقل (MTU) للواجهة في حزمة وصف قاعدة البيانات إلى حجم مخطط بيانات IP أكبر من الموجه الذي يمكن أن يقبله على واجهة الاستلام دون تجزئة، فسيتم رفض الحزمة "وصف قاعدة البيانات".
عند إستخدام الأمر debug ip ospf adj، يمكنك رؤية وصول حزم DBD هذه.
في هذا المثال، هناك عدم تطابق في قيم MTU بين جارتي OSPF. يحتوي هذا الموجه على MTU 1600:
OSPF: Rcv DBD from 10.100.1.2 on GigabitEthernet0/1 seq 0x2124 opt 0x52 flag 0x2
len 1452 mtu 2000 state EXSTART
OSPF: Nbr 10.100.1.2 has larger interface MTU
يحتوي موجه OSPF الآخر على واجهة MTU 2000:
OSPF: Rcv DBD from 10.100.100.1 on GigabitEthernet0/1 seq 0x89E opt 0x52 flag 0x7
len 32 mtu 1600 state EXCHANGE
OSPF: Nbr 10.100.100.1 has smaller interface MTU
يتم إعادة إرسال حزم DBD باستمرار حتى يتم تقسيم تجاور OSPF في نهاية المطاف.
OSPF: Send DBD to 10.100.1.2 on GigabitEthernet0/1 seq 0x9E6 opt 0x52 flag 0x7
len 32
OSPF: Retransmitting DBD to 10.100.1.2 on GigabitEthernet0/1 [10]
OSPF: Send DBD to 10.100.1.2 on GigabitEthernet0/1 seq 0x9E6 opt 0x52 flag 0x7
len 32
OSPF: Retransmitting DBD to 10.100.1.2 on GigabitEthernet0/1 [11]
%OSPF-5-ADJCHG: Process 1, Nbr 10.100.1.2 on GigabitEthernet0/1 from EXSTART to
DOWN, Neighbor Down: Too many retransmissions
قبل Cisco Bug ID CSCse01519، قام OSPF في برنامج Cisco IOS®بإنشاء حزم OSPF لا يزيد حجمها عن 1500 بايت، بغض النظر عن وحدة الحد الأقصى للنقل (MTU) للواجهة. لذلك، إذا كانت وحدة الحد الأقصى للنقل (MTU) الخاصة بالواجهة أكبر من 1500 بايت، فسيظل OSPF يقوم بتعبئة ما يصل إلى 1500 بايت فقط في حزمة OSPF. وكان هذا غير فعال إلى حد ما لأن OSPF كان قادرا على إرسال حزم أكبر على الارتباط وتحقيق إنتاجية أكبر.
وبالمثل، إذا كانت وحدة الحد الأقصى للنقل (MTU) للواجهة الصادرة أصغر من 1500 بايت، فإن عملية OSPF لا تزال تقوم بإنشاء حزم OSPF أو حزمها حتى 1500 بايت، وقام مكدس IP الخاص بالموجه بتجزئة الحزمة إلى حزم IP أصغر حجما لملائمة وحدة الحد الأقصى للنقل (MTU) الخاصة بالارتباط الصادر. حدث هذا بشكل نموذجي مع نفق IPSec بين موجهين كانا يشغلان OSPF. أدت النفقات الإضافية لوحدات بايت التضمين في النفق إلى وجود وحدة الحد الأقصى للنقل (MTU) أصغر من 1500 بايت. قام OSPF بإنشاء حزم OSPF بحجم يصل إلى 1500 بايت ثم تمت تجزئة الحزم قبل أن يقوم الموجه بإرسالها. وكان هذا سببا إضافيا لعدم الكفاءة.
بعد Cisco Bug ID CSCse01519، يمكن أن يقوم OSPF في IOS بحزم حزم OSPF لتكون أكبر من 1500 بايت. يحدث ذلك إذا كانت وحدة الحد الأقصى للنقل (MTU) للواجهة الصادرة أكبر من 1500 بايت. عمليات الإرسال أكثر فعالية لأنه يمكن تجميع المزيد من المعلومات في حزمة واحدة أكبر. بمعنى آخر، إذا أحتاج موجه OSPF واحد إلى إرسال العديد من إعلانات LSA الخارجية إلى جار OSPF، فيمكنه حزم المزيد من إعلانات LSA الخارجية في حزمة تحديث LS واحدة إذا كان الموجه هذا يشغل IOS مع تنفيذ معرف تصحيح الأخطاء من Cisco CSCse01519.
كما يسمح معرف تصحيح الأخطاء من Cisco CSCse01519 ل OSPF ببناء حزم أصغر من 1500 بايت. في بعض السيناريوهات، تكون قيمة وحدة الحد الأقصى للنقل (MTU) بين جارتين لبروتوكول فتح أقصر مسار أولا (OSPF) أقل من 1500 بايت. في المثال السابق مع نفق IPSec، يرسل OSPF حزم OSPF التي تكون أصغر من 1500 بايت ويتجنب تجزئة IP؛ مرة أخرى، الاستثناء هو حالة LSA الذي يكون أكبر من وحدة الحد الأقصى للنقل (MTU) للواجهة.
عندما يحسن أنت OSPF مسحاج تخديد، أنت يستطيع اكتشفت OSPF MTU إصدار يسببه cisco بق id CSCse01519.
تحتوي العديد من الشبكات على جيران OSPF المتصلة من خلال شبكة محولة من الطبقة 2 (L2)، أو شبكة نقل، تتألف من خدمة VPN من L2 أو شبكة تسلسل هيكلي رقمي متزامن/شبكة ضوئية متزامنة (SDH/SONET). يمكن أن يكون لشبكات النقل هذه إعدادات MTU مختلفة عن الموجهات التي تشغل OSPF.
على الرغم من أنه يجب أن يكون إعداد وحدة الحد الأقصى للنقل (MTU) صحيحا على جميع الموجهات ويجب أن يعكس وحدة الحد الأقصى للنقل (MTU) الحقيقية، إلا أنه غالبا ما تكون هناك أخطاء لا يتم ملاحظتها.
هذا مثال على الشبكة ذات الموجهين اللذين يقومان بتشغيل OSPF. يتم توصيل الموجه 1 (R1) والموجه 2 (R2) من خلال محول L2.
في هذا المثال، تحتوي الموجهات على واجهات GigabitEthernet مع تعيين MTU على 2000. ال MTU من ال L2 مفتاح فقط 1500 بايت.
إذا لم يكن حجم حركة مرور البيانات أكبر من 1500 بايت على الإطلاق، فيمكنك إستخدام IOS بدون معرف تصحيح الأخطاء من Cisco CSCse01519 لأن حزم OSPF لا تزيد أبدا عن 1500 بايت. ومع ذلك، إذا كان هناك LSA يبلغ 1800 بايت، على سبيل المثال، تقوم عملية OSPF على R1 أو R2 بإنشاء حزمة تحديث LS أكبر من 1500 بايت وترسلها، ولكن يتم إسقاط الحزمة بواسطة المحول L2 بين الموجهات.
إذا كانت قاعدة بيانات OSPF على R2 تحتوي على شبكات كافية، فإن وحدات LSA التي تم إنشاؤها محليا كبيرة جدا حتى أن حزمة تحديث LS قد تكون أكبر من وحدة الحد الأقصى للنقل (MTU) للواجهة.
افترضت أن كلا مسحاج تخديد يركض ios صيغة دون cisco بق id CSCse01519.
عندما يتم إنشاء تجاور OSFP، لاحظ أن R1 لا يستلم أبدا حزمة OSPF أكبر من 1500 بايت، على الرغم من أن وحدة الحد الأقصى للنقل (MTU) للواجهات هي 2000.
قم بتمكين الأمر debug ip ospf packet.
OSPF: rcv. v:2 t:1 l:48 rid:10.100.1.2
aid:0.0.0.0 chk:72CF aut:0 auk: from GigabitEthernet0/1
...
OSPF: rcv. v:2 t:4 l:1468 rid:10.100.1.2
aid:0.0.0.0 chk:8389 aut:0 auk: from GigabitEthernet0/1
OSPF: rcv. v:2 t:4 l:136 rid:10.100.1.2
...
في إخراج تصحيح الأخطاء هذا، يمثل 'l:1468' طول حزمة OSPF، لذلك يمكنك أن ترى أن أكبر حزمة OSPF كانت 1468 بايت. يشير 't:4' إلى أن حزمة OSPF هي النوع 4، وهو حزمة تحديث حالة الارتباط. يحدد هذا الجدول من القسم 4.3 من RFC 2328 أنواع حزم OSPF المختلفة:
النوع | اسم الحزمة | دالة البروتوكول |
1 | مرحبا | اكتشاف/صيانة الجيران |
2 | وصف قاعدة البيانات | تلخيص محتويات قاعدة البيانات |
3 | طلب حالة الارتباط | تنزيل قاعدة البيانات |
4 | تحديث حالة الارتباط | تحديث قاعدة البيانات |
5 | Link State Ack | إقرار بالغمر |
يصل تجاور OSPF إلى حالة 'full'.
R1#show ip ospf neighbor gigabitEthernet 0/1
Neighbor ID Pri State Dead Time Address Interface
10.100.1.2 0 FULL/ - 00:00:34 10.1.1.2 GigabitEthernet0/1
R2#show ip ospf neighbor gigabitEthernet 0/1
Neighbor ID Pri State Dead Time Address Interface
10.100.100.1 0 FULL/ - 00:00:34 10.1.1.1 GigabitEthernet0/1
بعد ذلك، قم بترقية IOS على R2 إلى إصدار IOS باستخدام Cisco CSCse01519.
R2#show ip ospf neighbor gigabitEthernet 0/1
Neighbor ID Pri State Dead Time Address Interface
10.100.100.1 0 LOADING/ - 00:00:33 10.1.1.1 GigabitEthernet0/1
R2#show ip ospf neighbor gigabitEthernet 0/1 detail
Neighbor 10.100.100.1, interface address 10.1.1.1
In the area 0 via interface GigabitEthernet0/1
Neighbor priority is 0, State is LOADING, 5 state changes
DR is 0.0.0.0 BDR is 0.0.0.0
Options is 0x12 in Hello (E-bit L-bit )
Options is 0x52 in DBD (E-bit L-bit O-bit)
LLS Options is 0x1 (LR)
Dead timer due in 00:00:39
Neighbor is up for 00:00:49
Index 1/1, retransmission queue length 0, number of retransmission 0
First 0x0(0)/0x0(0) Next 0x0(0)/0x0(0)
Last retransmission scan length is 0, maximum is 0
Last retransmission scan time is 0 msec, maximum is 0 msec
Number of retransmissions for last link state request packet 9
Poll due in 00:00:00
R2#show ip ospf neighbor gigabitEthernet 0/1 detail
Neighbor 10.100.100.1, interface address 10.1.1.1
In the area 0 via interface GigabitEthernet0/1
Neighbor priority is 0, State is LOADING, 5 state changes
DR is 0.0.0.0 BDR is 0.0.0.0
Options is 0x12 in Hello (E-bit L-bit )
Options is 0x52 in DBD (E-bit L-bit O-bit)
LLS Options is 0x1 (LR)
Dead timer due in 00:00:33
Neighbor is up for 00:02:06
Index 1/1, retransmission queue length 0, number of retransmission 0
First 0x0(0)/0x0(0) Next 0x0(0)/0x0(0)
Last retransmission scan length is 0, maximum is 0
Last retransmission scan time is 0 msec, maximum is 0 msec
Number of retransmissions for last link state request packet 25
Poll due in 00:00:03
%OSPF-5-ADJCHG: Process 1, Nbr 10.100.100.1 on GigabitEthernet0/1 from LOADING
to DOWN, Neighbor Down: Too many retransmissions
التصق تجاور OSPF في حالة 'تحميل' ولا يصل إلى حالة 'full'. وتحدث عمليات إعادة الإرسال إلى أن يبلغ صندوق فتح أقصر مسار أولا حده البالغ 25 إعادة إرسال. يحاول OSPF إنشاء التجاور مرة أخرى، ويحدث نفس الإصدار، وتستمر التكرار بشكل لا نهائي.
وبالتالي، تكشف الترقية على R2 عن مشكلة كانت مخفية سابقا، وهي أن وحدة الحد الأقصى للنقل (MTU) الأساسية أصغر من تلك التي تستخدمها موجهات OSPF.
عندما يقوم المحول بتغيير MTU إلى 2000، يتم إرسال حزمة OSPF أكبر من 1500 بايت ('l:1980') بدون مشكلة.
R1#
OSPF: rcv. v:2 t:3 l:1980 rid:10.100.1.2
aid:0.0.0.0 chk:AC5B aut:0 auk: from GigabitEthernet0/1
للتحقق من المشاكل الأساسية لوحدة الحد الأقصى للنقل (MTU)، يتم إختبار اتصال عنوان IP المجاور ل OSPF دائما بحجم يساوي حجم وحدة الحد الأقصى للنقل (MTU) ومجموعة بت DF (عدم التجزئة).
لاكتشاف قيمة وحدة الحد الأقصى للنقل (MTU) الأساسية، قم بإجراء إختبار اتصال، ثم اكتسح الحجم. قم بحساب عدد علامات التعجب (!) في الإخراج لتحديد وحدة الحد الأقصى للنقل (MTU) الصحيحة. في هذا المثال، يحتوي آخر رد على صدى من الأمر ping على حجم 1500 بايت.
R2#ping
Protocol [ip]:
Target IP address: 10.1.1.1
Repeat count [5]: 1
Datagram size [100]:
Timeout in seconds [2]:
Extended commands [n]: yes
Source address or interface:
Type of service [0]:
Set DF bit in IP header? [no]: yes
Validate reply data? [no]:
Data pattern [0xABCD]:
Loose, Strict, Record, Timestamp, Verbose[none]:
Sweep range of sizes [n]: yes
Sweep min size [36]: 1460
Sweep max size [18024]: 1540
Sweep interval [1]:
Type escape sequence to abort.
Sending 81, [1460..1540]-byte ICMP Echos to 10.1.1.1, timeout is 2 seconds:
Packet sent with the DF bit set
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!.............................
...........
Success rate is 49 percent (40/81), round-trip min/avg/max = 1/1/4 ms