تسعى مجموعة الوثائق لهذا المنتج جاهدة لاستخدام لغة خالية من التحيز. لأغراض مجموعة الوثائق هذه، يتم تعريف "خالية من التحيز" على أنها لغة لا تعني التمييز على أساس العمر، والإعاقة، والجنس، والهوية العرقية، والهوية الإثنية، والتوجه الجنسي، والحالة الاجتماعية والاقتصادية، والتمييز متعدد الجوانب. قد تكون الاستثناءات موجودة في الوثائق بسبب اللغة التي يتم تشفيرها بشكل ثابت في واجهات المستخدم الخاصة ببرنامج المنتج، أو اللغة المستخدمة بناءً على وثائق RFP، أو اللغة التي يستخدمها منتج الجهة الخارجية المُشار إليه. تعرّف على المزيد حول كيفية استخدام Cisco للغة الشاملة.
ترجمت Cisco هذا المستند باستخدام مجموعة من التقنيات الآلية والبشرية لتقديم محتوى دعم للمستخدمين في جميع أنحاء العالم بلغتهم الخاصة. يُرجى ملاحظة أن أفضل ترجمة آلية لن تكون دقيقة كما هو الحال مع الترجمة الاحترافية التي يقدمها مترجم محترف. تخلي Cisco Systems مسئوليتها عن دقة هذه الترجمات وتُوصي بالرجوع دائمًا إلى المستند الإنجليزي الأصلي (الرابط متوفر).
يصف هذا وثيقة موجز عن NMI في cisco IOS® XR وكيفية إستخدام Pyang وفحص أشجار النموذج.
توصي Cisco بأن تكون لديك معرفة بالمواضيع التالية:
لا يقتصر هذا المستند على إصدارات أجهزة معينة يطبقها على إصدار 64 بت (eXR).
تم إنشاء المعلومات الواردة في هذا المستند من الأجهزة الموجودة في بيئة معملية خاصة. بدأت جميع الأجهزة المُستخدمة في هذا المستند بتكوين ممسوح (افتراضي). إذا كانت شبكتك قيد التشغيل، فتأكد من فهمك للتأثير المحتمل لأي أمر.
وبشكل عام، هناك بروتوكولات مختلفة لتكوين الشبكة، من NETconf و RESTCONF و gNMI (مكالمات الإجراء عن بعد ل Google (gRPC) و gRPC Network Management Interface)، من بين أمور أخرى. ويتم إستخدام هذه الطرز للتكوين لإدارة أجهزة الشبكة وتهدف دائما إلى أتمتة العمليات التي يمكن أن تكون ميكانيكية.
تستخدم هذه البروتوكولات نماذج بيانات مختلفة للسماح للمستخدمين بفهم ما هي عملية جهاز الشبكة، وبعبارة أخرى، فهي عبارة عن معلومات منظمة ومخطط يقوم بتطبيع المعلومات وكيفية إستهلاكها بواسطة الجهاز، وفي هذه الحالة، الموجه.
تقوم شركة GNMI بمراقبة تسليم البيانات وتوفير RPC (مكالمات الإجراء البعيد) للتحكم في الأجهزة المختلفة في الشبكة.
تعمل واجهة إدارة الشبكة (NMI) على أربع وظائف:
ملاحظة: شاركت Cisco الكثير من المعلومات حول هذا الموضوع. لمزيد من المعلومات من gRPC، انقر فوق الارتباط التالي: مدونة xrdocs - OpenConfigNMI
بروتوكول إدارة الشبكة |
gNMI |
النقل المستخدم |
HTTP/2 |
مدعوم من قبل |
بائع محايد |
ترميز |
بروتو بف |
Proto Buff هي طريقة محايدة للغات، محايدة للنظام الأساسي، لإزالة تسلسل البيانات وتسلسلها بين جهازين، حيث يكون لكل طلب رد.
ملاحظة: لمزيد من التفاصيل في بروتوكول RCP وبروتو Port Buff انقر فوق الارتباط التالي: دليل بروتوكول GRPC.
التالي هو التكوين الأساسي للموجه:
RP/0/RSP0/CPU0:XR(config)#grpc
RP/0/RSP0/CPU0:XR(config-grpc)#address-family ipv4
RP/0/RSP0/CPU0:XR(config-grpc)#max-request-total 256
RP/0/RSP0/CPU0:XR(config-grpc)#max-request-per-user 32
grpc
address-family ipv4
max-request-total 256
max-request-per-user 32
ملاحظة: يمكن تكوين منفذ استنادا إلى الإعداد، الإعداد الافتراضي، دون إستخدام TLS هو 57400، للحصول على مزيد من المعلومات انقر: github - GRPC يتم بدء التشغيل
ان pYANG هو موثق يانغ مكتوب بلغة بايثون. هذه المكتبة المخصصة ل Python تساعد في التحقق من نماذج YANG وأيضا، معرفتها.
لكي يعمل هذا كما في الوثائق (وثائق PYANG)، يقترح إنشاء بيئة افتراضية في الكمبيوتر.
البيئة الظاهرية لتشغيل وثائق VP
مطلوب للتشغيل:
python -m venv <name of the directory>
على سبيل المثال (في وحدة MacOS الطرفية):
% mkdir test
% cd test
% python3 -m venv virtual_env
% ls
virtual_env
لتثبيت pYANG في قرص البيئة الافتراضية هذا إلى الدليل ولصق التالي:
% cd virual_env
% git clone https://github.com/mbj4668/pyang.git
% cd pyang
% pip install -e .
لهذا العرض التوضيحي، تم إستخدام pip python3، بمجرد إصدار تثبيت PIP -e، قم بتنشيط الواجهة: مصدر <دليل البيئة الظاهرية>/bin/activate (لنظام التشغيل MacOS).
% source virtual_env/bin/activate
% python3 -m pip install pyang
Collecting pyang
Downloading pyang-2.6.0-py2.py3-none-any.whl (594 kB)
|████████████████████████████████| 594 kB 819 kB/s
Collecting lxml
Downloading lxml-5.1.0-cp39-cp39-macosx_11_0_arm64.whl (4.5 MB)
|████████████████████████████████| 4.5 MB 14.2 MB/s
Installing collected packages: lxml, pyang
Successfully installed lxml-5.1.0 pyang-2.6.0
% pyang -h
Usage: pyang [options] [<filename>...]
Validates the YANG module in <filename> (or stdin), and all its dependencies.
Options:
-h, --help Show this help message and exit
-v, --version Show version number and exit
<snip>
مع تركيب برنامج يانغ وتشغيله، استمر في تنزيل النماذج.
في الارتباط التالي، توجد جميع الطرز التي يشغلها Cisco IOS XR: الطرز Cisco IOS XR.
يقترح إستنساخ هذه النماذج في دليل VV باستخدام إرتباط الرمز التالي: https://github.com/YangModels/yang.git
ملاحظة: لم يتم القيام بذلك باستخدام البيئة الظاهرية التي تم تنشيطها.
% git clone https://github.com/YangModels/yang.git
Cloning into 'yang'...
remote: Enumerating objects: 54289, done.
remote: Counting objects: 100% (1910/1910), done.
remote: Compressing objects: 100% (323/323), done.
remote: Total 54289 (delta 1643), reused 1684 (delta 1586), pack-reused 52379
Receiving objects: 100% (54289/54289), 116.64 MiB | 8.98 MiB/s, done.
Resolving deltas: 100% (42908/42908), done.
Updating files: 100% (112197/112197), done.
قم بتنشيط البيئة الافتراضية مرة أخرى واختبر الاستعلام التالي: شجرة Pyang -f yang/vendor/cisco/xr/711/Cisco-IOS-XR-ifmgr-cfg.yang.
(virtual_env) % pyang -f tree yang/vendor/cisco/xr/711/Cisco-IOS-XR-ifmgr-cfg.yang
yang/vendor/cisco/xr/711/Cisco-IOS-XR-ifmgr-cfg.yang:5: error: module "Cisco-IOS-XR-types" not found in search path
yang/vendor/cisco/xr/711/Cisco-IOS-XR-ifmgr-cfg.yang:8: error: module "cisco-semver" not found in search path
module: Cisco-IOS-XR-ifmgr-cfg
+--rw global-interface-configuration
| +--rw link-status? Link-status-enum
+--rw interface-configurations
+--rw interface-configuration* [active interface-name]
+--rw dampening
| +--rw args? enumeration
| +--rw half-life? uint32
| +--rw reuse-threshold? uint32
| +--rw suppress-threshold? uint32
| +--rw suppress-time? uint32
| +--rw restart-penalty? uint32
+--rw mtus
| +--rw mtu* [owner]
| +--rw owner xr:Cisco-ios-xr-string
| +--rw mtu uint32
+--rw encapsulation
| +--rw encapsulation? string
| +--rw capsulation-options? uint32
+--rw shutdown? empty
+--rw interface-virtual? empty
+--rw secondary-admin-state? Secondary-admin-state-enum
+--rw interface-mode-non-physical? Interface-mode-enum
+--rw bandwidth? uint32
+--rw link-status? empty
+--rw description? string
+--rw active Interface-active
+--rw interface-name xr:Interface-name
ملاحظة: لاحظ أن المنشورات لها شكل بيانات مثل String، UiInt32، إلى آخره وما إلى ذلك؛ بينما لا تعرض Root هذه المعلومات. تم تخصيص عمليات مثل GET و SET لسحب/تحديث هذه القيم.
ملاحظة أخرى هي أن معظم الطرز تتطلب عمليات زيادة للحصول على التكوين الكامل، في إخراج واجهة سطر الأوامر (CLI) هناك تكوين إدارة الواجهة الأساسي، في حالة الحاجة إلى عرض IPv4، أستخدم التالي:
% pyang -f tree yan2/vendor/cisco/xr/711/Cisco-IOS-XR-ifmgr-cfg.yang yan2/vendor/cisco/xr/711/Cisco-IOS-XR-ipv4-io-cfg.yang --path=yan2/vendor/cisco/xr/711
module: Cisco-IOS-XR-ifmgr-cfg
+--rw global-interface-configuration
| +--rw link-status? Link-status-enum
+--rw interface-configurations
+--rw interface-configuration* [active interface-name]
+--rw dampening
| +--rw args? enumeration
| +--rw half-life? uint32
| +--rw reuse-threshold? uint32
| +--rw suppress-threshold? uint32
| +--rw suppress-time? uint32
| +--rw restart-penalty? uint32
+--rw mtus
| +--rw mtu* [owner]
| +--rw owner xr:Cisco-ios-xr-string
| +--rw mtu uint32
+--rw encapsulation
| +--rw encapsulation? string
| +--rw capsulation-options? uint32
+--rw shutdown? empty
+--rw interface-virtual? empty
+--rw secondary-admin-state? Secondary-admin-state-enum
+--rw interface-mode-non-physical? Interface-mode-enum
+--rw bandwidth? uint32
+--rw link-status? empty
+--rw description? string
+--rw active Interface-active
+--rw interface-name xr:Interface-name
+--rw ipv4-io-cfg:ipv4-network
| +--rw ipv4-io-cfg:bgp-pa
| | +--rw ipv4-io-cfg:input
| | | +--rw ipv4-io-cfg:source-accounting? boolean
| | | +--rw ipv4-io-cfg:destination-accounting? boolean
| | +--rw ipv4-io-cfg:output
| | +--rw ipv4-io-cfg:source-accounting? boolean
| | +--rw ipv4-io-cfg:destination-accounting? boolean
| +--rw ipv4-io-cfg:verify
| | +--rw ipv4-io-cfg:reachable? Ipv4-reachable
| | +--rw ipv4-io-cfg:self-ping? Ipv4-self-ping
| | +--rw ipv4-io-cfg:default-ping? Ipv4-default-ping
| +--rw ipv4-io-cfg:bgp
| | +--rw ipv4-io-cfg:qppb
| | | +--rw ipv4-io-cfg:input
| | | +--rw ipv4-io-cfg:source? Ipv4-interface-qppb
| | | +--rw ipv4-io-cfg:destination? Ipv4-interface-qppb
| | +--rw ipv4-io-cfg:flow-tag
| | +--rw ipv4-io-cfg:flow-tag-input
| | +--rw ipv4-io-cfg:source? boolean
| | +--rw ipv4-io-cfg:destination? boolean
| +--rw ipv4-io-cfg:addresses
| | +--rw ipv4-io-cfg:secondaries
| | | +--rw ipv4-io-cfg:secondary* [address]
| | | +--rw ipv4-io-cfg:address inet:ipv4-address-no-zone
| | | +--rw ipv4-io-cfg:netmask inet:ipv4-address-no-zone
| | | +--rw ipv4-io-cfg:route-tag? uint32
| | +--rw ipv4-io-cfg:primary!
| | | +--rw ipv4-io-cfg:address inet:ipv4-address-no-zone
| | | +--rw ipv4-io-cfg:netmask inet:ipv4-address-no-zone
| | | +--rw ipv4-io-cfg:route-tag? uint32
| | +--rw ipv4-io-cfg:unnumbered? xr:Interface-name
| | +--rw ipv4-io-cfg:dhcp? empty
| +--rw ipv4-io-cfg:helper-addresses
| | +--rw ipv4-io-cfg:helper-address* [address vrf-name]
| | +--rw ipv4-io-cfg:address inet:ipv4-address-no-zone
| | +--rw ipv4-io-cfg:vrf-name xr:Cisco-ios-xr-string
| +--rw ipv4-io-cfg:forwarding-enable? empty
| +--rw ipv4-io-cfg:icmp-mask-reply? empty
| +--rw ipv4-io-cfg:tcp-mss-adjust-enable? empty
| +--rw ipv4-io-cfg:ttl-propagate-disable? empty
| +--rw ipv4-io-cfg:point-to-point? empty
| +--rw ipv4-io-cfg:mtu? uint32
+--rw ipv4-io-cfg:ipv4-network-forwarding
+--rw ipv4-io-cfg:directed-broadcast? empty
+--rw ipv4-io-cfg:unreachables? empty
+--rw ipv4-io-cfg:redirects? empty
في هذا الاستعلام يتم إستخدام طرازين: Cisco-IOS-XR-ifmgr-cfg.yang و Cisco-IOS-XR-IPV4-io-cfg.yang، ويتم الآن عرض عنوان IPv4 كورقة.
ملاحظة: في حالة ظهور خطأ مثل: yang/vendor/cisco/xr/711/Cisco-IOS-XR-ifmgr-cfg.yang:5: خطأ: وحدة نمطية "Cisco-IOS-XR-types" لم يتم العثور عليها في مسار البحث" أضف —path= في الأمر.
مع تنفيذ هذا الإجراء والتحقق منه، يمكن لأي مستخدم طلب معلومات عن عمليات gNMI وتغيير التاريخ، ولمزيد من الأمثلة انقر فوق الارتباط التالي: دليل تكوين قابلية البرمجة
في حالة رغبة المستخدم في تشغيل واجهة برمجة تطبيقات بسيطة، توجد أدوات مثل: grpcc.
يتم تثبيت واجهة برمجة التطبيقات هذه عبر NPM، وهذه هي الأداة المستخدمة في إرتباط دليل تكوين قابلية البرمجة، كما يقول الارتباط يشارك المزيد من الأمثلة للمستخدمين لاختبار الاستفسارات والردود.
بالنسبة إلى GNMI، يلزم التحقق من الاستعلام قبل تجميع أي إدخال، ومعظم واجهات برمجة التطبيقات مثل:
الكل، قم بعرض الخطأ الذي قام الموجه بتكوينه.
على سبيل المثال:
"cisco-grpc:errors": {
"error": [
{
"error-type": "application",
"error-tag": "operation-failed",
"error-severity": "error",
"error-message": "'YANG framework' detected the 'fatal' condition 'Operation failed'"
}
]
}
}
أو
"error": [
{
"error-type": "application",
"error-tag": "operation-failed",
"error-severity": "error",
"error-path": <path>,
"error-message": "'sysdb' detected the 'warning' condition 'A verifier or EDM callback function returned: 'not found''"
}
]
هذه هي الأخطاء التابعة للنظام الأساسي التي يلزم التحقق منها على طول الموجه. من المقترح التحقق من إمكانية إصدار الأوامر الموجودة في الاستعلام أيضا في الموجه عبر CLI (واجهة سطر الأوامر).
ل هذا نوع الخطأ، أو أي آخر متصل ب ال cisco ios XR منصة مشاركة المعلومات التالية إلى TAC:
{
"Cisco-IOS-XR-ifmgr-cfg:interface-configurations":
{ "interface-configuration": [
{
"active": "act",
"interface-name": "Loopback0",
"description": "LOCAL TERMINATION ADDRESS",
"interface-virtual": [
null
],
"Cisco-IOS-XR-ipv4-io-cfg:ipv4-network": {
"addresses": {
"primary": {
"address": "172.16.255.1",
"netmask": "255.255.255.255"
}
}
}
}
]
}
}
show grpc trace all
الرجاء إختبار الاستعلام عدة مرات وتكرار الأمر "show grpc trace all".
الأخطاء متنوعة لكنها تظهر أيضا المكون الذي يمكن أن يولد إصدار:
على سبيل المثال:
يوضح المثال التالي عرض tech لعملية sysdb التي تظهر الخطأ.
show tech-support sysdb
بالنسبة لهذا الإخراج، يعرض الخطأ مكونا والخطأ، ويجمع أي show tech support الذي يمكن ربطه بالخطأ الذي يتم عرضه.
بعد تجميع هذه المعلومات، قم أيضا بإضافة مجموعة الأوامر التالية:
في XR VM:
show tech-support tctcpsr
show tech-support grpcc
إظهار GSP للدعم الفني
إظهار الدعم الفني
المراجعة | تاريخ النشر | التعليقات |
---|---|---|
1.0 |
15-Feb-2024 |
الإصدار الأولي |