عند التحقق من كائنات بروتوكول إدارة الشبكة البسيط (SNMP)، يجب عليك في بعض الأحيان معرفة ما يتم استقطابه بالضبط. لكي تفهم هذا تماما، تحتاج أن تعرف كيفية ربط الكائن الذي يتم استفتاؤه بما تريد إستطلاعه. يغطي هذا المستند المبادئ الأساسية لكيفية إستخدام الفهارس في SNMP لتجميع الكائنات في جداول.
يجب أن يكون لدى قراء هذا المستند معرفة بالمواضيع التالية:
معرفة عامة ببروتوكول SNMP
البرامج المستخدمة للاستعلام عن أجهزة Cisco عبر SNMP
تستند المعلومات الواردة في هذا المستند إلى إصدارات البرامج والمكونات المادية التالية:
UCD SNMP، الإصدار 4.2
Cisco Catalyst 5509 مع برنامج Cisco IOS® Software، الإصدار 5.5(7)
تم إنشاء المعلومات الواردة في هذا المستند من الأجهزة الموجودة في بيئة معملية خاصة. بدأت جميع الأجهزة المُستخدمة في هذا المستند بتكوين ممسوح (افتراضي). إذا كانت شبكتك مباشرة، فتأكد من فهمك للتأثير المحتمل لأي أمر.
للحصول على مزيد من المعلومات حول اصطلاحات المستندات، ارجع إلى اصطلاحات تلميحات Cisco التقنية.
أحد الأشياء الأولى التي تتعلمها، عندما تتعامل مع SNMP، هو ifIndex. هذا مفتاح أساسي لكل الكائنات. اعتبر ذلك طريقة لتفكيك جميع الواجهات (المادية والمنطقية) وتعيين قيمة لها. يتم تعيين هذه القيمة أثناء تحميل الجهاز، وقد لا يتم تغييرها. إذا كانت هناك حاجة لاستطلاع أي معلومات حول تلك الواجهة المحددة، فيجب أن تستخدم القيمة المعينة.
يتم تحديد IfIndex في قاعدة معلومات الإدارة (IF-MIB (RFC 1213 ) بهذه الطريقة:
InterfaceIndex ::= TEXTUAL-CONVENTION DISPLAY-HINT "d" STATUS current DESCRIPTION "A unique value, greater than zero, for each interface or interface sub-layer in the managed system. It is recommended that values are assigned contiguously starting from 1. The value for each interface sub- layer must remain constant at least from one re- initialization of the entity's network management system to the next re-initialization." SYNTAX Integer32 (1..2147483647)
بالنسبة لأي قاعدة معلومات إدارة (MIB)، تكون الطريقة السريعة لمعرفة الفهرس الذي ينظم الجدول هي النظر إلى إدخال الجدول:
ifEntry OBJECT-TYPE SYNTAX IfEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "An entry containing management information applicable to a particular interface." INDEX { ifIndex } ::= { ifTable 1 }
بافتراض قاعدة معلومات الإدارة (MIB) وإدخال جدول، يمكنك تحديد كيفية فهرسة الجدول. يزود القسم تالي مثال من ifIndex.
عندما تقوم بإصدار الأمر snmpwalk لاستطلاع كائن مستند إلى ifIndex (ifName) للمنفذ 7/4 على المحول، فأنت تحصل على هذا الإخراج:
sj-cse-568: snmpwalk 172.16.99.60 public ifname ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.1 = sc0 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.2 = sl0 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.3 = VLAN-1 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.4 = VLAN-1002 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.5 = VLAN-1004 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.6 = VLAN-1005 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.7 = VLAN-1003 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.8 = 7/1 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.9 = 7/2 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.10 = 7/3 !--- This is the relevant line: ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.11 = 7/4 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.12 = 7/5 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.13 = 7/6 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.14 = 7/7 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.15 = 7/8 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.16 = 7/9 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.17 = 7/10 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.18 = 7/11 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.19 = 7/12 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.20 = ATM8/0 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.22 = /A ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.23 = /B ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.24 = Nu0 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.25 = LEC/ATM8/0.10 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.532 = 3/1 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.533 = 3/2 !--- Output suppressed.
في هذا الإخراج الناتج من إستطلاع ل ifName (ifDescr على الموجهات)، لاحظ وجود رقم مرتبط بكل صف، بعد ifName. هذا هو ifIndex الذي تم تعيينه للواجهة الفعلية في نفس الصف. هذا يعني أن الصف الثاني من الاستطلاع، ميناء 7/4، تم تعيين IFindex 11. إذا كنت تريد معلومات عن المنفذ 7/4 من كائن IFindexed، أستخدم فهرس من 11. وهذا يعني إضافة .11 إلى نهاية معرف كائن MIB (OID)، لاسترداد مثيل هذا الكائن الذي يتوافق مع نفس قيم IfIndex.
في بعض الأحيان، لا يتم فهرسة الجداول بواسطة ifIndex، مثل إستخدام Bridge-MIB. يفحص هذا الإخراج كيفية فهرسته:
dot1dBasePortEntry OBJECT-TYPE SYNTAX Dot1dBasePortEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "A list of information for each port of the bridge." REFERENCE "IEEE 802.1D-1990: Section 6.4.2, 6.6.1" INDEX { dot1dBasePort } ::= { dot1dBasePortTable 1 }
يوضح هذا الإخراج أن dot1dBasePortEntry يتم فهرسته بواسطة dot1dBasePort. كيف تتم ترجمة ذلك مرة أخرى إلى ifIndex؟ يقوم BRIDGE-MIB بالوصول إلى كائن يسمى dot1dBasePortIfIndex. يتم تعريف الكائن بهذه الطريقة:
dot1dBasePortIfIndex OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "The value of the instance of the ifIndex object, defined in MIB-II, for the interface corresponding to this port." ::= { dot1dBasePortEntry 2 }
يوضح هذا الإخراج كيفية الارتباط من قاعدة معلومات الإدارة (BRIDGE-MIB) إلى قاعدة معلومات الإدارة (IF-MIB). المثال التالي يوضح كيف يتلائم كل شيء مع بعضه.
ملاحظة: يتم إنشاء قاعدة معلومات الإدارة (BRIDGE-MIB) لكل شبكة محلية ظاهرية (VLAN)، وبالتالي يجب إستخدام "public@vlan-id" للبيئات غير التابعة لشبكة VLAN1.
عندما تقوم بإصدار سير سريع على BRIDGE-MIB، فإنك تحصل على إخراج العينة التالية لفهرس. أستخدم dot1dBasePortIfIndex (.1.3.6.1.2.17.1.4.1.2) لتعيينه مرة أخرى إلى ifIndex. بمجرد أن يكون لديك IfIndex، استخدمه لاستبيان الكائنات الأخرى بناء على IfIndex.
sj-cse-568: snmpwalk 172.16.99.60 public .1.3.6.1.2.1.17.1.4.1.2 17.1.4.1.2.203 = 671 17.1.4.1.2.204 = 672 17.1.4.1.2.205 = 673 17.1.4.1.2.206 = 674 17.1.4.1.2.207 = 675 17.1.4.1.2.208 = 676 17.1.4.1.2.209 = 677 17.1.4.1.2.210 = 678 17.1.4.1.2.211 = 679 17.1.4.1.2.212 = 680 17.1.4.1.2.213 = 681 17.1.4.1.2.214 = 682 17.1.4.1.2.215 = 683 17.1.4.1.2.216 = 684 17.1.4.1.2.257 = 581 17.1.4.1.2.385 = 8 17.1.4.1.2.386 = 9 17.1.4.1.2.387 = 10 17.1.4.1.2.388 = 11 17.1.4.1.2.389 = 12 17.1.4.1.2.390 = 13 17.1.4.1.2.391 = 14 17.1.4.1.2.392 = 15 17.1.4.1.2.393 = 16 17.1.4.1.2.394 = 17 17.1.4.1.2.395 = 18 17.1.4.1.2.396 = 19 17.1.4.1.2.449 = 22
يظهر سطر النص الغامق (17.1.4.1.2.388 = 11) أن .388 هو فهرس. نظرا لأنك قمت باستطلاع كائن dot1dBasePortIfIndex من BRIDGE-MIB، فإن .388 هو dot1dBasePortIfIndex. 11 في سطر المخرجات هو في الواقع ifIndex. إذا قمت بتجميع المعلومات من هذا الاستطلاع ومن الاستطلاع السابق، أنت يستطيع حددت أن ميناء 7/4 له ifIndex من 11 و dot1dBasePortIfIndex (فهرسة ل BRIDGE-MIB) من .388.