{"id":333871,"date":"2022-05-31T15:01:21","date_gmt":"2022-05-31T15:01:21","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=333871"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=333871","title":{"rendered":"<span>\u0410\u0414\u0421\u041c6. \u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u0441\u0435\u0442\u0435\u0432\u044b\u043c\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p><em>\u042d\u0442\u043e \u0432\u0442\u043e\u0440\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f &#8212; \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e-\u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0440\u0430\u0437\u0431\u043e\u0440 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432 \u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0435\u0442\u0438.<\/em><\/p>\n<p><em>\u0415\u0441\u043b\u0438 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u043f\u0440\u0430\u0432\u043a\u0438, \u044f \u043e\u0442\u0441\u044b\u043b\u0430\u044e \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f \u043a <\/em><a href=\"https:\/\/habr.com\/ru\/post\/667012\/\" rel=\"noopener noreferrer nofollow\"><em>\u0441\u0442\u0430\u0442\u044c\u0435-\u0441\u043f\u0443\u0442\u043d\u0438\u043a\u0443<\/em><\/a><em>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u044b \u0434\u0432\u0438\u0433\u0430\u0435\u043c\u0441\u044f \u043e\u0442 \u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u0440\u0435\u043c\u0451\u043d \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u0435 \u0447\u0435\u043b\u043e\u0432\u0435\u0447\u0435\u0441\u0442\u0432\u0430. \u041a\u0430\u043a\u0443\u044e \u0440\u043e\u043b\u044c \u0441\u044b\u0433\u0440\u0430\u043b\u0438 \u0432 \u043d\u0430\u0448\u0435\u043c \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u043c IETF, ISO, \u043e\u043b\u0434\u043e\u0432\u044b\u0435 \u0438 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0432\u0435\u043d\u0434\u043e\u0440\u044b \u0438 \u0434\u0430\u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043b\u044e\u0434\u0438.<\/em><\/p>\n<p><em>\u0412 \u044d\u0442\u043e\u0439 \u0436\u0435 \u043c\u044b \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0434\u0435\u0440\u0435\u0432\u043e XML, \u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043d\u0430 \u0432\u043a\u0443\u0441 \u043a\u0430\u043f\u0430\u0431\u0438\u043b\u0438\u0442\u0438 NETCONF, \u0448\u043b\u0451\u043c \u043f\u0435\u0440\u0432\u044b\u0435 RPC \u0438 \u043d\u0430\u043a\u043e\u043d\u0435\u0446 \u0443\u0436\u0435 \u0440\u0430\u0441\u0441\u0442\u0430\u0432\u0438\u043c \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0431\u0443\u043a\u0432\u044b YANG, OpenConfig, gNMI.<\/em><\/p>\n<p><em>\u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043f\u043e\u043b\u044c\u0437\u0443 \u0432\u0430\u043c \u043f\u0440\u0438\u043d\u0435\u0441\u0443\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u0435 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0435 \u0441\u0442\u0430\u0442\u044c\u0438. \u0412\u0442\u043e\u0440\u0430\u044f \u0431\u0435\u0437 \u043f\u0435\u0440\u0432\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u0430. \u041f\u0435\u0440\u0432\u0430\u044f \u0431\u0435\u0437 \u0432\u0442\u043e\u0440\u043e\u0439 &#8212; \u0431\u0435\u043b\u043b\u0435\u0442\u0440\u0438\u0441\u0442\u0438\u043a\u0430.<\/em><\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1a0\/6bd\/312\/1a06bd31252bfd2e8651c4a4e8d8462a.png\" width=\"1868\" height=\"1379\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1a0\/6bd\/312\/1a06bd31252bfd2e8651c4a4e8d8462a.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0421\u0440\u0430\u0437\u0443 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u044e, \u0447\u0442\u043e \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0438 \u043d\u0443\u0434\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0430\u0432\u0442\u043e\u0440 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0440\u0430\u0437 \u0440\u0435\u0448\u0438\u043b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u0447\u0451\u043c-\u0442\u043e, \u0438 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u0440\u0430\u0437\u043e\u043c. \u0418 \u0432\u0430\u043c, \u043a\u043b\u044f\u043d\u0443\u0441\u044c, \u0435\u0449\u0451 \u043f\u043e\u0432\u0435\u0437\u043b\u043e, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430 \u0434\u0432\u0443\u0445\u0441\u043e\u0442\u0442\u044b\u0441\u044f\u0447\u043d\u043e\u043c \u0441\u0438\u043c\u0432\u043e\u043b\u0435 \u044f \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b, \u043a\u0430\u043a \u0435\u0451 \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u043d\u0430 \u0434\u0432\u0435 \u0447\u0430\u0441\u0442\u0438.<br \/>\u0422\u0443\u0442 \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u043f\u043e \u043a\u043e\u0441\u0442\u043e\u0447\u043a\u0430\u043c \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u0441\u0435\u0442\u0435\u0432\u044b\u043c \u0436\u0435\u043b\u0435\u0437\u043e\u043c.<br \/>\u041b\u0438\u0448\u044c \u0432\u0441\u043a\u043e\u043b\u044c\u0437\u044c \u043c\u044b \u0437\u0430\u0434\u0435\u043d\u0435\u043c CLI \u0438 SNMP, \u043a\u0430\u043a \u043d\u0435 \u0438\u043c\u0435\u044e\u0449\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0437\u043d\u0430\u0447\u0438\u043c\u043e\u0441\u0442\u0438 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438, \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0433\u043b\u0443\u0431\u043e\u043a\u043e \u0441 NETCONF &#8212; \u044d\u0442\u043e \u043d\u043e\u0432\u044b\u0439 SNMP \u0438\u043b\u0438 \u0432\u0441\u0451 \u0436\u0435 \u0443 \u043d\u0435\u0433\u043e \u0435\u0441\u0442\u044c \u0431\u0443\u0434\u0443\u0449\u0435\u0435 \u0445\u043e\u0442\u044f \u0431\u044b \u0441 YANG&#8217;\u043e\u043c, \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u043c RESTCONF&#8217;\u043e\u043c \u0438 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043c \u043d\u0430 \u0438\u043d\u0442\u0440\u0438\u0433\u0443\u044e\u0449\u0435\u043c &#8212; gRPC.<\/p>\n<p>\u041d\u0443 \u0430 \u043f\u043e \u0445\u043e\u0434\u0443 \u043d\u0435\u043c\u0438\u043d\u0443\u0435\u043c\u043e \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c\u0441\u044f \u0441 \u0442\u0435\u043c, \u0437\u0430 \u0447\u0442\u043e \u0441 \u043d\u0430\u0448\u0438\u043c\u0438 \u0433\u043b\u0430\u0437\u0430\u043c\u0438 \u0442\u0430\u043a \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u0435\u0442 XML, \u0441 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0435\u0439 RPC, \u043c\u043e\u0434\u0435\u043b\u044f\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0443\u0441\u043f\u0435\u0435\u043c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 OpenConfig.<\/p>\n<details class=\"spoiler\">\n<summary>\u0412\u0441\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u0410\u0414\u0421\u041c<\/summary>\n<div class=\"spoiler__content\">\n<p><a href=\"https:\/\/habr.com\/ru\/post\/453516\/\" rel=\"noopener noreferrer nofollow\">0. \u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/a><\/p>\n<p><a href=\"https:\/\/habr.com\/ru\/post\/458622\/\" rel=\"noopener noreferrer nofollow\">1. \u0412\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u0435\u0442\u0438<\/a> <\/p>\n<p><a href=\"https:\/\/habr.com\/ru\/post\/475614\/\" rel=\"noopener noreferrer nofollow\">2. \u0414\u0438\u0437\u0430\u0439\u043d \u0441\u0435\u0442\u0438<\/a> <\/p>\n<p><a href=\"https:\/\/habr.com\/ru\/post\/486000\/\" rel=\"noopener noreferrer nofollow\">3. IPAM\/DCIM-\u0441\u0438\u0441\u0442\u0435\u043c\u044b<\/a> <\/p>\n<p><a href=\"https:\/\/habr.com\/ru\/post\/553130\/\" rel=\"noopener noreferrer nofollow\">4. \u0416\u0438\u0437\u043d\u0435\u043d\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438<\/a> <\/p>\n<p><a href=\"https:\/\/habr.com\/ru\/post\/667012\/\" rel=\"noopener noreferrer nofollow\">5. \u0418\u0441\u0442\u043e\u0440\u0438\u044f \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438<\/a><\/p>\n<p><a href=\"https:\/\/habr.com\/ru\/post\/667440\/\" rel=\"noopener noreferrer nofollow\">6. \u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u0441\u0435\u0442\u0435\u0432\u044b\u043c\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438<\/a><\/p>\n<\/div>\n<\/details>\n<hr\/>\n<h2>\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435<\/h2>\n<ul>\n<li>\n<p><a href=\"#CLI\" rel=\"noopener noreferrer nofollow\">CLI &#8212; Command Line Interface<\/a>         <\/p>\n<ul>\n<li>\n<p><a href=\"#NEUN\" rel=\"noopener noreferrer nofollow\">9 \u0433\u0440\u0435\u0445\u043e\u0432 CLI<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#RPC\" rel=\"noopener noreferrer nofollow\">\u041a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f RPC &#8212; Remote Procedure Call<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#NETCONF\" rel=\"noopener noreferrer nofollow\">NETCONF<\/a>         <\/p>\n<ul>\n<li>\n<p><a href=\"#TIMUR_I_EGO_TEAM\" rel=\"noopener noreferrer nofollow\">NETCONF \u0438 \u0435\u0433\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u044b<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#XML\" rel=\"noopener noreferrer nofollow\">&lt;XML\/><\/a>     <\/p>\n<\/li>\n<li>\n<p><a href=\"#NETCONF_AGAIN\" rel=\"noopener noreferrer nofollow\">NETCONF Again<\/a>         <\/p>\n<ul>\n<li>\n<p><a href=\"#NC_OPERATIONS\" rel=\"noopener noreferrer nofollow\">\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438<\/a>             <\/p>\n<\/li>\n<li>\n<p><a href=\"#NC_TOOLS\" rel=\"noopener noreferrer nofollow\">\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0434\u043b\u044f NETCONF<\/a>             <\/p>\n<\/li>\n<li>\n<p><a href=\"#NC_APPLICATIONS\" rel=\"noopener noreferrer nofollow\">\u041a\u0430\u043a \u044d\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c<\/a>             <\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#RESTCONF\" rel=\"noopener noreferrer nofollow\">RESTCONF<\/a>     <\/p>\n<\/li>\n<li>\n<p><a href=\"#CALL_HOME\" rel=\"noopener noreferrer nofollow\">Call-Home<\/a>     <\/p>\n<\/li>\n<li>\n<p><a href=\"#GRPC_GNMI\" rel=\"noopener noreferrer nofollow\">gRPC\/gNMI<\/a>         <\/p>\n<ul>\n<li>\n<p><a href=\"#GRPC\" rel=\"noopener noreferrer nofollow\">gRPC<\/a>             <\/p>\n<\/li>\n<li>\n<p><a href=\"#GNMI\" rel=\"noopener noreferrer nofollow\">gNMI<\/a>             <\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#MODELS\" rel=\"noopener noreferrer nofollow\">\u041c\u043e\u0434\u0435\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0445<\/a>         <\/p>\n<ul>\n<li>\n<p><a href=\"#NATIVE_MODELS\" rel=\"noopener noreferrer nofollow\">Native<\/a>             <\/p>\n<\/li>\n<li>\n<p><a href=\"#STANDARD_MODELS\" rel=\"noopener noreferrer nofollow\">\u0412\u0435\u043d\u0434\u043e\u0440-\u043d\u0435\u0439\u0442\u0440\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438: <\/a><\/p>\n<ul>\n<li>\n<p><a href=\"#STANDARD_MODELS_IETF\" rel=\"noopener noreferrer nofollow\">IETF<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#STANDARD_MODELS_OC\" rel=\"noopener noreferrer nofollow\">OpenConfig<\/a>             <\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#YANG\" rel=\"noopener noreferrer nofollow\">YANG<\/a>         <\/p>\n<ul>\n<li>\n<p><a href=\"#YANG_PRACTICE\" rel=\"noopener noreferrer nofollow\">\u041f\u0440\u0435\u043f\u0430\u0440\u0438\u0440\u0443\u0435\u043c YANG-\u043c\u043e\u0434\u0435\u043b\u044c<\/a>             <\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#MODEL_DRIVEN_PROGRAMMABILITY\" rel=\"noopener noreferrer nofollow\">Model Driven Programmability<\/a>     <\/p>\n<\/li>\n<li>\n<p><a href=\"#ALLTOGETHER\" rel=\"noopener noreferrer nofollow\">\u0412\u0441\u0451 \u0432\u043c\u0435\u0441\u0442\u0435<\/a>         <\/p>\n<ul>\n<li>\n<p><a href=\"#IN_OTHER_WORLDS\" rel=\"noopener noreferrer nofollow\">\u0418 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438<\/a>             <\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#THEEND\" rel=\"noopener noreferrer nofollow\">\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/a>     <\/p>\n<\/li>\n<li>\n<p><a href=\"#LINKS\" rel=\"noopener noreferrer nofollow\">\u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438<\/a>     <\/p>\n<\/li>\n<\/ul>\n<p><a class=\"anchor\" name=\"CLI\" id=\"CLI\"><\/a><\/p>\n<hr\/>\n<h2>CLI &#8212; Command Line Interface<\/h2>\n<p>CLI &#8212; <em>\u0441\u0438\u044d\u043b\u0430\u0439, \u043a\u043b\u0438, \u0441\u043b\u0438, \u0441\u043b\u0430\u0439, \u0441\u043b\u0430\u0438, \u043a\u043e\u043d\u0441\u043e\u043b\u044c, \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b, \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430<\/em>. \u042d\u0442\u043e\u043c\u0443 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0443 \u0443\u0436\u0435 \u043b\u0435\u0442 60. \u0418 \u043e\u043d \u043d\u0438\u043a\u0443\u0434\u0430 \u043d\u0435 \u0434\u0435\u043b\u0441\u044f. \u041e\u043d \u0436\u0438\u0432\u0435\u0435 \u0432\u0441\u0435\u0445 \u0436\u0438\u0432\u044b\u0445 &#8212; \u0433\u0434\u0435-\u0442\u043e \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438, \u0433\u0434\u0435-\u0442\u043e \u0434\u043b\u044f \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438, \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u0434\u043b\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0438 \u0434\u0430\u0436\u0435 \u0434\u043b\u044f \u0435\u0436\u0435\u0434\u043d\u0435\u0432\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b.<br \/> \u041d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430\u0445, \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445, \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445, \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0442\u043e\u0440\u0430\u0445, \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440\u0430\u0445, \u0444\u0430\u0435\u0440\u0432\u043e\u043b\u0430\u0445, \u0410\u0422\u0421, \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0441\u0442\u0430\u043d\u0446\u0438\u044f\u0445. \u0422\u0440\u0443\u0434\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0442\u0430\u043a\u043e\u0435 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435, \u0433\u0434\u0435 \u043d\u0435\u0442 CLI, \u043f\u0443\u0441\u0442\u044c \u0434\u0430\u0436\u0435 \u0445\u043e\u0440\u043e\u0448\u043e \u0441\u043f\u0440\u044f\u0442\u0430\u043d\u043d\u043e\u0433\u043e.<\/p>\n<p>\u0418 \u0432 \u044d\u0442\u043e\u043c \u0435\u0433\u043e \u0441\u0438\u043b\u0430 &#8212; 100% \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043d\u0430 100% \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 CLI. \u041b\u0430\u0434\u043d\u043e 99,9% &#8212; \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0432\u044b\u043a\u0438\u043d\u0443\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0435 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435.<\/p>\n<p>\u042d\u0442\u043e \u043f\u043e\u0440\u043e\u0434\u0438\u043b\u043e \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u044b \u0441\u0442\u0440\u043e\u043a \u043a\u043e\u0434\u0430 \u043d\u0430 Perl, PHP, Python, Go, Ruby, \u0440\u0430\u0437\u0432\u0435\u0441\u0438\u0441\u0442\u044b\u0435 \u0434\u0436\u0438\u043d\u0434\u0436\u0430-\u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0438 \u043f\u043e 300 \u044d\u043a\u0441\u043f\u0435\u043a\u0442\u043e\u0432 \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0441\u043a\u0440\u0438\u043f\u0442\u0435. \u0418 \u0434\u0430\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u0443 \u0442\u044b\u0441\u044f\u0447\u0430\u043c \u043a\u043e\u0434\u0435\u0440\u043e\u0432, \u0432\u044b\u0440\u043e\u0441\u0448\u0438\u0445 \u0438\u0437 \u0441\u0435\u0442\u0435\u0432\u0438\u043a\u043e\u0432 \u0438 \u0430\u0434\u043c\u0438\u043d\u043e\u0432.\u0412\u043e\u0442 \u0443\u0436\u0435 \u043b\u0435\u0442 30, \u0430 \u0442\u043e \u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u043c\u044b \u0441\u0442\u0430\u0440\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0438\u0448\u0435\u043c \u0441\u043a\u0440\u0438\u043f\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441 \u0442\u043e\u0439 \u0438\u043b\u0438 \u0438\u043d\u043e\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u044c\u044e \u0443\u0441\u043f\u0435\u0445\u0430 \u043f\u0440\u0438\u043a\u0438\u0434\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u043c \u043f\u0435\u0440\u0435\u0434 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u043a\u043e\u0440\u043e\u0431\u043a\u043e\u0439.<\/p>\n<p>\u0418 \u0435\u0449\u0451 \u0434\u043e\u043b\u0433\u043e \u043c\u044b \u043d\u0435 \u043e\u0441\u0442\u0430\u043d\u0435\u043c\u0441\u044f \u0431\u0435\u0437 \u0434\u0435\u043b\u0430 &#8212; \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u044e\u0442 \u0432\u0441\u0451 \u043d\u043e\u0432\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0441\u043e\u0444\u0442\u0430, \u0435\u0449\u0451 \u0431\u043e\u043b\u0435\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u0436\u0435\u043b\u0435\u0437\u0430, \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f CLI, \u0438 \u0442\u0430\u043c, \u0433\u0434\u0435 \u0432\u0447\u0435\u0440\u0430 \u0431\u044b\u043b string, \u0437\u0430\u0432\u0442\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 integer. \u0418 \u0442\u0430\u043c, \u0433\u0434\u0435 \u0432\u0447\u0435\u0440\u0430 \u0431\u044b\u043b\u043e <code>no some shitty service enable<\/code>, \u0437\u0430\u0432\u0442\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 <code>some shitty service disable<\/code>. \u0422\u0430\u043c, \u0433\u0434\u0435 \u0432\u0447\u0435\u0440\u0430 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043d\u0430\u0434\u043e \u0431\u044b\u043b\u043e \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c <code>yes<\/code>, \u0437\u0430\u0432\u0442\u0440\u0430 \u0432\u044b\u043b\u0435\u0437\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0430.<\/p>\n<p>\u041a\u043b\u044f\u043d\u0443\u0441\u044c, \u044d\u0442\u043e \u0443\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u0435 \u043f\u0440\u043e\u0434\u043b\u0438\u0442\u0441\u044f \u0435\u0449\u0451 \u0434\u0435\u0441\u044f\u0442\u0438\u043b\u0435\u0442\u0438\u044f.<\/p>\n<p>\u0410 \u0447\u0435\u043c \u0436\u0435 \u043e\u043d\u043e \u0443\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u043e?<\/p>\n<ol>\n<li>\n<p>\u041c\u043e\u0434\u0435\u043b\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043d\u0435 \u0444\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b.<\/p>\n<\/li>\n<li>\n<p>\u041c\u043e\u0434\u0435\u043b\u044c \u0438 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043d\u0435 \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u044b.<\/p>\n<\/li>\n<li>\n<p>CLI \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u0435\u043d.<\/p>\n<\/li>\n<li>\n<p>\u0424\u043e\u0440\u043c\u0430\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0435\u0442 \u044f\u0432\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0441\u0442\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438.<\/p>\n<\/li>\n<li>\n<p>\u0421\u043b\u043e\u0436\u043d\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0442\u044c \u0440\u0430\u0437\u043d\u0438\u0446\u0443 \u043c\u0435\u0436\u0434\u0443 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439.<\/p>\n<\/li>\n<li>\n<p>\u0421\u043b\u043e\u0436\u043d\u043e \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u043f\u0430\u0442\u0447.<\/p>\n<\/li>\n<li>\n<p>\u0422\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u043e\u043d\u043d\u043e\u0441\u0442\u044c \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430.<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0446\u0435\u043b\u0435\u0432\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u2013 \u0437\u0430\u0434\u0430\u0447\u0430 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430.<\/p>\n<\/li>\n<\/ol>\n<p>\u0412\u044b\u0448\u0435 9 \u0441\u043c\u0435\u0440\u0442\u043d\u044b\u0445 \u0433\u0440\u0435\u0445\u043e\u0432 CLI, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u0443\u0441\u043b\u043e\u0432\u0438\u043b\u0438 \u0440\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u044f\u0437\u044b\u043a\u043e\u0432 \u0438\u0445 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f, \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432, \u043a\u0430\u043a SNMP, NETCONF \u0438 gNMI.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0441\u0451 \u043f\u043e \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0438\u0437 \u043d\u0438\u0445 \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0439\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0441\u0435\u043a\u0446\u0438\u044e.<\/p>\n<p><a class=\"anchor\" name=\"NEUN\" id=\"NEUN\"><\/a><\/p>\n<h3>9 \u0433\u0440\u0435\u0445\u043e\u0432 CLI<\/h3>\n<h4>1. \u041c\u043e\u0434\u0435\u043b\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043d\u0435 \u0444\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b<\/h4>\n<p>\u0415\u0441\u0442\u044c \u0442\u0430\u043a\u043e\u0435? \u0415\u0441\u0442\u044c \u0442\u0430\u043a\u043e\u0435.<\/p>\n<p>\u041a\u0430\u043a \u043c\u044b \u0443\u0437\u043d\u0430\u0451\u043c, \u043a\u0430\u043a\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0441 \u043a\u0430\u043a\u0438\u043c\u0438 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0432 \u043a\u0430\u043a\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u043d\u0430\u0434\u043e \u0434\u0430\u0442\u044c?<br \/>\u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e &#8212; \u0438\u0434\u0451\u043c \u0432 <em>Command reference guide<\/em> \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f \u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u043f\u0440\u043e\u0431 \u0438 \u043e\u0448\u0438\u0431\u043e\u043a \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435. \u0418\u043b\u0438 \u0432 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435. \u041d\u043e \u044d\u0442\u0438 \u0434\u0432\u0430 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 (\u0438 \u0435\u0449\u0451 \u043f\u043e\u043c\u043e\u0449\u044c \u0434\u0440\u0443\u0433\u0430) &#8212; \u044d\u0442\u043e \u0442\u043e, \u043a\u0430\u043a \u043c\u044b \u0443\u0437\u043d\u0430\u0451\u043c \u043c\u043e\u0434\u0435\u043b\u044c \u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438.<\/p>\n<p>\u0418 \u0441\u043a\u0430\u0436\u0435\u043c \u0442\u0430\u043a: \u043e\u043d\u0430 \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u0435\u0441\u0442\u044c &#8212; \u0432\u0435\u0434\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043e\u0434\u043d\u0430 \u0438 \u0442\u0430 \u0436\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u043e\u0434\u043d\u043e\u043c\u0443 \u0438 \u0442\u043e\u043c\u0443 \u0436\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0443 (\u043f\u0440\u0430\u0432\u0434\u0430 \u0432\u0435\u0434\u044c? \u041f\u0440\u0430\u0432\u0434\u0430?).<\/p>\n<p>\u0417\u043d\u0430\u0435\u043c \u043a\u0430\u043a \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b, \u0437\u043d\u0430\u0435\u043c \u043a\u0430\u043a \u043e\u043d\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f, \u0433\u0434\u0435 \u0431\u0443\u0434\u0435\u0442 IPv4, \u0430 \u0433\u0434\u0435 IPv6 \u0430\u0434\u0440\u0435\u0441\u0430? \u0415\u0441\u043b\u0438 \u043c\u044b \u0432\u0432\u0435\u0434\u0451\u043c \u0447\u0442\u043e-\u0442\u043e \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, CLI \u0440\u0443\u0433\u043d\u0451\u0442\u0441\u044f, \u043d\u043e \u043c\u044b \u043d\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043c OS \u0432 kernel panic \u0438\u043b\u0438 ASIC \u0432 \u0440\u0435\u0441\u0442\u0430\u0440\u0442?<\/p>\n<p>\u041f\u0440\u043e\u0441\u0442\u043e \u044d\u0442\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0435 \u0444\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430. \u0418\u043b\u0438 \u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435 \u043d\u0430\u043c \u043e\u0431 \u044d\u0442\u043e\u043c \u043d\u0435 \u0433\u043e\u0432\u043e\u0440\u044f\u0442.<br \/>\u0418 \u0434\u0430, \u0441\u0432\u043e\u0438\u043c \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u043e\u043c \u043c\u044b \u0440\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u0442\u0430\u043a\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u0432 \u0441\u0432\u043e\u0435\u0439 \u0433\u043e\u043b\u043e\u0432\u0435 \u0432\u044b\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0438 \u043d\u0430\u0443\u0447\u0430\u0435\u043c\u0441\u044f \u0435\u044e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f.<\/p>\n<p>\u041d\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434, \u043d\u0430\u043c \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0435\u0451 \u0445\u043e\u0440\u043e\u0448\u043e \u0438\u043b\u0438 \u043f\u043b\u043e\u0445\u043e \u0441\u0430\u043c\u0438\u043c \u0444\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c &#8212; \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u044f, \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0432\u0432\u043e\u0434\u0430 \u043a\u043e\u043c\u0430\u043d\u0434, \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0442\u0438\u043f\u044b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439. \u0418 \u0441\u043a\u043e\u0440\u0435\u0435 \u043f\u043b\u043e\u0445\u043e, \u043a\u043e\u043d\u0435\u0447\u043d\u043e.<\/p>\n<h4>2. \u041c\u043e\u0434\u0435\u043b\u044c \u0438 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043d\u0435 \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u044b<\/h4>\n<p>\u0412\u0441\u0451, \u0447\u0442\u043e \u043c\u044b \u0438\u0437\u0443\u0447\u0438\u043b\u0438 \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u044d\u0442\u0430\u043f\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u0432 \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 &#8212; \u0438 \u043c\u044b \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0435\u0440\u0435\u043e\u0431\u0443\u0447\u0430\u0435\u043c \u0441\u0435\u0431\u044f, \u043f\u043e\u0442\u043e\u043c \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u043a\u043e\u0434.<\/p>\n<h4>3. CLI \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u0435\u043d<\/h4>\n<p><code>expect(\"\u0412\u044b \u0442\u043e\u0447\u043d\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c bgp-\u0441\u0435\u0441\u0441\u0438\u044e, mpls \u043d\u0430 \u0432\u0441\u0435\u0439 \u043a\u043e\u0440\u043e\u0431\u043a\u0435 [Y\/n]?\"] Yes!<\/code><br \/><code>expect(\"\u0412\u044b \u0442\u043e\u0447\u043d\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u044d\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0439 [Y\/n]?\"] No!<\/code><\/p>\n<h4>4. \u0424\u043e\u0440\u043c\u0430\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439<\/h4>\n<p>\u041c\u044b \u0437\u0430\u0441\u044b\u043b\u0430\u0435\u043c \u0442\u0443\u0434\u0430 \u043d\u0435\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442. \u041c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043e\u0442\u0442\u0443\u0434\u0430 \u043d\u0435\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442. \u041c\u044b \u0435\u0433\u043e \u043a\u0440\u0430\u0444\u0442\u0438\u043c, \u043c\u044b \u0435\u0433\u043e \u043f\u0430\u0440\u0441\u0438\u043c. \u041c\u044b \u043f\u0438\u0448\u0435\u043c jinja-\u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0438 regexp&#8217;\u044b. \u041c\u044b \u043f\u0440\u043e\u0436\u0438\u0433\u0430\u0435\u043c \u0441\u0432\u043e\u044e \u0436\u0438\u0437\u043d\u044c.<\/p>\n<p>\u041b\u0443\u0447\u0448\u0435 json&#8217;\u044b \u043f\u0435\u0440\u0435\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c.<\/p>\n<blockquote>\n<p>\u0421\u0442\u0440\u043e\u0433\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u0431\u0443\u0434\u044c-\u0442\u043e json \u0438\u043b\u0438 \u0432\u044b\u0432\u043e\u0434 <code>show version<\/code>, \u0432 \u0438\u0442\u043e\u0433\u0435 \u044d\u0442\u043e \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043f\u043e\u0442\u043e\u043a \u0431\u0430\u0439\u0442\u043e\u0432 \u0438 \u043f\u043e \u0441\u0443\u0442\u0438 \u0442\u0435\u043a\u0441\u0442. \u0422\u043e\u043b\u044c\u043a\u043e \u0432 \u043e\u0434\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432 \u043d\u0451\u043c \u0435\u0441\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430, \u0430 \u0432 \u0434\u0440\u0443\u0433\u043e\u043c &#8212; \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u0431\u043e\u0440 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432. <\/p>\n<\/blockquote>\n<h4>5. \u041d\u0435\u0442 \u044f\u0432\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0441\u0442\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438<\/h4>\n<p>\u0412\u044b\u0432\u043e\u0434 CLI \u043d\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043d\u0438 \u0443\u0441\u043f\u0435\u0445, \u043d\u0438 \u043f\u0440\u043e\u0432\u0430\u043b. Warning \u0435\u0449\u0451 \u043d\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0448\u043b\u043e \u043d\u0435 \u0442\u0430\u043a. \u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0432\u044b\u0432\u043e\u0434\u0430 &#8212; \u0435\u0449\u0451 \u043d\u0435 \u043f\u0440\u0438\u0437\u043d\u0430\u043a \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0441\u0442\u0438.<\/p>\n<h4>6. \u0421\u043b\u043e\u0436\u043d\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0442\u044c \u0440\u0430\u0437\u043d\u0438\u0446\u0443 \u043c\u0435\u0436\u0434\u0443 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439<\/h4>\n<p>\u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0434\u0438\u0444\u0430\u0442\u044c \u0434\u0432\u0430 \u0442\u0435\u043a\u0441\u0442\u0430. \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u044d\u0442\u0438\u0445 \u0442\u0435\u043a\u0441\u0442\u0430\u0445 \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u0442\u0440\u043e\u043a. \u041e\u0434\u043d\u0430 \u0438 \u0442\u0430 \u0436\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c (\u0438 \u0431\u0443\u0434\u0435\u0442) \u0440\u0430\u0437\u043d\u043e\u0439 \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 \u041f\u041e. \u0420\u0430\u0437\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u0436\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u043d\u0430\u043f\u0440\u043e\u0442\u0438\u0432 \u043c\u043e\u0436\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0437\u043d\u0430\u0447\u0438\u0442\u044c \u0432 \u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435, \u0430 \u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u0437\u043d\u0430\u0447\u0438\u0442\u044c. \u041e\u0434\u043d\u0430 \u0438 \u0442\u0430 \u0436\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0430, \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430\u0445 \u043c\u043e\u0436\u0435\u0442 \u043e\u0437\u043d\u0430\u0447\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u043e\u0435 (\u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u0435 MPLS \u043d\u0430 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 \u0438\u043b\u0438 \u0432 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 &#8212; \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u044f). \u0414\u0430\u0436\u0435 IPv6-\u0430\u0434\u0440\u0435\u0441\u0430 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u0432 \u0441\u043e\u043a\u0440\u0430\u0449\u0451\u043d\u043d\u043e\u043c \u0438\u043b\u0438 \u043f\u043e\u043b\u043d\u043e\u043c \u0432\u0438\u0434\u0435.<\/p>\n<h4>7. \u0421\u043b\u043e\u0436\u043d\u043e \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u043f\u0430\u0442\u0447<\/h4>\n<p>\u041a\u0430\u043a \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u043f\u0443\u043d\u043a\u0442\u0430 &#8212; \u0432\u044b\u044f\u0441\u043d\u0438\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c &#8212; \u0442\u043e\u0436\u0435 \u043d\u0435\u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u043e. \u041d\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u043c\u0435\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c, \u043d\u043e \u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0443\u0434\u0430\u043b\u044f\u0442\u044c &#8212; \u0430 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 &#8212; \u043d\u0435 \u043e\u0434\u0438\u043d \u0438 \u043d\u0435 \u0434\u0432\u0430. \u041e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043e\u0442\u0440\u0438\u0446\u0430\u043d\u0438\u0435 \u043f\u0440\u044f\u043c\u043e\u0439. \u0427\u0430\u0441\u0442\u043e \u043d\u0443\u0436\u043d\u044b \u043d\u0435 \u0432\u0441\u0435 \u0435\u0451 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b. \u0412 \u043a\u0430\u043a\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u043e\u0442\u043c\u0435\u043d\u044f\u0442\u044c &#8212; \u0438 \u043d\u0435 \u043f\u043e\u043b\u043e\u043c\u0430\u0435\u0442 \u043b\u0438 \u044d\u0442\u043e \u0447\u0435\u0433\u043e-\u0442\u043e \u0435\u0449\u0451? \u0414\u0430\u0436\u0435 \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u043b\u0438.<\/p>\n<h4>8. \u0422\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u043e\u043d\u043d\u043e\u0441\u0442\u044c \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430<\/h4>\n<p>\u0412 \u0446\u0435\u043b\u043e\u043c \u043c\u044b \u0443\u0436\u0435 \u0438\u0437\u0431\u0430\u043b\u043e\u0432\u0430\u043d\u044b \u043a\u043e\u043c\u043c\u0438\u0442\u0430\u043c\u0438 &#8212; \u043c\u043d\u043e\u0433\u0438\u0435 \u0432\u0435\u043d\u0434\u043e\u0440\u044b \u0435\u0433\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442. \u041d\u043e \u043c\u043d\u043e\u0433\u0438\u0435 \u0435\u0449\u0451 \u043d\u0435\u0442. \u0410 \u0442\u0435, \u043a\u0442\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442, \u043c\u043e\u0436\u0435\u0442 \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0442\u043e\u0436\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c, \u043a\u0430\u043a \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f \u0432\u0432\u043e\u0434\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u043a\u043e\u043c\u043c\u0438\u0442\u0435, \u0438\u043b\u0438 \u043a\u043e\u043c\u043c\u0438\u0442 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0432\u0441\u0435\u0445 \u043a\u043e\u043c\u0430\u043d\u0434 \u0431\u0435\u0437 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0434\u0435\u043b\u044c\u0442\u044b.<\/p>\n<h4>9. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0446\u0435\u043b\u0435\u0432\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u2013 \u0437\u0430\u0434\u0430\u0447\u0430 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430<\/h4>\n<p>\u041e\u043e\u043e, \u044d\u0442\u043e \u0441\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 &#8212; \u0430 \u043a\u0430\u043a \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u043a \u0442\u043e\u043c\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u044b \u0436\u0435\u043b\u0430\u0435\u043c \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u0430 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443? \u041a\u0442\u043e \u0438 \u043a\u0430\u043a \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u043f\u0430\u0442\u0447, \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0433\u043e \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0437\u0430 \u0441\u043e\u0431\u043e\u0439, \u0447\u0442\u043e \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u044d\u0442\u0430\u043b\u043e\u043d\u0443?<\/p>\n<hr\/>\n<blockquote>\n<p>\u041d\u043e \u0442\u0443\u0442 \u0441\u0442\u043e\u0438\u0442 \u0431\u044b\u0442\u044c \u0447\u0443\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u0441\u0442\u043d\u044b\u043c &#8212; \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 CLI \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043b\u043e\u0445. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0435\u043d\u0434\u043e\u0440\u044b \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0442 CLI-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0438\u0437 YANG-\u043c\u043e\u0434\u0435\u043b\u0438, \u0447\u0442\u043e \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442 \u0447\u0451\u0442\u043a\u043e\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0442\u0435\u043c, \u0447\u0442\u043e \u0438 \u043a\u0430\u043a \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 CLI \u0438\u043b\u0438 \u043b\u044e\u0431\u044b\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b.<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 Nokia SR Linux \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u0430 \u0442\u0430\u043a \u0436\u0435 gNMI, JSON-RPC \u0438 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0441 \u0435\u0434\u0438\u043d\u044b\u043c API &#8212; <code>mgmt_srv<\/code> &#8212; \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0444\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u0438\u0437 \u043e\u0434\u043d\u043e\u0439 \u0438 \u0442\u043e\u0439 \u0436\u0435 YANG-\u043c\u043e\u0434\u0435\u043b\u0438, \u043d\u043e \u0438 \u0438\u043c\u0435\u044e\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u043e \u0447\u0442\u0435\u043d\u0438\u044e\/\u0437\u0430\u043f\u0438\u0441\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438.<\/p>\n<p> \u0414\u0438\u0444\u044b, \u043a\u043e\u043c\u043c\u0438\u0442\u044b, \u0434\u0430\u0442\u0430\u0441\u0442\u043e\u0440\u044b \u0438 \u043f\u0440\u043e\u0447\u0435\u0435, \u0442\u043e\u0436\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u0434\u0435\u043b\u0430\u043d\u044b \u0441 \u0443\u043c\u043e\u043c &#8212; \u043a\u0430\u043a \u0443 \u0442\u043e\u0439 \u0436\u0435 Nokia \u0438\u043b\u0438 \u0443 Juniper.<\/p>\n<p>\u041d\u043e \u044d\u0442\u043e \u0432\u0441\u0451, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u0435 \u043e\u0442\u043c\u0435\u043d\u044f\u0435\u0442 \u0444\u0430\u043a\u0442\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043d\u0435\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u043c. <\/p>\n<\/blockquote>\n<p>\u042d\u0442\u043e\u0433\u043e \u0432\u0441\u0435\u0433\u043e, \u043a\u0430\u043a \u043c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0434\u0430\u0436\u0435 \u043d\u0435 \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043d\u0430 CLI.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0431\u044b\u043b \u043e\u043f\u044b\u0442 \u0441 SNMP \u0438 \u0432\u0441\u0435\u043c\u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u043c\u0438 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430\u043c\u0438 (\u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0430\u044e \u043f\u0440\u043e\u0439\u0442\u0438 \u0432 <a href=\"https:\/\/habr.com\/ru\/users\/eucariot\/posts\/drafts\/\" rel=\"noopener noreferrer nofollow\">\u043f\u0435\u0440\u0432\u0443\u044e \u0441\u0442\u0430\u0442\u044c\u044e<\/a>). \u041f\u0440\u0438\u0437\u043d\u0430\u0435\u043c \u0435\u0433\u043e \u0443\u0434\u0430\u0447\u043d\u044b\u043c \u043b\u0438\u0448\u044c \u043f\u043e \u0442\u043e\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u0435, \u0447\u0442\u043e \u043e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b \u0441\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a \u043d\u043e\u0432\u044b\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u043c \u0438 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430\u043c.<\/p>\n<p>\u041d\u0435 \u0438\u0441\u0447\u0435\u0440\u043f\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043c\u043e\u0436\u043d\u043e \u0441\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a:<\/p>\n<ul>\n<li>\n<p>\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0432\u0438\u0434\u0435,<\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445,<\/p>\n<\/li>\n<li>\n<p>\u0427\u0438\u0442\u0430\u0435\u043c\u043e\u0441\u0442\u044c \u0434\u043b\u044f \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0441\u0430\u043c\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438,<\/p>\n<\/li>\n<li>\n<p>\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c &#8212; \u0437\u0430\u0434\u0430\u0447\u0443 \u043d\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e &#8212; \u043f\u0440\u043e\u0438\u0433\u0440\u0430\u0442\u044c,<\/p>\n<\/li>\n<li>\n<p>\u041c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043e\u0441\u043d\u043e\u0432\u0430\u043d \u043d\u0430 \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u044f\u0445,<\/p>\n<\/li>\n<li>\n<p>\u0422\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u043e\u043d\u043d\u043e\u0441\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0438 \u0438\u0445 \u043e\u0442\u043a\u0430\u0442,<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0446\u0435\u043b\u0435\u0432\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f.<\/p>\n<\/li>\n<\/ul>\n<p>\u041d\u0435 \u0432\u0441\u0435 \u043e\u043d\u0438 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u0441\u0440\u0430\u0437\u0443. \u041d\u0435 \u0432\u0441\u0435 \u043e\u043d\u0438 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c. \u041d\u043e \u044d\u0442\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u0430\u044f \u0438 \u043f\u0440\u0438\u044f\u0442\u043d\u0430\u044f \u0446\u0435\u043b\u044c.<\/p>\n<p>\u0418 \u043d\u0430 \u0437\u0430\u043c\u0435\u043d\u0443 SNMP, \u0432 \u043f\u043e\u0434\u043c\u043e\u0433\u0443 CLI \u0437\u0430\u0440\u043e\u0434\u0438\u043b\u0441\u044f NETCONF, \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u0438\u0434\u0435\u044e RPC &#8212; Remote Procedure Call. \u0427\u0442\u043e \u0437\u0430 RPC, \u043a\u0430\u043a\u043e\u0435 \u0443 \u043d\u0435\u0433\u043e \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0441 API \u0432\u044b \u0442\u0430\u043a \u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0437\u043d\u0430\u0442\u044c \u0438\u0437 \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438. \u041d\u0443, \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u043a\u043e\u0440\u043e\u0442\u043a\u043e.<\/p>\n<p><a class=\"anchor\" name=\"RPC\" id=\"RPC\"><\/a><\/p>\n<hr\/>\n<h2>\u041a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f RPC &#8212; Russian Pravoslavnaya Church<\/h2>\n<p>RPC &#8212; \u043a\u043b\u0438\u0435\u043d\u0442-\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u0442\u0430\u043a, \u0441\u043b\u043e\u0432\u043d\u043e \u0431\u044b \u043e\u043d \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u043b\u0441\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e. \u0422\u043e \u0435\u0441\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043a \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0435, \u043d\u0435 \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u044f\u0441\u044c \u043e \u0442\u043e\u043c, \u0433\u0434\u0435 \u0438 \u043a\u0430\u043a \u043e\u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f &#8212; \u0433\u043b\u0430\u0432\u043d\u043e\u0435, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0430 \u043e\u0442\u0432\u0435\u0442 \u0432\u0435\u0440\u043d\u0443\u043b\u0430. \u0410 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0443\u0436\u0435 \u0441\u0430\u043c\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u043e\u0439.<\/p>\n<p>\u041f\u0440\u0435\u043b\u0435\u0441\u0442\u044c \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043e\u043d, \u0432\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043a\u0440\u044b\u0442\u044c \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u0439 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440 \u0440\u0430\u0431\u043e\u0442\u044b. \u0410, \u0432\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u043d\u0430 \u0442\u043e\u0439, \u0434\u0440\u0443\u0433\u043e\u0439, \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435\u0432\u0430\u0436\u043d\u043e, \u043a\u0430\u043a\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430, \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430, \u044f\u0437\u044b\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 &#8212; \u0433\u043b\u0430\u0432\u043d\u043e\u0435, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0438 \u043f\u043e\u0434\u0447\u0438\u043d\u044f\u043b\u0438\u0441\u044c \u043e\u0434\u043d\u043e\u043c\u0443 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0437-\u043f\u043e\u0434 \u0432\u0438\u043d\u0434\u044b \u0432 exe-\u0448\u043d\u0438\u043a\u0435, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u043c \u043d\u0430 Delphi, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u0443\u044e \u043d\u0430 \u0433\u043e, \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u0443\u044e \u043d\u0430 \u043b\u0438\u043d\u0443\u043a\u0441\u0435. \u0418 \u043d\u0438\u043a\u0442\u043e \u0432\u0430\u043c \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043c\u0435\u0448\u0430\u0442\u044c!<\/p>\n<p>\u041d\u043e \u0447\u0442\u043e, \u043f\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u043c\u0443 \u0441\u0447\u0451\u0442\u0443, \u043c\u044b \u0434\u0435\u043b\u0430\u0435\u043c, \u043a\u043e\u0433\u0434\u0430, \u0437\u0430\u0439\u0434\u044f \u043f\u043e SSH, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043d\u0430 \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0442\u043e\u0440\u0435 \u0438\u043b\u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440\u0435? \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 \u043a\u043e\u0434. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u043c \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u0435 BGP, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441 \u043d\u043e\u0432\u044b\u043c \u043f\u0438\u0440\u043e\u043c.<\/p>\n<p>\u041d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435, \u043a\u0430\u043a \u0431\u044b\u043b\u043e \u0431\u044b \u0432\u043e\u0441\u0445\u0438\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u0435\u0441\u043b\u0438 \u0431\u044b \u0434\u043b\u044f \u0432\u044b\u0437\u043e\u0432\u0430 \u044d\u0442\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0437\u0430\u0445\u043e\u0434\u0438\u0442\u044c \u043d\u0430 \u0436\u0435\u043b\u0435\u0437\u043a\u0443 \u043f\u043e SSH \u0438 \u0432\u0431\u0438\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443?!<\/p>\n<p>\u041f\u043e\u0441\u0442\u043e\u0439\u0442\u0435! \u0414\u0430 \u0432\u0435\u0434\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u0431 \u044d\u0442\u043e\u043c \u043c\u044b \u0438 \u0433\u043e\u0432\u043e\u0440\u0438\u043c \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435. <\/p>\n<p>\u0411\u043e\u043b\u044c\u0448\u0443\u044e \u043e\u0441\u0442\u0430\u0432\u0448\u0443\u044e\u0441\u044f \u0447\u0430\u0441\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u0438 \u043c\u044b \u043f\u043e\u0441\u0432\u044f\u0442\u0438\u043c \u0438\u043c\u0435\u043d\u043d\u043e RPC.<\/p>\n<h4>\u041f\u0440\u0438\u043c\u0435\u0440<\/h4>\n<p>\u0410\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 \u0441\u0435\u0442\u0435\u0432\u044b\u043c \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e &#8212; \u044d\u0442\u043e \u043d\u0435\u043a\u0438\u0439 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b: \u0438\u043c\u044f, \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u0442\u0438\u043f\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0442\u0434.<\/p>\n<ol>\n<li>\n<p>\u041d\u0430\u0448\u0430 \u0443\u0431\u0435\u0440-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0435\u043a\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>add_bgp_peer_stub(ip=\"10.1.1.1\", as=\"12345\")<\/code>.<\/p>\n<\/li>\n<li>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f <code>add_bgp_peer_stub<\/code> \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u0434\u043b\u044f \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0435\u0433\u043e RPC, \u0438 \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0435\u0439 \u0443\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0442\u0430\u043d\u0443\u0442 payload&#8217;\u043e\u043c \u0434\u043b\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f. \u0422\u0430\u043a\u0430\u044f \u0443\u043f\u0430\u043a\u043e\u0432\u043a\u0430 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <strong>\u043c\u0430\u0440\u0448\u0430\u043b\u0438\u043d\u0433<\/strong>.<\/p>\n<\/li>\n<li>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u043f\u0430\u043a\u0435\u0442 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442 \u0435\u0433\u043e \u0432\u043d\u0438\u0437 \u043f\u043e \u0441\u0442\u0435\u043a\u0443 \u0438 &#8212; \u0432 \u0441\u0435\u0442\u044c.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 &#8212; \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 &#8212; \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043f\u0430\u043a\u0435\u0442\u0430.<\/p>\n<\/li>\n<li>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f, \u043f\u0440\u0438\u043d\u044f\u0432\u0448\u0430\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435, \u0432\u044b\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u0435\u0442 \u0438\u0437 \u043d\u0435\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b, \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0442\u043e\u0439 \u0436\u0435 \u0441\u0430\u043c\u043e\u0439 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432. \u042d\u0442\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <strong>\u0434\u0435\u043c\u0430\u0440\u0448\u0430\u043b\u0438\u043d\u0433<\/strong>.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044e &#8212; \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 BGP-\u0441\u043e\u0441\u0435\u0434\u0430 10.1.1.1 \u0441 AS 12345. \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<li>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0432\u0441\u0451 \u0442\u043e\u0439 \u0436\u0435 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435-\u043e\u0442\u0432\u0435\u0442 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442 \u0435\u0433\u043e \u0432 \u043e\u0442\u0432\u0435\u0442\u043d\u043e\u043c \u043f\u0430\u043a\u0435\u0442\u0435.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0448\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u044b \u0438\u043d\u0438\u0446\u0438\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 RPC, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043e\u0442\u0432\u0435\u0442, \u0441\u043b\u043e\u0432\u043d\u043e \u0431\u044b \u0435\u0433\u043e \u0432\u0435\u0440\u043d\u0443\u043b\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f.<\/p>\n<\/li>\n<li>\n<p>\u0412\u043e\u0430\u043b\u044f<\/p>\n<\/li>\n<\/ol>\n<p><a href=\"https:\/\/searchapparchitecture.techtarget.com\/definition\/Remote-Procedure-Call-RPC\" rel=\"noopener noreferrer nofollow\">\u041f\u043e\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043f\u0440\u043e RPC<\/a>.<\/p>\n<p>\u0412 \u0446\u0435\u043b\u043e\u043c RPC &#8212; \u044d\u0442\u043e \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f, \u043d\u0435 \u0433\u043e\u0432\u043e\u0440\u044f\u0449\u0430\u044f \u043d\u0438\u0447\u0435\u0433\u043e \u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. \u041e\u043d\u0430 \u043f\u043e\u0441\u0442\u0443\u043b\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0435\u0441\u0442\u044c \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0439 \u0441\u0442\u0430\u0431 &#8212; \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043a\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043f\u043e RPC. \u0418\u043c\u0435\u043d\u043d\u043e \u0441\u0442\u0430\u0431\u044b \u0434\u0435\u043b\u0430\u044e\u0442 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u043c \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u041a\u043b\u044e\u0447\u0435\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u044c RPC &#8212; \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f &#8212; \u0438 \u0435\u0449\u0451 \u0435\u0451 \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 IDL &#8212; Interface Definition Language &#8212; \u044f\u0437\u044b\u043a, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043a\u0430\u043a \u0441\u0442\u0430\u0431\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043c\u0430\u0440\u0448\u0430\u043b\u0438\u0442\u044c \u0438 \u0434\u0435\u043c\u0430\u0440\u0448\u0430\u043b\u0438\u0442\u044c (\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c) \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f. \u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 IDL \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0439 \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0439 \u0441\u0442\u0430\u0431\u044b. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430\u0431\u043e\u0440 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0432 \u043f\u0438\u0442\u043e\u043d\u0435, \u0438\u043c\u0435\u044e\u0449\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u0430\u043a, \u0441\u043b\u043e\u0432\u043d\u043e \u0432\u0441\u0451 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e.<\/p>\n<p>\u041c\u044b \u0434\u0430\u043b\u044c\u0448\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u0434\u0432\u0430 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c RPC \u0438 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0435\u0442\u0435\u0432\u044b\u043c \u0436\u0435\u043b\u0435\u0437\u043e\u043c.<\/p>\n<ul>\n<li>\n<p>NETCONF<\/p>\n<\/li>\n<li>\n<p>gRPC<\/p>\n<\/li>\n<\/ul>\n<p><a class=\"anchor\" name=\"NETCONF\" id=\"NETCONF\"><\/a><\/p>\n<hr\/>\n<h2>NETCONF<\/h2>\n<p>\u041e\u0445, \u043a\u0430\u043a \u044f \u0432\u0438\u043b\u0441\u044f \u0432\u043e\u043a\u0440\u0443\u0433 \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u0442\u043a\u043e\u043d\u0444\u0430 \u0432 \u0441\u0432\u043e\u0451 \u0432\u0440\u0435\u043c\u044f, \u043e\u0436\u0438\u0434\u0430\u044f, \u0447\u0442\u043e \u044d\u0442\u043e \u0441\u0435\u0440\u0435\u0431\u0440\u044f\u043d\u0430\u044f \u043f\u0443\u043b\u044f, \u0440\u0435\u0448\u0430\u044e\u0449\u0430\u044f \u0435\u0441\u043b\u0438 \u043d\u0435 \u0432\u0441\u0435, \u0442\u043e 99,99% \u0432\u0441\u0435\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u0432.<\/p>\n<p>\u0421\u043f\u043e\u0439\u043b\u0435\u0440: \u044d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/ce6\/910\/131\/ce6910131f3f9876242a9398f1595b29.jpeg\" width=\"600\" height=\"346\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ce6\/910\/131\/ce6910131f3f9876242a9398f1595b29.jpeg\" data-blurred=\"true\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043f\u043e \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u044b \u0440\u043e\u0436\u0434\u0430\u044e\u0442\u0441\u044f \u0433\u0434\u0435-\u0442\u043e \u0432 \u043d\u0435\u0434\u0440\u0430\u0445 \u0438\u043d\u0441\u0442\u0438\u0442\u0443\u0442\u043e\u0432, \u043e\u0442\u043e\u0440\u0432\u0430\u043d\u043d\u044b\u0445 \u043e\u0442 \u0436\u0438\u0437\u043d\u0438, \u0442\u043e \u0432\u043e\u0442 \u0432\u0430\u043c \u043a\u043e\u043d\u0442\u0440-\u043f\u0440\u0438\u043c\u0435\u0440.<\/p>\n<p>\u0412 1996 \u0431\u044b\u043b \u043e\u0441\u043d\u043e\u0432\u0430\u043d Juniper Networks, \u0432 \u043d\u0435\u0434\u0440\u0430\u0445 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u043b\u0435\u0433\u0435\u043d\u0434\u0430\u0440\u043d\u044b\u0439 \u041c40 \u0438 \u043b\u0443\u0447\u0448\u0438\u0439 \u0432 \u043c\u0438\u0440\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438. \u0414\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u043b \u043d\u0438\u0447\u0435\u0433\u043e \u043b\u0443\u0447\u0448\u0435\u0433\u043e &#8212; \u0432\u0441\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0442. \u041e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043a\u0430, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0430\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u0443 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043f\u0435\u0440\u0435\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432 XML, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c. \u0415\u0441\u043b\u0438 \u0432\u044b \u0441\u0435\u0439\u0447\u0430\u0441 \u043a \u043b\u044e\u0431\u043e\u0439 show-\u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u043d\u0430 \u0434\u0436\u0443\u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u0435 <code>| display xml<\/code>, \u0442\u043e \u0443\u0432\u0438\u0434\u0438\u0442\u0435 \u043e\u0442\u0432\u0435\u0442 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 XML:<\/p>\n<pre><code class=\"xml\">eucariot@kzn-spine-0> show system uptime | display xml &lt;rpc-reply xmlns:junos=\"http:\/\/xml.juniper.net\/junos\/18.3R3\/junos\">     &lt;multi-routing-engine-results>         &lt;multi-routing-engine-item>             &lt;re-name>localre&lt;\/re-name>             &lt;system-uptime-information xmlns=\"http:\/\/xml.juniper.net\/junos\/18.3R3\/junos\">                 &lt;current-time>                     &lt;date-time junos:seconds=\"1641211199\">2022-01-03 14:59:59 MSK&lt;\/date-time>                 &lt;\/current-time>                 &lt;time-source> LOCAL CLOCK &lt;\/time-source>                 &lt;system-booted-time>                     &lt;date-time junos:seconds=\"1614866046\">2021-03-04 16:54:06 MSK&lt;\/date-time>                     &lt;time-length junos:seconds=\"26345153\">43w3d 22:05&lt;\/time-length>                 &lt;\/system-booted-time>                 &lt;protocols-started-time>                     &lt;date-time junos:seconds=\"1614866101\">2021-03-04 16:55:01 MSK&lt;\/date-time>                     &lt;time-length junos:seconds=\"26345098\">43w3d 22:04&lt;\/time-length>                 &lt;\/protocols-started-time>                 &lt;last-configured-time>                     &lt;date-time junos:seconds=\"1638893962\">2021-12-07 19:19:22 MSK&lt;\/date-time>                     &lt;time-length junos:seconds=\"2317237\">3w5d 19:40&lt;\/time-length>                     &lt;user>scamp&lt;\/user>                 &lt;\/last-configured-time>                 &lt;uptime-information>                     &lt;date-time junos:seconds=\"1641211200\">3:00PM&lt;\/date-time>                     &lt;up-time junos:seconds=\"26345160\">304 days, 22:06&lt;\/up-time>                     &lt;active-user-count junos:format=\"1 users\">1&lt;\/active-user-count>                     &lt;load-average-1>0.20&lt;\/load-average-1>                     &lt;load-average-5>0.17&lt;\/load-average-5>                     &lt;load-average-15>0.20&lt;\/load-average-15>                     &lt;user-table>&lt;\/user-table>                 &lt;\/uptime-information>             &lt;\/system-uptime-information>         &lt;\/multi-routing-engine-item>     &lt;\/multi-routing-engine-results>     &lt;cli>         &lt;banner>{master:0}&lt;\/banner>     &lt;\/cli> &lt;\/rpc-reply><\/code><\/pre>\n<p>\u0412 \u043a\u043e\u0440\u043d\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0438\u0434\u0435\u0442\u044c <code>&lt;rpc-reply><\/code>, \u0447\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0431\u044b\u043b \u043a\u0430\u043a\u043e\u0439-\u0442\u043e <code>&lt;rpc><\/code>-request. \u0418 \u0432\u043e\u0442 \u0442\u0430\u043a \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u043a\u0430\u043a\u0438\u043c RPC-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435:<\/p>\n<pre><code class=\"xml\">eucariot@kzn-spine-0> show version | display xml rpc &lt;rpc-reply xmlns:junos=\"http:\/\/xml.juniper.net\/junos\/18.3R3\/junos\">     &lt;rpc>         &lt;get-software-information>         &lt;\/get-software-information>     &lt;\/rpc>     &lt;cli>         &lt;banner>{master:0}&lt;\/banner>     &lt;\/cli> &lt;\/rpc-reply><\/code><\/pre>\n<blockquote>\n<p>\u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f Juniper! <\/p>\n<\/blockquote>\n<p>\u0422\u0430\u043a \u0432\u043e\u0442, \u0438\u0445 CLI \u0438 \u0441\u043f\u043e\u0441\u043e\u0431 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0435\u0433\u043e \u0441 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0438 \u0443\u0434\u0430\u0447\u043d\u044b\u043c, \u0447\u0442\u043e \u0435\u0433\u043e \u0438 \u043f\u043e\u043b\u043e\u0436\u0438\u043b\u0438 \u0432 \u043e\u0441\u043d\u043e\u0432\u0443 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430. \u041d\u0435 \u0431\u0435\u0437 \u0443\u0447\u0430\u0441\u0442\u0438\u044f Juniper Networks, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f <a href=\"https:\/\/www.ietf.org\/rfc\/rfc4741.txt\" rel=\"noopener noreferrer nofollow\">RFC4741<\/a>. \u0411\u0443\u0434\u0435\u043c \u0447\u0435\u0441\u0442\u043d\u044b, \u043e\u0434\u0438\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0436\u0443\u043d\u0438\u043f\u0435\u0440 \u0442\u0430\u043c \u0438 \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u043b\u0441\u044f. \u0418 \u0442\u043e \u0442\u0443\u0442, \u0442\u043e \u0442\u0430\u043c \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u043e\u0441\u043a\u0430\u043a\u0438\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u043a\u0443\u0441\u043a\u0438, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 <code>commit confirmed<\/code> \u0438 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044f <code>candidate config<\/code>.<\/p>\n<p>\u0412\u043e\u0442 \u043a\u0430\u043a NETCONF \u0431\u044b\u043b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d \u0432 2006-\u043c \u0433\u043e\u0434\u0443:<\/p>\n<p><code>Abstract<br \/>The Network Configuration Protocol (NETCONF) defined in this document<br \/>provides mechanisms to install, manipulate, and delete the<br \/>configuration of network devices.  It uses an Extensible Markup<br \/>Language (XML)-based data encoding for the configuration data as well<br \/>as the protocol messages.  The NETCONF protocol operations are<br \/>realized on top of a simple Remote Procedure Call (RPC) layer.<\/code> <\/p>\n<p>\u0418 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0441 \u0442\u0435\u0445 \u043f\u043e\u0440 \u043d\u0435 \u043c\u0435\u043d\u044f\u043b\u043e\u0441\u044c &#8212; \u0432\u0441\u044f \u0441\u0443\u0442\u044c NETCONF \u0432 \u044d\u0442\u043e\u043c \u043f\u0430\u0440\u0430\u0433\u0440\u0430\u0444\u0435.<\/p>\n<p>\u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u043e\u0447\u0435\u043d\u044c \u043d\u0435\u043f\u0440\u043e\u0441\u0442\u044b\u043c NETCONF \u0438 \u0435\u0433\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u043d\u044b\u043c\u0438 \u0447\u0430\u0441\u0442\u044f\u043c\u0438.<\/p>\n<p><a class=\"anchor\" name=\"TIMUR_I_EGO_TEAM\" id=\"TIMUR_I_EGO_TEAM\"><\/a><\/p>\n<h3>NETCONF \u0438 \u0435\u0433\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u044b<\/h3>\n<p>\u0415\u0441\u043b\u0438 \u0441\u043e\u0432\u0441\u0435\u043c \u043a\u043e\u0440\u043e\u0442\u043a\u043e, NETCONF &#8212; \u044d\u0442\u043e \u0447\u0435\u0442\u044b\u0440\u0451\u0445\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0439 \u0441\u0442\u0435\u043a, \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0447\u0435\u0440\u0435\u0437 SSH \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f RPC, \u0433\u0434\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 (\u043a\u043e\u043d\u0442\u0435\u043d\u0442).<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d4f\/f80\/a78\/d4ff80a78d493f51e37a279292f78a94.png\" width=\"1682\" height=\"1104\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d4f\/f80\/a78\/d4ff80a78d493f51e37a279292f78a94.png\"\/><figcaption><\/figcaption><\/figure>\n<h4>\u0421\u0442\u0435\u043a NETCONF<\/h4>\n<p>\u0418\u0442\u0430\u043a, \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u0430 NETCONF \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 SSH. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u0442\u0430\u043c \u0435\u0441\u0442\u044c \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u044b: SSH, SOAP, BEEP, TLS &#8212; \u043d\u043e \u043c\u044b \u0438\u0445 \u043e\u043f\u0443\u0441\u0442\u0438\u043c &#8212; SSH \u0441\u0442\u0430\u043b \u0434\u0435-\u0444\u0430\u043a\u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u043c.<\/p>\n<p>\u041a\u0430\u0436\u0434\u044b\u0439 NETCONF \u0437\u0430\u043f\u0440\u043e\u0441 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 (\u0438\u043b\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435):<\/p>\n<ul>\n<li>\n<p><code>&lt;rpc><\/code> &#8212; \u044d\u0442\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u0432\u044b\u0437\u043e\u0432 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b \u0441 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438.<\/p>\n<\/li>\n<li>\n<p><code>&lt;rpc-reply><\/code> &#8212; \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 RPC.         <\/p>\n<ul>\n<li>\n<p><code>&lt;rpc-error><\/code> &#8212; \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u043e\u0442\u0432\u0435\u0442\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430, \u043a\u043e\u0433\u0434\u0430 RPC \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0435\u043d.<\/p>\n<\/li>\n<li>\n<p><code>&lt;ok><\/code> &#8212; rpc \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0435\u043d \u0438 \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u0430\u043b.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><code>&lt;notification><\/code> &#8212; \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0438, \u0438\u043d\u0438\u0446\u0438\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u043a\u043e\u0440\u043e\u0431\u043a\u043e\u0439 &#8212; \u0430\u043d\u0430\u043b\u043e\u0433 \u0442\u0440\u0430\u043f\u0430 \u0432 snmp (\u0438\u0437 <a href=\"https:\/\/www.ietf.org\/rfc\/rfc6241.txt\" rel=\"noopener noreferrer nofollow\">RFC6241<\/a>).<\/p>\n<\/li>\n<\/ul>\n<p>\u042d\u0442\u043e \u0432\u0441\u0451 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f, \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 XML.<\/p>\n<p>\u0412\u043d\u0443\u0442\u0440\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u043a\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f (\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435) \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f. \u0412 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043d\u0438\u0436\u0435 \u043f\u043e\u043b\u043d\u044b\u0439 \u0438\u0445 \u0441\u043f\u0438\u0441\u043e\u043a, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 \u0432 RFC:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"244\" width=\"244\">\n<p align=\"left\">Operation<\/p>\n<\/td>\n<td>\n<p align=\"left\">Description<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"244\" width=\"244\">\n<p align=\"left\"><code>&lt;get><\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">Retrieve running configuration and device state information<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"244\" width=\"244\">\n<p align=\"left\"><code>&lt;get-config><\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">Retrieve all or part of a specified configuration datastore<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"244\" width=\"244\">\n<p align=\"left\"><code>&lt;edit-config><\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">Edit a configuration datastore by creating, deleting, merging or replacing content<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"244\" width=\"244\">\n<p align=\"left\"><code>&lt;copy-config><\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">Copy an entire configuration datastore to another configuration datastore<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"244\" width=\"244\">\n<p align=\"left\"><code>&lt;delete-config><\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">Delete a configuration datastore<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"244\" width=\"244\">\n<p align=\"left\"><code>&lt;lock><\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">Lock an entire configuration datastore of a device<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"244\" width=\"244\">\n<p align=\"left\"><code>&lt;unlock><\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">Release a configuration datastore lock previously obtained with the &lt;lock> operation<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"244\" width=\"244\">\n<p align=\"left\"><code>&lt;close-session><\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">Request graceful termination of a netconf session<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"244\" width=\"244\">\n<p align=\"left\"><code>&lt;kill-session><\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">Force the termination of a netconf session<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041a\u0430\u0436\u0434\u044b\u0439 \u0432\u0435\u043d\u0434\u043e\u0440 \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0445\u043e\u0442\u044c \u0434\u043e \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0441\u0442\u0438. \u0422\u0430\u043a, \u0443 \u043a\u043e\u0433\u043e-\u0442\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u0442\u044c <code>&lt;copy-config><\/code>.<\/p>\n<p>\u0418 \u0434\u0430\u043b\u0435\u0435 \u0443\u0436\u0435 \u0441\u0430\u043c \u043a\u043e\u043d\u0442\u0435\u043d\u0442. \u042d\u0442\u043e \u0441\u0430\u043c\u0430\u044f \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c. \u041d\u043e \u0437\u0430\u0431\u0435\u0433\u0430\u044f \u0432\u043f\u0435\u0440\u0451\u0434 &#8212; \u043e\u043d \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0444\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d, \u043d\u0435 \u043e\u043f\u0438\u0441\u0430\u043d, \u0438, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u044d\u0442\u043e \u0432\u0435\u043b\u0438\u0447\u0430\u0439\u0448\u0430\u044f \u043f\u0440\u0435\u0442\u0435\u043d\u0437\u0438\u044f \u043a \u043d\u0435\u0442\u043a\u043e\u043d\u0444, \u043a\u0430\u043a \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0443, \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0432\u0448\u0435\u043c\u0443 \u0431\u043b\u0430\u0433\u0443\u044e \u0438\u0434\u0435\u044e \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0433\u043e \u0437\u043e\u043c\u0431\u0438. \u0414\u0430\u0436\u0435 \u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435 \u043e\u043f\u044b\u0442\u0430 \u0441 SNMP, \u0433\u0434\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u044f\u0437\u044b\u043a\u0430 \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u043b\u0430 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u0430 \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c, NETCONF \u0440\u043e\u0434\u0438\u043b\u0441\u044f \u0441\u0430\u043c \u043f\u043e \u0441\u0435\u0431\u0435 \u0431\u0435\u0437 \u043a\u0430\u043a\u043e\u0433\u043e-\u043b\u0438\u0431\u043e \u044f\u0437\u044b\u043a\u0430 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u044b\u0445. \u0423\u0436\u0435 \u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0437\u0436\u0435 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0434\u0442\u044f\u043d\u0443\u043b\u0438 YANG.<\/p>\n<h4>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0441\u0435\u0441\u0441\u0438\u0438 \u0438 Capabilities<\/h4>\n<p>\u0422\u0430\u043a, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c SSH NETCONF. \u041d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0434\u0436\u0443\u043d\u0438\u043f\u0435\u0440. <\/p>\n<pre><code>set system services netconf<\/code><\/pre>\n<blockquote>\n<p>\u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e SSH \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442 \u0434\u043b\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u044b.<br \/>\u0414\u043b\u044f netconf IANA \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0430 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0440\u0442 830, \u0445\u043e\u0442\u044f \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0438 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0434\u043b\u044f SSH 22. <\/p>\n<\/blockquote>\n<p>\u0418 \u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f. \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0443\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043f\u043e SSH, \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0432\u044b\u0437\u043e\u0432 \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u044b:<\/p>\n<pre><code class=\"xml\">ssh kazan-spine-0.juniper -s netconf  &lt;!-- No zombies were killed during the creation of this user interface --> &lt;!-- user eucariot, class j-super-user --> &lt;hello xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">   &lt;capabilities>     &lt;capability>urn:ietf:params:netconf:base:1.0&lt;\/capability>     &lt;capability>urn:ietf:params:netconf:capability:candidate:1.0&lt;\/capability>     &lt;capability>urn:ietf:params:netconf:capability:confirmed-commit:1.0&lt;\/capability>     &lt;capability>urn:ietf:params:netconf:capability:validate:1.0&lt;\/capability>     &lt;capability>urn:ietf:params:netconf:capability:url:1.0?scheme=http,ftp,file&lt;\/capability>     &lt;capability>urn:ietf:params:xml:ns:netconf:base:1.0&lt;\/capability>     &lt;capability>urn:ietf:params:xml:ns:netconf:capability:candidate:1.0&lt;\/capability>     &lt;capability>urn:ietf:params:xml:ns:netconf:capability:confirmed-commit:1.0&lt;\/capability>     &lt;capability>urn:ietf:params:xml:ns:netconf:capability:validate:1.0&lt;\/capability>     &lt;capability>urn:ietf:params:xml:ns:netconf:capability:url:1.0?protocol=http,ftp,file&lt;\/capability>     &lt;capability>http:\/\/xml.juniper.net\/netconf\/junos\/1.0&lt;\/capability>     &lt;capability>http:\/\/xml.juniper.net\/dmi\/system\/1.0&lt;\/capability>   &lt;\/capabilities>   &lt;session-id>15420&lt;\/session-id> &lt;\/hello> ]]&gt;]]&gt;<\/code><\/pre>\n<p>\u041c\u044b \u0435\u0449\u0451 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0443\u0441\u043f\u0435\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u0430 \u0436\u0435\u043b\u0435\u0437\u043a\u0430 \u043d\u0430\u043c \u0443\u0436\u0435 \u043d\u0430\u0441\u044b\u043f\u0430\u043b\u0430 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b. \u042d\u0442\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 NETCONF Hello, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430 \u0431\u0435\u0440\u0435\u0433\u0443 \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0435\u0441\u0441\u0438\u0438, \u0430 \u0447\u0442\u043e \u043d\u0435\u0442. \u0412\u043d\u0443\u0442\u0440\u0438 &#8212; \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u0430\u043f\u0430\u0431\u0438\u043b\u0438\u0442\u0435\u0439 &#8212; \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u043a\u043e\u0440\u043e\u0431\u043a\u043e\u0439. <a href=\"https:\/\/www.ietf.org\/rfc\/rfc4741.txt\" rel=\"noopener noreferrer nofollow\">RFC4741<\/a> \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u043b \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u043c \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u043c \u0438 \u043a\u0430\u0436\u0434\u044b\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c.<\/p>\n<p>\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c\u0441\u044f \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 capability \u0438 \u0434\u0430\u0436\u0435 \u043f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u044b\u043c\u0438. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435, \u0430 \u043f\u043e\u0442\u043e\u043c \u0441\u0430\u043c\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435. \u041d\u0443 \u0438 \u0431\u0443\u0434\u0435\u043c \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0438\u0445 &#171;\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044f\u043c\u0438&#187;, \u0430 \u0442\u043e \u043a\u0430\u043f\u0430\u0431\u0438\u043b\u0438\u0442\u044f &#8212; \u044d\u0442\u043e \u043f\u043e\u0447\u0442\u0438 \u043a\u0430\u043a \u043a\u0430\u043f\u0438\u0431\u0430\u0440\u0430.<\/p>\n<h4>NETCONF Standard Capabilities (\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438)<\/h4>\n<ul>\n<li>\n<p><em>Candidate configuration<\/em><br \/>\u042d\u0442\u0430 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u0442\u043e\u043c. \u0427\u0442\u043e \u043a\u043e\u0440\u043e\u0431\u043a\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442-\u043a\u043e\u043d\u0444\u0438\u0433, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u043f\u043e\u043b\u043d\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0431\u0435\u0437 \u0432\u043b\u0438\u044f\u043d\u0438\u044f \u043d\u0430 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0451\u043d\u043d\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e.  \u0410\u043d\u0430\u043b\u043e\u0433\u0438 candidate-config \u043d\u0430 Juniper.     <\/p>\n<\/li>\n<li>\n<p><em>Confirmed commit<\/em><br \/>\u041e\u043f\u044f\u0442\u044c \u0436\u0435 \u0430\u043d\u0430\u043b\u043e\u0433 \u0434\u0436\u0443\u043d\u0438\u043f\u0435\u0440\u043e\u0432\u043e\u0441\u043a\u043e\u0433\u043e commit confirmed &#8212; \u043e\u0442\u043a\u0430\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043f\u043e\u0441\u043b\u0435 \u043a\u043e\u043c\u043c\u0438\u0442\u0430, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0431\u044b\u043b\u043e \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u043c\u0438\u0442\u0430.     <\/p>\n<\/li>\n<li>\n<p><em>Validate<\/em><br \/>\u0421\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0436\u0435\u043b\u0430\u0435\u043c\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0434\u043e \u0435\u0451 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f.     <\/p>\n<\/li>\n<li>\n<p><em>Rollback-on-error<\/em><br \/>\u0421\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u043c\u0435\u043d\u044b \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043f\u0440\u0438 \u043e\u0448\u0438\u0431\u043a\u0435. \u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0435\u0441\u043b\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c candidate configuration.      <\/p>\n<\/li>\n<li>\n<p><em>Writable-running<\/em><br \/>\u0422\u0430\u043a\u0430\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 running-\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e, \u0432 \u043e\u0431\u0445\u043e\u0434\u0430 candidate.     <\/p>\n<\/li>\n<li>\n<p><em>Distinct startup<\/em><br \/>\u0421\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c startup \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u043e\u0442\u043b\u0438\u0447\u043d\u0443\u044e \u043e\u0442 running \u0438 candidate.     <\/p>\n<\/li>\n<li>\n<p><em>Notification<\/em><br \/>\u0410\u043d\u0430\u043b\u043e\u0433 SNMP-trap. \u041a\u043e\u0440\u043e\u0431\u043a\u0430 \u043c\u043e\u0436\u0435\u0442 \u0441\u043b\u0430\u0442\u044c \u0430\u0432\u0430\u0440\u0438\u0438 \u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u0443.      <\/p>\n<\/li>\n<\/ul>\n<p>\u0418 \u0435\u0449\u0451 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u043e\u043b\u0435\u0435 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0432\u0430\u0441 \u043d\u0435 \u0445\u043e\u0447\u0443, \u0438\u0431\u043e \u0432 \u043b\u0443\u0447\u0448\u0435\u043c \u0432\u0438\u0434\u0435 \u043e\u043d\u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0432 <a href=\"https:\/\/www.ietf.org\/rfc\/rfc6241.txt\" rel=\"noopener noreferrer nofollow\">RFC<\/a>. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435, \u043a\u0441\u0442\u0430\u0442\u0438, \u043a\u0430\u043a\u0438\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u043e\u0442\u0434\u0430\u043b \u0434\u0436\u0443\u043d\u0438\u043f\u0435\u0440, \u0430 \u043a\u0430\u043a\u0438\u0435 \u043d\u0435\u0442.<\/p>\n<h4>NETCONF Extended Capabilities (\u0441\u0432\u0435\u0440\u0445-\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438)<\/h4>\n<p>\u0418\u0445 \u0442\u044c\u043c\u0430. \u0418\u0437 \u0441\u0430\u043c\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445:<\/p>\n<ul>\n<li>\n<p><em>YANG push<\/em><br \/>\u0421\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u0441\u044b\u043b\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0441 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442 &#8212; \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u043b\u0438 \u043f\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044e.     <\/p>\n<\/li>\n<li>\n<p><em>YANG-library<\/em><br \/>\u0421\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u044c \u043a\u043b\u0438\u0435\u043d\u0442\u0443 \u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u0445 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e YANG: \u0432\u0435\u0440\u0441\u0438\u044f, \u043c\u043e\u0434\u0435\u043b\u044c, \u043d\u0435\u0439\u0441\u043f\u0435\u0439\u0441\u044b \u0438\u0442\u0434.     <\/p>\n<\/li>\n<li>\n<p><em>Commit-description<\/em><br \/>\u0421\u0430\u043c\u043e\u0433\u043e\u0432\u043e\u0440\u044f\u0449\u0435\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435.     <\/p>\n<\/li>\n<\/ul>\n<p>\u0424\u043e\u0440\u043c\u0430\u0442 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f capability \u0441\u0442\u0440\u043e\u0433\u043e \u0440\u0435\u0433\u043b\u0430\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d: <\/p>\n<p><code>urn:ietf:params:netconf:capability:{name}:1.0<\/code>.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0434\u0432\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f &#8212; \u044d\u0442\u043e \u0438\u043c\u044f \u0438 \u0432\u0435\u0440\u0441\u0438\u044f &#8212; \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f. \u0422\u0430\u043a <code>urn:ietf:params:netconf:base:1.1<\/code> &#8212; \u044d\u0442\u043e \u0438\u043c\u044f \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u043a\u0430\u043f\u0430\u0431\u0438\u043b\u0438\u0442\u0438 \u0434\u043b\u044f \u0432\u0435\u0440\u0441\u0438\u0438 1.1.<\/p>\n<p>\u0412 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 <code>&lt;hello><\/code> \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043a\u043b\u0438\u0435\u043d\u0442 \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u0441\u043b\u0430\u0442\u044c \u0441\u0432\u043e\u0438 capability:<\/p>\n<pre><code class=\"xml\">&lt;hello>  &lt;capabilities>   &lt;capability>urn:ietf:params:xml:ns:netconf:base:1.0&lt;\/capability>   &lt;capability>urn:ietf:params:xml:ns:netconf:capability:candidate:1.0&lt;\/capability>   &lt;capability>urn:ietf:params:xml:ns:netconf:capability:confirmed-commit:1.0&lt;\/capability>   &lt;capability>urn:ietf:params:xml:ns:netconf:capability:validate:1.0&lt;\/capability>   &lt;capability>urn:ietf:params:xml:ns:netconf:capability:url:1.0?protocol=http,ftp,file&lt;\/capability>   &lt;capability>xml.juniper.net\/netconf\/junos\/1.0&lt;\/capability>   &lt;capability>xml.juniper.net\/dmi\/system\/1.0&lt;\/capability>  &lt;\/capabilities> &lt;\/hello> ]]&gt;]]&gt;<\/code><\/pre>\n<p>\u0427\u0435\u0433\u043e \u043f\u043e\u0447\u0442\u0438 \u043d\u0438\u0433\u0434\u0435 \u043d\u0435 \u043f\u0438\u0448\u0443\u0442, \u043d\u043e \u0447\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u043e: \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0440\u043e\u0431\u0443\u0435\u0442\u0435 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441 \u043a\u043e\u0440\u043e\u0431\u043a\u043e\u0439 \u043f\u043e \u043d\u0435\u0442\u043a\u043e\u043d\u0444 \u0440\u0443\u043a\u0430\u043c\u0438, \u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043e\u0442\u043e\u0441\u043b\u0430\u0442\u044c \u0442\u0430\u043a\u0443\u044e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c <code>]]&gt;]]&gt;<\/code>, \u0441\u043e\u043e\u0431\u0449\u0430\u044e\u0449\u0443\u044e, \u0447\u0442\u043e \u0432\u0432\u043e\u0434 \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d. \u041e\u043d\u0430 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f Framing Marker \u0438\u043b\u0438 Message Separator Sequence.<\/p>\n<blockquote>\n<p>\u0415\u0441\u0442\u044c \u0432\u0430\u0436\u043d\u044b\u0439 \u043d\u044e\u0430\u043d\u0441, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0432 <a href=\"https:\/\/www.ietf.org\/rfc\/rfc6242.txt\" rel=\"noopener noreferrer nofollow\">RFC6242<\/a>, <code>]]&gt;]]&gt;<\/code> &#8212; \u044d\u0442\u043e \u0441\u0442\u0430\u0440\u044b\u0439 <strong>End-of-Message Framing Marker<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u0432\u044b\u0431\u0440\u0430\u043d \u0438\u0437 \u0441\u043e\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u0447\u0442\u043e \u0442\u0430\u043a\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0442\u044c\u0441\u044f \u0432 well-formed XML. \u041e\u0434\u043d\u0430\u043a\u043e \u0436\u0438\u0437\u043d\u044c \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430, \u0447\u0442\u043e \u043e\u043d\u0430 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 NETCONF 1.1 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b\u0438 \u043d\u043e\u0432\u044b\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0435\u043b\u0438\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u0431\u043b\u043e\u043a\u0438 &#8212; \u0447\u0430\u043d\u043a\u0438 &#8212; \u0438 \u043d\u0443\u043c\u0435\u0440\u0443\u0435\u0442 \u0438\u0445. \u0422\u0430\u043a \u043e\u043d \u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f: <strong>Chunked Framing Mechanism<\/strong>.<\/p>\n<p>\u041a\u0430\u0436\u0434\u044b\u0439 \u0447\u0430\u043d\u043a \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 <code>##X<\/code>, \u0433\u0434\u0435 <code>X<\/code> &#8212; \u044d\u0442\u043e \u0447\u0438\u0441\u043b\u043e \u043e\u043a\u0442\u0435\u0442\u043e\u0432 \u0432 \u043d\u0451\u043c. <\/p>\n<p>\u042d\u0442\u043e \u043e\u0434\u043d\u043e \u0438\u0437 \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u0442\u043b\u0438\u0447\u0438\u0439 \u043c\u0435\u0436\u0434\u0443 1.0 \u0438 1.1 :). \u0414\u0440\u0443\u0433\u0438\u0435 <a href=\"https:\/\/support.yumaworks.com\/support\/solutions\/articles\/1000227848-what-are-the-differences-between-netconf-1-0-and-1-1-\" rel=\"noopener noreferrer nofollow\">\u043c\u0435\u043d\u0435\u0435 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b<\/a>. <\/p>\n<\/blockquote>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441 NETCONF-\u0441\u0435\u0441\u0441\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u0438 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0441\u043b\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u0442\u043e RPC.<\/p>\n<p>\u041f\u043e\u0441\u044b\u043b\u0430\u0435\u043c \u0441\u0432\u043e\u0439 \u043f\u0435\u0440\u0432\u044b\u0439 RPC<\/p>\n<pre><code class=\"xml\">&lt;rpc message-id=\"100\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">   &lt;get-config>    &lt;source>      &lt;running\/>    &lt;\/source>    &lt;filter type=\"subtree\">      &lt;configuration>        &lt;system>           &lt;host-name\/>        &lt;\/system>      &lt;\/configuration>    &lt;\/filter>   &lt;\/get-config> &lt;\/rpc> ]]&gt;]]&gt;<\/code><\/pre>\n<pre><code class=\"xml\">&lt;rpc-reply xmlns:junos=\"http:\/\/xml.juniper.net\/junos\/14.1R1\/junos\" message-id=\"100\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\"> &lt;data> &lt;configuration xmlns=\"http:\/\/xml.juniper.net\/xnm\/1.1\/xnm\" junos:commit-seconds=\"1644510087\" junos:commit-localtime=\"2022-02-10 16:21:27 UTC\" junos:commit-user=\"eucariot\">     &lt;system>         &lt;host-name>kzn-spine-0&lt;\/host-name>     &lt;\/system> &lt;\/configuration> &lt;\/data> &lt;\/rpc-reply><\/code><\/pre>\n<p>\u041c\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 <code>&lt;rpc><\/code>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u043b\u0438 <code>&lt;running><\/code>-\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e <code>&lt;get-config><\/code>. \u0418 \u0435\u0449\u0451 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u043b\u0438 \u043f\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0439 \u0432\u0435\u0442\u043a\u0435.<\/p>\n<p>\u0410 \u0432 \u043e\u0442\u0432\u0435\u0442 \u043f\u0440\u0438\u0448\u0451\u043b <code>&lt;rpc-reply><\/code> \u0441 \u043e\u0442\u0432\u0435\u0442\u043e\u043c. \u0418 \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0435, \u0438 \u0432 \u043e\u0442\u0432\u0435\u0442\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 <code>message-id<\/code> &#8212; \u043f\u043e \u043d\u0438\u043c \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u043d\u0430 \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u0442\u0432\u0435\u0442 &#8212; \u0432\u0435\u0434\u044c \u0440\u0435\u0436\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u044b NETCONF \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u0438 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0441\u044b\u043b\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435, \u043f\u043e\u043a\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0435 \u0435\u0449\u0451 \u043d\u0435 \u0431\u044b\u043b\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043e.<\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u0432\u044b \u0432\u0438\u0434\u0438\u0442\u0435 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 XML. \u0415\u0451 \u043b\u0435\u0433\u043a\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u043e\u0440\u043c\u0438\u0442\u044c XML-\u043f\u0430\u0440\u0441\u0435\u0440\u0443, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442 \u0435\u0433\u043e \u0432 JSON \u0438\u043b\u0438 python dict \u0438\u043b\u0438 \u0447\u0442\u043e \u0443\u0433\u043e\u0434\u043d\u043e \u0434\u0440\u0443\u0433\u043e\u0435, \u0441 \u0447\u0435\u043c \u0443\u0434\u043e\u0431\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u0430\u0445 \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0445. \u0418 \u0434\u0430\u043b\u0435\u0435 \u0438\u0437\u0432\u043b\u0435\u0447\u044c \u043f\u043e \u043a\u043b\u044e\u0447\u0430\u043c \u043d\u0443\u0436\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435.<\/p>\n<p>\u041d\u043e \u043f\u043e\u0447\u0435\u043c\u0443 XML? \u0417\u0430 \u0447\u0442\u043e? \u041a\u0430\u043a \u0432\u043e\u043e\u0431\u0449\u0435 \u0441 \u044d\u0442\u0438\u043c \u0431\u044b\u0442\u044c?<\/p>\n<p>\u041e\u0445. \u0417\u0440\u044f \u0432\u044b \u0441\u043f\u0440\u043e\u0441\u0438\u043b\u0438.<\/p>\n<p>\u0412 \u043e\u0431\u0449\u0435\u043c \u0434\u0430\u043b\u044c\u0448\u0435 10 000 \u0437\u043d\u0430\u043a\u043e\u0432 \u043f\u0440\u043e XML. \u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0433\u043e\u0442\u043e\u0432\u044b \u044d\u0442\u043e \u0432\u044b\u0434\u0435\u0440\u0436\u0430\u0442\u044c, \u043c\u0438\u043b\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0448\u0443 \u0434\u0430\u043b\u044c\u0448\u0435. \u041d\u043e \u0431\u0443\u0434\u044c\u0442\u0435 \u0433\u043e\u0442\u043e\u0432\u044b, \u0447\u0442\u043e \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 NETCONF \u0442\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0439\u0434\u0451\u0442 \u043c\u0438\u043c\u043e \u0432\u0430\u0441. \u0418\u043b\u0438 \u0432\u044b \u043c\u0438\u043c\u043e \u043d\u0435\u0451. \u0412 \u043e\u0431\u0449\u0435\u043c \u0440\u0430\u0437\u043c\u0438\u043d\u0451\u0442\u0435\u0441\u044c.<\/p>\n<p>\u0422\u0430\u043a \u0437\u0430 \u0447\u0442\u043e \u0436\u0435 \u0442\u0430\u043a \u0441 \u043d\u0430\u043c\u0438?<\/p>\n<p><a class=\"anchor\" name=\"XML\" id=\"XML\"><\/a><\/p>\n<hr\/>\n<h2>&lt;XML><\/h2>\n<p>\u041f\u043e \u0432\u0441\u0435\u0439 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0442\u043e\u0447\u043d\u044b\u0439 \u0438 \u0447\u0435\u0441\u0442\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 &#8212; &#171;\u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043b\u043e\u0436\u0438\u043b\u043e\u0441\u044c&#187;.<br \/>\u0421\u0443\u0434\u044c\u0431\u0430 XML \u0432 \u0447\u0451\u043c-\u0442\u043e \u043f\u043e\u0445\u043e\u0436\u0430 \u043d\u0430 MPLS &#8212; \u043e\u0431\u0430 \u0431\u044b\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u044b \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438, \u0430 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u044c \u0441\u043d\u0438\u0441\u043a\u0430\u043b\u0438 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439. <\/p>\n<p>XML \u043d\u0430\u043c\u0435\u0440\u0435\u0432\u0430\u043b\u0441\u044f \u0441\u0442\u0430\u0442\u044c \u043c\u0435\u0442\u0430\u044f\u0437\u044b\u043a\u043e\u043c \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u044f\u0437\u044b\u043a\u043e\u0432 \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432. \u041d\u043e \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u043e \u0435\u0433\u043e \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043f\u043e\u0434 \u0444\u043e\u0440\u043c\u0430\u0442 \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435. \u0418 \u043a \u043c\u043e\u043c\u0435\u043d\u0442\u0443, \u043a\u043e\u0433\u0434\u0430 Juniper \u0432\u044b\u0431\u0438\u0440\u0430\u043b \u0444\u043e\u0440\u043c\u0430\u0442, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c API \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b, XML \u0441\u0442\u0430\u043b \u0443\u0436\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u043c, \u0437\u0440\u0435\u043b\u044b\u043c \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u043c.<\/p>\n<p>\u0421\u0435\u0433\u043e\u0434\u043d\u044f, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u043f\u043e\u0431\u0435\u0434\u0438\u043b \u0431\u044b JSON, \u043d\u043e \u0442\u043e\u0433\u0434\u0430 \u043e\u043d \u0442\u043e\u043b\u044c\u043a\u043e <a href=\"https:\/\/trends.google.com\/trends\/explore?date=all&amp;q=XML,JSON,YAML\" rel=\"noopener noreferrer nofollow\">\u043d\u0430\u0447\u0438\u043d\u0430\u043b \u0441\u0432\u043e\u0439 \u043f\u0443\u0442\u044c \u043a \u0441\u043b\u0430\u0432\u0435<\/a>.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/186\/d2c\/ec4\/186d2cec4143c177d260918f335d06c8.png\" width=\"2132\" height=\"1438\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/186\/d2c\/ec4\/186d2cec4143c177d260918f335d06c8.png\"\/><figcaption><\/figcaption><\/figure>\n<p>YAML \u0438 protobuf \u0442\u043e\u0433\u0434\u0430 \u0435\u0449\u0451 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0438. \u041d\u0443 \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 YAML \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u043b\u0443\u0447\u0448\u0435 \u0434\u043b\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0440\u0443\u043a\u0430\u043c\u0438, \u043d\u0435\u0436\u0435\u043b\u0438 \u043a\u0430\u043a \u0444\u043e\u0440\u043c\u0430\u0442 \u043e\u0431\u043c\u0435\u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u043c\u0438.<\/p>\n<p>\u041f\u0440\u0435\u043b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u043f\u0440\u0430\u0432\u043a\u0430 \u043f\u043e XML, JSON \u0438 YAML: <a href=\"https:\/\/realpython.com\/python-yaml\/\" rel=\"noopener noreferrer nofollow\">YAML: The Missing Battery in Python<\/a>.<\/p>\n<p>\u0412 \u043e\u0431\u0449\u0435\u043c \u0432\u044b\u0431\u043e\u0440 \u0432 \u0442\u0435 \u0434\u043d\u0438 \u0431\u044b\u043b \u043f\u0440\u0435\u0434\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d &#8212; XML \u0431\u044b\u043b \u0441\u0432\u0435\u0440\u0445\u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c \u0438 \u0441\u0443\u043f\u0435\u0440\u0443\u0434\u043e\u0431\u043d\u044b\u043c,<\/p>\n<p>\u0421\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0441\u0442\u0438 XML \u043a\u043e\u043c\u043f\u0435\u043d\u0441\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u043e\u0439 \u0435\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0427\u0451\u0442\u043a\u0430\u044f \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430, \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0435 \u043d\u0430\u0447\u0430\u043b\u043e, \u043a\u043e\u043d\u0435\u0446 \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435. \u0412 \u0442\u043e\u043c \u0436\u0435 \u043f\u0438\u0442\u043e\u043d\u0435 xmltodict \u0438\u0437\u044f\u0449\u043d\u043e \u043b\u044e\u0431\u043e\u0439 \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0439 XML \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442 \u0432 \u0441\u043b\u043e\u0432\u0430\u0440\u044c. \u0410 \u0432\u043e\u043e\u0431\u0449\u0435 \u0432\u043e\u0442 <a href=\"https:\/\/realpython.com\/python-xml-parser\/\" rel=\"noopener noreferrer nofollow\">\u0433\u043e\u0434\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f<\/a> \u043f\u0440\u043e \u0442\u043e, \u043a\u0430\u043a \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 XML \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438.<\/p>\n<p>\u041d\u043e \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0436\u0435 \u0432 \u0441\u0435\u0431\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u0442\u0430\u0438\u0442 XML.<\/p>\n<p>\u0423 \u043c\u0435\u043d\u044f \u043d\u0435\u0442 \u0437\u0430\u0434\u0430\u0447\u0438 \u043f\u043e\u0434\u0432\u0435\u0440\u0433\u043d\u0443\u0442\u044c \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f \u043f\u044b\u0442\u043a\u0430\u043c \u0438 \u043c\u0443\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u043c\u0435\u0440\u0442\u0438 \u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u0432, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0438\u043b\u044c\u043d\u043e \u0433\u043b\u0443\u0431\u043e\u043a\u043e \u043c\u044b \u043f\u043e\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f \u043d\u0435 \u0431\u0443\u0434\u0435\u043c, \u043d\u043e \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u0441\u043a\u0443\u0447\u043d\u0443\u044e \u0431\u0430\u0437\u0443 \u0434\u0430\u0442\u044c \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f.<\/p>\n<p>XML \u0441\u0430\u043c \u043f\u043e \u0441\u0435\u0431\u0435 \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e &#8212; \u044d\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0444\u043e\u0440\u043c\u0430\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 HTML, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u0430\u043a \u0440\u0430\u0437 \u0442\u0430\u043a\u0438 \u043f\u0440\u0438\u0437\u0432\u0430\u043d \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435.<\/p>\n<p>XML \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0447\u0442\u043e \u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u043d\u0443\u0442\u0440\u0438, \u0430 \u0435\u0433\u043e \u0442\u0435\u0433\u0438 \u043d\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u0437\u0430\u0440\u0430\u043d\u0435\u0435, \u043e\u043f\u044f\u0442\u044c \u0436\u0435 \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 HTML.<\/p>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u044d\u0442\u043e \u0434\u0432\u0430 \u0431\u0440\u0430\u0442\u0430, \u043f\u043e\u0445\u043e\u0436\u0438\u0445 \u0434\u0440\u0443\u0433 \u043d\u0430 \u0434\u0440\u0443\u0433\u0430 \u0432\u043d\u0435\u0448\u043d\u0435, \u043d\u043e \u043e\u0447\u0435\u043d\u044c \u0440\u0430\u0437\u043d\u044b\u0445 \u0432\u043d\u0443\u0442\u0440\u0438.<\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430 \u043e\u0442\u0432\u043b\u0435\u0447\u0451\u043d\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u043e\u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f?<\/p>\n<pre><code class=\"xml\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?> &lt;bookstore>   &lt;book>     &lt;title>Everyday Italian&lt;\/title>     &lt;author>Giada De Laurentiis&lt;\/author>     &lt;year>2005&lt;\/year>     &lt;instock>     &lt;\/instock>   &lt;\/book>   &lt;book>     &lt;title>Harry Potter&lt;\/title>     &lt;author>J K. Rowling&lt;\/author>     &lt;year>2005&lt;\/year>     &lt;instock \/>   &lt;\/book> &lt;\/bookstore><\/code><\/pre>\n<p>\u0422\u0443\u0442 \u0443 \u043d\u0430\u0441 XML, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043a\u043d\u0438\u0436\u043d\u044b\u0439 \u043c\u0430\u0433\u0430\u0437\u0438\u043d \u0438 \u0438\u043c\u0435\u044e\u0449\u0438\u0435\u0441\u044f \u0432 \u043d\u0451\u043c \u043a\u043d\u0438\u0433\u0438. \u0423 \u043a\u0430\u0436\u0434\u043e\u0439 \u043a\u043d\u0438\u0433\u0438 \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0439 \u043d\u0430\u0431\u043e\u0440 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 &#8212; \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435, \u0430\u0432\u0442\u043e\u0440, \u0433\u043e\u0434 \u0432\u044b\u043f\u0443\u0441\u043a\u0430, \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0432 \u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0435.<\/p>\n<p>\u0412\u0441\u0451 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441<\/p>\n<h4>XML Prolog<\/h4>\n<pre><code class=\"xml\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?><\/code><\/pre>\n<p>\u042d\u0442\u043e \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0439 <strong>XML Prolog<\/strong>. \u041e\u043d \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u0435\u043d, \u043e\u0434\u043d\u0430\u043a\u043e \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0438 \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u0434\u0442\u0438 \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0439. \u0412\u0435\u0440\u0441\u0438\u044f \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u0442\u0440\u043e\u0433\u043e 1.0, \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e &#8212;  UTF-8.<br \/>\u041a\u043e\u043b\u044c \u0441\u043a\u043e\u0440\u043e \u043e\u043d \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439, \u0434\u0430\u043b\u0435\u0435 \u043c\u044b \u0435\u0433\u043e \u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c.<\/p>\n<h4>\u0414\u0435\u0440\u0435\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432<\/h4>\n<p>XML \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0437 \u0441\u0435\u0431\u044f \u0434\u0435\u0440\u0435\u0432\u043e, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0438\u0437 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u041e\u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0439 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438. \u0421\u0430\u043c\u044b\u0439 \u043f\u0435\u0440\u0432\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u0440\u043d\u0435\u0432\u044b\u043c &#8212; <code>root<\/code>, \u0432\u0441\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 &#8212; \u0435\u0433\u043e \u0434\u0435\u0442\u0438. \u0412 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0432\u044b\u0448\u0435 \u044d\u0442\u043e <code>&lt;bookstore><\/code>.  \u042d\u043b\u0435\u043c\u0435\u043d\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0437 \u0441\u0435\u0431\u044f \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u0438 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u0442\u0435\u0433\u0438 \u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435. \u0422\u0435\u0433\u0438 \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0432 \u0443\u0433\u043b\u043e\u0432\u044b\u0435 \u0441\u043a\u043e\u0431\u043a\u0438 \u0438 \u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b \u043a \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0443. <code>&lt;bookstore><\/code> \u0438 <code>&lt;Bookstore><\/code> &#8212; \u044d\u0442\u043e \u0440\u0430\u0437\u043d\u044b\u0435 \u0442\u0435\u0433\u0438. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043c\u0435\u0436\u0434\u0443 \u043a\u0430\u0436\u0434\u043e\u0439 \u043f\u0430\u0440\u043e\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f &#8212; \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c-\u0440\u0435\u0431\u0451\u043d\u043e\u043a \u0438\u043b\u0438 \u0441\u0451\u0441\u0442\u0440\u044b (<code>siblings<\/code>).<\/p>\n<p>\u0414\u0435\u0442\u044c\u043c\u0438 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b <code>&lt;book><\/code>. \u0420\u0430\u0437\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b <code>&lt;book><\/code> \u0434\u0440\u0443\u0433 \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u0430 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u0451\u0441\u0442\u0440\u0430\u043c\u0438. \u041a\u0430\u043a \u0442\u0430\u043a\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043d\u044f\u0442\u0438\u044f \u0441\u043f\u0438\u0441\u043a\u0430 \u0432 XML \u043d\u0435\u0442, \u043d\u043e \u043f\u043e \u0438\u043c\u0435\u043d\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043c\u044b (\u0438 \u043a\u043e\u0434) \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u043c, \u0447\u0442\u043e \u043e\u043d\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0438\u0437 \u0441\u0435\u0431\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u0441\u043f\u0438\u0441\u043e\u043a. \u0423 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 <code>&lt;book><\/code> \u0435\u0441\u0442\u044c \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b. \u0418\u0445 \u0441\u043e\u0441\u0442\u0430\u0432 \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c &#8212; XML \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442, \u043e\u0434\u043d\u0430\u043a\u043e \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u0435\u0442 (\u0438 \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u0431\u0443\u0434\u0435\u0442) \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435.<\/p>\n<p>\u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e XML &#8212; \u043a\u0430\u0436\u0434\u044b\u0439 \u043e\u0442\u043a\u0440\u044b\u0432\u0448\u0438\u0439\u0441\u044f \u0442\u0435\u0433 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0437\u0430\u043a\u0440\u044b\u0442: \u0441\u043a\u0430\u0437\u0430\u043b <code>&lt;a><\/code> &#8212; \u0433\u043e\u0432\u043e\u0440\u0438 \u0438 <code>&lt;\/a><\/code>. \u042d\u043b\u0435\u043c\u0435\u043d\u0442 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0443\u0441\u0442\u044b\u043c, \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0440\u0430\u0436\u0430\u044f \u0444\u0430\u043a\u0442 \u0441\u0432\u043e\u0435\u0433\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f, \u0442\u043e\u0433\u0434\u0430 \u0437\u0430\u043f\u0438\u0441\u044c <code>&lt;instock>&lt;\/instock><\/code> \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u043e <code>&lt;instock\/><\/code>.<\/p>\n<h4>\u0410\u0442\u0440\u0438\u0431\u0443\u0442\u044b<\/h4>\n<p>\u0412\u0437\u0433\u043b\u044f\u043d\u0435\u043c \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"xml\">&lt;bookstore>   &lt;book category=\"cooking\">     &lt;title lang=\"en\">Everyday Italian&lt;\/title>     &lt;author>Giada De Laurentiis&lt;\/author>     &lt;year>2005&lt;\/year>   &lt;\/book>   &lt;book category=\"children\">     &lt;title lang=\"en\">Harry Potter&lt;\/title>     &lt;author>J K. Rowling&lt;\/author>     &lt;year>2005&lt;\/year>   &lt;\/book>&lt;\/bookstore><\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u043d\u0443\u0442\u0440\u0438 \u0442\u0435\u0433\u0430 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0441\u0442\u0440\u043e\u043a\u0430 \u0432\u0438\u0434\u0430 <code>category=\"cooking\"<\/code>. \u041e\u043d\u0430 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0431 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0435. \u0421\u0432\u043e\u0435\u0433\u043e \u0440\u043e\u0434\u0430 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435.<\/p>\n<p>\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u043e\u0442 \u044d\u0442\u0438 \u0434\u0432\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u0440\u0430\u0432\u043d\u043e\u043f\u0440\u0430\u0432\u043d\u044b \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f XML:<\/p>\n<pre><code class=\"xml\">  &lt;book category=\"cooking\">     &lt;title lang=\"en\">Everyday Italian&lt;\/title>     &lt;author>Giada De Laurentiis&lt;\/author>     &lt;year>2005&lt;\/year>   &lt;\/book><\/code><\/pre>\n<p>\u0438<\/p>\n<pre><code class=\"xml\">  &lt;book>     &lt;category>cooking&lt;\/category>     &lt;title>Everyday Italian       &lt;lang>en&lt;\/lang>     &lt;\/title>     &lt;author>Giada De Laurentiis&lt;\/author>     &lt;year>2005&lt;\/year>   &lt;\/book><\/code><\/pre>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c XML \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u0445 \u043d\u0438 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430, \u043d\u0438 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u0438 \u043f\u043e\u043d\u044f\u0442\u0438\u044f \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 \u043d\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0435\u0442. \u042d\u0442\u043e \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430 \u0441\u043e\u0432\u0435\u0441\u0442\u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u0435\u043b\u044f\/\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430. <\/p>\n<p>\u0412 \u0446\u0435\u043b\u043e\u043c \u043a \u044d\u0442\u043e\u043c\u0443 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u044c\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u043a\u0430\u043a \u043a \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u043c &#8212; \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e\u0431 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438. \u0422\u043e \u0435\u0441\u0442\u044c \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u043e\u0442\u044a\u0435\u043c\u043b\u0435\u043c\u044b\u043c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0438\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u0432 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0445 \u0446\u0435\u043b\u044f\u0445, \u0442\u043e \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043d\u0435\u0441\u0442\u0438 \u0432 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0443\u0445\u043e\u0434\u0438\u0442\u044c, \u0432\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0437 netconf:<\/p>\n<pre><code class=\"xml\">&lt;rpc message-id=\u201d101\u2033> &lt;get-config>  &lt;source>    &lt;running\/>  &lt;\/source> &lt;\/get-config> &lt;\/rpc><\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c <code>message-id<\/code> &#8212; \u044d\u0442\u043e \u0430\u0442\u0440\u0438\u0431\u0443\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 RPC, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f \u043a \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u043c \u0434\u0430\u043b\u0435\u0435 \u0434\u0430\u043d\u043d\u044b\u043c, \u043d\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0442\u0441\u043b\u0435\u0434\u0438\u0442\u044c \u043f\u043e <code>message-id<\/code> \u043e\u0442\u0432\u0435\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 (\u043e\u043d \u0432\u0441\u0442\u0430\u0432\u0438\u0442 \u0435\u0433\u043e \u0432 <code>&lt;rpc-reply><\/code>).<\/p>\n<p>\u0415\u0449\u0451 \u043e\u0434\u0438\u043d \u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c \u0434\u0430\u043b\u044c\u0448\u0435: <code>&lt;interfaces operation=\"replace\"><\/code>. \u0410\u0442\u0440\u0438\u0431\u0443\u0442 <code>operation=\"replace\"<\/code> \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u044c\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430, \u043e\u043d \u043b\u0438\u0448\u044c \u0433\u043e\u0432\u043e\u0440\u0438\u0442, \u0447\u0442\u043e \u0442\u043e, \u0447\u0442\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0441\u0435\u0439\u0447\u0430\u0441 \u043d\u0430 \u043a\u043e\u0440\u043e\u0431\u043a\u0435 \u0432 \u0432\u0435\u0442\u043a\u0435 <code>&lt;interfaces><\/code>, \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u0434\u0430\u043d\u043d\u043e\u043c XML.<\/p>\n<p>\u041d\u0443 \u0438 \u0437\u0430\u043c\u0435\u0447\u0443, \u0447\u0442\u043e \u043f\u0443\u0441\u0442\u044c \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f XML \u0430\u0442\u0440\u0438\u0431\u0443\u0442 \u0438 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432\u0437\u0430\u0438\u043c\u043e\u0437\u0430\u043c\u0435\u043d\u044f\u0435\u043c\u044b, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u043f\u0440\u0438\u0434\u0443\u043c\u044b\u0432\u0430\u0435\u0442\u0435 \u0441\u0432\u043e\u044e \u0441\u0445\u0435\u043c\u0443 \u043e\u0431\u043c\u0435\u043d\u0430 \u0438\u043b\u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f, \u043e\u0434\u043d\u0430\u043a\u043e NETCONF \u0432\u0430\u043c \u0442\u0430\u043a\u043e\u0433\u043e \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u0438\u0442. \u0414\u0430 \u0438 \u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0435\u0441\u044c &#8212; \u0432\u0435\u0434\u044c \u0432 \u043d\u0451\u043c \u0443\u0436\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 \u0441\u0445\u0435\u043c\u0430 XML.<\/p>\n<h4>Namespaces<\/h4>\n<p>\u0425\u0443\u0445. \u042f \u043e\u0442\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u043b \u043c\u043d\u043e\u0433\u043e \u043b\u0435\u0442 \u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441\u0430\u043c\u0438 \u0432 XML. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u0442\u0443\u0442 \u043d\u0435\u0442 \u0445\u0438\u0442\u0440\u043e\u0433\u043e. \u0415\u0441\u043b\u0438 \u043c\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0438 \u0434\u0432\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0441 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c\u0438 \u0438\u043c\u0435\u043d\u0430\u043c\u0438, \u0442\u043e \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e\u0441\u0442\u044c &#8212; \u043a\u0430\u043a\u043e\u0439 \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043c\u044b \u0438\u043c\u0435\u0435\u043c \u0432 \u0432\u0438\u0434\u0443, \u043e\u0431\u0440\u0430\u0449\u0430\u044f\u0441\u044c \u043a \u043d\u0435\u043c\u0443 \u043f\u043e \u0438\u043c\u0435\u043d\u0438? \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u044d\u043b\u0435\u043c\u0435\u043d\u0442 <code>&lt;name><\/code> \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043a\u0430\u043a \u0443 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430, \u0442\u0430\u043a \u0438 \u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u0443 \u0432\u043b\u0430\u043d\u0430 \u0438\u0442\u0434. \u0418\u0445 \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u043d\u0435\u0441\u0442\u0438 \u0432 \u0440\u0430\u0437\u043d\u044b\u0435 NS, \u0445\u043e\u0442\u044f \u044d\u0442\u043e \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d\u0438 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043f\u043e\u0434 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f\u043c\u0438. \u0410 \u0435\u0441\u043b\u0438 \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0449\u0438\u0435 \u0438\u043c\u0435\u043d\u0430 &#8212; \u044d\u0442\u043e \u0443\u0436\u0435 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440,<\/p>\n<pre><code class=\"xml\">&lt;root> &lt;address>   &lt;city>     &lt;name>Moscow&lt;\/name>     &lt;street>Novocheremushkinskaya, 50&lt;\/street>   &lt;\/city> &lt;\/address> &lt;address>   &lt;ipv6>2a01:ba80:e:20::32&lt;\/ipv6>   &lt;ipv4>185.127.149.137&lt;\/ipv4> &lt;\/address> &lt;\/root><\/code><\/pre>\n<p>\u0412 \u043f\u0435\u0440\u0432\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0443 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 \u0430\u0434\u0440\u0435\u0441, \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c &#8212; IP.<\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u0443\u0436\u0435 \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442. \u041d\u0430\u0434\u043e \u0440\u0435\u0448\u0430\u0442\u044c.<\/p>\n<p>\u0421\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438.<\/p>\n<ol>\n<li>\n<p>\u041f\u0440\u044f\u043c\u043e \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0435\u043c \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441\u044b \u0441 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u0430\u043c\u0438: <\/p>\n<pre><code class=\"xml\">&lt;root> &lt;postal:address xmlns:postal=\"https:\/\/www.linkmeup.ru\/postal_address\/\">   &lt;postal:city>     &lt;postal:name>Moscow&lt;\/postal:name>     &lt;postal:street>Novocheremushkinskaya, 50&lt;\/postal:street>   &lt;\/postal:city> &lt;\/postal:address> &lt;ip:address xmlns:ip=\"https:\/\/www.linkmeup.ru\/ip\/\">   &lt;ip:ipv6>2a01:ba80:e:20::32&lt;\/ip:ipv6>   &lt;ip:ipv4>185.127.149.137&lt;\/ip:ipv4> &lt;\/ip:address> &lt;\/root><\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u044d\u0442\u043e \u043f\u043e\u043b\u043d\u043e\u0435, fully qualified, \u0438\u043c\u044f \u0431\u0435\u0437\u043e \u0432\u0441\u044f\u043a\u0438\u0445 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439. \u041e\u0431\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043f\u043e \u043f\u043e\u043b\u043d\u043e\u043c\u0443 \u0438\u043c\u0435\u043d\u0438.<\/p>\n<p><code>postal<\/code> \u0438 <code>ip<\/code> &#8212; \u044d\u0442\u043e \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0435 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u044b. \u0421\u0430\u043c\u043e \u0438\u043c\u044f namespace &#8212; \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430. \u041d\u043e \u043d\u0435\u0433\u043b\u0430\u0441\u043d\u0430\u044f \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0451\u043d\u043d\u043e\u0441\u0442\u044c, \u0447\u0442\u043e \u0432\u0441\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 URI. \u041e\u043d \u043c\u043e\u0436\u0435\u0442 \u0432\u0435\u0441\u0442\u0438 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441\u0430, \u0430 \u043c\u043e\u0436\u0435\u0442 \u0438 \u043d\u0435 \u0432\u0435\u0441\u0442\u0438.\u041d\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u0430 \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0442\u0435\u0433\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u044b\u043c, \u0442\u043e\u0433\u0434\u0430 \u0435\u0441\u0442\u044c \u0432\u0442\u043e\u0440\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431.<\/p>\n<\/li>\n<li>\n<p>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c default namespace<\/p>\n<pre><code class=\"xml\">&lt;root> &lt;address xmlns=\"https:\/\/www.linkmeup.ru\/postal_address\/\">   &lt;city>     &lt;name>Moscow&lt;\/name>     &lt;street>Novocheremushkinskaya, 50&lt;\/street>   &lt;\/city> &lt;\/address> &lt;address xmlns=\"https:\/\/www.linkmeup.ru\/ip\/\">   &lt;ipv6>2a01:ba80:e:20::32&lt;\/ipv6>   &lt;ipv4>185.127.149.137&lt;\/ipv4> &lt;\/address> &lt;\/root><\/code><\/pre>\n<p>\u041e\u0431\u043b\u0430\u0441\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u043e\u0433\u043e \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441\u0430 &#8212; \u0441\u0430\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0438 \u0432\u0441\u0435 \u0435\u0433\u043e \u043f\u043e\u0442\u043e\u043c\u043a\u0438, \u0435\u0441\u043b\u0438 \u043e\u043d \u043d\u0438\u0433\u0434\u0435 \u043d\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f.<\/p>\n<\/li>\n<\/ol>\n<p>\u041a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f namespace \u0441 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043f\u0440\u043e\u0441\u0442\u0430, \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0438 \u0442\u0430\u043c \u0435\u0441\u0442\u044c \u043c\u0435\u0441\u0442\u043e \u0442\u0451\u043c\u043d\u044b\u043c \u043f\u044f\u0442\u043d\u0430\u043c. \u0415\u0441\u043b\u0438 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u0435\u0442\u0430\u043b\u044c\u043d\u0435\u0435 \u0438\u0437\u0443\u0447\u0438\u0442\u044c, \u0442\u043e \u0435\u0441\u0442\u044c <a href=\"https:\/\/docs.microsoft.com\/en-us\/previous-versions\/aa468565(v=msdn.10)?redirectedfrom=MSDN\" rel=\"noopener noreferrer nofollow\">\u043f\u0430\u0440\u043e\u0447\u043a\u0430<\/a> \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 <a href=\"http:\/\/www.rpbourret.com\/xml\/NamespacesFAQ.htm\" rel=\"noopener noreferrer nofollow\">FAQ \u043f\u0440\u043e \u043d\u0438\u0445<\/a>.<\/p>\n<h4>Xpath &#8212; XML Path<\/h4>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u043d\u043e \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e: <code>XPath<\/code> &#8212; \u044d\u0442\u043e \u0441\u043f\u043e\u0441\u043e\u0431 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043d\u043e\u0434\u044b \u0438\u043b\u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043d\u043e\u0434 \u0438\u0437 XML \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u043d\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e: \u044d\u0442\u043e \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u044e XML \u0432 \u0432\u0438\u0434\u0435 &#171;\u043f\u0440\u0438\u0432\u044b\u0447\u043d\u043e\u0433\u043e&#187; \u043d\u0430\u043c \u043f\u0443\u0442\u0438, \u0433\u0434\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043e\u0442\u0434\u0435\u043b\u0435\u043d\u044b \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430 \u0437\u043d\u0430\u043a\u043e\u043c &#171;<code>\/<\/code>&#171;.<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 XML \u0438\u0437 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0432\u044b\u0448\u0435 \u043f\u0443\u0442\u044c \u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443 <code>&lt;title><\/code> \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u0430\u043d \u0432 \u0432\u0438\u0434\u0435 <code>\/bookstore\/book\/title<\/code><\/p>\n<p>\u041d\u0443 \u0430 \u0442\u0435\u043f\u0435\u0440\u044c \u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043d\u043e \u0434\u043e\u043b\u0433\u043e.<\/p>\n<p>XPath &#8212; \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0433\u0438\u0431\u043a\u0438\u0439 \u0438 \u043c\u043e\u0449\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u0432\u043d\u0443\u0442\u0440\u0438 XML \u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b. \u041e\u043d \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438: <code>sum<\/code>, <code>count<\/code>, <code>avg<\/code>, <code>min<\/code>, <code>starts-with<\/code>, <code>contains<\/code>, <code>concat<\/code>, <code>true<\/code>, <code>false<\/code> &#8212; \u043d\u0430\u0434 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0442\u0438\u043f\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445: \u0447\u0438\u0441\u043b\u0430, \u0441\u0442\u0440\u043e\u043a\u0438, \u0431\u0443\u043b\u0435\u0432\u044b.<\/p>\n<p>\u0422\u0430\u043a \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e XPath \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u043a\u043d\u0438\u0433 \u0441 \u0446\u0435\u043d\u043e\u044e \u0432\u044b\u0448\u0435 35: <code>\/bookstore\/book[price>35]\/title<\/code><\/p>\n<p>XPath \u043e\u043f\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043d\u043e\u0434\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b, \u0442\u0435\u043a\u0441\u0442, \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441\u044b \u0438 \u0434\u0440\u0443\u0433\u043e\u0435.<\/p>\n<p>\u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u043e\u043c\u0438\u043c\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u0447\u0430\u0441\u0442\u044c XML \u043f\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c\u0443 \u043f\u0443\u0442\u0438, \u043c\u043e\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0445\u0438\u0442\u0440\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b.<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<ul>\n<li>\n<p>\u0412\u0435\u0440\u043d\u0443\u0442\u044c BGP-\u0433\u0440\u0443\u043f\u043f\u0443, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0435\u0441\u0442\u044c peer 10.1.1.1;<\/p>\n<\/li>\n<li>\n<p>\u0412\u0435\u0440\u043d\u0443\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0447\u0438\u0441\u043b\u043e \u043e\u0448\u0438\u0431\u043e\u043a \u0431\u043e\u043b\u044c\u0448\u0435 100;<\/p>\n<\/li>\n<li>\n<p>\u0412\u0435\u0440\u043d\u0443\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 native-vlan 127;<\/p>\n<\/li>\n<li>\n<p>\u0412\u0435\u0440\u043d\u0443\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432, \u0432 \u0438\u043c\u0435\u043d\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0435\u0441\u0442\u044c &#171;Ethernet&#187;.<\/p>\n<\/li>\n<\/ul>\n<p>\u0412 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 NETCONF \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0435\u0433\u043e \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u044c, \u043d\u043e \u044d\u0442\u043e \u043d\u0435 \u0441\u0430\u043c\u0430\u044f \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u0430\u044f capability. \u0412 \u043e\u0431\u0449\u0435\u043c, \u0437\u043d\u0430\u0442\u044c \u043f\u0440\u043e \u043d\u0435\u0433\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e, \u043d\u043e \u0433\u043b\u0443\u0431\u043e\u043a\u043e \u043a\u043e\u043f\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u043c. \u0415\u0441\u043b\u0438 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u043e\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c, \u0442\u043e \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <a href=\"https:\/\/www.w3schools.com\/xml\/xpath_intro.asp\" rel=\"noopener noreferrer nofollow\">\u0442\u0443\u0442<\/a>.<\/p>\n<h4>\u0421\u0445\u0435\u043c\u0430<\/h4>\n<p>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 XML &#8212; \u044d\u0442\u043e \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438. \u041d\u043e \u044d\u0442\u043e \u043b\u0438\u0448\u0435\u043d\u043e \u043a\u0430\u043a\u043e\u0433\u043e-\u043b\u0438\u0431\u043e \u0441\u043c\u044b\u0441\u043b\u0430, \u0435\u0441\u0442\u044c \u043d\u0435\u0442 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u044d\u0442\u0438\u0445 \u0444\u0430\u0439\u043b\u0430\u0445 \u0434\u043e\u043b\u0436\u043d\u044b \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f &#8212; \u0433\u0434\u0435 \u043a\u0430\u043a\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0438 \u043a\u0430\u043a\u043e\u0433\u043e \u043e\u043d\u0438 \u0442\u0438\u043f\u0430.<\/p>\n<p>\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435, \u0447\u0442\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e\u0431 IP-\u0430\u0434\u0440\u0435\u0441\u0430\u0445 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043f\u043e\u043c\u0435\u0449\u0430\u0442\u044c \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 <code>&lt;interface><\/code>, \u0430 \u0447\u0438\u0442\u0430\u0442\u044c \u0435\u0433\u043e \u043f\u044b\u0442\u0430\u044e\u0442\u0441\u044f \u0438\u0437 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 <code>&lt;unit><\/code>?<\/p>\n<p>\u0418\u043b\u0438 \u0434\u0430\u0442\u0443 \u043c\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u043c \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 <code>YYYY-MM-DD<\/code>, \u0430 \u0447\u0438\u0442\u0430\u0442\u044c \u0435\u0451 \u043f\u044b\u0442\u0430\u044e\u0442\u0441\u044f \u0432 <code>MM-DD-YYYY<\/code> (\u0431\u043e\u043b\u044c\u043d\u044b\u0435 \u0443\u0431\u043b\u044e\u0434\u043a\u0438). \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u0430\u043c XML \u0431\u0443\u0434\u0435\u0442 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e &#171;Well Formed&#187;, \u0447\u0442\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f &#8212; \u0442\u043e \u0435\u0441\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0443 XML. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 <strong>\u0421\u0445\u0435\u043c\u0430<\/strong>. \u0412 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c XML-\u0444\u0430\u0439\u043b\u0435 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0445\u0435\u043c\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e XML.<\/p>\n<p>\u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442<\/p>\n<ul>\n<li>\n<p>\u0434\u0432\u0443\u043c \u0441\u0442\u043e\u0440\u043e\u043d\u0430\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u0441\u043f\u043e\u0441\u043e\u0431 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<\/li>\n<li>\n<p>\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430<\/p>\n<\/li>\n<li>\n<p>\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0435<\/p>\n<\/li>\n<li>\n<p>\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u044c XML<\/p>\n<\/li>\n<\/ul>\n<p>\u041d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u0445\u043e\u0437\u044f\u0439\u0441\u0442\u0432\u043e <strong>XML Schema Definition<\/strong> &#8212; \u0438\u043b\u0438 \u043a\u043e\u0440\u043e\u0442\u043a\u043e <strong>XSD<\/strong>.<\/p>\n<p>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044d\u0442\u043e \u0442\u043e\u0442 \u0436\u0435 \u0441\u0430\u043c\u044b\u0439 XML, \u043e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u043a\u0430\u043a-\u0442\u043e \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0442\u044c \u0441\u0435\u0431\u044f, \u0447\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0445\u0435\u043c\u043e\u0439. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0435\u0441\u0442\u044c \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 <code>&lt;schema><\/code>. \u0412\u043e\u0442 \u0442\u0430\u043a \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c XSD \u0434\u043b\u044f \u043a\u0443\u0441\u043e\u0447\u043a\u0430 XML \u0432\u044b\u0448\u0435:<\/p>\n<pre><code class=\"xml\">&lt;?xml version=\"1.0\" encoding=\"utf-8\"?> &lt;xs:schemaxmlns:xs=\"http:\/\/www.w3.org\/2001\/XMLSchema\">   &lt;xs:elementname=\"address\">     &lt;xs:complexType>       &lt;xs:sequence>         &lt;xs:elementname=\"country_name\" type=\"xs:string\"\/>         &lt;xs:elementname=\"population\" type=\"xs:decimal\"\/>       &lt;\/xs:sequence>     &lt;\/xs:complexType> &lt;\/xs:element> &lt;\/xs:schema><\/code><\/pre>\n<p>\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432 \u0441\u0430\u043c\u043e\u043c XML \u043c\u043e\u0436\u043d\u043e \u0434\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 XSD<\/p>\n<pre><code class=\"xml\">&lt;note xmlns=\"https:\/\/www.linkmeup.ru\" xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\" xsi:schemaLocation=\"https:\/\/www.linkmeup.ru\/404.xsd\"><\/code><\/pre>\n<p><a href=\"https:\/\/www.w3schools.com\/xml\/schema_howto.asp\" rel=\"noopener noreferrer nofollow\">\u0421\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f XSD<\/a>.<\/p>\n<p>\u041b\u0443\u0447\u0448\u0430\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430 XSD &#8212; \u044d\u0442\u043e \u0442\u043e, \u0447\u0442\u043e \u043d\u0430 \u0435\u0433\u043e \u043e\u0441\u043d\u043e\u0432\u0435 \u043c\u043e\u0436\u043d\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0432 \u044f\u0437\u044b\u043a\u0430\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0422\u043e \u0435\u0441\u0442\u044c XSD \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442, \u043a\u0430\u043a\u0438\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u044b, \u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 XML &#8212; \u043d\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0434\u043e\u0431\u043d\u0435\u0435, \u0447\u0435\u043c \u043a\u0440\u0430\u0444\u0442\u0438\u0442\u044c XML.<\/p>\n<p>\u0421 \u0441\u0445\u0435\u043c\u0430\u043c\u0438 \u0438 \u043c\u043e\u0434\u0435\u043b\u044f\u043c\u0438 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f <a href=\"#MODELS\" rel=\"noopener noreferrer nofollow\">\u0434\u0430\u043b\u044c\u0448\u0435<\/a>.<\/p>\n<p>\u041d\u0430\u0434\u0435\u044e\u0441\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u043d\u0435 \u0443\u0442\u043e\u043f\u0430\u044f \u0432 \u0434\u0435\u0442\u0430\u043b\u044f\u0445, \u0434\u0430\u0442\u044c \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0438\u0437 \u0441\u0435\u0431\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 XML. \u0414\u0430\u043b\u0435\u0435 \u0434\u043b\u044f \u043d\u0430\u0441 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u0430\u0436\u043d\u044b\u043c.<\/p>\n<h2>&lt;\/XML><\/h2>\n<p><a class=\"anchor\" name=\"NETCONF_AGAIN\" id=\"NETCONF_AGAIN\"><\/a><\/p>\n<hr\/>\n<h2>NETCONF Again<\/h2>\n<p>\u0418 \u0432\u043e\u0442 \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u0440\u0435\u043c\u044f \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u043d\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 NETCONF \u0438 \u043f\u043e\u043f\u0440\u0430\u043a\u0442\u0438\u043a\u043e\u0432\u0430\u0442\u044c\u0441\u044f.<\/p>\n<p>\u041e\u0434\u0438\u043d \u0438\u0437 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u043e\u0432 NETCONF &#8212; \u044d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0442 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445.<br \/>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u043c\u0438 \u043e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439, \u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c\u0438 &#8212; \u0437\u0430\u0431\u0438\u0440\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438.<\/p>\n<p>\u0412\u043e\u0442 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043d\u0435\u043f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 NETCONF:<\/p>\n<ul>\n<li>\n<p><code>&lt;get><\/code><\/p>\n<\/li>\n<li>\n<p><code>&lt;get-config><\/code><\/p>\n<\/li>\n<li>\n<p><code>&lt;edit-config><\/code><\/p>\n<\/li>\n<li>\n<p><code>&lt;copy-config><\/code><\/p>\n<\/li>\n<li>\n<p><code>&lt;delete-config><\/code><\/p>\n<\/li>\n<li>\n<p><code>&lt;lock><\/code><\/p>\n<\/li>\n<li>\n<p><code>&lt;unlock><\/code><\/p>\n<\/li>\n<li>\n<p><code>&lt;close-session><\/code><\/p>\n<\/li>\n<li>\n<p><code>&lt;kill-session><\/code><\/p>\n<\/li>\n<\/ul>\n<p>\u041d\u043e \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u0432\u0435\u043d\u0434\u043e\u0440\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442 \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438.<\/p>\n<p><a class=\"anchor\" name=\"NC_OPERATIONS\" id=\"NC_OPERATIONS\"><\/a><\/p>\n<h3>\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438<\/h3>\n<h4>&lt;get><\/h4>\n<p>\u042d\u0442\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0438\u0435 (running) \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435.<br \/>\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e<\/p>\n<pre><code class=\"xml\">&lt;rpc message-id=\"100\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">   &lt;get\/> &lt;\/rpc> ]]&gt;]]&gt;<\/code><\/pre>\n<p>\u0418 \u0432 \u043e\u0442\u0432\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u043a\u0440\u0430\u043d\u043e\u0432 XML. <\/p>\n<p>\u041e\u0442\u0432\u0435\u0442 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0432 <code>&lt;rpc-reply><\/code>. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 <code>&lt;rpc-reply><\/code> \u0441\u0435\u0440\u0432\u0435\u0440 \u0432\u0435\u0440\u043d\u0451\u0442 <code>&lt;rpc-error><\/code> \u0441 \u0442\u0435\u043a\u0441\u0442\u043e\u043c \u043e\u0448\u0438\u0431\u043a\u0438.<\/p>\n<p>\u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043e\u0448\u0438\u0431\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 XML.<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0437\u0430\u0431\u0443\u0434\u0435\u043c \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u0442\u0435\u0433 <code>&lt;\/get><\/code>:<\/p>\n<pre><code class=\"xml\">&lt;rpc message-id=\"100\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">   &lt;get> &lt;\/rpc> ]]&gt;]]&gt; &lt;rpc-reply xmlns:junos=\"http:\/\/xml.juniper.net\/junos\/14.1R1\/junos\" message-id=\"100\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\"> &lt;rpc-error> &lt;error-type>protocol&lt;\/error-type> &lt;error-tag>operation-failed&lt;\/error-tag> &lt;error-severity>error&lt;\/error-severity> &lt;error-message>syntax error, expecting &amp;lt;filter&amp;gt; or &amp;lt;\/get&amp;gt;&lt;\/error-message> &lt;error-info> &lt;bad-element>interfaces&lt;\/bad-element> &lt;\/error-info> &lt;\/rpc-error> &lt;\/rpc-reply><\/code><\/pre>\n<p>\u0418\u043b\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u043d\u0435\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0432\u0435\u0442\u043a\u0443:<\/p>\n<pre><code class=\"xml\">&lt;rpc message-id=\"100\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">   &lt;get>     &lt;interfaces\/>   &lt;\/get> &lt;\/rpc> ]]&gt;]]&gt;  &lt;rpc-reply xmlns:junos=\"http:\/\/xml.juniper.net\/junos\/14.1R1\/junos\" message-id=\"100\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\"> &lt;rpc-error> &lt;error-type>protocol&lt;\/error-type> &lt;error-tag>operation-failed&lt;\/error-tag> &lt;error-severity>error&lt;\/error-severity> &lt;error-message>syntax error, expecting &amp;lt;filter&amp;gt; or &amp;lt;\/get&amp;gt;&lt;\/error-message> &lt;error-info> &lt;bad-element>interfaces&lt;\/bad-element> &lt;\/error-info> &lt;\/rpc-error> &lt;\/rpc-reply><\/code><\/pre>\n<p>\u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u0435\u043d\u0434\u043e\u0440\u0430 \u0432 \u043e\u0442\u0432\u0435\u0442\u0435 \u043d\u0430 <code>&lt;get><\/code> \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c\u0441\u044f \u043b\u0438\u0431\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u0432\u0441\u0451, \u0447\u0442\u043e \u0432\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u0434\u0430\u0442\u044c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e &#8212; \u043f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u043d\u0444\u0438\u0433 \u0438 \u0432\u0441\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043f\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e, \u043b\u0438\u0431\u043e \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u0447\u0430\u0441\u0442\u044c.<\/p>\n<p>\u0422\u0430\u043a, Juniper \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0444\u0438\u0433 \u0438 \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0432\u0435\u0440\u0445\u0443. \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0431\u0440\u0430\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <code>&lt;get-interface-information><\/code>:<\/p>\n<pre><code class=\"xml\">&lt;rpc>     &lt;get-interface-information\/> &lt;\/rpc><\/code><\/pre>\n<p>\u0412\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0432\u0435\u0442: <a href=\"https:\/\/pastebin.com\/2xTpuSi3\" rel=\"noopener noreferrer nofollow\">https:\/\/pastebin.com\/2xTpuSi3<\/a>.<\/p>\n<blockquote>\n<p>\u042d\u0442\u043e\u043c\u0443, \u043a\u0441\u0442\u0430\u0442\u0438, \u0441\u043b\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435. \u0414\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u043e \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0432\u0435\u0442\u043a\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u043c\u0435\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 RPC. \u0418 \u0431\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e \u043a\u0430\u043a \u044d\u0442\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043c\u043e\u0434\u0435\u043b\u044f\u0445 \u0434\u0430\u043d\u043d\u044b\u0445. <\/p>\n<\/blockquote>\n<p>\u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u044d\u0442\u043e \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 (\u043d\u0438\u043a\u043e\u0433\u0434\u0430) \u0443\u0434\u043e\u0431\u043d\u043e. \u0425\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u043f\u043e\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435. NETCONF \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u0430 \u0443\u043a\u0430\u0437\u0430\u0442\u044c NETCONF-\u0441\u0435\u0440\u0432\u0435\u0440\u0443, \u043a\u0430\u043a\u0443\u044e \u0438\u043c\u0435\u043d\u043d\u043e \u0447\u0430\u0441\u0442\u044c \u043a\u043b\u0438\u0435\u043d\u0442 \u0436\u0435\u043b\u0430\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u0442\u044c. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442 <code>&lt;filter><\/code>.<\/p>\n<h4>&lt;filter><\/h4>\n<p>\u0421 \u0435\u0433\u043e \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u0430\u043a\u0443\u044e \u0438\u043c\u0435\u043d\u043d\u043e \u0447\u0430\u0441\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c. \u041c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0430\u0442\u0440\u0438\u0431\u0443\u0442 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f subtree \u0438 xpath. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f subtree, \u043d\u043e \u043e\u0431\u044b\u0447\u043d\u043e \u0435\u0433\u043e \u0437\u0430\u0434\u0430\u044e\u0442 \u044f\u0432\u043d\u043e, \u0434\u0430\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0434\u0432\u0443\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 get \u043f\u043e\u0444\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u043c \u043e\u0442\u0432\u0435\u0442. \u0411\u0435\u0437 \u0444\u0438\u043b\u044c\u0442\u0440\u0430 \u0441\u043e\u0432\u0441\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u0435\u0440\u043d\u0443\u0442\u0441\u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e.<\/p>\n<pre><code class=\"xml\">&lt;rpc message-id=\"100\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">   &lt;get\/> &lt;\/rpc> ]]&gt;]]&gt;<\/code><\/pre>\n<p>\u0412\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0432\u0435\u0442: <a href=\"https:\/\/pastebin.com\/MMWXM2eT\" rel=\"noopener noreferrer nofollow\">https:\/\/pastebin.com\/MMWXM2eT<\/a>.<\/p>\n<p>\u0421 \u043f\u0443\u0441\u0442\u044b\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u043c \u043d\u0435 \u0432\u0435\u0440\u043d\u0451\u0442\u0441\u044f \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<pre><code class=\"xml\">&lt;rpc message-id=\"100\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">   &lt;get>    &lt;filter type=\"subtree\">    &lt;\/filter>   &lt;\/get> &lt;\/rpc> ]]&gt;]]&gt;  &lt;rpc-reply xmlns:junos=\"http:\/\/xml.juniper.net\/junos\/14.1R1\/junos\" message-id=\"100\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\"> &lt;data> &lt;database-status-information> &lt;database-status> &lt;user>eucariot&lt;\/user> &lt;terminal>&lt;\/terminal> &lt;pid>31101&lt;\/pid> &lt;start-time junos:seconds=\"1644636396\">2022-02-12 03:26:36 UTC&lt;\/start-time> &lt;edit-path>&lt;\/edit-path> &lt;\/database-status> &lt;\/database-status-information> &lt;\/data> &lt;\/rpc-reply> ]]&gt;]]&gt;<\/code><\/pre>\n<p>\u0412\u043e\u0442 \u0442\u0430\u043a\u0438\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0442\u0430\u0449\u0438\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e \u0432\u0441\u0435\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u043c:<\/p>\n<pre><code class=\"xml\">&lt;rpc message-id=\"100\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">   &lt;get>    &lt;filter type=\"subtree\">      &lt;configuration>        &lt;interfaces\/>      &lt;\/configuration>    &lt;\/filter>   &lt;\/get> &lt;\/rpc> ]]&gt;]]&gt;  &lt;rpc-reply xmlns:junos=\"http:\/\/xml.juniper.net\/junos\/14.1R1\/junos\" message-id=\"100\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\"> &lt;data> &lt;configuration xmlns=\"http:\/\/xml.juniper.net\/xnm\/1.1\/xnm\" junos:changed-seconds=\"1644510087\" junos:changed-localtime=\"2022-02-10 16:21:27 UTC\">     &lt;interfaces>         &lt;interface>             &lt;name>ge-0\/0\/0&lt;\/name>             &lt;unit>                 &lt;name>0&lt;\/name>                 &lt;family>                     &lt;inet>                         &lt;address>                             &lt;name>169.254.0.1\/31&lt;\/name>                         &lt;\/address>                     &lt;\/inet>                 &lt;\/family>             &lt;\/unit>         &lt;\/interface>         &lt;interface>             &lt;name>ge-0\/0\/2&lt;\/name>             &lt;unit>                 &lt;name>0&lt;\/name>                 &lt;family>                     &lt;inet>                         &lt;address>                             &lt;name>169.254.100.1\/31&lt;\/name>                         &lt;\/address>                     &lt;\/inet>                 &lt;\/family>             &lt;\/unit>         &lt;\/interface>         &lt;interface>             &lt;name>em0&lt;\/name>             &lt;unit>                 &lt;name>0&lt;\/name>                 &lt;family>                     &lt;inet>                         &lt;address>                             &lt;name>192.168.1.2\/24&lt;\/name>                         &lt;\/address>                     &lt;\/inet>                 &lt;\/family>             &lt;\/unit>         &lt;\/interface>     &lt;\/interfaces> &lt;\/configuration> &lt;database-status-information> &lt;database-status> &lt;user>eucariot&lt;\/user> &lt;terminal>&lt;\/terminal> &lt;pid>31101&lt;\/pid> &lt;start-time junos:seconds=\"1644636721\">2022-02-12 03:32:01 UTC&lt;\/start-time> &lt;edit-path>&lt;\/edit-path> &lt;\/database-status> &lt;\/database-status-information> &lt;\/data> &lt;\/rpc-reply> ]]&gt;]]&gt;<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043d\u0435 \u0432\u0441\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0434\u0435\u0440\u0435\u0432\u0430, \u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0443\u044e \u0432\u0430\u0441 \u0447\u0430\u0441\u0442\u044c, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0443\u0436\u043d\u044b:<\/p>\n<pre><code class=\"xml\">&lt;rpc message-id=\"100\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">   &lt;get>    &lt;filter type=\"subtree\">      &lt;configuration>        &lt;interfaces>          &lt;interface>            &lt;name\/>            &lt;description\/>          &lt;\/interface>        &lt;\/interfaces>      &lt;\/configuration>    &lt;\/filter>   &lt;\/get> &lt;\/rpc> ]]&gt;]]&gt;  &lt;rpc-reply xmlns:junos=\"http:\/\/xml.juniper.net\/junos\/14.1R1\/junos\" message-id=\"100\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\"> &lt;data> &lt;configuration xmlns=\"http:\/\/xml.juniper.net\/xnm\/1.1\/xnm\" junos:changed-seconds=\"1644637011\" junos:changed-localtime=\"2022-02-12 03:36:51 UTC\">     &lt;interfaces>         &lt;interface>             &lt;name>ge-0\/0\/0&lt;\/name>             &lt;description>kzn-leaf-0&lt;\/description>         &lt;\/interface>         &lt;interface>             &lt;name>ge-0\/0\/2&lt;\/name>             &lt;description>kzn-edge-0&lt;\/description>         &lt;\/interface>         &lt;interface>             &lt;name>em0&lt;\/name>             &lt;description>mgmt-switch&lt;\/description>         &lt;\/interface>     &lt;\/interfaces> &lt;\/configuration> &lt;database-status-information> &lt;database-status> &lt;user>eucariot&lt;\/user> &lt;terminal>&lt;\/terminal> &lt;pid>31316&lt;\/pid> &lt;start-time junos:seconds=\"1644637103\">2022-02-12 03:38:23 UTC&lt;\/start-time> &lt;edit-path>&lt;\/edit-path> &lt;\/database-status> &lt;\/database-status-information> &lt;\/data> &lt;\/rpc-reply> ]]&gt;]]&gt;<\/code><\/pre>\n<p>\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0435\u0441\u043b\u0438 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0437\u0430\u0431\u0440\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443:<\/p>\n<pre><code class=\"xml\">&lt;rpc message-id=\"100\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">   &lt;get>    &lt;filter type=\"subtree\">      &lt;configuration>        &lt;interfaces>          &lt;interface>            &lt;name>ge-0\/0\/0&lt;\/name>          &lt;\/interface>        &lt;\/interfaces>      &lt;\/configuration>    &lt;\/filter>   &lt;\/get> &lt;\/rpc> ]]&gt;]]&gt;   &lt;rpc-reply xmlns:junos=\"http:\/\/xml.juniper.net\/junos\/14.1R1\/junos\" message-id=\"100\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\"> &lt;data> &lt;configuration xmlns=\"http:\/\/xml.juniper.net\/xnm\/1.1\/xnm\" junos:changed-seconds=\"1644637011\" junos:changed-localtime=\"2022-02-12 03:36:51 UTC\">     &lt;interfaces>         &lt;interface>             &lt;name>ge-0\/0\/0&lt;\/name>             &lt;description>kzn-leaf-0&lt;\/description>             &lt;unit>                 &lt;name>0&lt;\/name>                 &lt;family>                     &lt;inet>                         &lt;address>                             &lt;name>169.254.0.1\/31&lt;\/name>                         &lt;\/address>                     &lt;\/inet>                 &lt;\/family>             &lt;\/unit>         &lt;\/interface>     &lt;\/interfaces> &lt;\/configuration> &lt;database-status-information> &lt;database-status> &lt;user>eucariot&lt;\/user> &lt;terminal>&lt;\/terminal> &lt;pid>31316&lt;\/pid> &lt;start-time junos:seconds=\"1644637321\">2022-02-12 03:42:01 UTC&lt;\/start-time> &lt;edit-path>&lt;\/edit-path> &lt;\/database-status> &lt;\/database-status-information> &lt;\/data> &lt;\/rpc-reply> ]]&gt;]]&gt;<\/code><\/pre>\n<p>\u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u0445 \u0435\u0433\u043e \u043f\u043e\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b.<\/p>\n<p>\u0412 \u043e\u0434\u043d\u043e\u043c get-\u0437\u0430\u043f\u0440\u043e\u0441\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u044e\u0449\u0438\u0445 \u0434\u0435\u0440\u0435\u0432\u044c\u0435\u0432.<\/p>\n<pre><code class=\"xml\">&lt;rpc message-id=\"100\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">   &lt;get>    &lt;filter type=\"subtree\">      &lt;configuration>        &lt;interfaces>          &lt;interface>            &lt;name>ge-0\/0\/0&lt;\/name>            &lt;description\/>          &lt;\/interface>        &lt;\/interfaces>      &lt;\/configuration>    &lt;\/filter>   &lt;\/get> &lt;\/rpc> ]]&gt;]]&gt;  &lt;rpc-reply xmlns:junos=\"http:\/\/xml.juniper.net\/junos\/14.1R1\/junos\" message-id=\"100\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\"> &lt;data> &lt;configuration xmlns=\"http:\/\/xml.juniper.net\/xnm\/1.1\/xnm\" junos:changed-seconds=\"1644637011\" junos:changed-localtime=\"2022-02-12 03:36:51 UTC\">     &lt;interfaces>         &lt;interface>             &lt;name>ge-0\/0\/0&lt;\/name>             &lt;description>kzn-leaf-0&lt;\/description>         &lt;\/interface>     &lt;\/interfaces> &lt;\/configuration> &lt;database-status-information> &lt;database-status> &lt;user>eucariot&lt;\/user> &lt;terminal>&lt;\/terminal> &lt;pid>31316&lt;\/pid> &lt;start-time junos:seconds=\"1644637396\">2022-02-12 03:43:16 UTC&lt;\/start-time> &lt;edit-path>&lt;\/edit-path> &lt;\/database-status> &lt;\/database-status-information> &lt;\/data> &lt;\/rpc-reply> ]]&gt;]]&gt;<\/code><\/pre>\n<p>\u0415\u0449\u0451 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e <a href=\"https:\/\/netdevops.me\/2020\/netconf-subtree-filtering-by-example\/\" rel=\"noopener noreferrer nofollow\">subtree filtering<\/a>.<\/p>\n<p>\u0412 \u0441\u043b\u0443\u0447\u0430\u0435 Juniper <code>&lt;get><\/code> \u043d\u0438\u0447\u0435\u043c \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 <code>&lt;get-config><\/code>. \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0431\u0440\u0430\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u043d\u0443\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u043c\u0438 &#8212; \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u043f\u043e\u0434 \u043a\u0430\u0436\u0434\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443.<\/p>\n<p>\u0423\u0437\u043d\u0430\u0442\u044c \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e:<\/p>\n<p><code>show version | display xml rpc<\/code><\/p>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 <code>&lt;get><\/code> \u0443\u0434\u043e\u0431\u043d\u043e \u0437\u0430\u0431\u0438\u0440\u0430\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430. \u0418\u043b\u0438 \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438. \u041c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0432\u0441\u0435\u0445 BGP-\u0441\u043e\u0441\u0435\u0434\u0435\u0439 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 Idle, \u0438\u043b\u0438 \u0432\u0441\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u0441 \u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438, \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430\u043c. \u0414\u0430, \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e\u0433\u043e \u0435\u0441\u0442\u044c \u0438 \u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u043e\u0431\u043d\u044b\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u044b, \u043d\u043e \u0432\u0441\u0451 \u0436\u0435 \u0442\u0430\u043a\u043e\u0439 \u043f\u0443\u0442\u044c \u0435\u0441\u0442\u044c.<\/p>\n<h4>&lt;get-config><\/h4>\n<p>\u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u0431\u0440\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \u041c\u043e\u0433\u043b\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e <code>&lt;get-config><\/code> &#8212; \u044d\u0442\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0435\u0432\u043e <code>&lt;get><\/code>, \u043d\u043e \u044d\u0442\u043e \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u043d\u0435 \u0442\u0430\u043a.<\/p>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>&lt;get-config><\/code> \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0438\u0437 \u043a\u0430\u043a\u043e\u0433\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443 &#8212; <code>running<\/code>, <code>candidate<\/code>, startup \u0438\u0442\u0434.<\/p>\n<p>\u041d\u0443 \u0438 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u043c, \u0447\u0442\u043e \u0432 \u043e\u0442\u0432\u0435\u0442\u0435 \u0431\u0443\u0434\u0443\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435.<br \/>\u0425\u043e\u0442\u044f \u043f\u043e \u0441\u0432\u043e\u0435\u043c\u0443 \u043e\u043f\u044b\u0442\u0443 \u0432\u0430\u043c \u0441\u043a\u0430\u0436\u0443, \u0447\u0442\u043e \u0432\u0435\u043d\u0434\u043e\u0440\u044b \u0442\u0443\u0442 \u043c\u043e\u0433\u0443\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e, \u043f\u043e\u0434\u043c\u0435\u0448\u0438\u0432\u0430\u044f \u043e\u043f\u0435\u0440\u0434\u0430\u043d\u043d\u044b\u0435 \u043a \u043a\u043e\u043d\u0444\u0438\u0433\u0435.<\/p>\n<p>\u0417\u0430\u0431\u0438\u0440\u0430\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043a\u043e\u043d\u0444\u0438\u0433:<\/p>\n<pre><code class=\"xml\">&lt;rpc message-id=\"100\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">   &lt;get-config>    &lt;source>      &lt;running\/>    &lt;\/source>   &lt;\/get-config> &lt;\/rpc> ]]&gt;]]&gt;<\/code><\/pre>\n<p><code>&lt;get-config><\/code> \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438 <code>&lt;get><\/code> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442 <code>&lt;filter><\/code>. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"xml\">&lt;rpc message-id=\"100\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">   &lt;get-config>    &lt;source>      &lt;running\/>    &lt;\/source>    &lt;filter type=\"subtree\">      &lt;configuration>        &lt;system>           &lt;host-name\/>        &lt;\/system>      &lt;\/configuration>    &lt;\/filter>   &lt;\/get-config> &lt;\/rpc> ]]&gt;]]&gt;  &lt;rpc-reply xmlns:junos=\"http:\/\/xml.juniper.net\/junos\/14.1R1\/junos\" message-id=\"100\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\"> &lt;data> &lt;configuration xmlns=\"http:\/\/xml.juniper.net\/xnm\/1.1\/xnm\" junos:commit-seconds=\"1644637011\" junos:commit-localtime=\"2022-02-12 03:36:51 UTC\" junos:commit-user=\"eucariot\">     &lt;system>         &lt;host-name>kzn-spine-0&lt;\/host-name>     &lt;\/system> &lt;\/configuration> &lt;\/data> &lt;\/rpc-reply> ]]&gt;]]&gt;<\/code><\/pre>\n<p>\u0412 \u0437\u0430\u043f\u0440\u043e\u0441\u0435 \u0441\u0430\u043c\u044b\u0435 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043e\u0431\u0440\u0430\u0442\u0438\u043b\u0438 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 <code>&lt;source><\/code>.<\/p>\n<h4>Configuration Datastores<\/h4>\n<p>\u042d\u0442\u043e \u043c\u0435\u0441\u0442\u043e \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438. \u0425\u043e\u0442\u044f \u0441\u043b\u043e\u0432\u043e &#171;\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f&#187;, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0438 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0442\u043e\u0447\u043d\u043e\u0435. \u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e <code>&lt;running><\/code> &#8212; \u044d\u0442\u043e \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f.<\/p>\n<p>\u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u0435\u043d\u0434\u043e\u0440\u0430 \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u043a\u0430\u043f\u0430\u0431\u0438\u043b\u0438\u0442\u0435\u0439 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0442\u0430\u043a \u0436\u0435 <code>&lt;candidate><\/code>, <code>&lt;startup><\/code> \u0438 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0434\u0440\u0443\u0433\u0438\u0435.<\/p>\n<p>\u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u0438\u0437 \u0440\u0430\u0437\u043d\u044b\u0445 Datastores \u043f\u0440\u0438 \u0438\u0445 \u043d\u0430\u043b\u0438\u0447\u0438\u0438, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 <code>&lt;source><\/code>.<\/p>\n<p>\u041a\u0430\u043a \u0443\u0432\u0438\u0434\u0438\u043c \u0434\u0430\u043b\u0435\u0435, \u043c\u0435\u043d\u044f\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0442\u0430\u043a \u0436\u0435,  \u043c\u043e\u0436\u043d\u043e \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 datastores \u0447\u0435\u0440\u0435\u0437 <code>&lt;target><\/code>.<\/p>\n<p>\u0418 \u0442\u0443\u0442 \u0440\u0430\u0437\u043d\u044b\u0435 \u0432\u0435\u043d\u0434\u043e\u0440\u044b \u0432\u0435\u0434\u0443\u0442 \u0441\u0435\u0431\u044f \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443, \u043a\u0442\u043e-\u0442\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u043c\u0435\u043d\u044f\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u0432 <code>&lt;running><\/code>, \u0430 \u043a\u0442\u043e-\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e <code>&lt;candidate><\/code> \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c <code>&lt;commit><\/code>.<\/p>\n<h4>&lt;edit-config><\/h4>\n<p>\u0415\u0419 \u0431\u043e\u0433\u0443, \u0441\u0430\u043c\u0430\u044f \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0448\u0442\u0443\u043a\u0430 \u0432\u043e \u0432\u0441\u0451\u043c NETCONF! \u041e\u043f\u0435\u0440\u0430\u0446\u0438\u044f, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u043a \u043d\u0443\u0436\u043d\u043e\u043c\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e. \u0421\u0435\u0440\u0435\u0431\u0440\u044f\u043d\u0430\u044f \u043f\u0443\u043b\u044f, \u043f\u0430\u043d\u0430\u0446\u0435\u044f, \u043e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0432\u043e\u043f\u0440\u043e\u0441\u0430. \u0410\u0433\u0430, \u0449\u0430\u0437!<\/p>\n<p>\u0418\u0434\u0435\u044f \u0432 \u0442\u0435\u043e\u0440\u0438\u0438 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u0430: \u043c\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0436\u0435\u043b\u0430\u0435\u043c\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0432 \u0432\u0438\u0434\u0435 XML, \u0430 \u043e\u043d\u043e \u0441\u0430\u043c\u043e \u0448\u0443\u0440\u0448\u0438\u0442 \u0438 \u0441\u0447\u0438\u0442\u0430\u0435\u0442, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c, \u0430 \u0447\u0442\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u0438 \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u0441\u043d\u0430\u0447\u0430\u043b\u0430.<\/p>\n<p><code>&lt;edit-config><\/code> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043f\u043e\u043b\u043d\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0438\u043b\u0438 \u0435\u0433\u043e \u0447\u0430\u0441\u0442\u044c \u0432 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 datastore. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0432 datastore \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u0443\u044e \u0441 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0438 \u043f\u0440\u0435\u0434\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f.<\/p>\n<p>\u0410 \u043a\u0430\u043a\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u043d\u044b? \u042d\u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u043c <code>operation<\/code> \u0432 \u043b\u044e\u0431\u043e\u043c \u0438\u0437 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043f\u043e\u0434\u0434\u0435\u0440\u0435\u0432\u0430 <code>&lt;configuration><\/code>. Operation \u043c\u043e\u0436\u0435\u0442 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0442\u044c\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u0432 XML \u0438 \u0431\u044b\u0442\u044c \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u043d\u044b\u043c. \u0410\u0442\u0440\u0438\u0431\u0443\u0442 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f:<\/p>\n<ul>\n<li>\n<p><strong>Merge<\/strong> &#8212; \u043d\u043e\u0432\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0430 \u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0441\u0442\u0430\u0440\u0443\u044e &#8212; \u0447\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c &#8212; \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f, \u043d\u043e\u0432\u043e\u0435 &#8212; \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f, \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0443\u0434\u0430\u043b\u044f\u0435\u0442\u0441\u044f.<\/p>\n<\/li>\n<li>\n<p><strong>Replace<\/strong> &#8212; \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u0441\u0442\u0430\u0440\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u043d\u043e\u0432\u043e\u0439.<\/p>\n<\/li>\n<li>\n<p><strong>Create<\/strong> &#8212; \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0431\u043b\u043e\u043a \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438. \u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u043b\u0438 \u043e\u043d \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442, \u0432\u0435\u0440\u043d\u0451\u0442\u0441\u044f <code>&lt;rpc-error><\/code><\/p>\n<\/li>\n<li>\n<p><strong>Delete<\/strong> &#8212; \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0431\u043b\u043e\u043a \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438. \u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u043b\u0438 \u0435\u0433\u043e \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442, \u0432\u0435\u0440\u043d\u0451\u0442\u0441\u044f <code>&lt;rpc-error><\/code><\/p>\n<\/li>\n<li>\n<p><strong>Remove<\/strong> &#8212; \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0431\u043b\u043e\u043a \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438. \u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u043b\u0438 \u0435\u0433\u043e \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442, \u043f\u0440\u043e\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u0442. \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d \u0432 RFC6241.<\/p>\n<\/li>\n<\/ul>\n<p>\u0415\u0441\u043b\u0438 \u0442\u0438\u043f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0435 \u0437\u0430\u0434\u0430\u043d, \u0442\u043e \u043d\u043e\u0432\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0432\u043c\u0451\u0440\u0436\u0435\u043d\u0430 \u0432 \u0441\u0442\u0430\u0440\u0443\u044e. \u0417\u0430\u0434\u0430\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 <code>&lt;default-operation><\/code>: <code>merge<\/code>, <code>replace<\/code>, <code>none<\/code>.<\/p>\n<p>\u0412 \u0434\u0435\u0440\u0435\u0432\u0435 <code>&lt;configuration><\/code> \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0446\u0435\u043b\u0435\u0432\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0432 \u0432\u0438\u0434\u0435 XML.<\/p>\n<p>\u0411\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u043e, \u0441\u0430\u043c\u0430\u044f \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0432\u043d\u0443\u0442\u0440\u0438<code>&lt;edit-config><\/code> &#8212; \u044d\u0442\u043e replace. \u0412\u0435\u0434\u044c \u043e\u043d\u0430 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442, \u0447\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0432\u043e\u0437\u044c\u043c\u0451\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0438\u0437 RPC \u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u0442 \u0435\u044e \u0442\u0443, \u0447\u0442\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 datastore. \u0410 \u0433\u0434\u0435-\u0442\u043e \u0442\u0430\u043c \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u0438 \u043a\u0440\u044b\u0448\u043a\u043e\u0439 \u0431\u043b\u043e\u043a\u0430 \u0446\u0438\u043b\u0438\u043d\u0434\u0440\u043e\u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u0430\u043c\u0430 \u043f\u0440\u043e\u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0434\u0435\u043b\u044c\u0442\u0443, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u0447\u0438\u043f\u044b.<\/p>\n<h4>\u041f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 edit-config<\/h4>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0447\u0442\u043e-\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0435: \u043f\u043e\u043c\u0435\u043d\u044f\u0435\u0442 hostname:<\/p>\n<pre><code class=\"xml\">&lt;rpc message-id=\"100\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">   &lt;edit-config>    &lt;target>      &lt;candidate\/>    &lt;\/target>    &lt;config>      &lt;configuration>        &lt;system>           &lt;host-name>just-for-lulz&lt;\/host-name>        &lt;\/system>      &lt;\/configuration>    &lt;\/config>   &lt;\/edit-config> &lt;\/rpc> ]]&gt;]]&gt;<\/code><\/pre>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0447\u0442\u043e \u0432 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442-\u043a\u043e\u043d\u0444\u0438\u0433\u0435 \u044d\u0442\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0435\u0441\u0442\u044c, \u0430 \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u043c &#8212; \u043d\u0435\u0442<\/p>\n<pre><code class=\"xml\">&lt;rpc message-id=\"100\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">   &lt;get-config>    &lt;source>      &lt;candidate\/>    &lt;\/source>    &lt;filter type=\"subtree\">      &lt;configuration>        &lt;system>           &lt;host-name\/>        &lt;\/system>      &lt;\/configuration>    &lt;\/filter>   &lt;\/get-config> &lt;\/rpc> ]]&gt;]]&gt;  &lt;rpc-reply xmlns:junos=\"http:\/\/xml.juniper.net\/junos\/14.1R1\/junos\" message-id=\"100\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\"> &lt;data> &lt;configuration xmlns=\"http:\/\/xml.juniper.net\/xnm\/1.1\/xnm\" junos:changed-seconds=\"1644719855\" junos:changed-localtime=\"2022-02-13 02:37:35 UTC\">     &lt;system>         &lt;host-name>just-for-lulz&lt;\/host-name>     &lt;\/system> &lt;\/configuration> &lt;\/data> &lt;\/rpc-reply> ]]&gt;]]&gt;<\/code><\/pre>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c running:<\/p>\n<pre><code class=\"xml\">&lt;rpc message-id=\"100\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">   &lt;get-config>    &lt;source>      &lt;running\/>    &lt;\/source>    &lt;filter type=\"subtree\">      &lt;configuration>        &lt;system>           &lt;host-name\/>        &lt;\/system>      &lt;\/configuration>    &lt;\/filter>   &lt;\/get-config> &lt;\/rpc> ]]&gt;]]&gt;  &lt;rpc-reply xmlns:junos=\"http:\/\/xml.juniper.net\/junos\/14.1R1\/junos\" message-id=\"100\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\"> &lt;data> &lt;configuration xmlns=\"http:\/\/xml.juniper.net\/xnm\/1.1\/xnm\" junos:commit-seconds=\"1644637011\" junos:commit-localtime=\"2022-02-12 03:36:51 UTC\" junos:commit-user=\"eucariot\">     &lt;system>         &lt;host-name>kzn-spine-0&lt;\/host-name>     &lt;\/system> &lt;\/configuration> &lt;\/data> &lt;\/rpc-reply><\/code><\/pre>\n<p>\u0417\u043d\u0430\u0447\u0438\u0442, \u043d\u0430\u0434\u043e \u0437\u0430\u043a\u043e\u043c\u043c\u0438\u0442\u0438\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f.<\/p>\n<pre><code class=\"xml\">&lt;rpc>   &lt;commit\/> &lt;\/rpc> ]]&gt;]]&gt;  &lt;rpc-reply xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\" xmlns:junos=\"http:\/\/xml.juniper.net\/junos\/14.1R1\/junos\"> &lt;ok\/> &lt;\/rpc-reply><\/code><\/pre>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c running:<\/p>\n<pre><code class=\"xml\">&lt;rpc message-id=\"100\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">   &lt;get-config>    &lt;source>      &lt;running\/>    &lt;\/source>    &lt;filter type=\"subtree\">      &lt;configuration>        &lt;system>           &lt;host-name\/>        &lt;\/system>      &lt;\/configuration>    &lt;\/filter>   &lt;\/get-config> &lt;\/rpc> ]]&gt;]]&gt;  &lt;rpc-reply xmlns:junos=\"http:\/\/xml.juniper.net\/junos\/14.1R1\/junos\" message-id=\"100\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\"> &lt;data> &lt;configuration xmlns=\"http:\/\/xml.juniper.net\/xnm\/1.1\/xnm\" junos:commit-seconds=\"1644720065\" junos:commit-localtime=\"2022-02-13 02:41:05 UTC\" junos:commit-user=\"eucariot\">     &lt;system>         &lt;host-name>just-for-lulz&lt;\/host-name>     &lt;\/system> &lt;\/configuration> &lt;\/data> &lt;\/rpc-reply><\/code><\/pre>\n<p>\u041d\u0430 Juniper \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432 NETCONF \u0442\u0435 \u0436\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432, \u0447\u0442\u043e \u0438 \u0432 CLI. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>commit confirmed<\/code> \u0438 <code>confirmed-timeout<\/code>.<\/p>\n<p>\u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0441\u043b\u043e\u0436\u043d\u0435\u0435 \u0438 \u0441 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0435\u0439 <code>replace<\/code>: \u0437\u0430\u043c\u0435\u043d\u0438\u043c \u0441\u043f\u0438\u0441\u043e\u043a BGP-\u043f\u0438\u0440\u043e\u0432:<\/p>\n<pre><code class=\"xml\">&lt;rpc message-id=\"100\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">   &lt;edit-config>    &lt;target>      &lt;candidate\/>    &lt;\/target>    &lt;config>      &lt;configuration>     &lt;protocols>             &lt;bgp operation=\"replace\">                 &lt;group>                     &lt;name>LEAFS&lt;\/name>                     &lt;type>external&lt;\/type>                     &lt;import>ALLOW&lt;\/import>                     &lt;family>                         &lt;inet>                             &lt;unicast>                             &lt;\/unicast>                         &lt;\/inet>                     &lt;\/family>                     &lt;export>EXPORT&lt;\/export>                     &lt;neighbor>                         &lt;name>169.254.0.0&lt;\/name>                         &lt;peer-as>64513.00000&lt;\/peer-as>                     &lt;\/neighbor>                 &lt;\/group>                 &lt;group>                     &lt;name>EDGES&lt;\/name>                     &lt;type>external&lt;\/type>                     &lt;import>ALLOW&lt;\/import>                     &lt;family>                         &lt;inet>                             &lt;unicast>                             &lt;\/unicast>                         &lt;\/inet>                     &lt;\/family>                     &lt;export>EXPORT&lt;\/export>                     &lt;neighbor>                         &lt;name>222.222.222.0&lt;\/name>                         &lt;peer-as>65535&lt;\/peer-as>                     &lt;\/neighbor>                 &lt;\/group>             &lt;\/bgp>         &lt;\/protocols>      &lt;\/configuration>    &lt;\/config>   &lt;\/edit-config> &lt;\/rpc> ]]&gt;]]&gt;<\/code><\/pre>\n<p>\u041a\u043e\u043c\u043c\u0438\u0442<\/p>\n<pre><code class=\"xml\">&lt;rpc>   &lt;commit\/> &lt;\/rpc> ]]&gt;]]&gt;<\/code><\/pre>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c running<\/p>\n<pre><code class=\"xml\">&lt;rpc message-id=\"100\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">   &lt;get-config>    &lt;source>      &lt;running\/>    &lt;\/source>    &lt;filter type=\"subtree\">      &lt;configuration>        &lt;protocols>           &lt;bgp>             &lt;group>               &lt;neighbor\/>             &lt;\/group>           &lt;\/bgp>        &lt;\/protocols>      &lt;\/configuration>    &lt;\/filter>   &lt;\/get-config> &lt;\/rpc> ]]&gt;]]&gt;  &lt;rpc-reply xmlns:junos=\"http:\/\/xml.juniper.net\/junos\/14.1R1\/junos\" message-id=\"100\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\"> &lt;data> &lt;configuration xmlns=\"http:\/\/xml.juniper.net\/xnm\/1.1\/xnm\" junos:commit-seconds=\"1644720678\" junos:commit-localtime=\"2022-02-13 02:51:18 UTC\" junos:commit-user=\"eucariot\">     &lt;protocols>         &lt;bgp>             &lt;group>                 &lt;name>LEAFS&lt;\/name>                 &lt;neighbor>                     &lt;name>169.254.0.0&lt;\/name>                     &lt;peer-as>64513.00000&lt;\/peer-as>                 &lt;\/neighbor>             &lt;\/group>             &lt;group>                 &lt;name>EDGES&lt;\/name>                 &lt;neighbor>                     &lt;name>222.222.222.0&lt;\/name>                     &lt;peer-as>65535&lt;\/peer-as>                 &lt;\/neighbor>             &lt;\/group>         &lt;\/bgp>     &lt;\/protocols> &lt;\/configuration> &lt;\/data> &lt;\/rpc-reply><\/code><\/pre>\n<p>\u0412\u0441\u0451 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e)<\/p>\n<p>\u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e <code>merge<\/code> \u043f\u0440\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u0438\u0440\u0430.<\/p>\n<pre><code class=\"xml\">&lt;rpc message-id=\"100\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">   &lt;edit-config>    &lt;target>      &lt;candidate\/>    &lt;\/target>    &lt;config>      &lt;configuration>     &lt;protocols>             &lt;bgp operation=\"merge\">                 &lt;group>                     &lt;name>LEAFS&lt;\/name>                     &lt;type>external&lt;\/type>                     &lt;import>ALLOW&lt;\/import>                     &lt;family>                         &lt;inet>                             &lt;unicast>                             &lt;\/unicast>                         &lt;\/inet>                     &lt;\/family>                     &lt;export>EXPORT&lt;\/export>                     &lt;neighbor>                         &lt;name>169.254.0.0&lt;\/name>                         &lt;peer-as>64513.00000&lt;\/peer-as>                     &lt;\/neighbor>                 &lt;\/group>                 &lt;group>                     &lt;name>EDGES&lt;\/name>                     &lt;type>external&lt;\/type>                     &lt;import>ALLOW&lt;\/import>                     &lt;family>                         &lt;inet>                             &lt;unicast>                             &lt;\/unicast>                         &lt;\/inet>                     &lt;\/family>                     &lt;export>EXPORT&lt;\/export>                     &lt;neighbor>                         &lt;name>222.222.222.0&lt;\/name>                         &lt;peer-as>65535&lt;\/peer-as>                     &lt;\/neighbor>                     &lt;neighbor>                         &lt;name>169.254.100.0&lt;\/name>                         &lt;peer-as>65535&lt;\/peer-as>                     &lt;\/neighbor>                 &lt;\/group>             &lt;\/bgp>         &lt;\/protocols>      &lt;\/configuration>    &lt;\/config>   &lt;\/edit-config> &lt;\/rpc> ]]&gt;]]&gt;<\/code><\/pre>\n<p>\u041a\u043e\u043c\u043c\u0438\u0442<\/p>\n<pre><code class=\"xml\">&lt;rpc>   &lt;commit\/> &lt;\/rpc> ]]&gt;]]&gt; <\/code><\/pre>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430:<\/p>\n<pre><code class=\"xml\">&lt;rpc-reply xmlns:junos=\"http:\/\/xml.juniper.net\/junos\/14.1R1\/junos\" message-id=\"100\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\"> &lt;data> &lt;configuration xmlns=\"http:\/\/xml.juniper.net\/xnm\/1.1\/xnm\" junos:commit-seconds=\"1644721481\" junos:commit-localtime=\"2022-02-13 03:04:41 UTC\" junos:commit-user=\"eucariot\">     &lt;protocols>         &lt;bgp>             &lt;group>                 &lt;name>LEAFS&lt;\/name>                 &lt;neighbor>                     &lt;name>169.254.0.0&lt;\/name>                     &lt;peer-as>64513.00000&lt;\/peer-as>                 &lt;\/neighbor>             &lt;\/group>             &lt;group>                 &lt;name>EDGES&lt;\/name>                 &lt;neighbor>                     &lt;name>222.222.222.0&lt;\/name>                     &lt;peer-as>65535&lt;\/peer-as>                 &lt;\/neighbor>                 &lt;neighbor>                     &lt;name>169.254.100.0&lt;\/name>                     &lt;peer-as>65535&lt;\/peer-as>                 &lt;\/neighbor>             &lt;\/group>         &lt;\/bgp>     &lt;\/protocols> &lt;\/configuration> &lt;\/data> &lt;\/rpc-reply> ]]&gt;]]&gt;<\/code><\/pre>\n<p>\u0412\u043e\u0442 \u043e\u043d \u043d\u043e\u0432\u0435\u043d\u044c\u043a\u0438\u0439 \u043f\u0438\u0440, \u0438 \u0441\u0442\u0430\u0440\u044b\u0435 \u043d\u0430 \u043c\u0435\u0441\u0442\u0435.<\/p>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u0430 \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u0431\u043e\u0442\u043e\u0439 <code>replace<\/code> \u0438 <code>merge<\/code>.<\/p>\n<h4>Operation replace<\/h4>\n<p>\u0421 <code>replace<\/code> \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0432 \u0432\u0438\u0434\u0443 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u044e\u0430\u043d\u0441\u044b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0442\u043e\u0433\u043e \u0438\u043b\u0438 \u0438\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0438\u043b\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 &#8212; \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u043e\u0432\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b &#8212; \u0432\u0435\u0434\u044c \u0436\u0435\u043b\u0435\u0437\u043a\u0430 \u043d\u0430\u0442\u0443\u0440\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442 \u0442\u043e, \u0447\u0442\u043e \u0431\u044b\u043b\u043e,  \u0442\u0435\u043c, \u0447\u0442\u043e \u043f\u0440\u0438\u043b\u0435\u0442\u0435\u043b\u043e. \u0415\u0434\u0432\u0430 \u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0432 \u043e\u0434\u0438\u043d \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0432 OSPF Area, \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435?<\/p>\n<p>\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0443\u0434\u0430\u043b\u0435\u043d\u044b, \u0442\u0430\u043a\u0438\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u0430\u043a \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u0431\u043b\u043e\u043a\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u0435\u0435 &#8212; \u0432 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0432\u0441\u0435 \u043e\u043d\u0438 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c, \u0438\u043d\u0430\u0447\u0435 \u0432 \u043b\u0443\u0447\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u0435\u0440\u043d\u0451\u0442\u0441\u044f <code>&lt;rpc-error><\/code>, \u0430 \u0432 \u0445\u0443\u0434\u0448\u0435\u043c \u0432\u044b \u0447\u0435\u0433\u043e-\u0442\u043e \u043f\u043e\u0443\u0434\u0430\u043b\u044f\u0435\u0442\u0435.<\/p>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>replace<\/code> \u043c\u043e\u0436\u043d\u043e \u043a\u0430\u043a \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0447\u0430\u0441\u0442\u0435\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u0442\u0430\u043a \u0438 \u043d\u0430 \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0443\u0440\u043e\u0432\u043d\u0435, \u0442\u0440\u0435\u0431\u0443\u044f \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u0441\u0451 \u043f\u043e\u0434\u0434\u0435\u0440\u0435\u0432\u043e.<\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u043d\u044e\u0430\u043d\u0441 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0434\u0435\u043b\u044c\u0442\u044b \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043d\u044f\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 CPU. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u0435\u0441\u043b\u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0435\u0441\u044c \u043a\u0438\u043d\u0443\u0442\u044c \u0434\u0438\u0444 \u043d\u0430 13 000 \u0441\u0442\u0440\u043e\u043a \u043f\u043e\u043b\u0438\u0442\u0438\u043a BGP, \u0442\u043e \u0434\u0432\u0430\u0436\u0434\u044b \u043f\u043e\u0434\u0443\u043c\u0430\u0439\u0442\u0435 \u0438 \u0442\u0440\u0438\u0436\u0434\u044b \u043e\u0442\u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0439\u0442\u0435, \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441 \u043a\u043e\u0440\u043e\u0431\u043a\u043e\u0439.<\/p>\n<h4>&lt;commit><\/h4>\n<p>\u0415\u0449\u0451 \u043e\u0434\u043d\u043e \u0441\u0432\u0438\u0434\u0435\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043c\u043e\u0434\u0435\u043b\u044c NETCONF \u0441\u043a\u0430\u043b\u044c\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0441 API Juniper &#8212; \u044d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c commit&#8217;a candidate-\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432 running. \u0414\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043e\u043d\u0430, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u043f\u0440\u0438 \u043e\u0431\u043c\u0435\u043d\u0435 capability \u0441\u0435\u0440\u0432\u0435\u0440 \u0441\u043e\u043e\u0431\u0449\u0438\u043b, \u0447\u0442\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 candidate datastore.<br \/><code>&lt;commit><\/code> \u043d\u0435 \u0437\u0430\u043c\u0435\u0449\u0430\u0435\u0442 running \u043d\u0430 candidate, \u043a\u0430\u043a \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 <code>&lt;copy-config><\/code>, \u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0434\u0435\u043b\u044c\u0442\u044b, \u043a\u0430\u043a \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432 CLI.<\/p>\n<p>\u041a\u0430\u043a \u0438 \u0432 CLI \u0443 <code>commit<\/code> \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>confirmed<\/code>, \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u043e\u0442\u043a\u0430\u0442\u0438\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0435\u0441\u043b\u0438 commit \u043d\u0435 \u0431\u044b\u043b \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0451\u043d. \u0417\u0430 \u044d\u0442\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f capability: <code>confirmed-commit<\/code>.<\/p>\n<p><code>&lt;commit><\/code> \u043d\u0435 \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u0447\u0438\u0441\u043b\u043e \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043a\u0430\u043a \u0440\u0430\u0437 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0441\u0435\u0440\u0432\u0435\u0440\u0430.<\/p>\n<h4>&lt;copy-config><\/h4>\n<p>\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u043e\u0434\u043d\u0443 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0434\u0440\u0443\u0433\u043e\u0439. \u0418\u043c\u0435\u0435\u0442 \u0434\u0432\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430: <code>source<\/code> &#8212; \u043e\u0442\u043a\u0443\u0434\u0430 &#8212; \u0438 <code>target<\/code> &#8212; \u043a\u0443\u0434\u0430.<\/p>\n<p>\u041c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u0434\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043d\u0430 \u043a\u043e\u0440\u043e\u0431\u043a\u0443, \u0442\u0430\u043a \u0438 \u0434\u043b\u044f \u0431\u044d\u043a\u0430\u043f\u0430 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439. \u0415\u0441\u043b\u0438 \u043a\u043e\u0440\u043e\u0431\u043a\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 capability <code>:url<\/code>, \u0442\u043e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 <code>source<\/code> \u0438\/\u0438\u043b\u0438 <code>target<\/code> \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u043d URL.<\/p>\n<h4>&lt;delete-config><\/h4>\n<p>\u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0438\u0437 target datastore. \u0411\u0435\u0437 \u0445\u0438\u0442\u0440\u043e\u0441\u0442\u0435\u0439.<\/p>\n<h4>&lt;lock\/unlock><\/h4>\n<p>\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e Juniper CLI \u0441\u0442\u0430\u0432\u0438\u0442 \u0431\u043b\u043e\u043a \u043d\u0430 target datastore \u043e\u0442 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e\u0433\u043e \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0431\u044b\u043b\u043e \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u0430. \u041f\u0440\u0438\u0447\u0451\u043c \u0431\u043b\u043e\u043a \u0434\u043e\u043b\u0436\u0435\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043a\u0430\u043a \u043d\u0430 NETCONF, \u0442\u0430\u043a \u0438 \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 &#8212; SNMP, CLI, gRPC \u0438\u0442\u0434.<\/p>\n<h4>&lt;close-session><\/h4>\n<p>\u0410\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e NETCONF-\u0441\u0435\u0441\u0441\u0438\u044e, \u0441\u043d\u0438\u043c\u0430\u0435\u0442 \u043b\u043e\u043a\u0438, \u0432\u044b\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u0435\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u044b.<\/p>\n<h4>&lt;kill-session><\/h4>\n<p>\u0413\u0440\u0443\u0431\u043e \u0440\u0430\u0437\u0440\u044b\u0432\u0430\u0435\u0442 \u0441\u0435\u0441\u0441\u0438\u0438\u044e, \u043d\u043e \u0441\u043d\u0438\u043c\u0430\u0435\u0442 \u043b\u043e\u043a\u0438. \u0415\u0441\u043b\u0438 \u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0442\u0430\u043a\u0443\u044e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e \u0432 \u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d \u0434\u043e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f confirmed commit, \u043e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0442\u043c\u0435\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u0438 \u043e\u0442\u043a\u0430\u0442\u0438\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043a \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e, \u043a\u0430\u043a \u0431\u044b\u043b\u043e \u0434\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0441\u0435\u0441\u0441\u0438\u0438.<\/p>\n<p><a class=\"anchor\" name=\"NC_TOOLS\" id=\"NC_TOOLS\"><\/a><\/p>\n<hr\/>\n<h3>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0434\u043b\u044f NETCONF<\/h3>\n<p>\u041d\u0443 \u0432\u043e\u0442 \u043a\u0430\u043a \u0431\u0443\u0434\u0442\u043e \u0431\u044b \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u0431\u0430\u0437\u0438\u0441 \u043f\u043e NETCONF \u043d\u0430\u0431\u0440\u0430\u043b\u0438.<\/p>\n<p>\u042f \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043d\u0435 \u0441\u0442\u0430\u0432\u043b\u044e \u043f\u0435\u0440\u0435\u0434 \u0441\u043e\u0431\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0443 \u0432\u044b\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438. <\/p>\n<p>\u041f\u0440\u043e\u0441\u0442\u043e \u0445\u043e\u0447\u0443 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u0432 \u0442\u0435\u043e\u0440\u0438\u0438 \u0438 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435.<\/p>\n<p>\u0418 \u044f \u0434\u0443\u043c\u0430\u044e, \u043a \u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u043c\u0435\u043d\u0442\u0443 \u0432\u0430\u043c \u0443\u0436\u0435 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 XML \u0447\u0435\u0440\u0435\u0437 SSH \u0441 \u0440\u0443\u0447\u043d\u044b\u043c \u043f\u0440\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c Framing Marker (<code>]]&gt;]]&gt;<\/code>) &#8212; \u043d\u0435 \u0441\u0430\u043c\u044b\u0439 \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438.<\/p>\n<h4>netconf-console<\/h4>\n<p>\u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043a\u043e\u0434, \u043e\u0431\u044b\u0447\u043d\u043e \u0441\u0442\u043e\u0438\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0432\u0441\u0451 \u0440\u0443\u043a\u0430\u043c\u0438. \u041d\u043e \u0432\u043e\u0442 \u0440\u0443\u043a\u0430\u043c\u0438 \u043a\u0440\u0430\u0444\u0442\u0438\u0442\u044c XML \u0438 \u043f\u0440\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c framing marker&#8217;\u044b \u0442\u043e\u0441\u043a\u043b\u0438\u0432\u043e. \u0422\u0443\u0442 \u043e\u0442\u0446\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u043f\u0430\u0441\u0451\u0442 <code>netconf-console<\/code> &#8212; \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0438, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 CLI-\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 NETCONF. <\/p>\n<p>\u041c\u043e\u0436\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b:<\/p>\n<pre><code>netconf-console --host 192.168.1.2 --port 22 -u eucariot -p password --get-config<\/code><\/pre>\n<p>\u0410 \u043c\u043e\u0436\u0435\u0442 \u0432 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u043c:<\/p>\n<pre><code>netconf-console2 --host 192.168.1.2 --port 22 -u eucariot -p password -i netconf> hello<\/code><\/pre>\n<p><a href=\"https:\/\/netdevops.me\/2020\/netconf-console-in-a-docker-container\/\" rel=\"noopener noreferrer nofollow\">\u0427\u0443\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0440\u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0443 \u0420\u043e\u043c\u0430\u043d\u0430 \u0414\u043e\u0434\u0438\u043d\u0430<\/a>.<\/p>\n<h4>NCclient<\/h4>\n<p>\u042d\u0442\u043e, \u043f\u043e\u0436\u0430\u043b\u0443\u0439, \u0441\u0430\u043c\u0430\u044f \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 NETCONF. \u041e\u043d\u0430 \u0434\u043b\u044f \u043f\u0438\u0442\u043e\u043d\u0430 \u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0437\u0440\u0435\u043b\u0430\u044f.<\/p>\n<p>\u041d\u0430\u0447\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u043b\u0435\u0433\u043a\u043e:<\/p>\n<pre><code class=\"python\">from ncclient import manager   if __name__ == \"__main__\":     with manager.connect(         host=\"kzn-spine-0.juniper\",         ssh_config=True,         hostkey_verify=False,         device_params={'name': 'junos'}     ) as m:         c = m.get_config(source='running').data_xml      print(c)<\/code><\/pre>\n<blockquote>\n<p>\u0414\u0430\u0431\u044b \u0443\u0431\u0435\u0440\u0435\u0447\u044c \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f \u043e\u0442 \u043c\u043d\u043e\u0433\u043e\u0447\u0430\u0441\u043e\u0432\u044b\u0445 \u043c\u0443\u043a \u0441 \u043e\u0442\u043b\u0430\u0434\u043a\u043e\u0439 \u0430\u0443\u043d\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438, \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0430 \u0442\u0443\u0442.<\/p>\n<p>\u0422\u0435\u043a\u0443\u0449\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f <code>paramiko<\/code> \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 (>=2.9.0), \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u043e\u0434\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u0442 <code>ncclient<\/code>, \u0432 \u0440\u044f\u0434\u0435 \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 OpenSSH-\u043a\u043b\u044e\u0447\u0430\u043c\u0438 \u0438 \u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439 &#171;<code>Authentication failed<\/code>&#171;. \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c 2.8.0. \u041d\u0430 \u0433\u0438\u0442\u0445\u0430\u0431\u0435 \u043e\u0442\u043a\u0440\u044b\u0442\u0430 \u043a\u0443\u0447\u0430 issue \u043d\u0430 \u044d\u0442\u0443 \u0442\u0435\u043c\u0443. \u0418, \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0435\u0433\u043e \u0434\u0430\u0436\u0435 <a href=\"https:\/\/github.com\/paramiko\/paramiko\/issues\/2017\" rel=\"noopener noreferrer nofollow\">\u043f\u043e\u0447\u0438\u043d\u0438\u043b\u0438<\/a>, \u043d\u043e \u044f \u043d\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b.<\/p>\n<p>\u0418 \u0432\u0440\u043e\u0434\u0435 \u0431\u044b \u0434\u0430\u0436\u0435 \u0435\u0441\u0442\u044c <a href=\"https:\/\/localcoder.org\/paramiko-not-a-valid-rsa-private-key-file\" rel=\"noopener noreferrer nofollow\">\u0440\u0435\u0448\u0435\u043d\u0438\u0435<\/a>, \u043d\u043e \u0438 \u044d\u0442\u043e \u044f \u043d\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b. <\/p>\n<\/blockquote>\n<p>\u0422\u0430\u043a \u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 <code>filter<\/code>:<\/p>\n<pre><code class=\"python\">from ncclient import manager  rpc = \"\"\"      &lt;filter>      &lt;configuration>        &lt;system>           &lt;host-name\/>        &lt;\/system>      &lt;\/configuration>      &lt;\/filter>      \"\"\"  if __name__ == \"__main__\":     with manager.connect(         host=\"kzn-spine-0.juniper\",         ssh_config=True,         hostkey_verify=False,         device_params={\"name\": \"junos\"}     ) as m:         c = m.get_config(\"running\", rpc).data_xml      print(c)<\/code><\/pre>\n<p>\u0421 \u0442\u0430\u043a\u0438\u043c \u0432\u043e\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c:<\/p>\n<pre><code class=\"xml\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?> &lt;rpc-reply message-id=\"urn:uuid:864dd143-7a86-40ca-8992-5a35f2322ea0\">   &lt;data>     &lt;configuration commit-seconds=\"1644732354\" commit-localtime=\"2022-02-13 06:05:54 UTC\" commit-user=\"eucariot\">       &lt;system>         &lt;host-name>         kzn-spine-0         &lt;\/host-name>       &lt;\/system>     &lt;\/configuration>   &lt;\/data> &lt;\/rpc-reply><\/code><\/pre>\n<p>\u041d\u0430 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 XML \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0435 \u043d\u0430\u0434\u043e &#8212; \u043f\u0430\u0440\u0441\u0438\u043c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u0447\u043a\u043e\u0439 <code>xmltodict<\/code>:<\/p>\n<pre><code class=\"python\">from ncclient import manager import xmltodict  rpc = \"\"\"      &lt;filter>      &lt;configuration>        &lt;system>           &lt;host-name\/>        &lt;\/system>      &lt;\/configuration>      &lt;\/filter>      \"\"\"  if __name__ == \"__main__\":     with manager.connect(         host=\"kzn-spine-0.juniper\",         ssh_config=True,         hostkey_verify=False,         device_params={\"name\": \"junos\"}     ) as m:         result = m.get_config(\"running\", rpc).data_xml     result_dict = xmltodict.parse(result)     print(f'hostname is {result_dict[\"rpc-reply\"][\"data\"][\"configuration\"][\"system\"][\"host-name\"]}')<\/code><\/pre>\n<p>\u0421 \u0443\u0436\u0435 \u0442\u0430\u043a\u0438\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c:<\/p>\n<pre><code class=\"bash\">hostname is kzn-spine-0<\/code><\/pre>\n<blockquote>\n<p>\u041f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0441\u0435\u0442\u0435\u0432\u044b\u043c\u0438 \u043a\u043e\u0440\u043e\u0431\u043a\u0430\u043c\u0438 \u043f\u043e NETCONF xmltodict, \u043f\u043e\u0436\u0430\u043b\u0443\u0439, \u0441\u0430\u043c\u0430\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u043d\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430, \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u044e\u0449\u0430\u044f XML-\u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u043e\u0431\u044a\u0435\u043a\u0442 Python. \u041e\u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 C-\u0448\u043d\u044b\u0439 \u043f\u0430\u0440\u0441\u0435\u0440 <a href=\"https:\/\/docs.python.org\/3\/library\/pyexpat.html\" rel=\"noopener noreferrer nofollow\">pyexpat<\/a>, \u0442\u0430\u043a \u0447\u0442\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u043e\u0432 \u0443 \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435\u0442. <\/p>\n<\/blockquote>\n<p>\u0422\u043e\u0447\u043d\u043e \u0442\u0430\u043a \u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0432 \u0434\u0432\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f: <code>&lt;edit-config><\/code> \u0432 <code>&lt;candidate><\/code> \u0438 <code>&lt;commit><\/code>:<\/p>\n<pre><code class=\"python\">from ncclient import manager import xmltodict  rpc = \"\"\"      &lt;config>        &lt;configuration>          &lt;interfaces>            &lt;interface>              &lt;name>ge-0\/0\/0&lt;\/name>              &lt;description>Mit der Dummheit k\u00e4mpfen G\u00f6tter selbst vergebens.&lt;\/description>            &lt;\/interface>          &lt;\/interfaces>        &lt;\/configuration>      &lt;\/config>      \"\"\"  if __name__ == \"__main__\":     with manager.connect(         host=\"kzn-spine-0.juniper\",         ssh_config=True,         hostkey_verify=False,         device_params={\"name\": \"junos\"}     ) as m:         result = m.edit_config(target=\"candidate\", config=rpc).data_xml         m.commit()     result_dict = xmltodict.parse(result)     print(result_dict)  OrderedDict([('rpc-reply', OrderedDict([('@message-id', 'urn:uuid:93bde991-81f9-42d6-a343-b4fc267646c2'), ('ok', None)]))])<\/code><\/pre>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u043f\u043e\u043a\u0430 \u043a\u043e\u043f\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u043c. \u0422\u0435\u043c \u0431\u043e\u043b\u0435\u0435, \u0431\u044b\u0442\u0443\u0435\u0442 \u043c\u043d\u0435\u043d\u0438\u0435 <em>&#171;\u0431\u0435\u0437 \u0432\u0441\u044f\u043a\u0438\u0445 \u0441\u043e\u043c\u043d\u0435\u043d\u0438\u0439, \u0441\u0430\u043c\u044b\u0439 \u0443\u0431\u043b\u044e\u0434\u043e\u0447\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 Python \u043a\u043e\u0434, \u0447\u0442\u043e \u044f \u0432\u0438\u0434\u0435\u043b \u0432 opensource&#187; \u00a9<\/em><\/p>\n<h4>scrapli-netconf<\/h4>\n<p>NCclient \u0431\u044b\u043b \u043f\u0435\u0440\u0432\u044b\u043c \u0438 \u043a\u043b\u0430\u0441\u0441\u043d\u044b\u043c, \u043d\u043e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 async \u0432 \u043d\u0451\u043c \u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435.<\/p>\n<p>\u0422\u0443\u0442 \u043d\u0430\u0441 \u0432\u044b\u0440\u0443\u0447\u0430\u0435\u0442 \u041a\u0430\u0440\u043b \u041c\u043e\u043d\u0442\u0430\u043d\u0430\u0440\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0436\u0435 \u043f\u043e\u0434\u0430\u0440\u0438\u043b \u043c\u0438\u0440\u0443 <a href=\"https:\/\/github.com\/carlmontanari\/scrapli\" rel=\"noopener noreferrer nofollow\">scrapli<\/a>.<\/p>\n<p>\u041d\u043e \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u043c\u0435\u043b, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0441\u0432\u043e\u0435\u0439 \u0441\u0435\u0442\u0438 NETCONF, \u0441\u043e\u0437\u0434\u0430\u043b\u0438 <a href=\"https:\/\/github.com\/scrapli\/scrapli_netconf\" rel=\"noopener noreferrer nofollow\">scrapli-netconf<\/a>.<\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u0437\u0433\u043b\u044f\u043d\u0435\u043c \u043d\u0430 \u043f\u0430\u0440\u0443 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0440\u0430\u0431\u043e\u0442\u044b.<\/p>\n<pre><code class=\"python\">from scrapli_netconf.driver import NetconfDriver  rpc = \"\"\"      &lt;filter>      &lt;configuration>        &lt;system>           &lt;host-name\/>        &lt;\/system>      &lt;\/configuration>      &lt;\/filter>      \"\"\"  device = {         \"host\": \"kzn-spine-0.juniper\",         \"auth_strict_key\": False,         \"port\": 22         }  if __name__ == \"__main__\":     with NetconfDriver(**device) as conn:         response = conn.get_config(\"running\", rpc)      print(response.result)<\/code><\/pre>\n<h4>Scrapligo \u0438 scrapligo-netconf<\/h4>\n<p>\u0414\u043b\u044f Go \u0442\u043e\u0436\u0435 \u043d\u0435 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043d\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043b\u0443\u0447\u0448\u0435, \u0447\u0435\u043c <a href=\"https:\/\/github.com\/scrapli\/scrapligo\" rel=\"noopener noreferrer nofollow\">scrapligo<\/a>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0435\u0441\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044c \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0447\u0435\u0440\u0435\u0437 netconf. \u0422\u0430\u043a \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u0441\u0435\u0442\u0435\u0432\u0438\u043a, \u043e\u0441\u0432\u0430\u0438\u0432\u0430\u044e\u0449\u0438\u0439 \u0413\u043e, \u043f\u0443\u0442\u044c \u0434\u043b\u044f \u0432\u0430\u0441 \u0443\u0436\u0435 \u043f\u0440\u043e\u043b\u043e\u0436\u0435\u043d.<\/p>\n<p><a class=\"anchor\" name=\"NC_APPLICATIONS\" id=\"NC_APPLICATIONS\"><\/a><\/p>\n<hr\/>\n<h3>\u041a\u0430\u043a \u044d\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c<\/h3>\n<h4>\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433<\/h4>\n<p>NETCONF \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435:<\/p>\n<ul>\n<li>\n<p>\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432 (OPSF, BGP-\u043f\u0438\u0440\u0438\u043d\u0433\u0438).<\/p>\n<\/li>\n<li>\n<p>\u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432.<\/p>\n<\/li>\n<li>\n<p>\u0423\u0442\u0438\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 CPU.<\/p>\n<\/li>\n<li>\n<p>\u0422\u0430\u0431\u043b\u0438\u0446\u044b \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438<\/p>\n<\/li>\n<li>\n<p>\u0414\u0440\u0443\u0433\u043e\u0435.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043b\u0435\u0433\u043a\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0431\u0435\u0437 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440 \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 NETCONF \u0432\u043f\u043e\u043b\u043d\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0446\u0435\u043b\u0435\u0439 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430. <\/p>\n<p>\u0422\u0443\u0442 \u0432\u044b \u0441\u043f\u0440\u043e\u0441\u0438\u0442\u0435: \u0430 \u0437\u0430\u0447\u0435\u043c, \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c SNMP? \u0410 \u044f \u043e\u0442\u0432\u0435\u0447\u0443. \u0422\u043e\u0447\u043d\u0435\u0435 \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c.<\/p>\n<ul>\n<li>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 SSH, \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c SNMP.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0435 \u043d\u0435\u0441\u0451\u043c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u044b \u0432 \u0441\u0435\u0442\u044c.<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043b\u043d\u0430\u044f \u0441\u0432\u043e\u0431\u043e\u0434\u0430 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c, \u0431\u0435\u0437 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u0432 OID&#8217;\u0430\u0445 \u0438 MIB&#8217;\u0430\u0445.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 YANG-\u043c\u043e\u0434\u0435\u043b\u044c\u044e.<\/p>\n<\/li>\n<li>\n<p>\u0413\u0438\u043f\u043e\u0442\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0444\u043e\u0440\u043c\u0438\u0442\u044c \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0443 \u043d\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435.<\/p>\n<\/li>\n<\/ul>\n<h4>\u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439<\/h4>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f NETCONF, \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438: \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0441 \u0441\u0435\u0442\u0438 \u0438\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438. <\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c MAC-\u0430\u0434\u0440\u0435\u0441\u0430 \u0441 \u0441\u0435\u0442\u0438 \u0438\u043b\u0438 \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432.<br \/>\u0418\u043b\u0438 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043f\u043e\u0440\u0442 \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0442\u043e\u0440\u0430 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 VLAN.<\/p>\n<p>\u0418\u043b\u0438 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u0447\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 &#8212; \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u0438\u0441\u043b\u043e\u0433-\u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0438 \u043f\u0438\u043d\u0433\u0438, \u043a\u0443\u0434\u0430 \u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442.<\/p>\n<p>\u042d\u0442\u043e \u0432\u0441\u0451 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438 \u043d\u0430 \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0435 CLI, \u0431\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u043e, \u043d\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 &#8212; \u044d\u0442\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0430 regexp &#8212; \u044d\u0442\u043e regexp.<\/p>\n<h4>Configuration Management<\/h4>\n<p>\u0414\u0430, \u044d\u0442\u043e \u0442\u043e\u0436\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0435\u0441\u043b\u0438<\/p>\n<ol>\n<li>\n<p>\u041e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 100% \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 NETCONF.<\/p>\n<p>\u0423\u0432\u044b, \u044f \u043d\u0430 \u0441\u0432\u043e\u0451\u043c \u0432\u0435\u043a\u0443 \u043f\u043e\u0432\u0438\u0434\u0430\u043b \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0439, \u043a\u043e\u0433\u0434\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0435\u043a\u0446\u0438\u0438 \u043f\u0440\u043e\u0441\u0442\u043e-\u043d\u0430\u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0438 \u0432 NETCONF \u0438 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043d\u0443\u0436\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043d\u0435\u0442.<\/p>\n<\/li>\n<li>\n<p>\u041e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0447\u0435\u0441\u0442\u043d\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e &#171;replace&#187;, \u0431\u0435\u0437 \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0434\u0435\u043b\u044c\u0442\u044b \u043b\u043e\u0436\u0438\u0442\u0441\u044f \u0432\u043d\u043e\u0432\u044c \u043d\u0430 \u0441\u0435\u0442\u0435\u0432\u0438\u043a\u043e\u0432.<\/p>\n<\/li>\n<\/ol>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e, \u0432 \u0442\u043e\u043c \u0432\u0438\u0434\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u044b \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043b\u0438\u0441\u044c \u0441 \u0442\u0435\u043c\u043e\u0439 \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442, \u0434\u0430\u043b\u044c\u0448\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f Jinja-\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435. \u041a\u0430\u0436\u0434\u043e\u043c\u0443, \u043a\u0442\u043e \u044d\u0442\u0438\u043c \u0437\u0430\u043d\u0438\u043c\u0430\u043b\u0441\u044f, \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0435\u043b\u043e\u0432\u043a\u043e, \u0438 \u043e\u043d \u0441\u0442\u044b\u0434\u043b\u0438\u0432\u043e \u0438\u0437\u0431\u0435\u0433\u0430\u0435\u0442 \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u0430 \u043d\u0430 \u044d\u0442\u0443 \u0442\u0435\u043c\u0443.<\/p>\n<p>\u0417\u0430\u0434\u0430\u0447\u0430 \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<ol>\n<li>\n<p>\u041f\u0438\u0448\u0435\u043c \u0446\u0438\u043a\u043b\u043e\u043f\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0440\u0430\u0437\u0432\u0435\u0441\u0438\u0441\u0442\u044b\u0435 jinja-\u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0441 \u0438\u0444\u0430\u043c\u0438 \u0438 \u0444\u043e\u0440\u0430\u043c\u0438, \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 XML. \u0428\u0430\u0431\u043b\u043e\u043d\u044b \u043f\u043e\u0434 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0432\u0435\u043d\u0434\u043e\u0440\u0430, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0438 \u0441\u0445\u0435\u043c\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0443 \u043d\u0438\u0445 \u0440\u0430\u0437\u043d\u044b\u0435. \u041d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043e\u043d\u0438 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0435 \u0432 \u043f\u043b\u0430\u043d\u0435 \u0440\u043e\u043b\u0435\u0439 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 &#8212; \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u0441\u0432\u0438\u0442\u0447\u0435\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u0432 \u044f\u0434\u0440\u0430 \u043f\u0438\u0441\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u044b &#8212; \u043f\u0440\u043e\u0441\u0442\u043e \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0440\u043e\u043b\u0438 \u0431\u0443\u0434\u0443\u0442 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u0435 \u0438\u043b\u0438 \u0438\u043d\u044b\u0435 \u0438\u0445 \u0447\u0430\u0441\u0442\u0438.     \u0417\u0434\u0435\u0441\u044c \u0432 \u043d\u0443\u0436\u043d\u044b\u0445 \u043c\u0435\u0441\u0442\u0430\u0445 \u0441\u0440\u0430\u0437\u0443 \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0442\u0438\u043f\u044b \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 &#8212; \u0433\u0434\u0435 merge, \u0433\u0434\u0435 replace.<\/p>\n<\/li>\n<li>\n<p>\u041a\u0430\u043a\u0438\u043c-\u0442\u043e \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u043f\u043e\u0434 \u043a\u0430\u0436\u0434\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0444\u0430\u0439\u043b\u044b \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0443\u043a\u0430\u0437\u0430\u043d\u044b \u0445\u043e\u0441\u0442\u043d\u0435\u0439\u043c\u044b, IP-\u0430\u0434\u0440\u0435\u0441\u0430, ASN, \u043f\u0438\u0440\u044b \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0432\u0435\u0449\u0438. \u042d\u0442\u0438 \u0444\u0430\u0439\u043b\u044b \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u043d\u0430\u043f\u0440\u043e\u0442\u0438\u0432, \u0432\u0435\u043d\u0434\u043e\u0440-\u043d\u0435\u0439\u0442\u0440\u0430\u043b\u044c\u043d\u044b, \u043d\u043e \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u0440\u043e\u043b\u0438 \u043a \u0440\u043e\u043b\u0438.<\/p>\n<\/li>\n<li>\n<p>\u0420\u0435\u043d\u0434\u0435\u0440\u0438\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 XML, \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043d\u0430 \u0448\u0430\u0431\u043b\u043e\u043d\u044b. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0446\u0435\u043b\u0435\u0432\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0432 \u0432\u0438\u0434\u0435 \u0434\u0435\u0440\u0435\u0432\u0430 XML, \u0433\u0434\u0435 \u0432 \u043d\u0443\u0436\u043d\u044b\u0445 \u043c\u0435\u0441\u0442\u0430\u0445 \u043f\u0440\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f <code>replace<\/code>.<\/p>\n<\/li>\n<li>\n<p>\u042d\u0442\u043e\u0442 XML \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e ncclient, ansible, scrapli-netconf \u0438\u043b\u0438 \u0447\u0435\u0433\u043e-\u0442\u043e \u0435\u0449\u0451 \u043f\u043e\u0434\u043f\u0438\u0445\u0438\u0432\u0430\u0435\u043c \u043d\u0430 \u043a\u043e\u0440\u043e\u0431\u043a\u0443.<\/p>\n<\/li>\n<li>\n<p>NETCONF-\u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0430 \u043a\u043e\u0440\u043e\u0431\u043a\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 RPC \u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u043f\u0430\u0442\u0447, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442. \u0422\u043e \u0435\u0441\u0442\u044c \u043e\u043d \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u0440\u0430\u0437\u043d\u0438\u0446\u0443 \u043c\u0435\u0436\u0434\u0443 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 \u0432 RPC \u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0432 <code>&lt;running><\/code>. \u041f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442 \u044d\u0442\u0443 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e.<\/p>\n<\/li>\n<\/ol>\n<p>\u041a\u0430\u043a \u0431\u044b \u044d\u0442\u043e \u043c\u043e\u0433\u043b\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u044f \u0443\u0436\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u043b \u0432 <a href=\"https:\/\/linkmeup.ru\/blog\/1275\/\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0432\u044b\u043f\u0443\u0441\u043a\u0435 \u0410\u0414\u0421\u041c<\/a>.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/fd5\/ac1\/e7e\/fd5ac1e7e9260aabf46eb26fd2e4d388.png\" alt=\"\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: dteslya.engineer\/network_automaiton_101\/\" title=\"\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: dteslya.engineer\/network_automaiton_101\/\" width=\"986\" height=\"359\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fd5\/ac1\/e7e\/fd5ac1e7e9260aabf46eb26fd2e4d388.png\"\/><figcaption>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: dteslya.engineer\/network_automaiton_101\/<\/figcaption><\/figure>\n<p>\u0420\u0443\u0447\u043d\u0430\u044f \u043f\u0440\u0430\u0432\u043a\u0430 \u0444\u0430\u0439\u043b\u043e\u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 &#8212; \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u043e, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435. \u041f\u0440\u043e\u0441\u0442\u043e \u043c\u0440\u0430\u043a, \u0435\u0441\u043b\u0438 \u043c\u044b \u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043f\u0440\u043e \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0442\u0438\u043f\u043e\u0432\u044b\u0435 \u0432\u0435\u0449\u0438, \u043a\u0430\u043a \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u0430\u0442\u0430\u0446\u0435\u043d\u0442\u0440\u043e\u0432\u044b\u0435 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u0438. \u041d\u043e\u0432\u0430\u044f \u043f\u0430\u0447\u043a\u0430 \u0441\u0442\u043e\u0435\u043a &#8212; \u0441\u043e\u0442\u043d\u0438 \u0438 \u0442\u044b\u0441\u044f\u0447\u0438 \u0441\u0442\u0440\u043e\u043a \u0434\u043b\u044f \u043a\u043e\u043f\u0438\u043f\u0430\u0449\u0435\u043d\u0438\u044f \u0438 \u0440\u0443\u0447\u043d\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f. \u041d\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 &#8212; DCIM\/IPAM.<\/p>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u044f \u043e\u0431 \u044d\u0442\u043e\u043c \u0433\u043e\u0432\u043e\u0440\u044e \u0442\u0430\u043a \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e?<\/p>\n<p>\u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043c\u044b \u0443 \u0441\u0435\u0431\u044f (\u0432 \u042f\u043d\u0434\u0435\u043a\u0441\u0435) \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u043b\u0438 \u0432\u0435\u0441\u044c \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430 \u0441\u0435\u0442\u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0439 \u0441\u0445\u0435\u043c\u044b. \u0418 \u043b\u044e\u0431\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043d\u0430 \u0441\u0435\u0442\u044c \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 \u0438 NETCONF. \u041b\u044e\u0431\u044b\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043d\u0430 \u0436\u0435\u043b\u0435\u0437\u0435 \u043f\u0435\u0440\u0435\u0442\u0440\u0443\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0436\u0435 \u0440\u0435\u043b\u0438\u0437\u043e\u043c.<\/p>\n<p>\u0427\u0442\u043e \u0442\u0443\u0442 \u0445\u043e\u0440\u043e\u0448\u043e:<\/p>\n<ol>\n<li>\n<p>\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 Jinja-\u0448\u0430\u0431\u043b\u043e\u043d\u0430\u0445 \u0432\u0435\u0440\u0441\u0438\u043e\u043d\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 git \u0438 \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430\u043c\u0438 \u043f\u0435\u0440\u0435\u0434 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c. \u042d\u0442\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0432\u043b\u0438\u044f\u044e\u0449\u0438\u0435 \u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432.<\/p>\n<\/li>\n<li>\n<p>\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 &#8212; \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a \u0436\u0435. \u042d\u0442\u043e \u0442\u043e\u0447\u0435\u0447\u043d\u043e\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430.<\/p>\n<\/li>\n<li>\n<p>\u0422\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u043f\u0443\u043d\u043a\u0442\u0430\u0445 \u0432\u044b\u0448\u0435, \u043c\u043e\u0436\u043d\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0438 \u0434\u0430\u043b\u0435\u0435 \u0443\u0436\u0435 \u0435\u0451 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0432 git.<\/p>\n<\/li>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u0441\u043e\u0431\u043b\u044e\u0434\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u0442\u043e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0434\u0440\u0435\u0439\u0444.<\/p>\n<\/li>\n<\/ol>\n<p>\u0427\u0442\u043e \u0442\u0443\u0442 \u043f\u043b\u043e\u0445\u043e?<\/p>\n<ol>\n<li>\n<p>\u041d\u0443, \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, Jinja-\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u0442\u0435\u043a\u0441\u0442\u043e\u043c, \u0432\u043c\u0435\u0441\u0442\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u044f\u0437\u044b\u043a\u0430.<\/p>\n<\/li>\n<li>\n<p>\u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u043d\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0434\u0438\u0444 \u0434\u043e \u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<\/ol>\n<hr\/>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0432\u0430\u044f \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0436\u0435 \u0432\u0437\u044f\u0442\u044c \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u0443 \u043e\u0442 NETCONF \u0432 \u0437\u0430\u0434\u0430\u0447\u0430\u0445 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438.<\/p>\n<p><strong>\u042f \u0432\u043e\u0442 \u043f\u0440\u044f\u043c \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u043e \u0441\u0435\u0439\u0447\u0430\u0441, \u0435\u0439 \u0431\u043e\u0433\u0443! \u041d\u0435 \u0442\u0443\u043c\u0430\u043d\u043d\u044b\u0435 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438 &#8212; \u0431\u0435\u0440\u0451\u043c NETCONF &#8212; \u0438 \u043d\u0430 \u043c\u043d\u043e\u0433\u0438\u0445 \u0432\u0435\u043d\u0434\u043e\u0440\u0430\u0445 \u0443\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0441 \u043d\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432\u044b\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044e \u0442\u043e\u0433\u043e \u0438\u043b\u0438 \u0438\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0451\u043c\u0430.<\/strong><\/p>\n<p>\u041a\u0430\u043a \u0432\u0430\u043c \u043e\u0449\u0443\u0449\u0435\u043d\u0438\u044f \u043e\u0442 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f XML? \u0410 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435, \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0432\u0441\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u044b\u0441\u044f\u0447 \u0441\u0442\u0440\u043e\u043a \u043e\u043f\u0438\u0441\u0430\u0442\u044c? \u0410 \u043f\u0440\u0438\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u044d\u0442\u043e \u0432\u0441\u0451 Jinja-\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c? \u0410 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0432 \u044f\u043c\u043b\u0430\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435?<\/p>\n<p>\u041d\u043e \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e\u0435 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0442\u0435\u0445, \u043a\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u0435\u0433\u043e\u0434\u043d\u044f NETCONF, \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a \u0438 \u0434\u0435\u043b\u0430\u044e\u0442. (!) \u041c\u043d\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0430. Change my mind!<\/p>\n<p>\u0412 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a \u0435\u0441\u0442\u044c YANG \u0438 \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0432\u043e\u043a\u0440\u0443\u0433 \u043d\u0435\u0433\u043e?<\/p>\n<p>\u0425\u0443\u0445. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u043e\u0431 \u044d\u0442\u043e\u043c \u0441\u0435\u0439\u0447\u0430\u0441? \u041f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0441\u0435\u0439\u0447\u0430\u0441? \u041f\u043e\u043f\u043e\u0437\u0436\u0435. \u041f\u043e\u0441\u043b\u0435 RESTCONF \u0438 gRPC?<\/p>\n<hr\/>\n<p><a class=\"anchor\" name=\"RESTCONF\" id=\"RESTCONF\"><\/a><\/p>\n<h2>RESTCONF<\/h2>\n<p>\u041f\u0440\u043e\u0441\u0442\u043e \u043f\u0430\u0440\u0430 \u0441\u043b\u043e\u0432 \u043e\u0431 \u044d\u0442\u043e\u043c \u043c\u0435\u0440\u0442\u0432\u043e\u0440\u043e\u0436\u0434\u0435\u043d\u043d\u043e\u043c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0435.<\/p>\n<p>\u042d\u0442\u043e \u043f\u043e\u043c\u0435\u0441\u044c RESTAPI \u0438 NETCONF, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u044b\u043b\u0430 \u043f\u0440\u0438\u0437\u0432\u0430\u043d\u0430 \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0435\u0442\u044c\u044e \u0434\u043b\u044f WEB-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439.<\/p>\n<p>\u0412\u043d\u0443\u0442\u0440\u0438 \u0438\u0434\u0435\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438 \u044d\u0442\u043e NETCONF \u0441 \u0435\u0433\u043e datastores \u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439, \u043e\u0434\u043d\u0430\u043a\u043e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u0430 &#8212; HTTP \u0441 \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 CRUD, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0447\u0435\u0440\u0435\u0437 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b (<em>GET<\/em>, <em>POST<\/em>, <em>PUT<\/em>, <em>PATCH<\/em>, <em>DELETE<\/em>). \u0414\u0430\u043d\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 JSON \u0438\u043b\u0438 XML. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f YANG.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/19b\/333\/1ad\/19b3331ad9ec0f911413fe59ee8a6529.png\" width=\"1734\" height=\"868\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/19b\/333\/1ad\/19b3331ad9ec0f911413fe59ee8a6529.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041e\u043f\u0438\u0441\u0430\u043d \u0432 <a href=\"https:\/\/datatracker.ietf.org\/doc\/html\/rfc8040\" rel=\"noopener noreferrer nofollow\">RFC8040<\/a>.<\/p>\n<p>\u041d\u0435 \u043c\u043e\u0433\u0443 \u043e\u0442\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u0435\u0431\u0435 \u0432 \u0443\u0434\u043e\u0432\u043e\u043b\u044c\u0441\u0442\u0432\u0438\u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c.<\/p>\n<p>\u0412\u043e\u0437\u044c\u043c\u0451\u043c \u043d\u0430 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 Arista veos-4.21.<\/p>\n<p>\u0427\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b restconf:<\/p>\n<ol>\n<li>\n<p>\u0412\u044b\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u0430\u043c\u043e\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 <\/p>\n<pre><code>security pki certificate generate self-signed restconf.crt key restconf.key generate rsa 2048 parameters common-name restconf certificate:restconf.crt generated<\/code><\/pre>\n<\/li>\n<li>\n<p>\u0420\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u043c \u0434\u043e\u0441\u0442\u0443\u043f \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u043e \u043f\u043e\u0440\u0442\u0443 6020 &#8212; \u043f\u0440\u0430\u0432\u0438\u043c <code>control-plane acl<\/code><\/p>\n<p>\u0421\u043c\u043e\u0442\u0440\u0438\u043c \u0442\u043e, \u0447\u0442\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e \u0441\u0435\u0439\u0447\u0430\u0441 &#8212; \u044d\u0442\u043e readonly acl.<br \/><code>show ip access-lists default-control-plane-acl<\/code><\/p>\n<\/li>\n<li>\n<p>\u041a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0438 \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u043a\u043e\u043f\u0438\u044e ACL. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u044e\u0449\u0435\u0435 \u0434\u043e\u0441\u0442\u0443\u043f \u043f\u043e \u043f\u043e\u0440\u0442\u0443 6020:<\/p>\n<pre><code>ip access-list control-plane-acl-with-restconf 9 permit tcp any any eq 6020 30 permit udp any any eq bfd ttl eq 255 40 permit udp any any eq bfd-echo ttl eq 254 50 permit udp any any eq multihop-bfd 60 permit udp any any eq micro-bfd 70 permit ospf any any 80 permit tcp any any eq ssh telnet www snmp bgp https msdp ldp 90 permit udp any any eq bootps bootpc snmp rip ntp ldp 100 permit tcp any any eq mlag ttl eq 255 110 permit udp any any eq mlag ttl eq 255 120 permit vrrp any any 130 permit ahp any any 140 permit pim any any 150 permit igmp any any 160 permit tcp any any range 5900 5910 170 permit tcp any any range 50000 50100 180 permit udp any any range 51000 51100 190 permit tcp any any eq 3333 200 permit tcp any any eq nat ttl eq 255 210 permit tcp any eq bgp any 220 permit rsvp any any<\/code><\/pre>\n<\/li>\n<li>\n<p>\u041f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c ACL \u043d\u0430 Control-Plane:<\/p>\n<pre><code>control-plane     ip access-group control-plane-acl-with-restconf in<\/code><\/pre>\n<\/li>\n<li>\n<p>\u0412\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0441\u0435\u0440\u0432\u0438\u0441 RESTCONF:<\/p>\n<pre><code>management api restconf     transport https test     ssl profile restconf<\/code><\/pre>\n<\/li>\n<li>\n<p>\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c SSL:<\/p>\n<pre><code>management security     ssl profile restconf     certificate restconf.crt key restconf.key<\/code><\/pre>\n<\/li>\n<li>\n<p>\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c SSL.<\/p>\n<\/li>\n<\/ol>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0447\u0442\u043e \u043f\u043e\u0440\u0442 \u043e\u0442\u043a\u0440\u044b\u0442:<\/p>\n<pre><code class=\"bash\">nc -zv bcn-spine-1.arista 6020 Connection to bcn-spine-1.arista 6020 port [tcp\/*] succeeded!<\/code><\/pre>\n<p>\u0418 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043a\u0443\u0440\u043b\u0438\u043c:<\/p>\n<pre><code class=\"bash\">curl -k -s GET 'https:\/\/bcn-spine-1.arista:6020\/restconf\/data\/openconfig-interfaces:interfaces\/interface=Management1' \\ --header 'Accept: application\/yang-data+json'  -u eucariot:password<\/code><\/pre>\n<p>\u0422\u0430\u043a \u043c\u044b \u0438\u0437\u0432\u043b\u0435\u043a\u043b\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043f\u0440\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 <code>Management1<\/code>.<\/p>\n<p>\u0410 \u0432\u043e\u0442 \u0442\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e BGP:<\/p>\n<pre><code class=\"bash\">curl -k -s GET 'https:\/\/bcn-spine-1.arista:6020\/restconf\/data\/network-instances\/network-instance\/config\/protocols' \\ --header 'Accept: application\/yang-data+json'  -u eucariot:password | jq<\/code><\/pre>\n<p>\u0421\u0442\u0440\u043e\u043a\u0430 URL \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code>https:\/\/&lt;ADDRESS>\/&lt;ROOT>\/data\/&lt;[YANG-MODULE]:CONTAINER>\/&lt;LEAF>\/[?&lt;OPTIONS>]<\/code><\/pre>\n<ul>\n<li>\n<p><code>&lt;ADDRESS><\/code> &#8212; \u0430\u0434\u0440\u0435\u0441 RESTCONF-\u0441\u0435\u0440\u0432\u0435\u0440\u0430.<\/p>\n<\/li>\n<li>\n<p><code>&lt;ROOT><\/code> &#8212; \u0422\u043e\u0447\u043a\u0430 \u0432\u0445\u043e\u0434\u0430 \u0434\u043b\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 RESTCONF. \u041c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0442\u0443\u0442 : https:\/\/&lt;ADDRESS>\/.well-known\/<\/p>\n<\/li>\n<li>\n<p><code>data<\/code> &#8212; \u043f\u0440\u044f\u043c \u0442\u0430\u043a \u0438 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f<\/p>\n<\/li>\n<li>\n<p><code>&lt;[YANG MODULE:]CONTAINER><\/code> &#8212; \u0411\u0430\u0437\u043e\u0432\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 YANG. \u041d\u0430\u043b\u0438\u0447\u0438\u0435 YANG Module &#8212; \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e. <\/p>\n<\/li>\n<li>\n<p><code>&lt;LEAF><\/code> &#8212; \u041e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435<\/p>\n<\/li>\n<li>\n<p><code>&lt;OPTIONS><\/code> &#8212; \u041e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u0432\u043b\u0438\u044f\u044e\u0449\u0438\u0435 \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0440\u043e\u0431\u0443\u0435\u043c \u0432\u044b\u044f\u0441\u043d\u0438\u0442\u044c <code>&lt;ROOT><\/code>:<\/p>\n<pre><code class=\"bash\">curl -k https:\/\/bcn-spine-1.arista:6020\/.well-known\/host-meta &lt;XRD xmlns=\u2019http:\/\/docs.oasis-open.org\/ns\/xri\/xrd-1.0\u2019>     &lt;Link rel=\u2019restconf\u2019 href=\u2019\/restconf\u2019\/> &lt;\/XRD><\/code><\/pre>\n<p>\u041d\u0443 \u043c\u043e\u0436\u043d\u043e \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c:<br \/>\u041a \u043f\u0440\u0438\u043c\u0435\u0440\u0443 hostname.<\/p>\n<pre><code class=\"bash\">curl -k -X PUT https:\/\/bcn-spine-1.arista:6020\/restconf\/data\/system\/config \\ -H 'Content-Type: application\/json' -u eucariot:password \\ -d '{\"openconfig-system:hostname\":\"vika-kristina-0\"}'  {\"openconfig-system:hostname\":\"vika-kristina-0\"}<\/code><\/pre>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c?<\/p>\n<pre><code class=\"bash\">curl -k -X GET https:\/\/bcn-spine-1.arista:6020\/restconf\/data\/system\/config \\ --header 'Accept: application\/yang-data+json' \\ -u eucariot:password {\"openconfig-system:hostname\":\"bcn-spine-1\",\"openconfig-system:login-banner\":\"\",\"openconfig-system:motd-banner\":\"\"}<\/code><\/pre>\n<p>\u0427\u0442\u043e? \u041d\u0435 \u043f\u043e\u043c\u0435\u043d\u044f\u043b\u043e\u0441\u044c?! \u0418 \u043e\u043d\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435 \u043f\u043e\u043c\u0435\u043d\u044f\u043b\u043e\u0441\u044c. \u042f \u043d\u0435 \u0441\u043c\u043e\u0433 \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c.<\/p>\n<p>\u0412 \u043e\u0431\u0449\u0435\u043c \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e \u0441 RESTCONF \u043f\u043e\u043a\u0430 \u0441\u043a\u043e\u0440\u0435\u0435 \u0442\u0440\u0430\u0432\u043c\u0430\u0442\u0438\u0447\u043d\u043e: \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0438\u0441\u0447\u0435\u0437\u0430\u044e\u0449\u0438\u0435 \u043c\u0430\u043b\u043e, \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0441\u0441\u044b\u043b\u043e\u043a &#8212; \u043d\u0430 \u043a\u043e\u0441\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043a\u043e\u0440\u0430\u0431\u043b\u0438, \u0431\u043e\u0440\u043e\u0437\u0434\u044f\u0449\u0438\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0440\u044b \u043d\u0435\u0438\u0437\u0443\u0447\u0435\u043d\u043d\u043e\u0439 \u0412\u0441\u0435\u043b\u0435\u043d\u043d\u043e\u0439, \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u0441 RESTCONF \u0432\u0441\u0435 \u043a\u0430\u043a \u043e\u0434\u0438\u043d \u043e\u0434\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b, \u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442. \u0421 \u0442\u043e\u0439 \u0436\u0435 \u0430\u0440\u0438\u0441\u0442\u043e\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0430\u0437\u043d\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 &#8212; ietf, openconfig \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u043e\u0434\u043d\u043e\u043c\u0443 \u043e\u0442\u0432\u0435\u0442\u0443 \u0432 \u0432\u0438\u0434\u0435 OpenConfig.<\/p>\n<p>\u0412 \u043a\u043e\u043d\u0446\u0435 \u043a\u043e\u043d\u0446\u043e\u0432 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0432 \u0432\u044b\u0434\u0430\u0447\u0435 \u0445\u043e\u0442\u044c \u0441\u043a\u043e\u043b\u044c\u043a\u043e-\u0442\u043e \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u044b\u0445 \u0440\u0430\u0431\u043e\u0442 \u043f\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e RESTCONF \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u044d\u0442\u043e \u0432\u0441\u0451 \u043d\u0435 \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u0431\u0430\u043b\u043e\u0432\u0441\u0442\u0432\u043e. \u0418 \u044f \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u043e \u043d\u0435 \u043f\u0438\u0448\u0443 \u0441\u043b\u043e\u0432\u043e &#171;\u043f\u043e\u043a\u0430&#187;. \u041b\u0438\u0447\u043d\u043e \u044f \u0432 \u043d\u0435\u0433\u043e \u043d\u0435 \u0432\u0435\u0440\u044e<\/p>\n<p>\u0425\u043e\u0442\u044f \u043e\u0449\u0443\u0442\u0438\u043c\u044b\u0435 \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 &#8212; \u044d\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0447\u0443\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a. \u0418 \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0449\u0435 &#8212; \u043e\u043d \u0442\u0435\u043f\u0435\u0440\u044c \u0438\u043c\u0435\u0435\u0442 \u0434\u0435\u043b\u043e \u0441\u043e \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u043c \u0441 \u043f\u0435\u043b\u0451\u043d\u043e\u043a WEB-\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u043c.<\/p>\n<p>\u041f\u0440\u0438 \u044d\u0442\u043e\u043c CRUD \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0433\u043b\u0430\u0434\u043a\u043e \u043b\u043e\u0436\u0438\u0442\u0441\u044f \u043d\u0430 RPC-\u043f\u043e\u0434\u0445\u043e\u0434, \u0434\u0430 \u0438 \u0432 \u0438\u0434\u0435\u0435 \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u043d\u0430 \u0441\u0435\u0442\u0435\u0432\u043e\u043c \u0436\u0435\u043b\u0435\u0437\u0435 HTTP \u0435\u0441\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435, \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u0442\u0435\u0441\u044c?<\/p>\n<p>\u041f\u0440\u043e\u0441\u0442\u043e \u0436\u0430\u043b\u044c \u0441\u0438\u043b, \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0432 \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b. \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0430 \u043f\u044f\u0442\u043a\u0438 \u0435\u043c\u0443 \u043d\u0430\u0441\u0442\u0443\u043f\u0430\u0435\u0442 gRPC\/gNMI.<\/p>\n<p>\u041d\u0430 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435: <a href=\"https:\/\/blog.wimwauters.com\/networkprogrammability\/2020-04-02_restconf_introduction_part1\" rel=\"noopener noreferrer nofollow\">RESTCONF intro with Postman &#8212; Part 1<\/a><\/p>\n<hr\/>\n<p><a class=\"anchor\" name=\"CALL_HOME\" id=\"CALL_HOME\"><\/a><\/p>\n<h2>Call-Home<\/h2>\n<p><a href=\"https:\/\/www.ietf.org\/rfc\/rfc8071.txt\" rel=\"noopener noreferrer nofollow\">RFC8071<\/a><\/p>\n<p>\u042d\u0442\u043e, \u0447\u0442\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0437\u0432\u043e\u043d\u043e\u043a \u0434\u043e\u043c\u043e\u0439 &#8212; \u0441\u043f\u043e\u0441\u043e\u0431 \u0438\u043d\u0438\u0446\u0438\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441 NETCONF\/RESTCONF-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043a \u043a\u043b\u0438\u0435\u043d\u0442\u0443, \u0442\u043e \u0435\u0441\u0442\u044c \u0441 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u043d\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f.<\/p>\n<p>\u041d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f IP-\u0430\u0434\u0440\u0435\u0441 NETCONF\/RESTCONF-\u043a\u043b\u0438\u0435\u043d\u0442\u0430, \u043a\u0443\u0434\u0430 \u043e\u043d\u043e \u043e\u0442\u0441\u044b\u043b\u0430\u0435\u0442 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e \u0441\u0432\u043e\u0435\u043c\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e. \u041b\u0438\u0431\u043e \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0438 \u0437\u0430\u0431\u0440\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e.<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e \u0434\u043b\u044f \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432, \u043a\u043e\u0433\u0434\u0430<\/p>\n<ul>\n<li>\n<p>\u041d\u043e\u0432\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u044c \u043e \u0441\u0435\u0431\u0435 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<li>\n<p>\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0437\u0430 NAT \u0438\u043b\u0438 \u0444\u0430\u0435\u0440\u0432\u043e\u043b\u043e\u043c.<\/p>\n<\/li>\n<li>\n<p>\u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440 \u0441\u0447\u0438\u0442\u0430\u0435\u0442, \u0447\u0442\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u0435\u0435 \u0438\u043c\u0435\u0442\u044c \u0437\u0430\u043a\u0440\u044b\u0442\u044b\u0435 \u043f\u043e\u0440\u0442\u044b \u043d\u0430 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0445 \u0438 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e well-known \u043f\u043e\u0440\u0442 \u043d\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0442\u0443\u0442 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435 \u0431\u0443\u0434\u0435\u043c.<\/p>\n<p><a class=\"anchor\" name=\"GRPC_GNMI\" id=\"GRPC_GNMI\"><\/a><\/p>\n<hr\/>\n<h2>gRPC\/gNMI<\/h2>\n<p>\u0417\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u043b\u0435\u0442 \u0441\u0435\u043c\u044c gRPC \u0443\u0436\u0435 \u0432\u0441\u0435\u043c \u0443\u0448\u0438 \u043f\u0440\u043e\u0436\u0443\u0436\u0436\u0430\u043b\u0438. \u0418 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0430\u043c\u044b\u0435 \u043b\u043e\u0432\u043a\u0438\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043c\u043e\u0433\u043b\u0438 \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u043f\u043e gRPC.<\/p>\n<p><a href=\"https:\/\/github.com\/grpc\/grpc\/blob\/master\/doc\/g_stands_for.md\" rel=\"noopener noreferrer nofollow\">g \u0432 gRPC<\/a>, \u043a\u0441\u0442\u0430\u0442\u0438, \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0432\u043e\u0432\u0441\u0435 \u043d\u0435 <em>&#171;google&#187;<\/em>.<\/p>\n<p>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 \u043f\u043e\u0432\u0435\u0440\u0445 gRPC \u0432 \u043c\u0438\u0440\u0435 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 <strong>gNMI<\/strong> &#8212; <em>gRPC Network Management Interface<\/em>.<\/p>\n<p>\u0412 \u043e\u0441\u043d\u043e\u0432\u0435 gNMI \u043b\u0435\u0436\u0438\u0442 gRPC, \u0434\u043b\u044f \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 YANG (\u043d\u043e \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e), \u0432\u043d\u0443\u0442\u0440\u0438 \u0443\u0436\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 RPC. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e gNMI \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c telemetry &#8212; \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u0443\u044e \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443 \u0442\u0435\u043b\u0435\u043c\u0435\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p>\u0412 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044f \u043d\u0435 \u044f, \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u0434 gNMI \u044f \u043d\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0443 gRPC. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0441\u0442\u0438\u0442\u0435 \u0437\u0430 \u043e\u0442\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435, \u043d\u043e \u0431\u0435\u0437 \u043d\u0435\u0433\u043e \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u0432 \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u043d\u043e\u0435 \u0445\u0430\u0443\u0442\u0443.<\/p>\n<p><a class=\"anchor\" name=\"GRPC\" id=\"GRPC\"><\/a><\/p>\n<h3>gRPC<\/h3>\n<p>\u0411\u0435\u0437 \u0442\u0435\u043e\u0440\u0438\u0438 &#8212; \u0437\u0430 \u043d\u0435\u0439 \u043f\u0440\u043e\u0448\u0443 \u0432 <a href=\"https:\/\/habr.com\/ru\/post\/667012\/\" rel=\"noopener noreferrer nofollow\">\u043f\u0435\u0440\u0432\u0443\u044e \u0441\u0442\u0430\u0442\u044c\u044e<\/a>.<\/p>\n<p>\u0412 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u043e\u0441\u043b\u0435 \u0433\u043e\u043b\u043e\u0439 \u0442\u0435\u043e\u0440\u0438\u0438 \u0432\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u043a\u0438\u0435 \u043e\u0449\u0443\u0449\u0435\u043d\u0438\u044f:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/aed\/ce9\/be2\/aedce9be263ea54d9817220e9bb3aec0.jpeg\" alt=\"\" title=\"\" width=\"1200\" height=\"630\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/aed\/ce9\/be2\/aedce9be263ea54d9817220e9bb3aec0.jpeg\" data-blurred=\"true\"\/><figcaption><\/figcaption><\/figure>\n<p><em>\u0415\u0441\u0442\u044c, \u043f\u0440\u0430\u0432\u0434\u0430, \u0438 \u0431\u043e\u043b\u0435\u0435 <\/em><a href=\"https:\/\/fs.linkmeup.ru\/images\/adsm\/5\/owl-2.jpeg\" rel=\"noopener noreferrer nofollow\"><em>\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f<\/em><\/a><em>.<\/em> <\/p>\n<p>\u0425\u043e\u0442\u044f \u0442\u043e\u0447\u043d\u043e \u0441\u0442\u043e\u0438\u0442 \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e \u0442\u043e\u043c, \u0447\u0442\u043e gRPC \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 <strong>Protocol Buffers<\/strong> (\u0438\u043b\u0438 \u043a\u043e\u0440\u043e\u0442\u043a\u043e protobuf). \u0422\u0435\u0440\u043c\u0438\u043d \u044d\u0442\u043e\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043d\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0439 &#8212; <\/p>\n<ul>\n<li>\n<p>\u044d\u0442\u043e \u0438 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u043f\u0438\u0441\u0430\u043d\u043e, \u043a\u0430\u043a \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c. \u0415\u0449\u0451 \u044d\u0442\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0442\u043e-\u0441\u043f\u0435\u043a\u0430.<\/p>\n<\/li>\n<li>\n<p>\u044d\u0442\u043e \u0438 <strong>IDL<\/strong> (Interface Definition Language), \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u043c \u0440\u0430\u0437\u043d\u044b\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u043c \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u044f\u0437\u044b\u043a\u0435 \u043e\u0431\u0449\u0430\u0442\u044c\u0441\u044f<\/p>\n<\/li>\n<li>\n<p>\u044d\u0442\u043e \u0438 \u0444\u043e\u0440\u043c\u0430\u0442 \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u043c\u0438<\/p>\n<\/li>\n<\/ul>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u043e\u0434\u0438\u043d proto-\u0444\u0430\u0439\u043b (\u0438\u043b\u0438 \u0438\u0445 \u043d\u0430\u0431\u043e\u0440), \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0441\u0440\u0430\u0437\u0443 \u0432\u0441\u0435 \u044d\u0442\u0438 \u0442\u0440\u0438 \u0432\u0435\u0449\u0438.<\/p>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u043f\u0438\u0448\u0435\u0442\u0435 gRPC-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 protobuf &#8212; \u044d\u0442\u043e \u0432\u0430\u0436\u043d\u0435\u0439\u0448\u0438\u0439 \u0448\u0430\u0433.<\/p>\n<h4>\u041f\u0438\u0448\u0435\u043c ping!<\/h4>\n<p>\u0421\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f<\/p>\n<p>\u041e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c protobuf:<\/p>\n<pre><code class=\"go\">service Ping {   rpc SendPingReply (PingRequest) returns (PingReply) {} }<\/code><\/pre>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u0441\u0435\u0440\u0432\u0438\u0441 &#8212; <code>Ping<\/code>. \u0410 \u0432 \u043d\u0451\u043c \u0435\u0441\u0442\u044c \u043c\u0435\u0442\u043e\u0434 &#8212; <code>SendPingReply<\/code> &#8212; \u044d\u0442\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0438 \u0435\u0441\u0442\u044c RPC &#8212; \u0442\u0430 \u0441\u0430\u043c\u0430\u044f \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u0434\u0451\u0440\u043d\u0435\u043c \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e &#8212; \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c <code>Ping Reply<\/code>.<\/p>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 \u043e\u043d\u0430 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>PingRequest<\/code>, \u0430 \u0432\u0435\u0440\u043d\u0451\u0442 \u043e\u0442\u0432\u0435\u0442 <code>PingReply<\/code>.<\/p>\n<p>\u0410 \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u044d\u0442\u0438 <code>PingRequest<\/code> \u0438 <code>PingReply<\/code>?<\/p>\n<pre><code class=\"go\">message PingRequest {   string payload = 1; }<\/code><\/pre>\n<p><code>PingRequest<\/code>  &#8212; \u044d\u0442\u043e \u043e\u0434\u043d\u043e \u0438\u0437 \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u0430\u0435\u043c\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043c\u0435\u0436\u0434\u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u043c \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c.<br \/>\u0422\u0430\u043a \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0444\u0430\u043a\u0442 \u0435\u0433\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f, \u0438 \u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u043e\u0434\u043d\u043e \u043f\u043e\u043b\u0435 <code>payload<\/code> \u0442\u0438\u043f\u0430 <code>string<\/code>.<\/p>\n<p><code>payload<\/code> &#8212;  \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0435 \u0438\u043c\u044f, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u044b\u0431\u0440\u0430\u0442\u044c, \u043a\u0430\u043a \u0445\u043e\u0442\u0438\u043c.<\/p>\n<p><code>string<\/code> &#8212; \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0442\u0438\u043f\u0430.<\/p>\n<p><code>1<\/code> &#8212; \u043f\u043e\u0437\u0438\u0446\u0438\u044f \u043f\u043e\u043b\u044f \u0432 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0438 &#8212; \u0434\u043b\u044f \u043d\u0430\u0441 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.<\/p>\n<pre><code class=\"go\">message PingReply {   string message = 1; }<\/code><\/pre>\n<p>\u0412\u0441\u0451 \u0442\u043e\u0447\u043d\u043e \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435. \u0418\u043c\u0435\u043d\u0435\u043c \u043f\u043e\u043b\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0434\u0430\u0436\u0435 \u0441\u043b\u043e\u0432\u043e message.<\/p>\n<p>\u0412\u043e\u0442 \u0442\u0430\u043a \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043f\u043e\u043b\u043d\u044b\u0439 proto-\u0444\u0430\u0439\u043b:<\/p>\n<pre><code class=\"go\">syntax = \"proto3\";  option go_package = \"go-server\/ping\";  package ping;  \/\/ The ping service definition. service Ping {   \/\/ Sends a ping reply   rpc SendPingReply (PingRequest) returns (PingReply) {} }  \/\/ The request message containing the ping payload. message PingRequest {   string payload = 1; }  \/\/ The response message containing the ping replay message PingReply {   string message = 1; }<\/code><\/pre>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u0432\u043e\u0442 \u0442\u0430\u043a \u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0430\u044f \u0441\u0445\u0435\u043c\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u043e\u0431\u0435\u0438\u0445 \u0441\u0442\u043e\u0440\u043e\u043d\u0430\u0445. \u0418 \u0441\u0435\u0440\u0432\u0435\u0440 \u0438 \u043a\u043b\u0438\u0435\u043d\u0442 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 proto-\u0444\u0430\u0439\u043b \u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u0437\u043d\u0430\u0442\u044c, \u043a\u0430\u043a \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c \u0442\u043e, \u0447\u0442\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0434\u0440\u0443\u0433\u0430\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430. \u0414\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u0430\u0445.<\/p>\n<p>\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u043a\u0430\u043a <code>protos\/ping.proto<\/code> &#8212; \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u043e\u0434\u0438\u043d \u0434\u043b\u044f \u0432\u0441\u0435\u0445.<\/p>\n<p>\u041d\u0443 \u043b\u0430\u0434\u043d\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0435\u0441\u0442\u044c. \u0418 \u0447\u0442\u043e \u0441 \u043d\u0435\u0439 \u0442\u0435\u043f\u0435\u0440\u044c \u0434\u0435\u043b\u0430\u0442\u044c?<\/p>\n<p>\u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u043f\u0438\u043d\u0433-\u043a\u043b\u0438\u0435\u043d\u0442 \u043d\u0430 Python, \u0430 \u043f\u0438\u043d\u0433-\u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0430 Go.<\/p>\n<h4>gRPC Client<\/h4>\n<p>\u0421\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u041a\u043e\u0434<\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e <code>python-client<\/code>. \u0414\u0430\u043b\u0435\u0435 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u043a\u043e\u0434. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c <code>grpcio-tools<\/code>.<\/p>\n<pre><code class=\"bash\">pip install grpcio-tools<\/code><\/pre>\n<p>\u0418 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0435\u0433\u043e \u0443\u0436\u0435 \u043d\u0430\u0433\u0435\u043d\u0435\u0440\u0438\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0435 \u043a\u043b\u0430\u0441\u0441\u044b:<\/p>\n<pre><code class=\"bash\">python3 -m grpc_tools.protoc \\         -I protos \\         --python_out=python-client \\         --grpc_python_out=python-client \\         protos\/ping.proto<\/code><\/pre>\n<p>\u0421\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435, \u0433\u0434\u0435 \u043c\u044b \u044d\u0442\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043b\u0438, \u043f\u043e\u044f\u0432\u044f\u0442\u0441\u044f \u0434\u0432\u0430 \u0444\u0430\u0439\u043b\u0430: <code>ping_pb2.py<\/code> \u0438 <code>ping_pb2_grpc.py<\/code> &#8212; \u044d\u0442\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u0437\u044f\u0433\u043b\u044f\u043d\u0435\u0442\u0435 \u0432\u043e\u0432\u043d\u0443\u0442\u0440\u044c, \u0442\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u0435 \u0442\u0430\u043c \u043a\u0443\u0447\u0443 \u043a\u043b\u0430\u0441\u0441\u043e\u0432. \u042d\u0442\u043e \u043a\u043b\u0430\u0441\u0441\u044b, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f, \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0434\u043b\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430 (<code>PingServicer<\/code>) \u0438 \u0434\u043b\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u0430 (<code>PingStub<\/code>). \u0422\u0430\u043c \u0436\u0435 \u0443 \u043a\u043b\u0430\u0441\u0441\u0430 <code>Ping<\/code> \u0435\u0441\u0442\u044c \u0438 \u043c\u0435\u0442\u043e\u0434 <code>SendPingReply<\/code>. \u0418 \u043a\u0443\u0447\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u0448\u0442\u0443\u043a\u043e\u0432\u0438\u043d.<\/p>\n<p>\u042d\u0442\u0438 \u0444\u0430\u0439\u043b\u044b \u043d\u0430\u043c \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043c\u0435\u043d\u044f\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e &#8212; \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0445 \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c.<\/p>\n<p>\u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u044d\u0442\u0438 py-\u0444\u0430\u0439\u043b\u044b \u044d\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f. \u0420\u043e\u0432\u043d\u044b\u043c \u0441\u0447\u0451\u0442\u043e\u043c \u043d\u0438\u0447\u0435\u0433\u043e \u0442\u0443\u0442 \u043d\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u0442, \u043a\u0430\u043a \u044d\u0442\u043e\u0442 \u0441\u0435\u0440\u0432\u0438\u0441 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c.<\/p>\n<p>\u0411\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u0430 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0443\u0436\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e &#8212; \u0438 \u0432\u043e\u0442 \u043e\u043d\u0430 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u043c\u0438.<\/p>\n<p>\u041f\u043e\u043a\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"bash\">. \u251c\u2500\u2500 ping_client.py \u251c\u2500\u2500 ping_pb2.py \u2514\u2500\u2500 ping_pb2_grpc.py<\/code><\/pre>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0438\u0441\u0430\u0442\u044c gRPC-\u043a\u043b\u0438\u0435\u043d\u0442.<\/p>\n<p>\u041a\u043b\u0438\u0435\u043d\u0442 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0432\u0441\u0435\u043c \u0431\u0435\u0441\u0445\u0438\u0442\u0440\u043e\u0441\u0442\u043d\u044b\u043c. \u0412 \u0446\u0438\u043a\u043b\u0435 \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c RPC <code>SendPingReply<\/code> \u043d\u0430 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u043c \u0445\u043e\u0441\u0442\u0435 <code>84.201.157.17:12345<\/code>. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u043c payload, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0447\u0438\u0442\u0430\u043b\u0438 \u0438\u0437 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u0430.<\/p>\n<p>\u0412 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>run<\/code> \u043c\u044b \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c <code>stub<\/code> \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c RPC <code>SendPingReply<\/code>, \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 <code>PingRequest<\/code> \u0441 \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c <code>payload<\/code>.<\/p>\n<pre><code class=\"python\">import sys import time from datetime import datetime  import grpc  import ping_pb2 import ping_pb2_grpc  server = \"84.201.157.17:12345\"   def run(payload) -> None:     with grpc.insecure_channel(server) as channel:         stub = ping_pb2_grpc.PingStub(channel)         start_time = datetime.now()         response = stub.SendPingReply(ping_pb2.PingRequest(payload=payload))         rtt = round((datetime.now() - start_time).total_seconds()*1000, 2)     print(f\"Ping response received: {response.message} time={rtt}ms\")   if __name__ == \"__main__\":     payload = sys.argv[1]      while True:         run(payload)         time.sleep(1)<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u0441\u0435\u0439\u0447\u0430\u0441, \u043a\u043b\u0438\u0435\u043d\u0442 \u0432\u0435\u0440\u043d\u0451\u0442 <code>StatusCode.UNAVAILABLE<\/code> &#8212; \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043f\u043e\u043a\u0430 \u043d\u0435\u0442, \u043f\u043e\u0440\u0442 12345 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0441\u043b\u0443\u0448\u0430\u0435\u0442.<\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0438\u0441\u0430\u0442\u044c<\/p>\n<h4>gRPC-\u0441\u0435\u0440\u0432\u0435\u0440<\/h4>\n<p>\u043d\u0430 Go. \u042f \u0435\u0433\u043e \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u043b \u043d\u0430 \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0439 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043e\u0447\u043a\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0438 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f\u043c.<\/p>\n<p>\u0412\u0441\u0451, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0441\u0435\u0440\u0432\u0435\u0440 &#8212; \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u0441\u0442\u0440\u043e\u043a\u0443 \u0432 <code>payload<\/code>, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043a \u043d\u0435\u043c\u0443 <em>&#171;-pong&#187;<\/em> \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u044d\u0442\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0443.<\/p>\n<p>\u0421\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u041a\u043e\u0434. \u0422\u0443\u0442 \u043d\u0430\u043c \u0442\u043e\u0436\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u0434, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441. \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u0440\u0430\u0431\u043e\u0447\u0443\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e <code>go-server<\/code>, \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0435\u0449\u0451 <code>ping<\/code> &#8212; \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438 \u043a\u043e\u0434\u0430 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430.<\/p>\n<pre><code class=\"bash\">protoc --go_out=. --go-grpc_out=.  protos\/ping.proto<\/code><\/pre>\n<p>\u0418 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a:<\/p>\n<pre><code>. \u251c\u2500\u2500 go.mod \u251c\u2500\u2500 go.sum \u2514\u2500\u2500 ping     \u251c\u2500\u2500 ping_grpc.pb.go     \u251c\u2500\u2500 ping.pb.go     \u2514\u2500\u2500 ping.proto<\/code><\/pre>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u0441\u0430\u043c \u043a\u043e\u0434 \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u042f \u0435\u0433\u043e \u0442\u043e\u0436\u0435 \u0432\u0437\u044f\u043b \u0438\u0437 <a href=\"https:\/\/github.com\/grpc\/grpc-go\/tree\/master\/examples\/helloworld\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0434\u043b\u044f go<\/a>.<\/p>\n<p>\u041c\u044b \u0442\u0443\u0442 \u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0447\u0430\u0441\u0442\u044c \u043f\u0440\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 go, protoc, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u044d\u0442\u043e \u0432\u0441\u0451 \u0435\u0441\u0442\u044c \u0432 <a href=\"https:\/\/grpc.io\/docs\/languages\/go\/quickstart\/\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 grpc.io<\/a>.<\/p>\n<pre><code class=\"go\">package main  import (     \"context\"     \"flag\"     \"fmt\"     \"log\"     \"net\"      \"google.golang.org\/grpc\"     pb \"ping-server\/ping\" )  var (     port = flag.Int(\"port\", 12345, \"The server port\") )  type server struct {     pb.UnimplementedPingServer }  func (s *server) SendPingReply(ctx context.Context, in *pb.PingRequest) (*pb.PingReply, error) {     log.Printf(\"Received: %v\", in.GetPayload())     return &amp;pb.PingReply{Message: in.GetPayload() + \"-pong\"}, nil }  func main() {     flag.Parse()     lis, err := net.Listen(\"tcp\", fmt.Sprintf(\"10.128.0.6:%d\", *port))     if err != nil {         log.Fatalf(\"failed to listen: %v\", err)     }     s := grpc.NewServer()     pb.RegisterPingServer(s, &amp;server{})     log.Printf(\"server listening at %v\", lis.Addr())     if err := s.Serve(lis); err != nil {         log.Fatalf(\"failed to serve: %v\", err)     } }<\/code><\/pre>\n<p>\u0412\u0441\u044f \u0431\u0438\u0437\u043d\u0435\u0441 \u043b\u043e\u0433\u0438\u043a\u0430 \u043e\u043f\u0438\u0441\u0430\u043d\u0430 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>SendPingReply<\/code>, \u043e\u0436\u0438\u0434\u0430\u044e\u0449\u0435\u0439 <code>PingRequest<\/code>, \u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0435\u0439 <code>PingReply<\/code>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 <code>message<\/code>: <code>payload<\/code> + <em>&#171;-pong&#187;<\/em> (<code>GetPayload<\/code>). \u0415\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0442\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0438\u0437\u043e\u0449\u0440\u0451\u043d\u043d\u0430\u044f \u043b\u043e\u0433\u0438\u043a\u0430.<\/p>\n<p>\u041d\u0443, \u0430 \u0432 <code>main<\/code> \u043c\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0430 \u0430\u0434\u0440\u0435\u0441\u0435 <code>10.128.0.6<\/code>.<\/p>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435 \u043d\u0430 <code>84.201.157.17<\/code>, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0442\u0443\u0447\u0438\u0442\u0441\u044f \u043a\u043b\u0438\u0435\u043d\u0442? \u0422\u0443\u0442 \u0431\u0435\u0437 \u0445\u0438\u0442\u0440\u043e\u0441\u0442\u0435\u0439 &#8212; \u044d\u0442\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0430\u0434\u0440\u0435\u0441 \u0412\u041c, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432\u0441\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043a \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u043c\u0443 \u0430\u0434\u0440\u0435\u0441\u0443.<\/p>\n<p>\u042f \u043f\u043e\u043b\u043e\u0436\u0443 \u0435\u0433\u043e \u0432<\/p>\n<pre><code>. \u2514\u2500\u2500 ping-server     \u2514\u2500\u2500 main.go<\/code><\/pre>\n<pre><code class=\"bash\">$ go run ping-server\/main.go 2022\/01\/30 04:26:11 server listening at 10.128.0.6:12345<\/code><\/pre>\n<p>\u0412\u0441\u0451, \u0441\u0435\u0440\u0432\u0435\u0440 \u0433\u043e\u0442\u043e\u0432 \u0441\u043b\u0443\u0448\u0430\u0442\u044c.<\/p>\n<p><a href=\"https:\/\/github.com\/eucariot\/ADSM\/tree\/master\/docs\/source\/5_interfaces\/materials\/grpc-ping\/python-server\" rel=\"noopener noreferrer nofollow\">\u041f\u0440\u0438\u043c\u0435\u0440 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043d\u0430 \u043f\u0438\u0442\u043e\u043d\u0435<\/a>, \u0435\u0441\u043b\u0438 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c.<\/p>\n<blockquote>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0441\u0440\u0430\u0437\u0443 asyncio, \u044d\u0442\u043e \u0436\u0435 \u0441\u0435\u0440\u0432\u0435\u0440, \u043d\u0435\u043b\u044c\u0437\u044f \u0442\u0443\u0442 \u0431\u043b\u043e\u0447\u0438\u0442\u044c\u0441\u044f. <br \/>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440, \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0430\u043a\u0435\u0442 grpcio.<\/p>\n<p><code>python -m pip install grpcio<\/code><\/p>\n<\/blockquote>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c?<\/p>\n<pre><code class=\"bash\">\u276f python ping_client.py piu Ping response received: piu-pong time=208.13ms Ping response received: piu-pong time=165.62ms Ping response received: piu-pong time=162.89ms<\/code><\/pre>\n<p>\u0423-\u0445\u0443\u0443\u0443, \u0451-\u043c\u043e\u0451, grpc-\u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b!!!!<\/p>\n<p>\u0410 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u043e\u0434\u0430\u043c\u043f\u0430\u0442\u044c \u0442\u0440\u0430\u0444\u0438\u043a? \u042f \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b \u0441\u0435\u0440\u0432\u0435\u0440 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e \u0438 \u0441\u043d\u044f\u043b \u0442\u0440\u0430\u0444\u0438\u043a.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/18b\/66a\/e61\/18b66ae61d7b8ffe61cc52bfa3834dae.png\" width=\"1920\" height=\"978\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/18b\/66a\/e61\/18b66ae61d7b8ffe61cc52bfa3834dae.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, Wireshark \u043d\u0435 \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u0443\u0435\u0442 HTTP2, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0430\u0443\u0447\u0438\u043c \u0435\u0433\u043e?<\/p>\n<p><code>Analyze -> Decode As.<\/code><\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/399\/a04\/4c1\/399a044c1866020f3f1e84dc87049e2d.png\" width=\"2022\" height=\"1424\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/399\/a04\/4c1\/399a044c1866020f3f1e84dc87049e2d.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0412\u043e\u0442 \u0442\u0443\u0442 \u0443\u0436\u0435 \u0432\u0438\u0434\u043d\u043e \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u043d\u0430\u0448\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u043c \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c.<\/p>\n<p><a href=\"https:\/\/github.com\/eucariot\/ADSM\/blob\/master\/docs\/source\/5_interfaces\/materials\/dumps\/grpc.pcap\" rel=\"noopener noreferrer nofollow\">pcap-\u0444\u0430\u0439\u043b<\/a>.<\/p>\n<p>\u041a\u0430\u0439\u0444!!<\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0435\u0449\u0451 \u0440\u0430\u0437 \u043f\u0440\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c, \u0447\u0442\u043e \u043c\u044b \u0441\u0434\u0435\u043b\u0430\u043b\u0438.<\/p>\n<ol>\n<li>\n<p>\u041e\u043f\u0438\u0441\u0430\u043b\u0438 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u0441\u0435\u0440\u0432\u0438\u0441\u0430 &#8212; \u043a\u0430\u043a\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b, \u043a\u0430\u043a\u0438\u043c\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043c\u0438 \u0441 \u043a\u0430\u043a\u0438\u043c\u0438 \u043f\u043e\u043b\u044f\u043c\u0438 \u043e\u043d\u0438 \u043e\u0431\u043c\u0435\u043d\u0438\u0432\u0430\u044e\u0442\u0441\u044f.<\/p>\n<\/li>\n<li>\n<p>\u0421\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0438\u0437 \u044d\u0442\u043e\u0439 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043a\u043e\u0434 \u043a\u0430\u043a \u0434\u043b\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043d\u0430 Go, \u0442\u0430\u043a \u0438 \u0434\u043b\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043d\u0430 Python.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u043b\u043e\u0433\u0438\u043a\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u0430<\/p>\n<\/li>\n<li>\n<p>\u041a\u043b\u0438\u0435\u043d\u0442 \u0441\u0434\u0435\u043b\u0430\u043b \u0432\u044b\u0437\u043e\u0432 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435. \u0421\u043f\u0438\u0441\u043e\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043c\u044b \u0437\u043d\u0430\u0435\u043c \u0438\u0437 proto-\u0444\u0430\u0439\u043b\u0430.<\/p>\n<\/li>\n<li>\n<p>\u0421\u0435\u0440\u0432\u0435\u0440 \u0432\u0435\u0440\u043d\u0443\u043b \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b \u043a\u043b\u0438\u0435\u043d\u0442\u0443.<\/p>\n<\/li>\n<\/ol>\n<p><a href=\"https:\/\/github.com\/eucariot\/ADSM\/tree\/master\/docs\/source\/5_interfaces\/materials\/grpc-ping\" rel=\"noopener noreferrer nofollow\">\u0412\u0435\u0441\u044c \u043a\u043e\u0434 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438<\/a>.<\/p>\n<p>\u0418\u0442\u0430\u043a, \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c \u0441 gRPC. \u041d\u0443, \u0431\u0443\u0434\u0435\u043c \u0442\u0430\u043a \u0441\u0447\u0438\u0442\u0430\u0442\u044c, \u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435.<\/p>\n<p>\u0412\u043d\u0443\u0442\u0440\u0438 \u0433\u0443\u0433\u043b\u0430 gRPC \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u0436\u0435 \u043a \u0437\u0430\u0434\u0430\u0447\u0430\u043c \u0441\u0435\u0442\u0438. \u0422\u043e \u0435\u0441\u0442\u044c gRPC \u0441\u0442\u0430\u043b \u0435\u0434\u0438\u043d\u044b\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438 \u0432\u043e \u0432\u0441\u0435\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 (\u0438\u043b\u0438 \u043e\u0434\u043d\u0438\u043c \u0438\u0437 &#8212; \u043c\u044b \u043d\u0435 \u0437\u043d\u0430\u0435\u043c).<\/p>\n<p><a class=\"anchor\" name=\"GNMI\" id=\"GNMI\"><\/a><\/p>\n<hr\/>\n<h3>gNMI<\/h3>\n<p>gNMI \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b. \u041f\u0440\u043e \u043d\u0435\u0433\u043e \u043d\u0435\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0430 \u0432\u0438\u043a\u0438, \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043c\u0430\u043b\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u0438 \u043c\u0430\u043b\u043e \u043a\u0442\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0432 \u0441\u0432\u043e\u0451\u043c \u043f\u0440\u043e\u0434\u0435.<\/p>\n<p>\u041e\u043d \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u043c \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043b\u044e\u0431\u044b\u043c \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f\u043c \u0438 RFC, \u043d\u043e \u0435\u0433\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f <a href=\"https:\/\/github.com\/openconfig\/reference\/blob\/master\/rpc\/gnmi\/gnmi-specification.md\" rel=\"noopener noreferrer nofollow\">\u043e\u043f\u0438\u0441\u0430\u043d\u0430 \u043d\u0430 \u0433\u0438\u0442\u0445\u0430\u0431\u0435<\/a>.<\/p>\n<p>\u0427\u0442\u043e \u043d\u0430\u043c \u0432\u0430\u0436\u043d\u043e \u0437\u043d\u0430\u0442\u044c \u043e \u043d\u0451\u043c \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430? <em>gRPC Network Management Interface<\/em>. \u042d\u0442\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0435\u0442\u0435\u0432\u044b\u043c\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0439 gRPC \u043a\u0430\u043a \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a: \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442, \u0440\u0435\u0436\u0438\u043c\u044b \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f (\u0443\u043d\u0430\u0440\u043d\u044b\u0439 \u0438 \u0432\u0441\u0435 \u0432\u0438\u0434\u044b \u0441\u0442\u0440\u0438\u043c\u0438\u043d\u0433\u0430), \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b \u043c\u0430\u0440\u0448\u0430\u043b\u043b\u0438\u043d\u0433\u0430 \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u0440\u043e\u0442\u043e-\u0444\u0430\u0439\u043b\u044b \u0434\u043b\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0439.<\/p>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c YANG (\u0430 \u043c\u043e\u0436\u0435\u0442 \u0438 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c &#8212; \u0432 \u043f\u0440\u043e\u0442\u043e\u0431\u0430\u0444\u044b \u043c\u043e\u0436\u043d\u043e \u0436\u0435 \u0437\u0430\u0441\u0443\u043d\u0443\u0442\u044c \u0432\u0441\u0451, \u0447\u0442\u043e \u0443\u0433\u043e\u0434\u043d\u043e).<\/p>\n<p>\u041a\u0430\u043a \u0442\u043e\u0433\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442 gRPC, \u043d\u0430 \u0441\u0435\u0442\u0435\u0432\u043e\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0441\u0435\u0440\u0432\u0435\u0440, \u043d\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f &#8212; \u043a\u043b\u0438\u0435\u043d\u0442. \u041d\u0430 \u043e\u0431\u0435\u0438\u0445 \u0441\u0442\u043e\u0440\u043e\u043d\u0430\u0445 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043e\u0434\u043d\u0430 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f, \u043e\u0434\u043d\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/dea\/e53\/3af\/deae533af018fb5132a01564715a63da.png\" width=\"1832\" height=\"1128\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/dea\/e53\/3af\/deae533af018fb5132a01564715a63da.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044d\u0442\u043e \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442 \u043d\u0430\u0434 gRPC, \u0432 \u043d\u0451\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b <a href=\"https:\/\/github.com\/openconfig\/gnmi\/blob\/master\/proto\/gnmi\/gnmi.proto\" rel=\"noopener noreferrer nofollow\">\u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0438 RPC<\/a>:<\/p>\n<pre><code class=\"go\">servicegNMI{   rpcCapabilities(CapabilityRequest) returns(CapabilityResponse);   rpcGet(GetRequest) returns(GetResponse);   rpcSet(SetRequest) returns(SetResponse);   rpcSubscribe(streamSubscribeRequest) returns(streamSubscribeResponse); }<\/code><\/pre>\n<p>\u0411\u043e\u043b\u0435\u0435 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0442\u043e-\u0444\u0430\u0439\u043b\u0430 \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043d\u0430 <a href=\"https:\/\/github.com\/hellt\/gnmi-map\" rel=\"noopener noreferrer nofollow\">\u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u0435<\/a>, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u043b \u0420\u043e\u043c\u0430\u043d \u0414\u043e\u0434\u0438\u043d:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/069\/2c6\/d97\/0692c6d9738c1bf33038d6c2387ea25b.png\" width=\"4964\" height=\"3506\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/069\/2c6\/d97\/0692c6d9738c1bf33038d6c2387ea25b.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0417\u0434\u0435\u0441\u044c \u043a\u0430\u0436\u0434\u044b\u0439 RPC \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d \u043d\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0438 \u0442\u0438\u043f\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u044b \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043f\u0440\u043e\u0442\u043e-\u0441\u043f\u0435\u043a\u0438 \u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e.<\/p>\n<p>\u041d\u0435 \u043c\u043e\u0433\u0443 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u0443\u0434\u043e\u0431\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0447\u0430\u0442\u044c \u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 gNMI, \u043d\u043e \u0432\u044b \u0442\u043e\u0447\u043d\u043e \u043a \u043d\u0435\u043c\u0443 \u0435\u0449\u0451 \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437 \u0432\u0435\u0440\u043d\u0451\u0442\u0435\u0441\u044c, \u0435\u0441\u043b\u0438 \u0441\u044f\u0434\u0435\u0442\u0435 \u043d\u0430 gNMI.<\/p>\n<p>\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u0435\u043e\u0440\u0438\u0439.<\/p>\n<p>\u0412\u043e\u043e\u0431\u0449\u0435 gNMI, \u043a\u0430\u043a \u043f\u043b\u043e\u0442\u044c \u043e\u0442 \u043f\u043b\u043e\u0442\u0438 gRPC \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u0435\u043d \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u043c. \u041f\u0440\u043e\u0442\u043e-\u0444\u0430\u0439\u043b\u044b \u043f\u0438\u0448\u0438, \u043a\u043e\u0434 \u043f\u0438\u0448\u0438, \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0439. \u041d\u0435\u043b\u044c\u0437\u044f \u043a\u0430\u043a \u0432 REST API \u043f\u0440\u043e\u0441\u0442\u043e curl \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 &#8212; \u044d\u0442\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u0431\u043e\u043b\u044c.<\/p>\n<p>\u041d\u043e \u0434\u043b\u044f gNMI \u043d\u0430\u043f\u0440\u0438\u0434\u0443\u043c\u044b\u0432\u0430\u043b\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432.<\/p>\n<p>\u0418 \u0442\u0443\u0442 google \u0432 \u043b\u0443\u0447\u0448\u0438\u0445 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u044f\u0445 \u0434\u0435\u043b\u0430\u0435\u0442 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u044b\u0435 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u044b\u0435 \u0432\u0435\u0449\u0438 \u0438 \u0443\u0436\u0430\u0441\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441. <a href=\"https:\/\/github.com\/google\/gnxi\" rel=\"noopener noreferrer nofollow\">gNXI<\/a>, <a href=\"https:\/\/github.com\/openconfig\/gnmi\" rel=\"noopener noreferrer nofollow\">OpenConfig gNMI CLI client<\/a>.<\/p>\n<h4>gNMIc<\/h4>\n<p>\u041d\u0430\u0441 \u0438 \u0442\u0443\u0442 \u0441\u043f\u0430\u0441\u0430\u0435\u0442 \u0420\u043e\u043c\u0430\u043d \u0414\u043e\u0434\u0438\u043d, \u043f\u043e\u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0448\u0438\u0439 \u0432 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043a\u043b\u0430\u0441\u0441\u043d\u043e\u0433\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0430 gNMI, \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e \u0441 Karim Radhouani &#8212; <a href=\"https:\/\/gnmic.kmrd.dev\/install\/\" rel=\"noopener noreferrer nofollow\">gNMIc<\/a>. <\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043f\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438:<\/p>\n<pre><code class=\"bash\">bash -c \"$(curl -sL https:\/\/get-gnmic.kmrd.dev)\"<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0434\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0443\u0437\u0435\u043b.<\/p>\n<pre><code>interface Management1    ip address 192.168.1.11\/24  username eucariot secret &lt;SUPPASECRET>  management api gnmi    transport grpc default  ip access-list control-plane-acl-with-restconf-and-gnmi    8 permit tcp any any eq 6030 \u2026  control-plane    ip access-group control-plane-acl-with-restconf-and-gnmi in<\/code><\/pre>\n<p>\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0432\u044b\u044f\u0441\u043d\u0438\u0442\u044c capabilities:<\/p>\n<pre><code class=\"bash\">gnmic capabilities \\       -a bcn-spine-1.arista:6030 \\       -u eucariot \\       -p password \\       --insecure<\/code><\/pre>\n<p>\u0410 \u0432 \u043e\u0442\u0432\u0435\u0442 \u043f\u0430\u0440\u0430 \u044d\u043a\u0440\u0430\u043d\u043e\u0432 \u0442\u0435\u043a\u0441\u0442\u0430, \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439:<\/p>\n<pre><code class=\"bash\">gNMI version: 0.6.0 supported models:   - arista-exp-eos-multicast, Arista Networks &lt;http:\/\/arista.com\/>,   - arista-exp-eos, Arista Networks &lt;http:\/\/arista.com\/>,   - openconfig-if-ip, OpenConfig working group, 2.3.0 \u2026 supported encodings:   - JSON   - JSON_IETF   - ASCII<\/code><\/pre>\n<p>\u0422\u0443\u0442 \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0442\u0440\u0438 \u0432\u0438\u0434\u0430 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u041d\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0435\u043d JSON.<br \/>\u0410 \u0442\u0430\u043a \u0436\u0435, \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u0432 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u0430\u043a OpenConfig, \u0442\u0430\u043a \u0438 IETF \u0438 \u043f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u044b\u0435.<br \/>\u0414\u0430\u043b\u044c\u0448\u0435 \u043d\u0435\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0442\u044c, \u043e\u0442\u043a\u0443\u0434\u0430 \u044f \u044d\u0442\u043e \u0432\u0437\u044f\u043b, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0441\u043e\u0431\u0440\u0430\u0442\u044c IP-\u0430\u0434\u0440\u0435\u0441\u0430 \u0432\u0441\u0435\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432:<\/p>\n<pre><code class=\"bash\">gnmic get \\       --path \"\/interfaces\/interface\/subinterfaces\/subinterface\/ipv4\/addresses\/address\/config\"       -a bcn-spine-1.arista:6030 \\       -u eucariot \\       -p password \\       --insecure   <\/code><\/pre>\n<pre><code class=\"json\">[   {     \"source\": \"bcn-spine-1.arista:6030\",     \"time\": \"1969-12-31T16:00:00-08:00\",     \"updates\": [       {         \"Path\": \"interfaces\/interface[name=Management1]\/subinterfaces\/subinterface[index=0]\/ipv4\/addresses\/address[ip=192.168.1.11]\/config\",         \"values\": {           \"interfaces\/interface\/subinterfaces\/subinterface\/ipv4\/addresses\/address\/config\": {             \"openconfig-if-ip:ip\": \"192.168.1.11\",             \"openconfig-if-ip:prefix-length\": 24           }         }       },       {         \"Path\": \"interfaces\/interface[name=Ethernet3]\/subinterfaces\/subinterface[index=0]\/ipv4\/addresses\/address[ip=169.254.101.1]\/config\",         \"values\": {           \"interfaces\/interface\/subinterfaces\/subinterface\/ipv4\/addresses\/address\/config\": {             \"openconfig-if-ip:ip\": \"169.254.101.1\",             \"openconfig-if-ip:prefix-length\": 31           }         }       },       {         \"Path\": \"interfaces\/interface[name=Ethernet2]\/subinterfaces\/subinterface[index=0]\/ipv4\/addresses\/address[ip=169.254.1.3]\/config\",         \"values\": {           \"interfaces\/interface\/subinterfaces\/subinterface\/ipv4\/addresses\/address\/config\": {             \"openconfig-if-ip:ip\": \"169.254.1.3\",             \"openconfig-if-ip:prefix-length\": 31           }         }       }     ]   } ]<\/code><\/pre>\n<p>\u0418\u0437 \u043e\u0442\u0432\u0435\u0442\u0430 \u0432\u0438\u0434\u043d\u043e \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u043a \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443, \u0437\u0430\u043f\u0440\u043e\u0448\u0435\u043d\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432 \u043c\u043e\u0434\u0435\u043b\u0438 OpenConfig.<\/p>\n<p>\u041e\u0434\u0438\u043d \u0443\u043b\u044c\u0442\u0440\u0430-\u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u0432 gNMIc, \u044d\u0442\u043e <code>--path \"\/\"<\/code> &#8212;  \u043e\u043d \u0432\u0435\u0440\u043d\u0451\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0441\u0451, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442.<\/p>\n<p>\u041f\u043e\u043b\u0435\u0437\u0435\u043d \u043e\u043d \u0442\u0435\u043c, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0437 \u0432\u044b\u0432\u043e\u0434\u0430 \u043f\u043e\u0440\u0435\u0432\u0435\u0440\u0441\u0438\u043d\u0436\u0438\u043d\u0438\u0440\u0438\u0442\u044c \u0433\u0434\u0435 \u0447\u0442\u043e \u0438\u0441\u043a\u0430\u0442\u044c.<\/p>\n<pre><code class=\"bash\">gnmic get        --path \"\/\"       -a bcn-spine-1.arista:6030 \\       -u eucariot \\       -p password \\       --insecure<\/code><\/pre>\n<p>\u041e\u0442\u0432\u0435\u0442\u0430 \u0431\u0443\u0434\u0435\u0442 \u043c\u043d\u043e\u0433\u043e.<\/p>\n<p>\u0418 \u043e\u0442\u0442\u0443\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e BGP-\u043f\u0438\u0440\u043e\u0432 \u043c\u043e\u0436\u043d\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u0443\u0442\u044c <code>\"\/network-instances\/network-instance\/protocols\/protocol\/bgp\/neighbors\/neighbor\/config\"<\/code>:<\/p>\n<pre><code class=\"bash\">gnmic get \\       --path \"\/network-instances\/network-instance\/protocols\/protocol\/bgp\/neighbors\/neighbor\/config\"       -a bcn-spine-1.arista:6030 \\       -u eucariot \\       -p password \\       --insecure       <\/code><\/pre>\n<pre><code class=\"json\">[   {     \"source\": \"bcn-spine-1.arista:6030\",     \"time\": \"1969-12-31T16:00:00-08:00\",     \"updates\": [       {         \"Path\": \"network-instances\/network-instance[name=default]\/protocols\/protocol[identifier=BGP][name=BGP]\/bgp\/neighbors\/neighbor[neighbor-address=169.254.1.2]\/config\",         \"values\": {           \"network-instances\/network-instance\/protocols\/protocol\/bgp\/neighbors\/neighbor\/config\": {             \"openconfig-network-instance:auth-password\": \"\",             \"openconfig-network-instance:description\": \"\",             \"openconfig-network-instance:enabled\": true,             \"openconfig-network-instance:local-as\": 0,             \"openconfig-network-instance:neighbor-address\": \"169.254.1.2\",             \"openconfig-network-instance:peer-as\": 4228186112,             \"openconfig-network-instance:peer-group\": \"LEAFS\",             \"openconfig-network-instance:route-flap-damping\": false,             \"openconfig-network-instance:send-community\": \"NONE\"           }         }       },       {         \"Path\": \"network-instances\/network-instance[name=default]\/protocols\/protocol[identifier=BGP][name=BGP]\/bgp\/neighbors\/neighbor[neighbor-address=169.254.101.0]\/config\",         \"values\": {           \"network-instances\/network-instance\/protocols\/protocol\/bgp\/neighbors\/neighbor\/config\": {             \"openconfig-network-instance:auth-password\": \"\",             \"openconfig-network-instance:description\": \"\",             \"openconfig-network-instance:enabled\": true,             \"openconfig-network-instance:local-as\": 0,             \"openconfig-network-instance:neighbor-address\": \"169.254.101.0\",             \"openconfig-network-instance:peer-as\": 0,             \"openconfig-network-instance:peer-group\": \"EDGES\",             \"openconfig-network-instance:route-flap-damping\": false,             \"openconfig-network-instance:send-community\": \"NONE\"           }         }       }     ]   } ]<\/code><\/pre>\n<p>\u0410 \u0442\u0430\u043a\u043e\u0439, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u0438\u0440\u0430: <code>\"\/network-instances\/network-instance\/protocols\/protocol\/bgp\/neighbors\/neighbor\/state\/session-state\"<\/code><\/p>\n<pre><code class=\"bash\">gnmic get \\       --path \"\/network-instances\/network-instance\/protocols\/protocol\/bgp\/neighbors\/neighbor\/state\/session-state\"       -a bcn-spine-1.arista:6030 \\       -u eucariot \\       -p password \\       --insecure<\/code><\/pre>\n<pre><code class=\"json\">[   {     \"source\": \"bcn-spine-1.arista:6030\",     \"time\": \"1969-12-31T16:00:00-08:00\",     \"updates\": [       {         \"Path\": \"network-instances\/network-instance[name=default]\/protocols\/protocol[identifier=BGP][name=BGP]\/bgp\/neighbors\/neighbor[neighbor-address=169.254.1.2]\/state\/session-state\",         \"values\": {           \"network-instances\/network-instance\/protocols\/protocol\/bgp\/neighbors\/neighbor\/state\/session-state\": \"ACTIVE\"         }       },       {         \"Path\": \"network-instances\/network-instance[name=default]\/protocols\/protocol[identifier=BGP][name=BGP]\/bgp\/neighbors\/neighbor[neighbor-address=169.254.101.0]\/state\/session-state\",         \"values\": {           \"network-instances\/network-instance\/protocols\/protocol\/bgp\/neighbors\/neighbor\/state\/session-state\": \"ACTIVE\"         }       }     ]   } ]<\/code><\/pre>\n<p>\u0418 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0432\u043f\u043e\u043b\u043d\u0435 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e\u0435 \u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435.<\/p>\n<p>\u0412\u043e\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432\u0435\u0442\u043a\u0438 system:<\/p>\n<pre><code class=\"bash\">gnmic get \\       --path \"\/system\/config\" \\       -a bcn-spine-1.arista:6030 \\       -u eucariot \\       -p password \\       --insecure<\/code><\/pre>\n<pre><code class=\"json\">[   {     \"source\": \"bcn-spine-1.arista:6030\",     \"time\": \"1969-12-31T16:00:00-08:00\",     \"updates\": [       {         \"Path\": \"system\/config\",         \"values\": {           \"system\/config\": {             \"openconfig-system:hostname\": \"bcn-spine-1\",             \"openconfig-system:login-banner\": \"\",             \"openconfig-system:motd-banner\": \"\"           }         }       }     ]   } ]<\/code><\/pre>\n<p>\u0410 \u0432\u043e\u0442 \u043f\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e:<\/p>\n<pre><code class=\"bash\">gnmic get \\       --path \"\/system\/state\" \\       -a bcn-spine-1.arista:6030 \\       -u eucariot \\       -p password \\       --insecure<\/code><\/pre>\n<pre><code class=\"json\">[   {     \"source\": \"bcn-spine-1.arista:6030\",     \"time\": \"1969-12-31T16:00:00-08:00\",     \"updates\": [       {         \"Path\": \"system\/state\",         \"values\": {           \"system\/state\": {             \"openconfig-system:boot-time\": \"164480684820\",             \"openconfig-system:current-datetime\": \"2022-02-19T13:24:54Z+00:00\",             \"openconfig-system:hostname\": \"bcn-spine-1\",             \"openconfig-system:login-banner\": \"\",             \"openconfig-system:motd-banner\": \"\"           }         }       }     ]   } ]<\/code><\/pre>\n<p>\u041d\u0443, \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0432 \u044d\u0442\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438: \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c \u0447\u0435\u0433\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0433\u043e \u043d\u0430 \u0436\u0435\u043b\u0435\u0437\u043a\u0435, <code>Set RPC<\/code>.<\/p>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 AS \u0443 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 BGP-\u043f\u0438\u0440\u043e\u0432:<\/p>\n<pre><code class=\"bash\">gnmic get \\       --path \"\/network-instances\/network-instance\/protocols\/protocol\/bgp\/neighbors\/neighbor[neighbor-address=169.254.1.2]\/config\/peer-as\"\\       -a bcn-spine-1.arista:6030 \\       -u eucariot \\       -p passowrd \\       --insecure<\/code><\/pre>\n<pre><code class=\"json\">[   {     \"source\": \"bcn-spine-1.arista:6030\",     \"time\": \"1969-12-31T16:00:00-08:00\",     \"updates\": [       {         \"Path\": \"network-instances\/network-instance[name=default]\/protocols\/protocol[identifier=BGP][name=BGP]\/bgp\/neighbors\/neighbor[neighbor-address=169.254.1.2]\/config\/peer-as\",         \"values\": {           \"network-instances\/network-instance\/protocols\/protocol\/bgp\/neighbors\/neighbor\/config\/peer-as\": 4228186112         }       }     ]   } ] <\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043c\u0435\u043d\u044f\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435:<\/p>\n<pre><code class=\"bash\">gnmic set \\       --update-path \"\/network-instances\/network-instance[name=default]\/protocols\/protocol[name=BGP]\/bgp\/neighbors\/neighbor[neighbor-address=169.254.1.2]\/config\/peer-as\" \\       --update-value \"4228186113\" \\       -a bcn-spine-1.arista:6030 \\       -u eucariot \\       -p passowrd \\       --insecure<\/code><\/pre>\n<pre><code class=\"json\">{   \"source\": \"bcn-spine-1.arista:6030\",   \"timestamp\": 1645281264572566754,   \"time\": \"2022-02-19T06:34:24.572566754-08:00\",   \"results\": [     {       \"operation\": \"UPDATE\",       \"path\": \"network-instances\/network-instance[name=default]\/protocols\/protocol[name=BGP]\/bgp\/neighbors\/neighbor[neighbor-address=169.254.1.2]\/config\/peer-as\"     }   ] }<\/code><\/pre>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0435\u0449\u0451 \u0440\u0430\u0437:<\/p>\n<pre><code class=\"bash\">gnmic get \\       --path \"\/network-instances\/network-instance\/protocols\/protocol\/bgp\/neighbors\/neighbor[neighbor-address=169.254.1.2]\/config\/peer-as\"\\       -a bcn-spine-1.arista:6030 \\       -u eucariot \\       -p password \\       --insecure      <\/code><\/pre>\n<pre><code class=\"json\">[   {     \"source\": \"bcn-spine-1.arista:6030\",     \"time\": \"1969-12-31T16:00:00-08:00\",     \"updates\": [       {         \"Path\": \"network-instances\/network-instance[name=default]\/protocols\/protocol[identifier=BGP][name=BGP]\/bgp\/neighbors\/neighbor[neighbor-address=169.254.1.2]\/config\/peer-as\",         \"values\": {           \"network-instances\/network-instance\/protocols\/protocol\/bgp\/neighbors\/neighbor\/config\/peer-as\": 4228186113         }       }     ]   } ]<\/code><\/pre>\n<p>\u0423\u0438\u0438\u0438!<\/p>\n<p>\u042f \u0447\u0443\u0442\u044c \u043d\u0435 \u0432\u0441\u043a\u043e\u0447\u0438\u043b \u0441 \u043c\u0435\u0441\u0442\u0430, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c.<\/p>\n<p>\u0410 \u0435\u0449\u0451 \u0443 gNMIc \u0435\u0441\u0442\u044c <a href=\"https:\/\/netdevops.me\/2020\/gnmic-got-better-with-yang-completions\/\" rel=\"noopener noreferrer nofollow\">\u0430\u0432\u0442\u043e\u043a\u043e\u043c\u043f\u043b\u0438\u0448\u043d<\/a>.<\/p>\n<p>\u041d\u0443 \u043d\u0430\u043c \u0431\u044b \u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043a\u043e\u0434\u043e\u043c?<\/p>\n<p>\u041d\u043e \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0451 \u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0443\u043a\u0430\u043c\u0438, \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u0433\u043e\u0442\u043e\u0432\u044b\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c.<\/p>\n<p>\u0421\u0430\u043c gNMIc \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d \u043a\u0430\u043a \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u0432 Go-\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0438\u043c\u0435\u0435\u0442 <a href=\"https:\/\/gnmic.kmrd.dev\/user_guide\/golang_package\/intro\/\" rel=\"noopener noreferrer nofollow\">\u0437\u0440\u0435\u043b\u0443\u044e \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u0443 API<\/a>.<\/p>\n<h4>pyGNMI<\/h4>\n<p>\u042d\u0442\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 <a href=\"https:\/\/github.com\/akarneliuk\/pygnmi\/commit\/80af66e7295ad11ca9009c0059beb61c853ee31d\" rel=\"noopener noreferrer nofollow\">\u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0410\u043d\u0442\u043e\u043d\u043e\u043c \u041a\u0430\u0440\u043d\u0435\u043b\u044e\u043a\u043e\u043c<\/a> (\u0438 \u0441\u043d\u043e\u0432\u0430 \u0440\u0443\u0441\u0441\u043a\u0438\u0439 \u0441\u043b\u0435\u0434). \u0417\u0430\u043c\u0435\u0442\u043d\u043e \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f. <\/p>\n<p>\u0414\u0430 \u043d\u0430 \u043d\u0435\u0451 \u0434\u0430\u0436\u0435 \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f Arista \u0438\u0437 \u0441\u0432\u043e\u0435\u0439 <a href=\"https:\/\/aristanetworks.github.io\/openmgmt\/examples\/pygnmi\/\" rel=\"noopener noreferrer nofollow\">Open Management<\/a>.<\/p>\n<p>\u0421\u043e\u0431\u0435\u0440\u0451\u043c capabilities:<\/p>\n<pre><code class=\"python\">#!\/usr\/bin\/env python  from pygnmi.client import gNMIclient import json  host = (\"bcn-spine-1.arista\", 6030)  if __name__ == \"__main__\":     with gNMIclient(target=host, username=\"eucariot\",                     password=\"password\", insecure=True) as gc:          result = gc.capabilities()      print(json.dumps(result))<\/code><\/pre>\n<p>\u041f\u043e-get-\u0430\u0435\u043c \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c:<\/p>\n<pre><code class=\"python\">#!\/usr\/bin\/env python  from pygnmi.client import gNMIclient import json  host = (\"bcn-spine-1.arista\", 6030)  if __name__ == \"__main__\":     paths = [\"openconfig-interfaces:interfaces\/interface\/subinterfaces\/subinterface\/ipv4\/addresses\/address\/config\"]      with gNMIclient(target=host, username=\"eucariot\",                     password=\"password\", insecure=True) as gc:          result = gc.get(path=paths, encoding='json')      print(json.dumps(result))<\/code><\/pre>\n<p>\u041d\u0443 \u0438 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0442\u0435\u043f\u0435\u0440\u044c \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u043e\u0442 \u0436\u0435 hostname:<\/p>\n<pre><code class=\"python\">#!\/usr\/bin\/env python  from pygnmi.client import gNMIclient import json  host = (\"bcn-spine-1.arista\", 6030)  set_config = [ (     \"openconfig-system:system\",     {             \"config\": {                 \"hostname\": \"bcn-spine-1.barista-karatista\"             }     } ) ] if __name__ == \"__main__\":      with gNMIclient(target=host, username=\"eucariot\",                     password=\"fpassword\", insecure=True) as gc:          result = gc.set(update=set_config)      print(json.dumps(result))<\/code><\/pre>\n<pre><code class=\"bash\">poetry run python gc_set.py | jq {   \"timestamp\": 1645326686451002000,   \"prefix\": null,   \"response\": [     {       \"path\": \"system\",       \"op\": \"UPDATE\"     }   ] }<\/code><\/pre>\n<p>\u0412 <a href=\"https:\/\/github.com\/eucariot\/ADSM\/blob\/master\/docs\/source\/5_interfaces\/materials\/scripts\/gnmiclient_set_bgp.py\" rel=\"noopener noreferrer nofollow\">\u0440\u0435\u043f\u0435 ADSM<\/a> \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044e BGP peer-as.<\/p>\n<hr\/>\n<p>gNMIc \u0438 pyGNMI &#8212; \u044d\u0442\u043e \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u0447\u0430\u0441\u0442\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0447\u0435\u0440\u0435\u0437 gNMI. \u041d\u0438\u0447\u0442\u043e \u043d\u0435 \u043c\u0435\u0448\u0430\u0435\u0442 \u0432\u0430\u043c \u0441\u0430\u043c\u0438\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0431\u043e\u0440 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0443\u0434\u043e\u0431\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c.<\/p>\n<p>\u0412\u0430\u0436\u043d\u043e \u0437\u0434\u0435\u0441\u044c \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c \u0442\u043e, \u0447\u0442\u043e \u0443 gNMI \u043d\u0435\u0442 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438 Data Stores \u0438 \u043a\u0430\u043a \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 &#8212; \u043c\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0441 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u043c.<\/p>\n<p>gNMI \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430\u0441 \u0432\u044b\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043d\u0430 \u0441\u0435\u0442\u044c \u0438\u0433\u043e\u043b\u043a\u0430\u043c\u0438 \u0432\u043d\u0443\u0442\u0440\u044c. \u041c\u044b \u043a \u043d\u0435\u0439 \u0442\u0435\u043f\u0435\u0440\u044c \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u043a \u0435\u0449\u0451 \u043e\u0434\u043d\u043e\u043c\u0443 \u0441\u0435\u0440\u0432\u0438\u0441\u0443, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u043e\u0436\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u0435\u0434\u0438\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441. \u0421\u0430\u043c \u0436\u0435 gNMI \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u043e\u043d\u043d\u043e\u0441\u0442\u044c \u0432\u0441\u0435\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439, \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0445 \u0432 \u043e\u0434\u043d\u043e\u043c RPC.<\/p>\n<p>\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0441\u0435\u0431\u0435, \u0447\u0442\u043e \u0432\u044b \u043f\u0438\u0448\u0438\u0442\u0435 \u0432 \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0442\u043e\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0449\u0451 \u043a\u043e\u043c\u043c\u0438\u0442, \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c &#8212; \u0437\u0432\u0443\u0447\u0438\u0442 \u043d\u0435\u043b\u043e\u0433\u0438\u0447\u043d\u043e. \u0412\u043e\u0442 \u0442\u0430\u043a \u0438 \u0441 \u0441\u0435\u0442\u044c\u044e &#8212; \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u043e\u043d\u043d\u043e\u0441\u0442\u044c \u0435\u0441\u0442\u044c, \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432 &#8212; \u043d\u0435\u0442.<\/p>\n<p>\u0414\u043b\u044f \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0441\u0435\u0442\u044c &#8212; \u044d\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u044b\u0439 \u043c\u0438\u0440, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u0439\u0441\u044f \u0433\u0434\u0435-\u0442\u043e \u0442\u0430\u043c \u0437\u0430 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0441\u0442\u0435\u043d\u043e\u0439 CLI, \u043e\u043a\u0440\u0443\u0436\u0451\u043d\u043d\u044b\u0439 \u0440\u0432\u0430\u043c\u0438, \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u043c\u0438 \u043f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u044b\u043c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u043e\u043c.<\/p>\n<p>\u041d\u0430\u043c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u0441\u0435\u0442\u0435\u0432\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043c\u044b \u0432\u0441\u044e \u0436\u0438\u0437\u043d\u044c \u043e\u0442\u043d\u043e\u0441\u0438\u043b\u0438\u0441\u044c \u043a\u0430\u043a \u043a \u0447\u0435\u043c\u0443-\u0442\u043e \u0432 \u0446\u0435\u043b\u043e\u0441\u0442\u043d\u043e\u043c\u0443, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u043e\u043a\u0443\u043f\u0430\u0435\u043c \u0441\u0440\u0430\u0437\u0443 \u0432\u0441\u0451 \u044d\u0442\u043e \u0432 \u0441\u0431\u043e\u0440\u0435, \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0447\u0430\u0441\u0442\u0438:<\/p>\n<ul>\n<li>\n<p>\u0436\u0435\u043b\u0435\u0437\u043d\u044b\u0439 \u0445\u043e\u0441\u0442 &#8212; \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0442\u043e\u0440\u044b \u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440\u044b, \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0438\u0445 \u043c\u0435\u0434\u043d\u044b\u043c\u0438 \u0438 \u043e\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u043f\u0440\u043e\u0432\u043e\u0434\u043e\u0447\u043a\u0430\u043c\u0438, \u043a\u0443\u0441\u043a\u043e\u043c \u043a\u0440\u0435\u043c\u043d\u0438\u044f \u043f\u043e\u0434 \u0432\u0435\u043d\u0442\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c \u0438 \u0442\u0440\u0430\u043d\u0441\u0438\u0432\u0435\u0440\u0430\u043c\u0438,<\/p>\n<\/li>\n<li>\n<p>\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 &#8212; \u0441\u043e\u0444\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0436\u0438\u0437\u043d\u044c\u044e \u0436\u0435\u043b\u0435\u0437\u0430 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u044b\u043c\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438,<\/p>\n<\/li>\n<li>\n<p>\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0438\u0435 \u0442\u0435 \u0438\u043b\u0438 \u0438\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0438\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043d\u0438\u043c &#8212; \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f, \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b, BGP, VLAN&#8217;\u044b, \u0438\u043b\u0438 gNMI, \u0434\u0430\u044e\u0449\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043d\u0438\u043c \u043a\u043e \u0432\u0441\u0435\u043c.<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u0430, \u0432\u043b\u0438\u044f\u043d\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043d\u0430 \u0441\u0435\u0442\u0435\u0432\u043e\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u0438\u043c\u0435\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0438\u0439 \u043e\u0445\u0432\u0430\u0442. \u0414\u0430, \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043e\u0440\u0432\u0430\u0442\u044c \u0441\u0435\u0431\u0435 \u0434\u043e\u0441\u0442\u0443\u043f \u043e\u0434\u043d\u0438\u043c \u043d\u0435\u0432\u0435\u0440\u043d\u044b\u043c \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435\u043c. \u0414\u0430, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0446\u0435\u043b\u0435\u0432\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043d\u0430 \u0432\u0441\u0435 100% &#8212; \u0432\u0441\u0451 \u0435\u0449\u0451 \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430.<\/p>\n<p>\u041d\u043e \u0447\u0435\u043c, \u0432 \u043a\u043e\u043d\u0446\u0435 \u043a\u043e\u043d\u0446\u043e\u0432 \u044d\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e Linux&#8217;\u0430, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043a\u0440\u0443\u0442\u0438\u0442\u0441\u044f \u0441\u0435\u0440\u0432\u0438\u0441?<\/p>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 (gNMI, gRPC, REST, NETCONF) \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0441\u043f\u043e\u0441\u043e\u0431 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043c\u0438, \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a \u0434\u043b\u044f \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u0445\u043e\u0441\u0442\u0430 \u043d\u0438\u043a\u0443\u0434\u0430 \u043d\u0435 \u0434\u0435\u0432\u0430\u0435\u0442\u0441\u044f SSH+CLI &#8212; \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438, \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f, \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438. \u0412\u043f\u0440\u043e\u0447\u0435\u043c \u0438 \u0442\u0443\u0442 \u0435\u0441\u0442\u044c Ansible, Salt. \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u0435\u0442\u0435\u0432\u0430\u044f \u0436\u0435\u043b\u0435\u0437\u043a\u0430 \u0441\u0442\u0430\u043b\u0430 \u043f\u043e-\u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u043c\u0443 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0439 &#8212; \u0441 Linux&#8217;\u043e\u043c \u043d\u0430 \u0431\u043e\u0440\u0442\u0443.<\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e \u0435\u0441\u0442\u044c<\/p>\n<h4>gNOI<\/h4>\n<p><em>gRPC Network Operations Interface<\/em> \u043e\u0442 OpenConfig &#8212; \u043d\u0430\u0431\u043e\u0440 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 gRPC, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0445 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043d\u0430 \u0445\u043e\u0441\u0442\u0430\u0445.  \u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0449\u0435, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c ping, traceroute, \u043f\u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u0441\u0434\u0435\u043b\u0430\u0442\u044c Route Refresh BGP-\u0441\u043e\u0441\u0435\u0434\u0443, \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b &#8212; \u0432\u0441\u0451 \u0442\u043e, \u0447\u0442\u043e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043d\u0435 \u043a \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u0430 \u0441\u043a\u043e\u0440\u0435\u0435 \u043a \u043e\u0442\u043b\u0430\u0434\u043a\u0435 \u0438 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438. <\/p>\n<p>\u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0442\u0430\u043c \u043d\u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0438\u0439 \u0434\u0435\u043d\u044c \u0443\u0436\u0435 <a href=\"https:\/\/github.com\/openconfig\/gnoi\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u043d\u0443\u0448\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439<\/a>.<\/p>\n<p>\u0410 \u0435\u0449\u0451 \u043f\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438 \u0441 gNMIc \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0438 <a href=\"https:\/\/gnoic.kmrd.dev\/\" rel=\"noopener noreferrer nofollow\">gNOIc<\/a>.<\/p>\n<hr\/>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u043b\u0438, \u043a\u0441\u0442\u0430\u0442\u0438, \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u0432 \u0432\u044b\u0437\u043e\u0432\u0430\u0445 \u043d\u0435 \u0431\u044b\u043b\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u043e\u0433\u043e \u0434\u043b\u044f \u0410\u0440\u0438\u0441\u0442\u044b?<br \/>\u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0435\u043a\u0430\u044f \u043d\u0435\u044f\u0432\u043d\u0430\u044f \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0430 \u0435\u0441\u0442\u044c &#8212; \u044d\u0442\u043e \u043f\u0443\u0442\u0438, \u043e\u043d\u0438 \u043c\u043e\u0433\u043b\u0438 \u0431\u044b \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0410\u0440\u0438\u0441\u0442\u044b \u0438 \u0425\u0443\u0430\u0432\u044d\u044f. \u041d\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0441\u043b\u043e\u0432\u043e &#171;openconfig&#187; \u0432 \u044d\u0442\u0438\u0445 \u043f\u0443\u0442\u044f\u0445. \u0427\u0442\u043e \u044d\u0442\u043e? \u0427\u0442\u043e \u0437\u0430 \u041e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u043a\u043e\u043d\u0444\u0438\u0433?<\/p>\n<p>\u0421\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0441\u0435\u0442\u0438 &#8212; \u043e\u043d\u0430 \u0432\u0435\u0434\u044c \u0432 \u0447\u0451\u043c? \u0412 \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e, \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u0435\u0441\u0442\u044c \u0438 \u043f\u0440\u044f\u043c-\u0442\u0430\u043a\u0438 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 CLI \u0438\u043b\u0438 XML \u0438 \u0440\u0443\u043a\u0430\u043c\u0438 \u043d\u0430\u043a\u0438\u0434\u0430\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0434\u043b\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438.<\/p>\n<p>\u0414\u0430\u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c IP-\u0430\u0434\u0440\u0435\u0441 \u043d\u0430 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435, \u043d\u0443\u0436\u043d\u043e \u0437\u043d\u0430\u0442\u044c \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u044e \u0441\u0435\u043a\u0446\u0438\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0438\u043b\u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0435\u0432\u043e XML.<\/p>\n<p>\u0410 \u0435\u0449\u0451 \u0432\u044b\u044f\u0441\u043d\u0438\u0442\u044c, \u0432 \u043a\u0430\u043a\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u043d\u0430\u0434\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0430\u0434\u0440\u0435\u0441: <code>fe80::1\/64<\/code>, <code>fe80::1 64<\/code>, <code>fe80::1 link-local<\/code>, <code>address: fe80::1, mask: 64<\/code>, <code>FE8:0:0:0:0:0:0:1<\/code>, <code>0000111111101000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000001<\/code> \u0438\u043b\u0438 \u0442\u0430\u043c \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f IPv6. \u0418 \u043d\u0430\u0434\u043e \u043b\u0438 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043a\u0430\u043a-\u0442\u043e \u044d\u043d\u0435\u0439\u0431\u043b\u0438\u0442\u044c IPv6, \u0430 MTU \u0437\u0430\u0438\u043c\u0441\u0442\u0432\u0443\u0435\u0442\u0441\u044f \u0441 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0438\u043b\u0438 \u0434\u043b\u044f IPv6 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439?<\/p>\n<p>\u0418 \u0442\u0430\u043a \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0432\u0435\u043d\u0434\u043e\u0440\u0430 \u043f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u0417\u043d\u0430\u0435\u0442\u0435, \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u0432 \u0441\u043f\u0430\u0441\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e, \u0447\u0442\u043e \u043e\u043d\u0438 \u0434\u043e \u044d\u0442\u043e\u0433\u043e \u043b\u0435\u0442 10 \u0435\u043b\u0438 \u043d\u0430 \u0437\u0430\u0432\u0442\u0440\u0430\u043a \u0446\u0438\u0441\u043a\u0438 \u0434\u0430 \u0434\u0436\u0443\u043d\u0438\u043f\u0435\u0440\u044b &#8212; \u0438 \u043a\u0430\u043a \u0441\u0432\u043e\u0438 \u0434\u0432\u0430 \u043f\u0430\u043b\u044c\u0446\u0430 \u0437\u043d\u0430\u044e\u0442 \u0432\u0441\u0435 \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u0438 CLI.<\/p>\n<p>\u041e\u043d\u043e \u0436\u0435 \u0438\u0445 \u0438 \u0433\u0443\u0431\u0438\u0442.<\/p>\n<p>NETCONF \u043f\u043e\u0435\u043b \u043e\u0432\u0441\u0430 \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043d\u0435 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445. \u0418\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0435\u043d\u0434\u043e\u0440\u044b \u0443\u0441\u043f\u0435\u043b\u0438 \u043d\u0430\u043f\u043b\u043e\u0434\u0438\u0442\u044c \u0441\u0432\u043e\u0438\u0445 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445, \u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439, \u043f\u0440\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0438 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043d\u0438\u0436\u0435.<\/p>\n<p><a class=\"anchor\" name=\"MODELS\" id=\"MODELS\"><\/a><\/p>\n<hr\/>\n<h2>\u041c\u043e\u0434\u0435\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0445<\/h2>\n<p>\u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0442\u043e, \u0432 \u043a\u0430\u043a\u043e\u0439 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f &#8212; \u0438 \u0435\u0441\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c \u0434\u0430\u043d\u043d\u044b\u0445. \u0413\u043e\u0432\u043e\u0440\u0438\u0442\u0441\u044f \u043e\u0431 \u044d\u0442\u043e\u043c \u0438\u043b\u0438 \u043d\u0435\u0442, \u043d\u043e \u0442\u0430\u043a\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0435\u0441\u0442\u044c \u0432\u0441\u0435\u0433\u0434\u0430 \u0438 \u0443 \u043b\u044e\u0431\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430. \u041e\u043d\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043b\u043e\u0441\u043a\u043e\u0439 \u0438\u043b\u0438 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0447\u0435\u0441\u043a\u043e\u0439, \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438\u043b\u0438 \u0437\u0430\u043f\u0443\u0442\u0430\u043d\u043d\u043e\u0439. \u0415\u0441\u043b\u0438 \u0431\u044b \u0435\u0451 \u043d\u0435 \u0431\u044b\u043b\u043e, \u0442\u043e \u0432\u044b \u0431\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0441\u043c\u043e\u0433\u043b\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e, \u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043c\u043e\u0433\u043b\u0438 \u0431\u044b \u0432\u0438\u0434\u043e\u0438\u0437\u0432\u0438\u043d\u044f\u0442\u044c\u0441\u044f \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c. \u0413\u043e\u0432\u043e\u0440\u044f\u0442, \u0432 Router OS 7 \u043f\u043e\u0434\u0432\u0435\u0437\u043b\u0438 \u0442\u0430\u043a\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e.<\/p>\n<p>\u0422\u0430\u043a, \u043c\u044b \u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 Juniper \u043d\u0443\u0436\u043d\u043e \u0432\u043e\u0439\u0442\u0438 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 <code>system->login<\/code>, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0430 \u0444\u043e\u0440\u043c\u0430\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0431\u0443\u0434\u0435\u0442 <code>set &lt;USERNAME> &lt;OTHER PARAMETERS><\/code>.<\/p>\n<p> \u0410 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 IP-\u0430\u0434\u0440\u0435\u0441\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 <code>interface -> em0 -> unit 0 -> family inet<\/code>. \u0418 \u0442\u0430\u043a \u0431\u0443\u0434\u0435\u0442 \u0432\u0441\u0435\u0433\u0434\u0430. \u0412\u043e \u0432\u0441\u044f\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0430 \u044d\u0442\u043e\u0439 \u0436\u0435\u043b\u0435\u0437\u043a\u0435 \u0438 \u044d\u0442\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0441\u043e\u0444\u0442\u0430.<\/p>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c \u0434\u0430\u043d\u043d\u044b\u0445 &#8212; \u044d\u0442\u043e \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 \u043c\u0435\u0436\u0434\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 &#8212; \u043a\u0430\u043a \u043e\u043d\u0430 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u0443\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430.<\/p>\n<p>\u042d\u0442\u043e \u0432\u0435\u0440\u043d\u043e \u0434\u043b\u044f CLI, SNMP, NETCONF, gNMI \u0438 \u0434\u0430\u0436\u0435 \u043f\u0440\u044f\u043c\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0447\u0438\u043f\u043e\u0432\u043e\u0433\u043e SDK.<\/p>\n<p>\u041f\u0440\u043e\u0441\u0442\u043e \u0431\u041e\u043b\u044c\u0448\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u043d\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0437\u043d\u0430\u0442\u044c \u043e\u0431 \u044d\u0442\u0438\u0445 \u043c\u043e\u0434\u0435\u043b\u044f\u0445. \u0415\u0441\u0442\u044c \u0430\u043a\u0441\u0438\u043e\u043c\u0430 &#8212; \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0432\u0435\u043d\u0434\u043e\u0440\u0430 \u043e\u043d\u0430 \u0441\u0432\u043e\u044f. \u0410 \u043c\u044b \u0432 \u0433\u043e\u043b\u043e\u0432\u0435, \u0441\u043e\u0437\u043d\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u043b\u0438 \u043d\u0435\u0442, \u0435\u0451 \u0432\u044b\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043b\u0438, \u0432\u043e\u0441\u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0438.<\/p>\n<p>\u0418 \u0432\u0435\u043d\u0434\u043e\u0440 \u043c\u043e\u0436\u0435\u0442 \u043c\u0435\u043d\u044f\u0442\u044c \u044d\u0442\u0443 \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u043e \u0441\u0432\u043e\u0435\u043c\u0443 \u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u044e \u043e\u0442 \u0432\u0435\u0440\u0441\u0438\u0438 \u043a \u0432\u0435\u0440\u0441\u0438\u0438. \u0410 \u043c\u044b \u043a\u0430\u043a \u043b\u044e\u0434\u0438 \u043a \u044d\u0442\u043e\u043c\u0443 \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u0443\u0435\u043c \u0441\u0432\u043e\u044e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044e\u044e \u043c\u043e\u0434\u0435\u043b\u044c, \u043f\u0440\u0438\u0441\u043f\u043e\u0441\u0430\u0431\u043b\u0438\u0432\u0430\u0435\u043c\u0441\u044f &#8212; \u043f\u043e \u0437\u0430\u043a\u043e\u043d\u0430\u043c \u044d\u0432\u043e\u043b\u044e\u0446\u0438\u0438.<\/p>\n<p><a class=\"anchor\" name=\"NATIVE_MODELS\" id=\"NATIVE_MODELS\"><\/a><\/p>\n<h3>Native<\/h3>\n<p>\u0422\u0430\u043a \u0431\u044b\u043b\u043e \u0432\u0441\u0435\u0433\u0434\u0430, \u043d\u043e \u044d\u0442\u043e \u043f\u043e\u043c\u0435\u043d\u044f\u043b\u043e\u0441\u044c \u0441 \u043f\u0440\u0438\u0445\u043e\u0434\u043e\u043c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438. \u0412\u0435\u043d\u0434\u043e\u0440\u044b, \u043a\u0430\u043a \u0431\u0443\u0434\u0442\u043e \u0431\u044b \u0434\u0443\u043c\u0430\u043b\u0438, \u0447\u0442\u043e \u0440\u043e\u0441\u0442 \u0441\u0435\u0442\u0435\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u043c \u0434\u043e\u043a\u0438\u0434\u044b\u0432\u0430\u043d\u0438\u0435\u043c \u043b\u044e\u0434\u0435\u0439 \u043d\u0430 \u0438\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443. \u041d\u043e \u043b\u044e\u0434\u044f\u043c \u044d\u0442\u043e \u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u043b\u043e\u0441\u044c, \u043e\u043d\u0438 \u043d\u0430\u0447\u0430\u043b\u0438 \u043f\u0438\u0441\u0430\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430 perl&#8217;\u0430\u0445, php, python&#8217;\u0430\u0445 \u0441 expect&#8217;\u0430\u043c\u0438, \u043f\u043e\u043f\u044b\u0442\u043a\u0430\u043c\u0438 \u043e\u0442\u043b\u043e\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043e\u0442\u0432\u0435\u0442\u044b CLI, \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043d\u0430 \u043d\u0438\u0445 \u0441\u0440\u0435\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u041d\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u043a\u043e\u0440\u0431\u0438 \u0432 \u044d\u0442\u043e\u043c \u043c\u0438\u0440\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u043d\u043e\u0436\u0438\u043b\u043e\u0441\u044c. \u0412\u0441\u0435 \u0440\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u0438 \u043a \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044e, \u0447\u0442\u043e \u0434\u043e\u043b\u0433\u043e \u043f\u0440\u0438\u0442\u0432\u043e\u0440\u044f\u0442\u044c\u0441\u044f \u0440\u043e\u0431\u043e\u0442 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u043c \u043d\u0435 \u043c\u043e\u0436\u0435\u0442.<\/p>\n<p>\u0422\u0430\u043a \u0438 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c NETCONF \u0438 RESTCONF (\u0442\u0430\u043a \u043f\u043e\u044f\u0432\u043b\u044f\u043b\u0441\u044f \u0438 SNMP). \u041e\u043d\u0438 \u0434\u0430\u043b\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u044f\u0432\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u044b \u043c\u0435\u0436\u0434\u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u043c \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c.<\/p>\n<p>\u0410\u0432\u0442\u043e\u0440 \u0443\u0442\u0438\u043b\u0438\u0442\u044b\/\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u043e\u043f\u0438\u0440\u0430\u044f\u0441\u044c \u043d\u0430 \u044d\u0442\u043e\u0442 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442, \u043f\u0438\u0448\u0435\u0442 \u043a\u043e\u0434, \u0430 \u0432\u0435\u043d\u0434\u043e\u0440 \u043e\u0431\u044f\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0435\u043c\u0443 \u043f\u0440\u0438\u0441\u043b\u0430\u043b\u0438. \u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u0440\u0438\u0441\u044b\u043b\u0430\u0435\u0442\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0443 \u0434\u0430\u043d\u043d\u044b\u0435, \u0430 \u0432\u0435\u043d\u0434\u043e\u0440 \u0433\u043e\u0432\u043e\u0440\u0438\u0442, \u0447\u0442\u043e \u0432\u044b \u0435\u0440\u0443\u043d\u0434\u0443 \u043f\u0440\u0438\u0441\u043b\u0430\u043b\u0438, \u0432\u044b \u0438\u0434\u0451\u0442\u0435 \u0432 \u0441\u0443\u0434 (\u0432 TAC).<\/p>\n<p>\u041f\u0435\u0440\u0432\u044b\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 NETCONF \u0431\u044b\u043b\u0438 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0436\u0435 \u0437\u0430\u043a\u0440\u044b\u0442\u044b\u043c\u0438, \u043a\u0430\u043a \u0438 \u0441\u0430\u043c CLI. \u0423 \u0434\u0436\u0443\u043d\u0430 &#8212; \u043c\u0435\u043d\u044c\u0448\u0435, \u0443 \u0446\u0438\u0441\u043a\u0438 &#8212; \u0431\u043e\u043b\u044c\u0448\u0435. \u0423 \u043a\u043e\u0433\u043e-\u0442\u043e RPC \u043f\u0435\u0440\u0435\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u0432\u044b\u0437\u043e\u0432\u0435 CLI. <\/p>\n<p>\u041d\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u044d\u0442\u043e \u0432\u0441\u0451 \u043a \u043a\u0430\u043a\u0438\u043c-\u0442\u043e \u044f\u0432\u043d\u044b\u043c \u0441\u0445\u0435\u043c\u0430\u043c \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0430\u0441\u044c \u0432\u0441\u0451 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u0435\u0435 \u0441 \u043a\u0430\u0436\u0434\u044b\u043c \u0434\u043d\u0451\u043c. \u041a \u044d\u0442\u043e\u043c\u0443 \u0436\u0435 \u043f\u043e\u0434\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u043b \u0438 \u0440\u0430\u0441\u0446\u0432\u0435\u0442 NMS, \u0431\u0435\u0440\u0443\u0449\u0438\u0445 \u043d\u0430 \u0432\u043e\u043e\u0440\u0443\u0436\u0435\u043d\u0438\u0435 NETCONF.<\/p>\n<p>\u0418 \u0442\u0430\u043a \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u043f\u0435\u0440\u0432\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 &#8212; NATIVE. \u0423 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0432\u0435\u043d\u0434\u043e\u0440\u0430 \u0441\u0432\u043e\u044f, \u043d\u043e \u0443\u0436\u0435 \u043c\u043e\u0434\u0435\u043b\u044c, \u0438 \u0443\u0436\u0435 \u043e\u0442\u043a\u0440\u044b\u0442\u0430\u044f.<\/p>\n<p>\u0412\u0435\u043d\u0434\u043e\u0440\u044b \u0441 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0441\u043e\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e \u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442 \u0441\u0432\u043e\u0438 \u043c\u043e\u0434\u0435\u043b\u0438 \u0432 <a href=\"https:\/\/github.com\/YangModels\/yang\/tree\/master\/vendor\" rel=\"noopener noreferrer nofollow\">\u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439<\/a>.<\/p>\n<p>\u041d\u0430\u043b\u0438\u0447\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u0436\u0435 \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043d\u0435 \u0440\u044b\u0441\u043a\u0430\u0442\u044c \u0432 \u043f\u043e\u043f\u044b\u0442\u043a\u0430\u0445 \u0432\u0441\u043b\u0435\u043f\u0443\u044e \u043d\u0430\u0449\u0443\u043f\u0430\u0442\u044c, \u043a\u0430\u043a \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c XML, \u0430 \u043f\u043e\u0439\u0442\u0438, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0432 \u043a\u0430\u043a\u043e\u043c \u0432\u0438\u0434\u0435 \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u0440\u043e\u0431\u043a\u0430.<br \/>\u0410 \u043f\u0440\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u0438 \u043c\u043e\u0434\u0435\u043b\u044c \u0447\u0438\u0442\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e \u0438 \u0440\u0443\u043a\u0430\u043c\u0438 \u0434\u0430\u0436\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u0442\u044c.<\/p>\n<p><a class=\"anchor\" name=\"STANDARD_MODELS\" id=\"STANDARD_MODELS\"><\/a><\/p>\n<h3>\u0412\u0435\u043d\u0434\u043e\u0440-\u043d\u0435\u0439\u0442\u0440\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438<\/h3>\n<p>\u0421 \u044d\u0442\u0438\u043c \u0443\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0436\u0438\u0442\u044c.<\/p>\n<p>\u0418\u043d\u0436\u0435\u043d\u0435\u0440\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0447\u0443\u0442\u044c \u043c\u0435\u043d\u044c\u0448\u0435 \u0434\u0443\u043c\u0430\u0442\u044c \u043e\u0431 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u0445 \u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0430\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439, \u043d\u043e \u0441 \u0433\u043b\u0443\u0431\u043e\u043a\u0438\u043c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442\u044c \u043a \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u043c\u0443 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0432\u0441\u0451 \u0435\u0449\u0451 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c, \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044f \u0440\u0430\u0437\u043d\u044b\u0435 \u0437\u043d\u0430\u043a\u0438 \u043f\u043e\u0447\u0442\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043d\u044b\u043c \u0432\u0435\u043d\u0434\u043e\u0440\u0430\u043c.<\/p>\n<p>\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b &#8212; \u0432\u0441\u044f \u0441\u0435\u0442\u044c &#8212; \u044d\u0442\u043e \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432, \u0435\u0441\u043b\u0438 \u0432\u044b\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u0432\u0441\u044f\u043a\u0438\u0435 IGRP, HSRP, RRPP \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u043f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u044b\u0435 \u0432\u044b\u0434\u0443\u043c\u043a\u0438. \u041d\u0443, \u0432\u0441\u0435\u043c \u0436\u0435 \u043d\u0443\u0436\u0435\u043d IP, OSPF, BGP? \u0412\u0441\u0435\u043c \u043d\u0443\u0436\u043d\u0430 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445 \u0438 SSH? \u041e\u043d\u0438 \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u0443\u0436 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u0442\u043b\u0438\u0447\u0438\u044f, \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0438\u0437-\u0437\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c \u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f RFC.<\/p>\n<p>\u0422\u0430\u043a \u043f\u043e\u0447\u0435\u043c\u0443 \u043c\u044b \u0434\u0435\u043b\u0430\u0435\u043c \u044d\u0442\u043e \u0441\u043e\u0442\u043d\u0435\u0439 \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432?<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"122\" width=\"122\">\n<p align=\"left\">\n<\/td>\n<td data-colwidth=\"195\" width=\"195\">\n<p align=\"left\">Juniper<\/p>\n<\/td>\n<td>\n<p align=\"left\">Nokia<\/p>\n<\/td>\n<td>\n<p align=\"left\">Cisco<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"122\" width=\"122\">\n<p align=\"left\">\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430<\/p>\n<\/td>\n<td data-colwidth=\"195\" width=\"195\">\n<p align=\"left\"><code>configure<br \/>set interfaces ge-0\/0\/0 unit 0 family inet address 10.0.0.1\/30<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>router<br \/>interface \"test\"<br \/>address 10.0.0.1\/30<br \/>port 1\/1\/1<br \/>no shutdown<br \/>exit<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>conf t<br \/>interface gigabitethernet1<br \/>ip address 10.0.0.12 55.255.255.252<br \/>no shut<br \/>exit<\/code><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"122\" width=\"122\">\n<p align=\"left\">\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 BGP<\/p>\n<\/td>\n<td data-colwidth=\"195\" width=\"195\">\n<p align=\"left\"><code>set routing-options router-id 10.0.0.1<br \/>set routing-options autonomous-system 65000<br \/>set protocols bgp group test type internal<br \/>set protocols bgp group test peer-as 65000<br \/>set protocols bgp group test neighbor 10.0.0.2 export redistribute-connected<br \/>set policy-options policy-statement redistribute-connected from protocol direct<br \/>set policy-options policy-statement redistribute-connected then accept<br \/>commit and-quit<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>autonomous-system 6500<br \/>router-id 10.0.0.1<br \/>bgp group \"ibgp\" type internal neighbor 10.10.10.2<br \/>exit<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>router bgp 65000<br \/>bgp router-id 10.0.0.1<br \/>neighbor 10.0.0.2<br \/>remote-as 65000<br \/>redistribute connected<br \/>exit<\/code><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0421\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u0435\u0434\u044c \u043d\u0435 \u0432 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u0435 \u0438 \u043d\u0435 \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435, \u0430 \u0432 \u043c\u043e\u0434\u0435\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0445. \u0421\u0434\u0435\u043b\u0430\u0442\u044c \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0432\u0435\u043d\u0434\u043e\u0440\u0430 Configuration State Management &#8212; \u043e\u0434\u043d\u043e\u0440\u0430\u0437\u043e\u0432\u0430\u044f \u0440\u0435\u0448\u0430\u0435\u043c\u0430\u044f (\u0430 \u043c\u043d\u043e\u0433\u043e \u0433\u0434\u0435 \u0438 \u0440\u0435\u0448\u0451\u043d\u043d\u0430\u044f) \u0437\u0430\u0434\u0430\u0447\u0430. \u0410 \u0432\u043e\u0442 \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u0432\u0441\u0435\u043c\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f\u043c\u0438, \u043a\u0430\u043a \u0434\u043e\u043b\u0436\u043d\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c &#8212; \u0442\u0430\u043a \u0436\u0435 \u0441\u043b\u043e\u0436\u043d\u043e, \u043a\u0430\u043a \u0438 \u043b\u044e\u0431\u0430\u044f \u0434\u0440\u0443\u0433\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430, \u0433\u0434\u0435 \u043b\u044e\u0434\u044f\u043c \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c\u0441\u044f.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/40e\/493\/0b4\/40e4930b4957821e7c6163dbbde7d44e.jpeg\" width=\"1500\" height=\"998\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/40e\/493\/0b4\/40e4930b4957821e7c6163dbbde7d44e.jpeg\" data-blurred=\"true\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041d\u043e \u043d\u0438 \u043e\u0434\u0438\u043d \u0438\u0437 \u0437\u0430\u0440\u043e\u0436\u0434\u0430\u0432\u0448\u0438\u0445\u0441\u044f \u0438 \u0432\u044b\u0436\u0438\u0432\u0448\u0438\u0445 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u0432 \u0438\u043b\u0438 \u043d\u0435 \u0441\u0442\u0430\u0432\u0438\u043b \u0446\u0435\u043b\u044c\u044e \u0443\u043d\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u0432\u043e\u043e\u0431\u0449\u0435, \u0438\u043b\u0438 \u043f\u044b\u0442\u0430\u043b\u0441\u044f \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u044d\u0442\u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441, \u043d\u043e \u0431\u044b\u043b \u0432\u044b\u0431\u0440\u043e\u0448\u0435\u043d \u0432 \u043e\u043a\u043d\u043e \u0448\u0442\u0430\u0431-\u043a\u0432\u0430\u0440\u0442\u0438\u0440\u044b \u0432\u0435\u043d\u0434\u043e\u0440\u0430.<\/p>\n<p>\u0425\u043e\u0442\u044f \u0432\u0440\u0443. IETF \u043f\u0440\u0435\u0434\u043f\u0440\u0438\u043d\u044f\u043b\u0438 \u043e\u0442\u0447\u0430\u0441\u0442\u0438 \u0443\u0441\u043f\u0435\u0448\u043d\u0443\u044e \u043f\u043e\u043f\u044b\u0442\u043a\u0443 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c.<\/p>\n<p><a class=\"anchor\" name=\"STANDARD_MODELS_IETF\" id=\"STANDARD_MODELS_IETF\"><\/a><\/p>\n<h4>IETF-\u043c\u043e\u0434\u0435\u043b\u044c<\/h4>\n<p>\u0415\u0449\u0451 \u0432 2014-\u043c \u0433\u043e\u0434\u0443 \u0431\u044b\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u043d\u044b <a href=\"https:\/\/github.com\/YangModels\/yang\/tree\/main\/standard\/ietf\/RFC\" rel=\"noopener noreferrer nofollow\">\u043f\u0435\u0440\u0432\u044b\u0435 \u043a\u043e\u043c\u043c\u0438\u0442\u044b<\/a> \u0432 \u0435\u0451 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439.<\/p>\n<p>\u0421 \u0442\u0435\u0445 \u043f\u043e\u0440 \u043c\u043d\u043e\u0433\u043e \u043d\u0430\u043a\u043e\u043c\u043c\u0438\u0447\u0435\u043d\u043e, \u043d\u043e \u043c\u0430\u043b\u043e \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u0434\u0435\u043b\u0430\u043d\u043e. \u041e\u0431\u0449\u0435\u043f\u0440\u0438\u0437\u043d\u0430\u043d\u043d\u043e, \u0447\u0442\u043e IETF -\u043c\u043e\u0434\u0435\u043b\u044c \u043e\u0447\u0435\u043d\u044c \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u0443 \u043d\u0435\u0451 \u043d\u0438\u0437\u043a\u043e\u0435 \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u0435, \u0430 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 &#8212; \u0442\u0430\u043a \u0441\u0435\u0431\u0435.<\/p>\n<p>\u0421 IETF-\u043c\u043e\u0434\u0435\u043b\u0438 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e\u0442 \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d\u0430 \u044f\u043a\u043e\u0431\u044b \u043f\u0440\u043e\u0449\u0435, \u0430 \u0443\u0436\u0435 \u043f\u043e\u0442\u043e\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043d\u0430 OpenConfig, \u043d\u043e \u043a\u0430\u043a \u043f\u043e \u043c\u043d\u0435 &#8212; \u044d\u0442\u043e \u043d\u0430\u043f\u0440\u0430\u0441\u043d\u0430\u044f \u0442\u0440\u0430\u0442\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u041e\u043d\u0430 \u043c\u0435\u0440\u0442\u0432\u043e\u0440\u043e\u0436\u0434\u0451\u043d\u043d\u0430\u044f \u0438 \u043d\u0438\u043a\u043e\u043c\u0443 \u043e\u0441\u043e\u0431\u043e \u043d\u0435 \u043d\u0443\u0436\u043d\u0430. \u0425\u043e\u0442\u044f \u0432\u0435\u043d\u0434\u043e\u0440\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442. \u0417\u0430\u043a\u0430\u0437\u0447\u0438\u043a\u043e\u0432 \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0431\u0435\u0441\u043f\u043e\u043a\u043e\u0438\u043b\u0430 \u043e\u0431\u0440\u0435\u0437\u0430\u043d\u043d\u043e\u0441\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u0438 \u0438 \u0438\u043d\u0435\u0440\u0442\u043d\u043e\u0441\u0442\u044c IETF. <\/p>\n<p>\u041d\u043e \u043e\u0434\u0438\u043d \u0432 \u043f\u043e\u043b\u0435 \u043d\u0435 \u0432\u043e\u0438\u043d &#8212; \u0442\u044b\u0441\u044f\u0447\u0438 \u0440\u0430\u0437\u0440\u043e\u0437\u043d\u0435\u043d\u043d\u044b\u0445 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u0432 \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u043c\u0438\u0440\u0443 \u043d\u0435 \u043c\u043e\u0433\u043b\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u0441 \u044d\u0442\u0438\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c. \u0410 \u0432\u043e\u0442 \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u043c\u043e\u0433\u043b\u0438. \u041a\u043e\u0433\u0434\u0430 \u043d\u0430\u0434\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0442\u044b\u0441\u044f\u0447\u0443 \u0441\u0432\u0438\u0442\u0447\u0435\u0439, \u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u043c\u0435\u0441\u044f\u0446 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0434\u0430\u0442\u0430\u0446\u0435\u043d\u0442\u0440, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430 \u0441\u0435\u0442\u0438 5 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u0439 \u0434\u0438\u0437\u0430\u0439\u043d\u0430, \u0430 \u043a\u0430\u0442\u0438\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u043e \u0434\u0432\u0430\u0436\u0434\u044b \u0432 \u0434\u0435\u043d\u044c, \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0448\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u043d\u0430\u0447\u0435 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0432\u0441\u0435 \u044d\u0442\u0438\u043c \u0432\u0430\u0448\u0438 \u0441\u0438\u044d\u043b\u0430\u0438 \u0438 \u0432\u0435\u043d\u0434\u043e\u0440-\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0435 \u044d\u043a\u0441\u044d\u043c\u0430\u043b\u0438.<\/p>\n<p>\u0422\u0430\u043a \u0433\u0443\u0433\u043b \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b OpenConfig. \u041e\u043d \u043d\u0435 \u0441\u0442\u0430\u043b \u0440\u0430\u0437\u043c\u0435\u043d\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 IETF-\u043c\u043e\u0434\u0435\u043b\u0438 \u0438 \u0442\u043e\u0440\u0433\u0438 \u0441\u043e \u0441\u0442\u0430\u0440\u0438\u043a\u0430\u043d\u0430\u043c\u0438 \u0438\u0437 \u0438\u043d\u0441\u0442\u0438\u0442\u0443\u0442\u0430.<\/p>\n<p><a class=\"anchor\" name=\"STANDARD_MODELS_OC\" id=\"STANDARD_MODELS_OC\"><\/a><\/p>\n<h4>OpenConfig &#8212; \u043c\u0435\u0447\u0442\u0430, \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0449\u0430\u044f\u0441\u044f \u044f\u0432\u044c\u044e<\/h4>\n<p>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u0437\u0430 \u0448\u0435\u0441\u0442\u0438\u0434\u0435\u0441\u044f\u0442\u0438\u043b\u0435\u0442\u043d\u044e\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0442\u0435\u043b\u0435\u043a\u043e\u043c\u043c\u0443\u043d\u0438\u043a\u0430\u0446\u0438\u0439 \u0443 \u043d\u0430\u0441 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0448\u0430\u043d\u0441 \u0438\u0437\u043e\u0431\u0440\u0435\u0441\u0442\u0438 \u0441\u0432\u043e\u0439 USB Type C. \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043c\u0438\u0440, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c Cisco, Juniper, Arista \u0438 Mikrotik \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043e\u0434\u043d\u0438\u043c\u0438 \u0438 \u0442\u0435\u043c\u0438 \u0436\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438 \u0438 \u044d\u0442\u043e \u043a \u0442\u043e\u043c\u0443 \u0436\u0435 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u043c\u0443 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0443?<\/p>\n<p>\u042f \u043d\u0435 \u043c\u043e\u0433\u0443.<\/p>\n<p>OpenConfig &#8212; \u044d\u0442\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u0430\u044f YANG-\u043c\u043e\u0434\u0435\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0435\u0434\u0438\u043d\u043e\u0439 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0432\u0435\u043d\u0434\u043e\u0440\u043e\u0432. \u041e\u0434\u043d\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439, \u0441\u0431\u043e\u0440\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0438 \u0442\u0435\u043b\u0435\u043c\u0435\u0442\u0440\u0438\u0438. \u041e\u0434\u043d\u0430 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0449\u0438\u0445 OC \u0432\u0435\u043d\u0434\u043e\u0440\u043e\u0432.<\/p>\n<p>\u0418\u0442\u0430\u043a, OpenConfig \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0432 2015 \u0433\u043e\u0434\u0443 \u0432 Google \u043a\u0430\u043a \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0432\u044b\u0437\u043e\u0432\u044b:<\/p>\n<ul>\n<li>\n<p>20+ \u0440\u043e\u043b\u0435\u0439 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432;<\/p>\n<\/li>\n<li>\n<p>\u0411\u043e\u043b\u044c\u0448\u0435 \u043f\u043e\u043b\u0443\u0434\u044e\u0436\u0438\u043d\u044b \u0432\u0435\u043d\u0434\u043e\u0440\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p>\u041c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c;<\/p>\n<\/li>\n<li>\n<p>4M \u0441\u0442\u0440\u043e\u043a \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u0430\u0445;<\/p>\n<\/li>\n<li>\n<p>30K \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439 \u0432 \u043c\u0435\u0441\u044f\u0446;<\/p>\n<\/li>\n<li>\n<p>\u0411\u043e\u043b\u044c\u0448\u0435 8M OIDs \u043e\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0435 5 \u043c\u0438\u043d\u0443\u0442;<\/p>\n<\/li>\n<li>\n<p>\u0411\u043e\u043b\u044c\u0448\u0435 20K CLI-\u043a\u043e\u043c\u0430\u043d\u0434 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0435 5 \u043c\u0438\u043d\u0443\u0442;<\/p>\n<\/li>\n<li>\n<p>\u041c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u0439 \u0441\u043e\u0444\u0442\u0430, \u043a\u0443\u0447\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p>\u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0439 \u0438 \u043f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u044b\u0435 CLI;<\/p>\n<\/li>\n<li>\n<p>SNMP \u043d\u0435 \u0431\u044b\u043b \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d \u043d\u0430 \u0441\u0442\u043e\u043b\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0438 \u043d\u0430 \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043e\u0431\u044a\u0451\u043c\u044b \u0434\u0430\u043d\u043d\u044b\u0445 (RIB).<\/p>\n<\/li>\n<\/ul>\n<p>\u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 openconfig \u043c\u044b \u0443\u0436\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u043f\u0440\u0430\u043a\u0442\u0438\u043a\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0432\u044b\u0448\u0435.<\/p>\n<p>\u041f\u043e\u043b\u0435\u0437\u043d\u044b\u043c \u0431\u044b\u043b\u043e \u0431\u044b \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u043d\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u044d\u0442\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438. \u041d\u043e \u044d\u0442\u043e \u043c\u044b \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0433\u043b\u0430\u0432\u0435 \u043f\u0440\u043e YANG.<\/p>\n<p>OpenConfig \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0434\u0430\u0451\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432. \u0411\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u043e \u0440\u0435\u0447\u044c \u043d\u0435 \u0438\u0434\u0451\u0442 \u043f\u0440\u043e \u0432\u0435\u0449\u0438, \u0437\u0430\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438: QoS, \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u0443\u0444\u0435\u0440\u0430\u043c\u0438 \u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438 \u0447\u0438\u043f\u0430, \u0441\u043f\u043b\u0438\u0442\u044b \u043f\u043e\u0440\u0442\u043e\u0432, \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0442\u0440\u0430\u043d\u0441\u0438\u0432\u0435\u0440\u0430\u043c\u0438. \u0418 \u0432 \u043a\u0430\u043a\u043e\u043c-\u0442\u043e \u0445\u043e\u0442\u044c \u0441\u043a\u043e\u043b\u044c\u043a\u043e-\u0442\u043e \u043e\u0431\u043e\u0437\u0440\u0438\u043c\u043e\u043c \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u044d\u0442\u043e\u0433\u043e \u0436\u0434\u0430\u0442\u044c \u043d\u0435 \u0441\u0442\u043e\u0438\u0442.<\/p>\n<p>\u0425\u0443\u0436\u0435 \u0442\u043e\u0433\u043e, \u043d\u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0438\u0439 \u0434\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u0438\u0435 \u0432\u0435\u043d\u0434\u043e\u0440\u044b, \u0432\u0432\u044f\u0437\u0430\u0432\u0448\u0438\u0435\u0441\u044f \u0432 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 OC, \u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0442 \u0432\u0441\u0435 100%, \u0430 \u043b\u0438\u0448\u044c \u0447\u0430\u0441\u0442\u044c.<\/p>\n<p>\u041d\u043e BGP \u0441 OSPF \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0442\u043e\u0447\u043d\u043e \u043c\u043e\u0436\u043d\u043e.<\/p>\n<p>\u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435?<\/p>\n<p>\u0418 \u0435\u0441\u0442\u044c \u0434\u0432\u0430 \u043f\u0443\u0442\u0438.<\/p>\n<ul>\n<li>\n<p>\u041e\u0434\u0438\u043d \u0438\u0437 \u043d\u0438\u0445 &#8212; \u0431\u0440\u0430\u0442\u044c OC \u0438 \u0432\u0438\u0434\u043e\u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0435\u0433\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0443\u0431\u0438\u0440\u0430\u043d\u0438\u044f \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u0435\u0433\u043e \u0447\u0430\u0441\u0442\u0435\u0439.<\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u0432\u0435\u043d\u0434\u043e\u0440 \u0445\u043e\u0447\u0435\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 &#8212; \u043e\u043d \u0434\u0435\u043b\u0430\u0435\u0442 augmentation, \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044f \u0435\u0433\u043e \u0432 \u043d\u0443\u0436\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043e\u043d \u0445\u043e\u0447\u0435\u0442 \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0438\u043b\u0438 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c &#8212; \u043e\u043d \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 deviation \u043a \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438.<br \/>\u042d\u0442\u043e\u0442 \u0441\u043f\u043e\u0441\u043e\u0431, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u0435 \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0438.<\/p>\n<\/li>\n<li>\n<p>\u0414\u0440\u0443\u0433\u043e\u0439 &#8212; \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0435\u043d\u0434\u043e\u0440\u0441\u043a\u0438\u0435 Native \u043c\u043e\u0434\u0435\u043b\u0438, \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u0435.<br \/>\u0410\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u0441\u043e\u0432\u043c\u0435\u0449\u0430\u0442\u044c OC \u0438 Native &#8212; \u0433\u043b\u0430\u0432\u043d\u043e\u0435, \u043d\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u043e\u0434\u043d\u043e \u0438 \u0442\u043e \u0436\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0440\u0430\u0437\u043d\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439.<\/p>\n<p>\u0412 \u0446\u0435\u043b\u043e\u043c \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e\u0442 (\u0434\u0430\u0436\u0435 \u0441\u0430\u043c\u0438 \u0432\u0435\u043d\u0434\u043e\u0440\u044b), \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c OC \u0442\u0430\u043c, \u0433\u0434\u0435 \u044d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0430 \u0433\u0434\u0435 \u043d\u0435\u0442 &#8212; \u043f\u0440\u0438\u0431\u0435\u0433\u0430\u0442\u044c \u043a native.<\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/4e2\/bb4\/ff2\/4e2bb4ff22489ae44ead639fc198c0c1.png\" alt=\"\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: \u0434\u043e\u043a\u043b\u0430\u0434 \u043d\u0430 Cisco Live (https:\/\/www.ciscolive.com\/c\/dam\/r\/ciscolive\/emea\/docs\/2020\/pdf\/BRKDEV-1368.pdf)\" title=\"\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: \u0434\u043e\u043a\u043b\u0430\u0434 \u043d\u0430 Cisco Live (https:\/\/www.ciscolive.com\/c\/dam\/r\/ciscolive\/emea\/docs\/2020\/pdf\/BRKDEV-1368.pdf)\" width=\"898\" height=\"636\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4e2\/bb4\/ff2\/4e2bb4ff22489ae44ead639fc198c0c1.png\"\/><figcaption>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: \u0434\u043e\u043a\u043b\u0430\u0434 \u043d\u0430 Cisco Live (https:\/\/www.ciscolive.com\/c\/dam\/r\/ciscolive\/emea\/docs\/2020\/pdf\/BRKDEV-1368.pdf)<\/figcaption><\/figure>\n<p>Google \u043f\u0440\u0438\u0432\u0451\u043b \u0432 \u043d\u0430\u0448 \u043c\u0438\u0440 OpenConfig \u0432 \u043e\u0434\u043d\u043e\u0439 \u0440\u0443\u043a\u0435, \u0430 gNMI &#8212; \u0432 \u0434\u0440\u0443\u0433\u043e\u0439.<\/p>\n<p>\u041d\u043e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u0430 \u0434\u043b\u044f OC \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043a\u0430\u043a gNMI, \u0442\u0430\u043a \u0438 NETCONF \u0438 RESTCONF &#8212; \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u043e. \u0412 \u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f, \u0434\u043b\u044f gNMI OpenConfig \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u0438 YANG \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u0438 \u044f\u0437\u044b\u043a\u0438.<\/p>\n<p>\u0422\u0430\u043a \u0447\u0442\u043e \u0436\u0435 \u044d\u0442\u043e \u0437\u0430 \u043c\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439<\/p>\n<p><a class=\"anchor\" name=\"YANG\" id=\"YANG\"><\/a><\/p>\n<hr\/>\n<h2>YANG<\/h2>\n<p>\u041e\u043e\u043e\u043e, \u043a\u0430\u043a \u0434\u043e\u043b\u0433\u043e \u044f \u0448\u0451\u043b \u043a \u044d\u0442\u043e\u043c\u0443, \u043a\u0430\u043a \u0434\u043e\u043b\u0433\u043e \u044f \u0436\u0434\u0430\u043b, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u044d\u0442\u043e\u0439 \u0442\u0435\u043c\u043e\u0439.<\/p>\n<p>\u0422\u0430\u043a\u043e\u0439 \u043c\u0430\u043d\u044f\u0449\u0438\u0439 \u0438 \u0442\u0430\u043a\u043e\u0439 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0439 &#8212; YANG &#8212; <em>Yet Another Next Generation<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0435\u0448\u0438\u0442 \u0432\u0441\u0435 \u043c\u043e\u0438 \u0434\u0438\u043b\u0435\u043c\u043c\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0442\u043e\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043d\u0438\u043c\u0435\u0442 \u0441 \u043c\u0435\u043d\u044f \u0433\u0440\u0443\u0437 \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430 CLI \u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u0442 \u043d\u0430\u0441 \u0432\u0441\u0435\u0445 \u0432 \u043d\u043e\u0432\u044b\u0439 \u0434\u0438\u0432\u043d\u044b\u0439 \u043c\u0438\u0440.<\/p>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0441\u0442\u043e\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 YANG &#8212; \u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u0441\u0430\u043c\u043e\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u043e\u0442\u0442\u0440\u0430\u0431\u043b\u0448\u0443\u0442\u0438\u0442\u044c \u0410\u043d\u0441\u0438\u0431\u043b\u044c \u0438 \u0432\u044b\u0441\u0430\u0434\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u041c\u0430\u0440\u0441\u0435.<\/p>\n<p>YANG, \u0430 \u0442\u043e\u0447\u043d\u0435\u0435 \u043c\u043e\u0434\u0435\u043b\u0438, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u043d\u0451\u043c, \u043d\u0435 \u0441\u0442\u0430\u043b\u0438 \u0441\u0435\u0440\u0435\u0431\u0440\u044f\u043d\u043e\u0439 \u043f\u0443\u043b\u0435\u0439, \u043a\u0430\u043a \u043d\u0435 \u0441\u0442\u0430\u043b\u0438 \u0435\u0439 (\u043f\u043e\u043a\u0430) NETCONF, OpenConfig, gNMI.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/956\/7e3\/da1\/9567e3da14f4d85f756447f8fde6bbb7.png\" width=\"1352\" height=\"770\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/956\/7e3\/da1\/9567e3da14f4d85f756447f8fde6bbb7.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0418 \u0432\u043e\u043e\u0431\u0449\u0435 YANG &#8212; \u0432\u0435\u0449\u044c \u0432\u0435\u0441\u044c\u043c\u0430 \u0430\u043a\u0430\u0434\u0435\u043c\u0438\u0447\u0435\u0441\u043a\u0430\u044f. \u042d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u044f\u0437\u044b\u043a \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0435\u0439. \u041c\u043e\u0434\u0435\u043b\u0438 \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f \u0438 \u043f\u043e\u0434 \u043a\u0430\u0436\u0434\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0440\u0430\u0437\u043d\u044b\u043c\u0438, \u043d\u043e, \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044f, \u0447\u0442\u043e \u043e\u043d\u0438 \u0432\u0441\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u044f\u0437\u044b\u043a\u0435, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u043e\u0434\u043d\u0438 \u0438 \u0442\u0435 \u0436\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043d\u0438\u043c\u0438, \u0438 \u043d\u0435 \u043e\u0442\u0440\u0430\u0449\u0438\u0432\u0430\u0442\u044c \u0435\u0449\u0451 \u043d\u043e\u0432\u044b\u0435 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u044b\u0435 \u0441\u0432\u044f\u0437\u0438.<\/p>\n<p>\u0412\u043e\u043e\u0431\u0449\u0435-\u0442\u043e \u043c\u043e\u0434\u0435\u043b\u0438 \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0431\u044b\u0442\u044c \u0432\u043e\u0432\u0441\u0435, \u0438\u043b\u0438 \u043e\u043d\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u0430 \u043f\u043e-\u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438 \u0438\u043b\u0438 \u043f\u043e-\u0440\u0443\u0441\u0441\u043a\u0438, \u0432\u043c\u0435\u0441\u0442\u043e YANG. \u041d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432 JunOS\/VRP\/IOS \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0431\u0443\u0434\u0435\u0442 \u043a\u0430\u043a\u0430\u044f-\u0442\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445. \u041f\u0440\u043e\u0441\u0442\u043e \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0443 \u0432\u0430\u0441 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430, \u0438 \u0432 \u0441\u0443\u0434 \u0432\u044b \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442\u0435.<br \/>\u042d\u0442\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0442\u043e, \u043a\u0430\u043a \u043c\u044b \u0438 \u0436\u0438\u043b\u0438 \u043f\u0440\u0435\u0436\u0434\u0435.<\/p>\n<p>\u0412\u043e\u043e\u0431\u0449\u0435-\u0442\u043e YANG \u043f\u0440\u0438\u0448\u0451\u043b \u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c NETCONF&#8217;\u0443, \u043a\u043e\u0433\u0434\u0430 \u0441\u0442\u0430\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e <s>\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0440\u0430\u0437\u0432\u0440\u0430\u0442\u0430 &#8212; \u043e\u0442\u043a\u0430\u043f\u044b\u0432\u0430\u0439\u0442\u0435 SNMP SMI<\/s> \u0431\u0435\u0437 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0434\u0430\u043b\u044c\u0448\u0435 \u043d\u0438\u043a\u0443\u0434\u0430 \u043d\u0438 \u0448\u0430\u0433\u0443 &#8212; \u0438 \u0443\u0436\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043e\u0448\u0438\u0431\u043e\u043a \u0431\u044b\u043b\u043e \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043e.<\/p>\n<p>YANG &#8212; \u0434\u043e\u0441\u0442\u043e\u0439\u043d\u044b\u0439 \u0441\u044b\u043d SMIng. \u041a\u043e\u0433\u0434\u0430 \u043f\u0430\u0440\u043d\u0438 \u0438\u0437 Network Working Group \u043f\u043e\u043d\u044f\u043b\u0438, \u0447\u0442\u043e \u0441 SNMP \u0443 \u043d\u0438\u0445 \u043a\u0430\u043a-\u0442\u043e \u043d\u0435 \u0432\u044b\u0433\u043e\u0440\u0435\u043b\u043e, \u0432\u0435\u0441\u044c \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u043d\u044b\u0439 \u0431\u0430\u0433\u0430\u0436 \u0437\u043d\u0430\u043d\u0438\u0439 \u043e\u043d\u0438 \u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u043d\u0430 \u043f\u043e\u043b\u044c\u0437\u0443 \u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0443.<br \/>\u0412 \u043e\u0431\u0449\u0435\u043c-\u0442\u043e, \u043d\u0435 \u043c\u0443\u0434\u0440\u0441\u0442\u0432\u0443\u044f \u043b\u0443\u043a\u0430\u0432\u043e, \u0440\u0435\u0431\u044f\u0442\u0430 \u0438\u0437 IETF \u0432\u0437\u044f\u043b\u0438 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0438 \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u0442\u0438\u043f\u044b \u0438\u0437 SMIng \u0438 \u0437\u0430\u043f\u0438\u043b\u0438\u043b\u0438 YANG.<\/p>\n<p>\u041f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 YANG \u0440\u0435\u0448\u0438\u043b\u0438 \u043d\u0435 \u0441\u043e\u0432\u0435\u0440\u0448\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043e\u043a SMIng, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u043b \u0441\u0442\u0430\u0442\u044c \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u043c \u044f\u0437\u044b\u043a\u043e\u043c \u043f\u043e\u0434 \u043e\u0431\u0449\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438, \u043e\u0442\u0447\u0435\u0433\u043e \u043d\u0435\u043c\u0430\u043b\u043e \u0441\u0442\u0440\u0430\u0434\u0430\u043b &#8212; \u043d\u0435\u0442, YANG \u043d\u0430\u0446\u0435\u043b\u0438\u0432\u0430\u043b\u0441\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430 NETCONF.<\/p>\n<p>\u0418 \u043a\u0430\u043a\u043e\u0432\u0430 \u0438\u0440\u043e\u043d\u0438\u044f: RESTCONF \u0438 gNMI \u0442\u043e\u0436\u0435 \u0440\u0435\u0448\u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c YANG &#8212; \u043a\u0430\u043a \u044f\u0437\u044b\u043a \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u041d\u0443 \u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0432\u0435\u0434\u044c &#8212; \u043d\u0435 \u0432\u044b\u0434\u0443\u043c\u044b\u0432\u0430\u0442\u044c 13-\u0439 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u0436\u0435 (\u0445\u043e\u0442\u044f, \u043f\u043e\u0434\u043e\u0436\u0434\u0438\u0442\u0435)?<\/p>\n<p>\u041d\u043e \u0433\u0443\u0433\u043b \u043f\u043e\u0448\u0451\u043b \u0435\u0449\u0451 \u0434\u0430\u043b\u044c\u0448\u0435 &#8212; gNMI \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043a\u0430\u043a \u0441 YANG-\u043c\u043e\u0434\u0435\u043b\u044f\u043c\u0438, \u0442\u0430\u043a \u0438 \u043d\u0435\u0442. \u0421\u0432\u043e\u0431\u043e\u0434\u0443 \u0432\u0430\u0440\u0438\u0430\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438! \u0427\u0442\u043e, \u0432\u043f\u0440\u043e\u0447\u0435\u043c, \u0432\u043f\u043e\u043b\u043d\u0435 \u043b\u043e\u0433\u0438\u0447\u043d\u043e, \u0432\u0435\u0434\u044c \u0432 \u043e\u0441\u043d\u043e\u0432\u0435 gNMI &#8212; protobuf&#8217;\u044b gRPC. \u0410 \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u043a\u0430\u043a \u0431\u044b\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u044b \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 YANG-\u043c\u043e\u0434\u0435\u043b\u0438, \u0442\u0430\u043a \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043d\u044b \u0438\u0437 \u0433\u043e\u043b\u043e\u0432\u044b, \u0438\u043b\u0438 \u043c\u043e\u0434\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u043d\u0435 \u043d\u0430 YANG.<\/p>\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e, \u0431\u043b\u0430\u0433\u0438\u043c\u0438 \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u0438\u044f\u043c\u0438 \u0443\u0436\u0435 \u0442\u043e\u0433\u0434\u0430 &#8212; \u0431\u044b\u043b \u0443\u0441\u0442\u043b\u0430\u043d \u043f\u0443\u0442\u044c \u043a \u0445\u044c\u044e\u043c\u0430\u043d-\u0440\u0438\u0434\u0430\u0431\u043b, \u043c\u044d\u0448\u0438\u043d-\u043f\u0430\u0440\u0441\u0438\u0431\u043b.<\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043c\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0437\u0430\u043a\u0430\u043f\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0441\u0430\u043c \u044f\u0437\u044b\u043a &#8212; \u043f\u043e\u0436\u0430\u043b\u0443\u0439, \u044d\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u043c\u0443 \u0447\u0438\u0441\u043b\u0443 \u043b\u044e\u0434\u0435\u0439. \u041d\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430 &#8212; \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438, \u043a\u0430\u043a \u0432 \u043d\u0438\u0445 \u043d\u0430\u0439\u0442\u0438 \u0433\u043b\u0430\u0437\u0430\u043c\u0438 \u043d\u0443\u0436\u043d\u044b\u0435 \u0432\u0435\u0449\u0438, \u043a\u0430\u043a \u0441 \u043d\u0438\u043c\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e, \u043a\u0430\u043a\u0430\u044f \u0432\u043e\u043e\u0431\u0449\u0435 \u043e\u0442 \u043d\u0438\u0445 \u043f\u043e\u043b\u044c\u0437\u0430.<\/p>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u0432\u043e\u0437\u044c\u043c\u0451\u043c \u043c\u043e\u0434\u0435\u043b\u044c OpenConfig.<\/p>\n<p><a class=\"anchor\" name=\"YANG_PRACTICE\" id=\"YANG_PRACTICE\"><\/a><\/p>\n<h3>\u041f\u0440\u0435\u043f\u0430\u0440\u0438\u0440\u0443\u0435\u043c YANG-\u043c\u043e\u0434\u0435\u043b\u044c<\/h3>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0435\u0449\u0451 \u0440\u0430\u0437 \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u0430\u043a \u043c\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432.<\/p>\n<pre><code class=\"bash\">gnmic get \\       --path \"\/interfaces\/interface\/subinterfaces\/subinterface\/ipv4\/addresses\/address\/config\" \\       -a bcn-spine-1.arista:6030 \\       -u eucariot \\       -p password \\       --insecure<\/code><\/pre>\n<p>\u041e\u0442\u043a\u0443\u0434\u0430 \u0432\u0437\u044f\u043b\u0441\u044f \u044d\u0442\u043e\u0442 \u0437\u0430\u043c\u044b\u0441\u043b\u043e\u0432\u0430\u0442\u044b\u0439 \u043f\u0443\u0442\u044c?<\/p>\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u043d\u0430 <a href=\"https:\/\/github.com\/openconfig\/public\/tree\/master\/release\/models\/interfaces\" rel=\"noopener noreferrer nofollow\">\u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 OpenConfig<\/a>.<\/p>\n<p>\u041f\u0440\u0438\u0441\u0442\u0430\u043b\u044c\u043d\u043e \u0441\u043c\u043e\u0442\u0440\u0438\u043c\u2026<br \/>\u0415\u0449\u0451 \u043d\u0435\u043c\u043d\u043e\u0433\u043e\u2026<br \/>\u041f\u043e\u043d\u044f\u0442\u043d\u043e?<\/p>\n<p>\u0418 \u043c\u043d\u0435 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c. \u0427\u0442\u043e\u0431\u044b \u0442\u0430\u043a\u043e\u0435 \u0447\u0438\u0442\u0430\u0442\u044c, \u043d\u0430\u0434\u043e \u0432\u0441\u0451 \u0436\u0435 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u0441\u0430\u043c\u0438\u043c \u044f\u0437\u044b\u043a\u043e\u043c.<\/p>\n<p>\u041d\u0430\u043c \u043b\u0435\u043d\u044c.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 pyang.<\/p>\n<h3>Pyang<\/h3>\n<p>\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u043c \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u043f\u0440\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b.<\/p>\n<pre><code class=\"bash\">sudo pip install pyang<\/code><\/pre>\n<p>\u0412 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0441\u043a\u043b\u043e\u043d\u0438\u043c \u0440\u0435\u043f\u0443:<\/p>\n<pre><code class=\"bash\">git clone https:\/\/github.com\/openconfig\/public<\/code><\/pre>\n<p>\u0418 \u0434\u0430\u0434\u0438\u043c \u0432\u043e\u0442 \u0442\u0430\u043a\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443:<\/p>\n<pre><code class=\"bash\">pyang -f tree -p yang\/oc\/public\/release\/models\/ yang\/oc\/public\/release\/models\/interfaces\/openconfig-interfaces.yang<\/code><\/pre>\n<p>\u0418 \u0434\u0430\u043b\u044c\u0448\u0435 \u0432\u044b\u0432\u0430\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430:<\/p>\n<pre><code class=\"bash\">module: openconfig-interfaces   +--rw interfaces      +--rw interface* [name]         +--rw name             -> ..\/config\/name         +--rw config         |  +--rw name?            string         |  +--rw type             identityref         |  +--rw mtu?             uint16         |  +--rw loopback-mode?   boolean         |  +--rw description?     string         |  +--rw enabled?         boolean         +--ro state         |  +--ro name?            string         |  +--ro type             identityref         |  +--ro mtu?             uint16         |  +--ro loopback-mode?   boolean         |  +--ro description?     string         |  +--ro enabled?         boolean         |  +--ro ifindex?         uint32         |  +--ro admin-status     enumeration         |  +--ro oper-status      enumeration         |  +--ro last-change?     oc-types:timeticks64         |  +--ro logical?         boolean         |  +--ro management?      boolean         |  +--ro cpu?             boolean         |  +--ro counters         |     +--ro in-octets?             oc-yang:counter64         |     +--ro in-pkts?               oc-yang:counter64         |     +--ro in-unicast-pkts?       oc-yang:counter64         |     +--ro in-broadcast-pkts?     oc-yang:counter64         |     +--ro in-multicast-pkts?     oc-yang:counter64         |     +--ro in-discards?           oc-yang:counter64         |     +--ro in-errors?             oc-yang:counter64         |     +--ro in-unknown-protos?     oc-yang:counter64         |     +--ro in-fcs-errors?         oc-yang:counter64         |     +--ro out-octets?            oc-yang:counter64         |     +--ro out-pkts?              oc-yang:counter64         |     +--ro out-unicast-pkts?      oc-yang:counter64         |     +--ro out-broadcast-pkts?    oc-yang:counter64         |     +--ro out-multicast-pkts?    oc-yang:counter64         |     +--ro out-discards?          oc-yang:counter64         |     +--ro out-errors?            oc-yang:counter64         |     +--ro carrier-transitions?   oc-yang:counter64         |     +--ro last-clear?            oc-types:timeticks64         +--rw hold-time         |  +--rw config         |  |  +--rw up?     uint32         |  |  +--rw down?   uint32         |  +--ro state         |     +--ro up?     uint32         |     +--ro down?   uint32         +--rw subinterfaces            +--rw subinterface* [index]               +--rw index     -> ..\/config\/index               +--rw config               |  +--rw index?         uint32               |  +--rw description?   string               |  +--rw enabled?       boolean               +--ro state                  +--ro index?          uint32                  +--ro description?    string                  +--ro enabled?        boolean                  +--ro name?           string                  +--ro ifindex?        uint32                  +--ro admin-status    enumeration                  +--ro oper-status     enumeration                  +--ro last-change?    oc-types:timeticks64                  +--ro logical?        boolean                  +--ro management?     boolean                  +--ro cpu?            boolean                  +--ro counters                     +--ro in-octets?             oc-yang:counter64                     +--ro in-pkts?               oc-yang:counter64                     +--ro in-unicast-pkts?       oc-yang:counter64                     +--ro in-broadcast-pkts?     oc-yang:counter64                     +--ro in-multicast-pkts?     oc-yang:counter64                     +--ro in-discards?           oc-yang:counter64                     +--ro in-errors?             oc-yang:counter64                     +--ro in-unknown-protos?     oc-yang:counter64                     +--ro in-fcs-errors?         oc-yang:counter64                     +--ro out-octets?            oc-yang:counter64                     +--ro out-pkts?              oc-yang:counter64                     +--ro out-unicast-pkts?      oc-yang:counter64                     +--ro out-broadcast-pkts?    oc-yang:counter64                     +--ro out-multicast-pkts?    oc-yang:counter64                     +--ro out-discards?          oc-yang:counter64                     +--ro out-errors?            oc-yang:counter64                     +--ro carrier-transitions?   oc-yang:counter64                     +--ro last-clear?            oc-types:timeticks64<\/code><\/pre>\n<p>\u041d\u0435\u043f\u043b\u043e\u0445\u043e. \u0421 \u0442\u0430\u043a\u0438\u043c\u0438 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 pyang \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043c\u043e\u0434\u0435\u043b\u044c \u0432 \u0432\u0438\u0434\u0435 \u0434\u0435\u0440\u0435\u0432\u0430, \u0432\u044b\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u044f \u043d\u0435\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435.<\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u0441\u0440\u0430\u0437\u0443 \u0432\u0438\u0434\u043d\u043e, \u043d\u0430 \u043a\u0430\u043a\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438 \u0447\u0442\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f, \u043a\u0430\u043a\u043e\u0439 \u0443 \u043d\u0435\u0433\u043e \u0442\u0438\u043f \u0438 \u0440\u0435\u0436\u0438\u043c &#8212; rw \u0438\u043b\u0438 ro.<\/p>\n<p>\u041f\u043e\u0441\u0442\u043e\u0439\u0442\u0435, \u043d\u043e \u0433\u0434\u0435 \u0436\u0435 ipv4, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0435 gnmic? \u0422\u0443\u0442 \u0435\u0433\u043e \u044f\u0432\u043d\u043e \u043d\u0435\u0442. \u0410 \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0435 \u0438 \u043e\u0442\u0432\u0435\u0442\u0435 \u044f\u0432\u043d\u043e \u0431\u044b\u043b &#8212; \u0442\u043e \u0435\u0441\u0442\u044c \u0433\u0434\u0435-\u0442\u043e \u043e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0438 \u0432 \u043c\u043e\u0434\u0435\u043b\u0438.<\/p>\n<p>\u0412\u0437\u0433\u043b\u044f\u043d\u0435\u043c \u0435\u0449\u0451 \u0440\u0430\u0437 \u043d\u0430 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e. \u0418 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u043c pyang:<\/p>\n<pre><code class=\"bash\">poetry run pyang -f tree  -p yang\/oc\/public\/release\/models\/ yang\/oc\/public\/release\/models\/interfaces\/openconfig-if-ip.yang | head -n 10 module: openconfig-if-ip    augment \/oc-if:interfaces\/oc-if:interface\/oc-if:subinterfaces\/oc-if:subinterface:     +--rw ipv4        +--rw addresses        |  +--rw address* [ip]        |     +--rw ip        -> ..\/config\/ip        |     +--rw config        |     |  +--rw ip?              oc-inet:ipv4-address        |     |  +--rw prefix-length?   uint8<\/code><\/pre>\n<p>\u0412\u043e\u0442 \u0438 \u043e\u043d \u0432\u043e \u0432\u0441\u0435\u0439 \u043a\u0440\u0430\u0441\u0435. \u0418 \u0442\u0443\u0442 \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u044d\u0442\u043e \u0430\u0443\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043a \u043c\u043e\u0434\u0435\u043b\u0438 <code>\/oc-if:interfaces\/oc-if:interface\/oc-if:subinterfaces\/oc-if:subinterface<\/code>.<\/p>\n<p>\u0410 \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 <code>oc-if<\/code>?<\/p>\n<pre><code class=\"bash\">less yang\/oc\/public\/release\/models\/interfaces\/openconfig-interfaces.yang | grep '^ *prefix'   prefix \"oc-if\";<\/code><\/pre>\n<p>\u0418\u0442\u0430\u043a, \u0443 \u043c\u043e\u0434\u0435\u043b\u0438 \u0435\u0441\u0442\u044c \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0439 \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u0434\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a \u043d\u0435\u0439. \u041e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438, \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0433\u043e \u0430\u0443\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e.<\/p>\n<p>\u0422\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u044c:<\/p>\n<pre><code class=\"bash\">poetry run pyang -p yang\/oc\/public\/release\/models\/ yang\/oc\/public\/release\/models\/interfaces\/openconfig-interfaces.yang<\/code><\/pre>\n<p>\u041a\u043b\u044e\u0447 <code>-f<\/code> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u0440\u0430\u0437\u043d\u044b\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u044b: <code>tree<\/code>, <code>yin<\/code>, <code>yang<\/code>, <code>jstree<\/code>, <code>uml<\/code> \u0438 \u0434\u0440\u0443\u0433\u0438\u0435.<\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435 \u0432\u0441\u0435\u0433\u043e <code>tree<\/code> \u0438 <code>uml<\/code>, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432\u043e\u0442 \u0442\u0430\u043a\u0438\u0435 \u043a\u0440\u0443\u0442\u044b\u0435 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u043e\u0432<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/7ac\/ac9\/0c6\/7acac90c67987d0af6ef022a876c3989.png\" alt=\"\u0427\u0442\u043e\u0431\u044b \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c uml \u0432 png \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0430\u043a\u0435\u0442\u043e\u043c plantuml.\" title=\"\u0427\u0442\u043e\u0431\u044b \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c uml \u0432 png \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0430\u043a\u0435\u0442\u043e\u043c plantuml.\" width=\"3003\" height=\"2641\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7ac\/ac9\/0c6\/7acac90c67987d0af6ef022a876c3989.png\"\/><figcaption>\u0427\u0442\u043e\u0431\u044b \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c uml \u0432 png \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0430\u043a\u0435\u0442\u043e\u043c plantuml.<\/figcaption><\/figure>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e pyang, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u043c\u043e\u0434\u0435\u043b\u044f\u043c\u0438 OpenConfig, \u043d\u043e \u0438 \u0441 \u043b\u044e\u0431\u044b\u043c\u0438 \u0434\u0440\u0443\u0433\u0438\u043c\u0438, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c\u0438 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 YANG.<\/p>\n<p><a href=\"https:\/\/www.ietf.org\/proceedings\/90\/slides\/slides-90-edu-yang-0.pdf\" rel=\"noopener noreferrer nofollow\">\u041c\u0435\u0441\u0442\u043e, \u0433\u0434\u0435 \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u043e\u043f\u0438\u0441\u0430\u043d pyang<\/a>.<\/p>\n<hr\/>\n<p>\u0410 <a href=\"https:\/\/ultraconfig.com.au\/blog\/learn-yang-full-tutorial-for-beginners\/\" rel=\"noopener noreferrer nofollow\">\u0442\u0443\u0442<\/a> \u0431\u0440\u0430\u0432\u044b\u0435 \u043f\u0430\u0440\u043d\u0438 \u0438\u0437 \u0410\u0432\u0441\u0442\u0440\u0430\u043b\u0438\u0438 \u043f\u0438\u0448\u0443\u0442 \u0441\u0432\u043e\u044e \u043c\u043e\u0434\u0435\u043b\u044c. \u0421 \u044d\u0442\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0442\u0435\u043c, \u043a\u0442\u043e \u0445\u043e\u0447\u0435\u0442 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0433\u043b\u0443\u0431\u0436\u0435 \u0432 \u044f\u0437\u044b\u043a\u0435 YANG.<\/p>\n<p>\u041d\u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0438\u0439 \u0434\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u0438\u0435 \u0432\u0435\u043d\u0434\u043e\u0440\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 YANG-\u0441\u0445\u0435\u043c\u0443 \u0434\u043b\u044f \u0441\u0432\u043e\u0438\u0445 NETCONF\/gNMI-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432.<\/p>\n<p>\u0415\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0441\u0442, \u0433\u0434\u0435 \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u0434\u043e\u0431\u044b\u0442\u044c:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/github.com\/YangModels\/yang\/tree\/master\/vendor\" rel=\"noopener noreferrer nofollow\">\u041e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439  YANG<\/a>.<\/p>\n<p>\u0422\u0443\u0442 \u0435\u0441\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0433\u0438\u0442\u0445\u0430\u0431\u044b \u0432\u0435\u043d\u0434\u043e\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u044e\u0442 \u0441\u0432\u043e\u0438 \u043c\u043e\u0434\u0435\u043b\u0438.     <\/p>\n<\/li>\n<li>\n<p>\u041d\u043e Huawei, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0445\u0440\u0430\u043d\u0438\u0442 \u0441\u0432\u043e\u0438 YANG-\u0438 \u0432 <a href=\"https:\/\/github.com\/Huawei\/yang\/\" rel=\"noopener noreferrer nofollow\">\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445<\/a> <a href=\"https:\/\/github.com\/HuaweiDatacomm\/yang\" rel=\"noopener noreferrer nofollow\">\u043c\u0435\u0441\u0442\u0430\u0445<\/a>.<\/p>\n<\/li>\n<li>\n<p>\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0442\u0430\u043a \u0436\u0435 \u043b\u0435\u0436\u0430\u0442 \u0441\u0445\u0435\u043c\u044b <a href=\"https:\/\/github.com\/aristanetworks\/yang\" rel=\"noopener noreferrer nofollow\">\u0430\u0440\u0438\u0441\u0442\u044b<\/a>.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0435\u043d\u0434\u043e\u0440\u044b \u043c\u043e\u0433\u0443\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0438\u0445 \u043d\u0430 \u0441\u0432\u043e\u0438\u0445 \u0441\u0430\u0439\u0442\u0430\u0445.     <\/p>\n<\/li>\n<\/ul>\n<p>\u0412 \u043e\u0431\u0449\u0435\u043c, \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0441 \u0440\u0435\u043f\u044b \u043f\u043e \u043a\u043e\u043c\u043c\u0438\u0442\u0443.<\/p>\n<p>\u0417\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043d\u043e\u0432\u043e\u0441\u0442\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432\u0441\u0435 \u043a\u043e\u0440\u043e\u0431\u043a\u0438, \u0437\u0430\u044f\u0432\u043b\u044f\u044e\u0449\u0438\u0435 \u0441\u0432\u043e\u0451 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 RFC6022 \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u043c\u0435\u0442\u044c \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u0432\u0441\u044e YANG-\u0441\u0445\u0435\u043c\u0443 \u043f\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0443 \u0441 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0435\u0439 <code>&lt;get_schema><\/code>.<\/p>\n<p>\u041e\u0442\u0432\u0440\u0430\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043d\u043e\u0432\u043e\u0441\u0442\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0435 \u0432\u0441\u0435 \u0432\u0435\u043d\u0434\u043e\u0440\u044b \u044d\u0442\u0443 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442.<\/p>\n<h4>\u0427\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0437\u043d\u0430\u0442\u044c \u043f\u0440\u043e YANG?<\/h4>\n<p>\u042d\u0442\u043e \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0434\u0430\u043d\u043d\u044b\u0445, \u043d\u043e \u043d\u0435 \u0441\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0435.<\/p>\n<p>\u0421\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0432 \u043b\u044e\u0431\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0449\u0435\u043c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b: XML, JSON, Protobuf, \u043e\u0431\u044a\u0435\u043a\u0442\u044b Python.<\/p>\n<p>YANG \u043f\u0440\u0438\u0434\u0443\u043c\u044b\u0432\u0430\u043b\u0438 \u043d\u0435 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0440\u0435\u0448\u0438\u0442\u044c \u043e\u0431\u0449\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443, \u043e\u043d \u043d\u0430\u0446\u0435\u043b\u0435\u043d \u043d\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e NETCONF \u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e XML-\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435. \u041d\u043e \u0435\u0433\u043e \u0441\u043c\u043e\u0433\u043b\u0438 \u043f\u0440\u0438\u0441\u043e\u0431\u0430\u0447\u0438\u0442\u044c \u0438 \u043a \u0434\u0440\u0443\u0433\u0438\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u043c.<\/p>\n<p>\u042f \u0431\u044b \u0432\u0437\u044f\u043b \u043d\u0430 \u0441\u0435\u0431\u044f \u0441\u043c\u0435\u043b\u043e\u0441\u0442\u044c \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e NETCONF\/YANG &#8212; \u044d\u0442\u043e \u043a\u0430\u043a TCP\/IP. \u0422\u043e \u0435\u0441\u0442\u044c \u0442\u0430\u043c \u0438 \u043f\u0440\u043e NETCONF, \u0438 \u043f\u0440\u043e YANG. \u041e\u0434\u043d\u0430\u043a\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e NETCONF.<\/p>\n<p>\u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, YANG &#8212; \u043e\u0433\u0440\u043e\u043c\u043d\u0430\u044f \u0442\u0435\u043c\u0430, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u0442\u0435\u0441\u043d\u043e \u0434\u0430\u0436\u0435 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u043a\u043d\u0438\u0433\u0438. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u043e\u0442\u043a\u0440\u044b\u0442\u044c \u043f\u0435\u0440\u0432\u044b\u0439 \u0435\u0451 \u0440\u0430\u0437\u0432\u043e\u0440\u043e\u0442, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0435\u0449\u0451 \u043d\u0435\u0442 \u043f\u0443\u0433\u0430\u044e\u0449\u0438\u0445 \u0432\u044b\u043a\u043b\u0430\u0434\u043e\u043a.<\/p>\n<p>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043a\u043e\u0433\u0434\u0430-\u0442\u043e, \u0435\u0441\u043b\u0438 \u044f \u043e\u0441\u043e\u0437\u043d\u0430\u044e \u043d\u0435\u0438\u0437\u0431\u0435\u0436\u043d\u043e\u0441\u0442\u044c \u0435\u0433\u043e \u043f\u043e\u0432\u0441\u0435\u043c\u0435\u0441\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f, \u044f \u043d\u0430\u043f\u0438\u0448\u0443 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u043e\u0433\u0440\u043e\u043c\u043d\u0443\u044e \u0441\u0442\u0430\u0442\u044c\u044e \u0438 \u043e \u043d\u0451\u043c. \u0410 \u043f\u043e\u043a\u0430 \u043f\u043e\u043b\u043e\u0436\u0438\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u044b\u043c \u044d\u0442\u0438 \u0435\u0434\u0432\u0430 \u043b\u0438 \u0437\u0430\u043c\u0435\u0442\u043d\u044b\u0435 \u0442\u0440\u043e\u043f\u0438\u043d\u043a\u0438.<\/p>\n<p><a class=\"anchor\" name=\"MODEL_DRIVEN_PROGRAMMABILITY\" id=\"MODEL_DRIVEN_PROGRAMMABILITY\"><\/a><\/p>\n<hr\/>\n<h2>Model Driven Programmability<\/h2>\n<p>\u0422\u0430\u043a \u0447\u0442\u043e \u0436\u0435 \u044d\u0442\u043e \u0442\u0430\u043a\u043e\u0435? \u0412\u0435\u0434\u043e\u043c\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0441\u0442\u044c? \u0422\u0435\u043f\u0435\u0440\u044c, \u043f\u043e\u0441\u043b\u0435 \u0434\u0432\u0443\u0445 \u0441\u0442\u0430\u0442\u0435\u0439, \u043d\u0430\u043c \u0445\u0432\u0430\u0442\u0438\u0442 \u043f\u0430\u0440\u044b \u043c\u0438\u043d\u0443\u0442, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0447\u0442\u043e \u044d\u0442\u043e \u0442\u0430\u043a\u043e\u0435.<\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u0435\u0440\u043d\u0451\u043c\u0441\u044f \u043a <a href=\"https:\/\/linkmeup.ru\/blog\/1275\/\" rel=\"noopener noreferrer nofollow\">4-\u0439 \u0447\u0430\u0441\u0442\u0438 \u0410\u0414\u0421\u041c<\/a>, \u0433\u0434\u0435 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u043f\u043e\u0437\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0443 \u0414\u043c\u0438\u0442\u0440\u0438\u044f \u0422\u0435\u0441\u043b\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/051\/fa8\/178\/051fa8178536d744a1ae62dc7235f9f2.png\" alt=\"\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: dteslya.engineer\/network_automaiton_101\/\" title=\"\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: dteslya.engineer\/network_automaiton_101\/\" width=\"986\" height=\"359\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/051\/fa8\/178\/051fa8178536d744a1ae62dc7235f9f2.png\"\/><figcaption>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: dteslya.engineer\/network_automaiton_101\/<\/figcaption><\/figure>\n<p>\u041e\u043d\u0430 \u0432\u0435\u0434\u044c \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043d\u044f\u0442\u043d\u0430\u044f? Inventory, Git \u0441 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u043c\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u0440\u0435\u043d\u0434\u0435\u0440, \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f, \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435.<\/p>\n<p>\u0413\u0434\u0435 \u0437\u0430\u043a\u043e\u043f\u0430\u043d\u044b \u0434\u0432\u0430 \u043c\u0435\u0448\u043a\u0430 \u0441 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e-\u043d\u0435\u0434\u0435\u043b\u044f\u043c\u0438? \u041f\u043e\u0434 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u043c\u0438 \u0441 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430\u043c\u0438 \u0438 \u043f\u043e\u0434 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u043c\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438.<\/p>\n<p>\u0421\u043e \u0432\u0442\u043e\u0440\u044b\u043c \u043f\u044b\u0442\u0430\u044e\u0442\u0441\u044f \u0431\u043e\u0440\u043e\u0442\u044c\u0441\u044f NETCONF, RESTCONF, gNMI.<\/p>\n<p>\u0410 \u0441 \u043f\u0435\u0440\u0432\u044b\u043c &#8212; \u043c\u043e\u0434\u0435\u043b\u0438.<\/p>\n<p>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u043c\u044b \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0440\u0443\u043a\u0430\u043c\u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u043f\u0440\u043e\u0431 \u0438 \u043e\u0448\u0438\u0431\u043e\u043a, \u0432\u043e\u043e\u0431\u0449\u0435-\u0442\u043e. \u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0442\u0438\u043f\u043e\u0432, \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u043e\u0432, \u0435\u0441\u043b\u0438 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u044f &#8212; \u0431\u0443\u0434\u044c\u0442\u0435 \u0434\u043e\u0431\u0440\u044b \u0441\u0430\u043c\u0438 \u0432\u0441\u0451 \u044d\u0442\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u0418, \u043e\u043a\u043e\u043d\u0447\u0438\u0432, \u0443\u0435\u0445\u0430\u0442\u044c \u0432 \u0441\u0443\u043c\u0430\u0441\u0448\u0435\u0434\u0448\u0438\u0439 \u0434\u043e\u043c, \u0443\u0447\u0438\u0442\u044c \u0434\u0440\u0443\u0437\u0435\u0439 \u0434\u0436\u0438\u043d\u0434\u0436\u0430-\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e.<\/p>\n<p>Model Driven \u043c\u0435\u043d\u044f\u0435\u0442 \u043a\u0430\u0440\u0442\u0438\u043d\u0443 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/4d3\/645\/b4a\/4d3645b4a42e510cf58b701e241218a7.png\" alt=\"\u041d\u0435 \u043c\u043e\u0433\u0443 \u043d\u0430\u0439\u0442\u0438, \u043e\u0442\u043a\u0443\u0434\u0430 \u0431\u0440\u0430\u043b \u044d\u0442\u0443 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443.\" title=\"\u041d\u0435 \u043c\u043e\u0433\u0443 \u043d\u0430\u0439\u0442\u0438, \u043e\u0442\u043a\u0443\u0434\u0430 \u0431\u0440\u0430\u043b \u044d\u0442\u0443 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443.\" width=\"1490\" height=\"850\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4d3\/645\/b4a\/4d3645b4a42e510cf58b701e241218a7.png\"\/><figcaption>\u041d\u0435 \u043c\u043e\u0433\u0443 \u043d\u0430\u0439\u0442\u0438, \u043e\u0442\u043a\u0443\u0434\u0430 \u0431\u0440\u0430\u043b \u044d\u0442\u0443 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443.<\/figcaption><\/figure>\n<p>\u0417\u0434\u0435\u0441\u044c \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0437\u0430\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u043d\u0430 YANG-\u043c\u043e\u0434\u0435\u043b\u044c (\u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 OpenConfig).<br \/>\u0418\u0437 \u0438\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u043a\u0438 (\u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u0438) \u0438 \u044d\u0442\u0438\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u0442\u0441\u044f \u043a\u043e\u043d\u0444\u0438\u0433, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e RPC (\u0442\u0443\u0442 gRPC) \u043f\u0440\u043e\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043a\u043e\u0440\u043e\u0431\u043a\u0443.<\/p>\n<p>Model Driven \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0442\u0443\u0442, \u0447\u0442\u043e \u043c\u044b<\/p>\n<p>\u0410) \u043d\u0435 \u0434\u0443\u043c\u0430\u0435\u043c (\u0438\u043b\u0438 \u0434\u0443\u043c\u0430\u0435\u043c \u043c\u0435\u043d\u044c\u0448\u0435) \u043f\u0440\u043e \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u044e, \u0442\u0438\u043f\u044b \u0434\u0430\u043d\u043d\u044b\u0445. \u041f\u0435\u0440\u0435\u0441\u0442\u0430\u0451\u043c \u043c\u044b\u0441\u043b\u0438\u0442\u044c \u0442\u0435\u0433\u0430\u043c\u0438 XML.<br \/>\u0411) \u041c\u043e\u0434\u0435\u043b\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u043a\u0430\u043a \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f, \u043a\u0430\u043a \u0441 \u043d\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c.<br \/>\u0412) \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0435 \u043d\u0430\u043c\u0438, \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u0438 \u0432\u0430\u043b\u0438\u0434\u043d\u043e \u043d\u0430 \u0442\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u0435, \u043a\u043e\u043b\u044c \u0441\u043a\u043e\u0440\u043e \u043e\u043d\u043e \u0432\u0430\u043b\u0438\u0434\u043d\u043e \u043d\u0430 \u044d\u0442\u043e\u0439.<\/p>\n<p>\u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u043c\u043e\u0434\u0435\u043b\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0442\u0435\u043c, \u043a\u0430\u043a \u043c\u044b \u0438 \u0436\u0435\u043b\u0435\u0437\u043e \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439.<\/p>\n<p>\u0412\u043e\u0442 \u0438 \u0432\u0441\u044f \u0441\u0443\u0442\u044c.<\/p>\n<hr\/>\n<p><a class=\"anchor\" name=\"ALLTOGETHER\" id=\"ALLTOGETHER\"><\/a><\/p>\n<h2>\u0412\u0441\u0451 \u0432\u043c\u0435\u0441\u0442\u0435<\/h2>\n<p>\u0423\u0445, \u043a\u0430\u043a\u0443\u044e \u0436\u0435 \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u043a\u0443\u0447\u0443 \u0438\u0437 \u0440\u0430\u0437\u043d\u044b\u0445 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439 \u0438 \u0438\u0434\u0435\u0439 \u043c\u044b \u0441\u0432\u0430\u043b\u0438\u043b\u0438 \u0441 \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0442\u0430\u0442\u044c\u0438. \u041f\u043e\u0440\u0430 \u0431\u044b \u0435\u0451 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c \u0438 \u043f\u043e \u043a\u043e\u0440\u043e\u0431\u043a\u0430\u043c \u0440\u0430\u0437\u043b\u043e\u0436\u0438\u0442\u044c.<br \/>\u0418\u0442\u0430\u043a,<\/p>\n<p><strong>\u0422\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442<\/strong><\/p>\n<ul>\n<li>\n<p>SSH, <\/p>\n<\/li>\n<li>\n<p>HTTP, <\/p>\n<\/li>\n<li>\n<p>HTTP\/2<\/p>\n<\/li>\n<li>\n<p>SNMP \u0442\u043e\u0436\u0435, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u0432\u043e\u0437\u043c\u043e\u0436\u0435\u043d, \u043d\u043e \u043d\u0435 \u043d\u0443\u0436\u0435\u043d.<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441<\/strong><\/p>\n<ul>\n<li>\n<p>CLI<\/p>\n<\/li>\n<li>\n<p>SNMP<\/p>\n<\/li>\n<li>\n<p>NETCONF<\/p>\n<\/li>\n<li>\n<p>RESTCONF<\/p>\n<\/li>\n<li>\n<p>gRPC<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0424\u043e\u0440\u043c\u0430\u0442 \u0434\u0430\u043d\u043d\u044b\u0445<\/strong><\/p>\n<ul>\n<li>\n<p>\u0422\u0435\u043a\u0441\u0442<\/p>\n<\/li>\n<li>\n<p>XML<\/p>\n<\/li>\n<li>\n<p>JSON<\/p>\n<\/li>\n<li>\n<p>Protocol Buffers<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0421\u043f\u043e\u0441\u043e\u0431 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 &#8212; \u043e\u043d \u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u0445\u0435\u043c\u043e\u0439<\/strong><\/p>\n<ul>\n<li>\n<p>XSD<\/p>\n<\/li>\n<li>\n<p>JSON schema<\/p>\n<\/li>\n<li>\n<p>Protocol Buffers<\/p>\n<\/li>\n<li>\n<p>MIB<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431, \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043d\u043d\u044b\u0439 \u0432\u0435\u043d\u0434\u043e\u0440\u043e\u043c \u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438.<\/p>\n<\/li>\n<\/ul>\n<p><strong>YANG-\u043c\u043e\u0434\u0435\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438<\/strong><\/p>\n<ul>\n<li>\n<p>OpenConfig<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438<\/p>\n<\/li>\n<li>\n<p>IETF<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c, \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043d\u043d\u0430\u044f \u0432\u0435\u043d\u0434\u043e\u0440\u043e\u043c \u0438 \u043d\u0435\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u0430\u044f \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u042f\u0437\u044b\u043a\u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0435\u0439<\/strong><\/p>\n<ul>\n<li>\n<p>YANG<\/p>\n<\/li>\n<li>\n<p>SMI\/SMIng<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u044b\u0439 \u044f\u0437\u044b\u043a, \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043d\u043d\u044b\u0439 \u0432\u0435\u043d\u0434\u043e\u0440\u043e\u043c \u0438 \u043d\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/fd0\/2a2\/95b\/fd02a295b44700ba7c61e500e4398c44.png\" width=\"2360\" height=\"1226\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fd0\/2a2\/95b\/fd02a295b44700ba7c61e500e4398c44.png\"\/><figcaption><\/figcaption><\/figure>\n<p><a class=\"anchor\" name=\"IN_OTHER_WORLDS\" id=\"IN_OTHER_WORLDS\"><\/a><\/p>\n<h3>\u0418 \u0435\u0449\u0451 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438<\/h3>\n<ul>\n<li>\n<p><strong>YANG<\/strong> &#8212; \u044f\u0437\u044b\u043a \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445, \u043d\u043e \u043d\u0435 \u0441\u0430\u043c\u0438 \u043c\u043e\u0434\u0435\u043b\u0438,<\/p>\n<\/li>\n<li>\n<p><strong>YANG-\u043c\u043e\u0434\u0435\u043b\u0438<\/strong> &#8212; \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 YANG, \u043d\u043e \u0435\u0449\u0451 \u043d\u0435 \u0441\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u043d\u0435 \u0438\u0445 \u0441\u0445\u0435\u043c\u0430,<\/p>\n<\/li>\n<li>\n<p><strong>OpenConfig<\/strong> &#8212; \u0432\u0435\u043d\u0434\u043e\u0440-\u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u0430\u044f YANG-\u043c\u043e\u0434\u0435\u043b\u044c \u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f,<\/p>\n<\/li>\n<li>\n<p><strong>Native-\u043c\u043e\u0434\u0435\u043b\u0438<\/strong> &#8212; \u0432\u0435\u043d\u0434\u043e\u0440\u0441\u043a\u0438\u0435 \u043f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u044b\u0435 YANG-\u043c\u043e\u0434\u0435\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438,<\/p>\n<\/li>\n<li>\n<p><strong>XML, JSON, Protobuf<\/strong> &#8212; \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u043f\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0432\u0438\u0434\u0435, \u043f\u0440\u0438\u0433\u043e\u0434\u043d\u043e\u043c \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0442\u0440\u043e\u043a\u0430), \u0438\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438 &#8212; \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f, <\/p>\n<\/li>\n<li>\n<p><strong>XML-\u0441\u0445\u0435\u043c\u044b (XSD), JSON-\u0441\u0445\u0435\u043c\u044b, proto-\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438<\/strong> &#8212; \u0440\u0435\u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u044f YANG-\u043c\u043e\u0434\u0435\u043b\u0438 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435, \u0441\u0445\u0435\u043c\u0430 <\/p>\n<\/li>\n<li>\n<p><strong>NETCONF<\/strong> &#8212; \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u0441\u0435\u0442\u0435\u0432\u044b\u043c \u0436\u0435\u043b\u0435\u0437\u043e\u043c, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u043f\u043e\u0432\u0435\u0440\u0445 SSH. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 XML. \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 XML \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0430 \u043d\u0430 YANG-\u043c\u043e\u0434\u0435\u043b\u0438, \u043d\u043e \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e, <\/p>\n<\/li>\n<li>\n<p><strong>RESTCONF<\/strong> &#8212; \u0430\u043d\u0430\u043b\u043e\u0433 NETCONF, \u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u0447\u0435\u0440\u0435\u0437 HTTP. \u0414\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432 JSON \u0438\u043b\u0438 XML \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e YANG-\u043c\u043e\u0434\u0435\u043b\u0438, <\/p>\n<\/li>\n<li>\n<p><strong>gRPC<\/strong> &#8212; \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u0434\u043b\u044f \u043c\u0435\u0436\u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0433\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b, \u0444\u043e\u0440\u043c\u0430\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 (protocol buffers). \u041d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043a \u0441\u0435\u0442\u044f\u043c \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f \u043d\u0435 \u0438\u043c\u0435\u0435\u0442, <\/p>\n<\/li>\n<li>\n<p><strong>Protobuf<\/strong> &#8212; \u043e\u043d \u0436\u0435 protocol buffers &#8212; \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0434\u043b\u044f gRPC, \u0430 \u0442\u0430\u043a \u0436\u0435 \u0444\u043e\u0440\u043c\u0430\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043d\u0451\u043c, <\/p>\n<\/li>\n<li>\n<p><strong>gNMI<\/strong> &#8212; \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 gRPC \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u0441\u0435\u0442\u0435\u0432\u044b\u043c \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435\u043c. \u0412\u0441\u0435\u0433\u0434\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d \u043d\u0430 \u043c\u043e\u0434\u0435\u043b\u0438, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 protobuf-\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438, \u043d\u043e \u044d\u0442\u043e \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c YANG-\u043c\u043e\u0434\u0435\u043b\u044c. <\/p>\n<\/li>\n<\/ul>\n<p>\u0418 \u0447\u0442\u043e\u0431\u044b \u043e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e <s>\u0437\u0430\u043f\u0443\u0442\u0430\u0442\u044c\u0441\u044f<\/s> \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u0445, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u043b\u043e\u0436\u0438\u043c \u043f\u043e \u043f\u043e\u043b\u043e\u0447\u043a\u0430\u043c: \u0441\u0445\u0435\u043c\u0430, \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f, IDL.<\/p>\n<p><strong>\u0421\u0445\u0435\u043c\u0430<\/strong> &#8212; \u044d\u0442\u043e \u0448\u0438\u0440\u043e\u043a\u0438\u0439 \u0442\u0435\u0440\u043c\u0438\u043d. \u042d\u0442\u043e \u0442\u043e, \u0447\u0442\u043e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442, \u043a\u0430\u043a \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0438 \u0447\u0435\u043c\u0443 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c: \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430, \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u044f, \u0442\u0438\u043f\u044b \u0438\u0442\u0434.<\/p>\n<p>\u0414\u0443\u043c\u0430\u044e, \u0447\u0442\u043e \u0441\u043b\u043e\u0432\u0430 &#171;\u0441\u0445\u0435\u043c\u0430&#187; \u0438 &#171;\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f&#187; \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0441\u0438\u043d\u043e\u043d\u0438\u043c\u0430\u043c\u0438. \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u0443\u0434\u0435\u0442 \u0442\u0430\u043a \u0436\u0435 \u0438 \u0441\u0432\u043e\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0445\u0435\u043c. \u0414\u043b\u044f XML &#8212; \u044d\u0442\u043e XSD, \u0434\u043b\u044f JSON &#8212; JSON-schema, \u0434\u043b\u044f gRPC &#8212; protobuf.<\/p>\n<p>\u0410 \u0443\u0436\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0444\u0430\u0439\u043b\/\u0442\u0435\u043a\u0441\u0442, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043a\u0430\u043a\u0438\u0435-\u043b\u0438\u0431\u043e \u0434\u0430\u043d\u043d\u044b\u0435 &#8212; \u044d\u0442\u043e \u0438 \u0431\u0443\u0434\u0435\u0442 \u0441\u0430\u043c\u0430 \u0441\u0445\u0435\u043c\u0430. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0430\u043b\u0438\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e \u0441\u0445\u0435\u043c\u0435 &#8212; \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u043b\u0438 \u043e\u043d\u0438 \u0435\u0439.<\/p>\n<p>\u0418\u0437 \u0441\u0445\u0435\u043c\u044b\/\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u044f\u0437\u044b\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043d\u0438\u043c\u0438. \u0422\u043e \u0435\u0441\u0442\u044c \u0438\u0437 XML-\u0441\u0445\u0435\u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u043a\u043b\u0430\u0441\u0441\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0438\u0442\u043e\u043d\u0430, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0441 \u043d\u0438\u043c\u0438 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0434\u0430\u043b\u0435\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u043c \u0432 XML, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0443\u0436\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0445\u0435\u043c\u0435. \u0418\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0435, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0438\u0437 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043d\u0430 \u0442\u0430\u043a\u043e\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c.<\/p>\n<p><strong>IDL<\/strong> &#8212; \u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u044f\u043c\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0438\u0437 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f &#8212; \u044f\u0437\u044b\u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430. \u0415\u0441\u043b\u0438 \u0441\u0445\u0435\u043c\u0430 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043a\u0430\u043a \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u0432\u043e\u043e\u0431\u0449\u0435, \u0442\u043e IDL \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u043a\u0430\u043a \u0434\u0432\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0434\u043e\u043b\u0436\u043d\u0446 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435, \u0447\u0442\u043e\u0431\u044b \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c. \u0422\u043e \u0435\u0441\u0442\u044c \u044d\u0442\u043e \u0443\u0436\u0435 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438, \u0430 \u0441\u0445\u0435\u043c\u0430 &#8212; \u044d\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f.<\/p>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u0432 gRPC protobuf \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438 IDL \u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0435\u0439. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 NETCONF \u0444\u043e\u0440\u043c\u0430\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 &#8212; \u044d\u0442\u043e XML, \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 &#8212; \u044d\u0442\u043e XSD, \u0430 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 IDL \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0441\u0430\u043c NETCONF &#8212; \u0432\u0435\u0434\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u043d \u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441.<\/p>\n<p><strong>\u041c\u043e\u0434\u0435\u043b\u044c<\/strong> \u0436\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0442\u043e, \u043a\u0430\u043a \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0441\u0430\u043c\u0430 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f\/\u0441\u0445\u0435\u043c\u0430. \u0422\u043e \u0435\u0441\u0442\u044c \u044d\u0442\u043e \u0435\u0449\u0451 \u0431\u043e\u043b\u0435\u0435 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u0430\u044f \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f. \u0418 \u043d\u0443\u0436\u043d\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0430 \u0435\u0451 \u043e\u0441\u043d\u043e\u0432\u0435 \u0431\u044b\u043b\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u0430\u043a proto-\u0441\u043f\u0435\u043a\u0443, \u0442\u0430\u043a \u0438 JSON-\u0441\u0445\u0435\u043c\u0443, \u0442\u0430\u043a \u0438 XSD.<\/p>\n<p><a class=\"anchor\" name=\"THEEND\" id=\"THEEND\"><\/a><\/p>\n<hr\/>\n<h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>\u0414\u0443\u043c\u0430\u044e, \u0447\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u0435\u0435 \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0431\u044b\u043b\u043e \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u044f \u0438 <a href=\"https:\/\/habr.com\/ru\/post\/667012\/\" rel=\"noopener noreferrer nofollow\">\u043e\u0442\u0441\u044b\u043b\u0430\u044e<\/a> \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f.<br \/>\u041f\u0443\u0442\u044c \u043d\u0430\u0441 \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u043d\u0435\u0431\u043b\u0438\u0437\u043a\u0438\u0439. \u0422\u0443\u043c\u0430\u043d \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u0440\u0430\u0441\u0441\u0435\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044f \u043d\u043e\u0432\u044b\u0435 \u0440\u0430\u0437\u0432\u0438\u043b\u043a\u0438 \u0434\u043e\u0440\u043e\u0436\u0435\u043a, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u043d\u0443\u044e.<\/p>\n<p>\u041d\u043e \u0432\u043e\u0442 \u0447\u0442\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432 \u0433\u043e\u043b\u043e\u0432\u0435. \u041d\u0430\u043c \u043e\u0431\u043e \u0432\u0441\u0451\u043c \u044d\u0442\u043e\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043d\u0430 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u044f\u0445 \u0438 \u043f\u0438\u0448\u0443\u0442 \u0432 \u0434\u043b\u0438\u043d\u043d\u044b\u0445 \u0441\u0442\u0430\u0442\u044c\u044f\u0445 \u043a\u0430\u043a \u043e \u0441\u0432\u0435\u0440\u0448\u0438\u0432\u0448\u0435\u043c\u0441\u044f \u0444\u0430\u043a\u0442\u0435, \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f, \u043a\u0430\u043a \u043c\u043d\u043e\u0433\u0438\u0435 \u0432\u0435\u0449\u0438 \u0432\u0441\u0451 \u0435\u0449\u0451 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442, \u0430 \u0432 \u043a\u043e\u043d\u0446\u0435 \u043e\u0431\u044b\u0447\u043d\u043e \u0435\u0441\u0442\u044c \u043f\u0440\u0438\u043f\u0438\u0441\u043a\u0430 <em>&#171;Adding support of OpenConfig gNMI paves the way for future network automation&#187;<\/em>.<\/p>\n<p><a class=\"anchor\" name=\"LINKS\" id=\"LINKS\"><\/a><\/p>\n<hr\/>\n<h2>\u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438<\/h2>\n<ul>\n<li>\n<p><a href=\"https:\/\/linkmeup.ru\/blog\/1261\/\" rel=\"noopener noreferrer nofollow\">\u041a\u0430\u043a \u044f \u0441\u043e\u0431\u0438\u0440\u0430\u043b \u043b\u0430\u0431\u0443 \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438<\/a>     <\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/eucariot\/ADSM\/blob\/master\/docs\/source\/5_interfaces\/materials\/\" rel=\"noopener noreferrer nofollow\">\u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438 \u043a\u043e\u0434\u0430 \u0438\u0437 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438<\/a>     <\/p>\n<\/li>\n<li>\n<p>\u0413\u043b\u0430\u0432\u043d\u044b\u0435 RFC:         <\/p>\n<ul>\n<li>\n<p>NETCONF: <a href=\"https:\/\/www.ietf.org\/rfc\/rfc4741.txt\" rel=\"noopener noreferrer nofollow\">RFC4741<\/a>, <a href=\"https:\/\/datatracker.ietf.org\/doc\/html\/rfc6241\" rel=\"noopener noreferrer nofollow\">RFC6241<\/a>             <\/p>\n<\/li>\n<li>\n<p>RESTCONF: <a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc8040.txt\" rel=\"noopener noreferrer nofollow\">RFC8040<\/a>             <\/p>\n<\/li>\n<li>\n<p>YANG: <a href=\"https:\/\/datatracker.ietf.org\/doc\/html\/rfc6020\" rel=\"noopener noreferrer nofollow\">RFC6020<\/a>, <a href=\"https:\/\/datatracker.ietf.org\/doc\/html\/rfc7950\" rel=\"noopener noreferrer nofollow\">RFC7950<\/a>             <\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u041a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f RPC: <a href=\"https:\/\/searchapparchitecture.techtarget.com\/definition\/Remote-Procedure-Call-RPC\" rel=\"noopener noreferrer nofollow\">Remote Procedure Call (RPC)<\/a>     <\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u044b \u0434\u0430\u043d\u043d\u044b\u0445: <a href=\"https:\/\/realpython.com\/python-yaml\/\" rel=\"noopener noreferrer nofollow\">YAML: The Missing Battery in Python<\/a>     <\/p>\n<\/li>\n<li>\n<p>\u0414\u0435\u0442\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u0431\u043e\u0440 XML \u0432\u043e \u0432\u0441\u0451\u043c \u0435\u0433\u043e \u043c\u043d\u043e\u0433\u043e\u043e\u0431\u0440\u0430\u0437\u0438\u0438: <a href=\"https:\/\/www.w3schools.com\/xml\/xml_whatis.asp\" rel=\"noopener noreferrer nofollow\">XML Tutorial<\/a>     <\/p>\n<\/li>\n<li>\n<p>XML \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043d \u043f\u043e \u043a\u0443\u0441\u043e\u0447\u043a\u0430\u043c \u0438 \u043c\u0438\u043b\u043e \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d (\u0440\u0443\u0441\u0441\u043a\u0438\u0439): <a href=\"https:\/\/habr.com\/ru\/post\/524288\/\" rel=\"noopener noreferrer nofollow\">\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 XML<\/a>     <\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/docs.microsoft.com\/en-us\/previous-versions\/aa468565(v=msdn.10)?redirectedfrom=MSDN\" rel=\"noopener noreferrer nofollow\">Understanding XML Namespaces<\/a>     <\/p>\n<\/li>\n<li>\n<p>\u0421\u0430\u0439\u0442 OpenConfig: <a href=\"http:\/\/openconfig.net\/\" rel=\"noopener noreferrer nofollow\">openconfig.net<\/a>     <\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/openconfig\/public\" rel=\"noopener noreferrer nofollow\">\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 OpenConfig<\/a>     <\/p>\n<\/li>\n<li>\n<p>\u0425\u043e\u0440\u043e\u0448\u0430\u044f \u0432\u0432\u043e\u0434\u043d\u0430\u044f \u0432 NETCONF \u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e YANG: <a href=\"https:\/\/www.ciscolive.com\/c\/dam\/r\/ciscolive\/emea\/docs\/2020\/pdf\/BRKNMS-2032.pdf\" rel=\"noopener noreferrer nofollow\">YANG Data Modelling and NETCONF<\/a>     <\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u043e YANG \u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e NETCONF: <a href=\"https:\/\/www.ciscolive.com\/c\/dam\/r\/ciscolive\/emea\/docs\/2020\/pdf\/BRKDEV-1368.pdf\" rel=\"noopener noreferrer nofollow\">The Road to Model Driven Programmability<\/a>     <\/p>\n<\/li>\n<li>\n<p>\u041d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u043c \u043f\u0440\u043e <a href=\"https:\/\/habr.com\/ru\/post\/135259\/\" rel=\"noopener noreferrer nofollow\">NETCONF. \u041d\u0430\u0447\u0430\u043b\u043e<\/a>     <\/p>\n<\/li>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u0436\u0438\u0442\u044c \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435, \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u043c \u043f\u0440\u043e YANG, \u0438 \u0432\u044b \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442\u0435 \u0445\u0443\u0434\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0440\u0435\u0447\u044c: <a href=\"https:\/\/habr.com\/ru\/post\/557568\/\" rel=\"noopener noreferrer nofollow\">YANG \u2014 \u044d\u0442\u043e \u0438\u043c\u044f \u0434\u043b\u044f \u0432\u043e\u0436\u0434\u044f<\/a>     <\/p>\n<\/li>\n<li>\n<p>\u0421\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f gNMI \u0432 \u0435\u0433\u043e \u0436\u0435 <a href=\"https:\/\/github.com\/openconfig\/reference\/blob\/master\/rpc\/gnmi\/gnmi-specification.md\" rel=\"noopener noreferrer nofollow\">\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438<\/a>     <\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0447\u0443\u0434\u0435\u0441\u043d\u044b\u0439 \u0438 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043a \u0443\u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u044e \u0441\u0430\u0439\u0442 \u043e\u0442 \u0410\u0440\u0438\u0441\u0442\u044b \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438 \u0440\u0430\u0437\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432: <a href=\"https:\/\/aristanetworks.github.io\/openmgmt\/\" rel=\"noopener noreferrer nofollow\">Open Management<\/a>     <\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/ultraconfig.com.au\/blog\/restconf-tutorial-everything-you-need-to-know-about-restconf-in-2020\/\" rel=\"noopener noreferrer nofollow\">RESTCONF Tutorial &#8212; Everything you need to know about RESTCONF in 2020<\/a>     <\/p>\n<\/li>\n<li>\n<p>\u0421\u0435\u0440\u0438\u044f \u0441\u0442\u0430\u0442\u0435\u0439 \u043f\u0440\u043e RESTCONF, \u043d\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u044f \u0435\u0451 \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0442\u0430\u043c \u0445\u043e\u0440\u043e\u0448\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043d\u044b \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0441 YANG-\u043c\u043e\u0434\u0435\u043b\u044f\u043c\u0438: <a href=\"https:\/\/blog.wimwauters.com\/tags\/yang\/\" rel=\"noopener noreferrer nofollow\">RESTCONF, NETCONF and YANG<\/a>     <\/p>\n<\/li>\n<li>\n<p>\u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043e\u0431\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u0431\u043e\u0440 \u0442\u0435\u043b\u0435\u043c\u0435\u0442\u0440\u0438\u0438 \u043f\u043e\u0432\u0435\u0440\u0445 gNMI: <a href=\"https:\/\/www.cisco.com\/c\/dam\/m\/ru_ru\/training-events\/2019\/cisco-connect\/korshunov-3-goda-telemetry.pdf\" rel=\"noopener noreferrer nofollow\">\u0422\u0440\u0438 \u0433\u043e\u0434\u0430 \u0422\u0435\u043b\u0435\u043c\u0435\u0442\u0440\u0438\u0438 \u0432 IOS XR<\/a>     <\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/grpc.io\/docs\/\" rel=\"noopener noreferrer nofollow\">\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u043e gRPC<\/a>     <\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/realpython.com\/python-microservices-grpc\/\" rel=\"noopener noreferrer nofollow\">Python Microservices With gRPC<\/a>     <\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/netdevops.me\/\" rel=\"noopener noreferrer nofollow\">\u0411\u043b\u043e\u0433 \u0420\u043e\u043c\u0430\u043d\u0430 \u0414\u043e\u0434\u0438\u043d\u0430<\/a> \u0432 \u043e\u0431\u0449\u0435\u043c. \u0418 \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438:         <\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/netdevops.me\/2020\/gnmic-gnmi-cli-client-and-collector\/\" rel=\"noopener noreferrer nofollow\">gNMIc<\/a>             <\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/netdevops.me\/2020\/arista-veos-gnmi-tutorial\/\" rel=\"noopener noreferrer nofollow\">\u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 Arista \u0447\u0435\u0440\u0435\u0437 gNMI<\/a>             <\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"https:\/\/karneliuk.com\/\" rel=\"noopener noreferrer nofollow\">\u0411\u043b\u043e\u0433 \u0410\u043d\u0442\u043e\u043d\u0430 \u041a\u0430\u0440\u043d\u0435\u043b\u044e\u043a\u0430<\/a> \u0432 \u043e\u0431\u0449\u0435\u043c. \u0418 \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438:         <\/p>\n<ul>\n<li>\n<p>OpenConfig. Part 1. <a href=\"https:\/\/karneliuk.com\/2018\/07\/openconfig-w-o-and-w-ansible-for-arista-eos-cisco-ios-xr-and-nokia-sr-os-part-1-interfaces\/\" rel=\"noopener noreferrer nofollow\">How open is OpenConfig<\/a>             <\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/karneliuk.com\/category\/automation\/\" rel=\"noopener noreferrer nofollow\">\u0421\u0435\u0440\u0438\u044f Automation<\/a>             <\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/karneliuk.com\/2020\/10\/pygnmi-2-how-to-use-pygnmi\/\" rel=\"noopener noreferrer nofollow\">Pygnmi \u0431\u043b\u043e\u0433-\u043f\u043e\u0441\u0442<\/a> \u0438 <a href=\"https:\/\/github.com\/akarneliuk\/pygnmi\/tree\/master\/examples\/pure_python\" rel=\"noopener noreferrer nofollow\">\u0440\u0435\u043f\u043e<\/a>.             <\/p>\n<\/li>\n<\/ul>\n<p>       \u041d\u043e \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u043f\u043e\u0435\u0445\u0430\u043b\u0430 \u0432\u0451\u0440\u0441\u0442\u043a\u0430 &#8212; \u0434\u043e \u0447\u0435\u0433\u043e-\u0442\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0434\u043e\u043a\u0430\u043f\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u0430\u043c\u043e\u043c\u0443.     <\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/networkop.co.uk\/\" rel=\"noopener noreferrer nofollow\">\u0411\u043b\u043e\u0433 \u041c\u0438\u0445\u0430\u0438\u043b\u0430 \u041a\u0430\u0448\u0438\u043d\u0430<\/a> \u0432 \u043e\u0431\u0449\u0435\u043c. \u0418 \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438:         <\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/networkop.co.uk\/blog\/2017\/01\/25\/netconf-intro\/\" rel=\"noopener noreferrer nofollow\">Getting Started With NETCONF and YANG on Cisco IOS XE<\/a>             <\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/robshakir\/pyangbind\" rel=\"noopener noreferrer nofollow\">\u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0441 PyangBind<\/a>, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u043c \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043b\u0430\u0441\u0441\u044b Python \u0438\u0437 YANG-\u043c\u043e\u0434\u0435\u043b\u0435\u0439     <\/p>\n<\/li>\n<li>\n<p>\u0414\u043b\u044f \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u0435\u0439 \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u041f\u0438\u0442\u043e\u043d \u043f\u043e \u041b\u0443\u0446\u0443: <a href=\"https:\/\/www.juniper.net\/documentation\/us\/en\/software\/junos\/netconf\/netconf.pdf\" rel=\"noopener noreferrer nofollow\">NETCONF XML Management Protocol Developer Guide<\/a>     <\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/openconfig\/gnoi\" rel=\"noopener noreferrer nofollow\">gRPC Network Operation Interface<\/a>     <\/p>\n<\/li>\n<li>\n<p>\u0421\u043b\u043e\u0436\u043d\u044b\u0439, \u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0439 \u0434\u0436\u0443\u043d\u0438\u043f\u0435\u0440\u043e\u0432\u0441\u043a\u0438\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442: <a href=\"https:\/\/www.juniper.net\/documentation\/us\/en\/software\/junos\/interfaces-telemetry\/topics\/concept\/open-config-grpc-junos-telemetry-interface-understanding.html\" rel=\"noopener noreferrer nofollow\">Understanding OpenConfig and gRPC on Junos Telemetry Interface<\/a>. \u042f \u043d\u0435 \u0447\u0438\u0442\u0430\u043b \ud83d\ude09     <\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/ultraconfig.com.au\/blog\/learn-yang-full-tutorial-for-beginners\/\" rel=\"noopener noreferrer nofollow\">\u041f\u0440\u043e \u043a\u0438\u0448\u043a\u0438 YANG \u0434\u043b\u044f \u043d\u043e\u0432\u0447\u0438\u043a\u043e\u0432<\/a>     <\/p>\n<\/li>\n<\/ul>\n<hr\/>\n<h2>\u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u043d\u043e\u0441\u0442\u0438<\/h2>\n<ul>\n<li>\n<p><a href=\"https:\/\/netdevops.me\/\" rel=\"noopener noreferrer nofollow\">\u0420\u043e\u043c\u0430\u043d\u0443 \u0414\u043e\u0434\u0438\u043d\u0443<\/a> \u0437\u0430 \u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u043a\u0430\u043a \u043f\u043e \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439, \u0442\u0430\u043a \u0438 \u043f\u043e \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u044f\u043c. \u0410 \u0442\u0430\u043a \u0436\u0435 \u0437\u0430 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0439 \u0431\u043b\u043e\u0433 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b. <a href=\"https:\/\/github.com\/hellt\" rel=\"noopener noreferrer nofollow\">GitHub<\/a>.     <\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.linkedin.com\/mwlite\/in\/horseinthesky\" rel=\"noopener noreferrer nofollow\">\u041a\u0438\u0440\u0438\u043b\u043b\u0443 \u041f\u043b\u0435\u0442\u043d\u0451\u0432\u0443<\/a> \u0437\u0430 \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u043e\u0440\u044f\u0434\u043a\u0430 \u0441 NETCONF \u0438 YANG &#8212; \u044f\u0437\u044b\u043a, \u043c\u043e\u0434\u0435\u043b\u0438, \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438, \u0444\u043e\u0440\u043c\u0430\u0442\u044b \u0434\u0430\u043d\u043d\u044b\u0445. \u0418 \u0437\u0430 \u0443\u043c\u0435\u0441\u0442\u043d\u044b\u0435 \u0438 \u043e\u0441\u0442\u0440\u043e\u0443\u043c\u043d\u044b\u0435 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u044f \u043f\u043e \u044f\u0437\u044b\u043a\u0430\u043c \u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u043c. <a href=\"https:\/\/github.com\/horseinthesky\" rel=\"noopener noreferrer nofollow\">GitHub<\/a>, <a href=\"https:\/\/m.facebook.com\/profile.php?id=100000214935640\" rel=\"noopener noreferrer nofollow\">fb<\/a>.     <\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.linkedin.com\/in\/alexander-limonov-802a8399\/\" rel=\"noopener noreferrer nofollow\">\u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440\u0443 \u041b\u0438\u043c\u043e\u043d\u043e\u0432\u0443<\/a> \u0437\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u0434\u0435\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u0439 \u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u0448\u0438\u0431\u043e\u043a.     <\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"v-portal\" style=\"display:none;\"><\/div>\n<\/div>\n<p> <!----> <!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/667440\/\"> https:\/\/habr.com\/ru\/post\/667440\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p><em>\u042d\u0442\u043e \u0432\u0442\u043e\u0440\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f &#8212; \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e-\u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0440\u0430\u0437\u0431\u043e\u0440 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432 \u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0435\u0442\u0438.<\/em><\/p>\n<p><em>\u0415\u0441\u043b\u0438 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u043f\u0440\u0430\u0432\u043a\u0438, \u044f \u043e\u0442\u0441\u044b\u043b\u0430\u044e \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f \u043a <\/em><a href=\"https:\/\/habr.com\/ru\/post\/667012\/\" rel=\"noopener noreferrer nofollow\"><em>\u0441\u0442\u0430\u0442\u044c\u0435-\u0441\u043f\u0443\u0442\u043d\u0438\u043a\u0443<\/em><\/a><em>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u044b \u0434\u0432\u0438\u0433\u0430\u0435\u043c\u0441\u044f \u043e\u0442 \u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u0440\u0435\u043c\u0451\u043d \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u0435 \u0447\u0435\u043b\u043e\u0432\u0435\u0447\u0435\u0441\u0442\u0432\u0430. \u041a\u0430\u043a\u0443\u044e \u0440\u043e\u043b\u044c \u0441\u044b\u0433\u0440\u0430\u043b\u0438 \u0432 \u043d\u0430\u0448\u0435\u043c \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u043c IETF, ISO, \u043e\u043b\u0434\u043e\u0432\u044b\u0435 \u0438 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0432\u0435\u043d\u0434\u043e\u0440\u044b \u0438 \u0434\u0430\u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043b\u044e\u0434\u0438.<\/em><\/p>\n<p><em>\u0412 \u044d\u0442\u043e\u0439 \u0436\u0435 \u043c\u044b \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0434\u0435\u0440\u0435\u0432\u043e XML, \u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043d\u0430 \u0432\u043a\u0443\u0441 \u043a\u0430\u043f\u0430\u0431\u0438\u043b\u0438\u0442\u0438 NETCONF, \u0448\u043b\u0451\u043c \u043f\u0435\u0440\u0432\u044b\u0435 RPC \u0438 \u043d\u0430\u043a\u043e\u043d\u0435\u0446 \u0443\u0436\u0435 \u0440\u0430\u0441\u0441\u0442\u0430\u0432\u0438\u043c \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0431\u0443\u043a\u0432\u044b YANG, OpenConfig, gNMI.<\/em><\/p>\n<p><em>\u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043f\u043e\u043b\u044c\u0437\u0443 \u0432\u0430\u043c \u043f\u0440\u0438\u043d\u0435\u0441\u0443\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u0435 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0435 \u0441\u0442\u0430\u0442\u044c\u0438. \u0412\u0442\u043e\u0440\u0430\u044f \u0431\u0435\u0437 \u043f\u0435\u0440\u0432\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u0430. \u041f\u0435\u0440\u0432\u0430\u044f \u0431\u0435\u0437 \u0432\u0442\u043e\u0440\u043e\u0439 &#8212; \u0431\u0435\u043b\u043b\u0435\u0442\u0440\u0438\u0441\u0442\u0438\u043a\u0430.<\/em><\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0421\u0440\u0430\u0437\u0443 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u044e, \u0447\u0442\u043e \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0438 \u043d\u0443\u0434\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0430\u0432\u0442\u043e\u0440 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0440\u0430\u0437 \u0440\u0435\u0448\u0438\u043b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u0447\u0451\u043c-\u0442\u043e, \u0438 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u0440\u0430\u0437\u043e\u043c. \u0418 \u0432\u0430\u043c, \u043a\u043b\u044f\u043d\u0443\u0441\u044c, \u0435\u0449\u0451 \u043f\u043e\u0432\u0435\u0437\u043b\u043e, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430 \u0434\u0432\u0443\u0445\u0441\u043e\u0442\u0442\u044b\u0441\u044f\u0447\u043d\u043e\u043c \u0441\u0438\u043c\u0432\u043e\u043b\u0435 \u044f \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b, \u043a\u0430\u043a \u0435\u0451 \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u043d\u0430 \u0434\u0432\u0435 \u0447\u0430\u0441\u0442\u0438.<br \/>\u0422\u0443\u0442 \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u043f\u043e \u043a\u043e\u0441\u0442\u043e\u0447\u043a\u0430\u043c \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u0441\u0435\u0442\u0435\u0432\u044b\u043c \u0436\u0435\u043b\u0435\u0437\u043e\u043c.<br \/>\u041b\u0438\u0448\u044c \u0432\u0441\u043a\u043e\u043b\u044c\u0437\u044c \u043c\u044b \u0437\u0430\u0434\u0435\u043d\u0435\u043c CLI \u0438 SNMP, \u043a\u0430\u043a \u043d\u0435 \u0438\u043c\u0435\u044e\u0449\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0437\u043d\u0430\u0447\u0438\u043c\u043e\u0441\u0442\u0438 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438, \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0433\u043b\u0443\u0431\u043e\u043a\u043e \u0441 NETCONF &#8212; \u044d\u0442\u043e \u043d\u043e\u0432\u044b\u0439 SNMP \u0438\u043b\u0438 \u0432\u0441\u0451 \u0436\u0435 \u0443 \u043d\u0435\u0433\u043e \u0435\u0441\u0442\u044c \u0431\u0443\u0434\u0443\u0449\u0435\u0435 \u0445\u043e\u0442\u044f \u0431\u044b \u0441 YANG&#8217;\u043e\u043c, \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u043c RESTCONF&#8217;\u043e\u043c \u0438 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043c \u043d\u0430 \u0438\u043d\u0442\u0440\u0438\u0433\u0443\u044e\u0449\u0435\u043c &#8212; gRPC.<\/p>\n<p>\u041d\u0443 \u0430 \u043f\u043e \u0445\u043e\u0434\u0443 \u043d\u0435\u043c\u0438\u043d\u0443\u0435\u043c\u043e \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c\u0441\u044f \u0441 \u0442\u0435\u043c, \u0437\u0430 \u0447\u0442\u043e \u0441 \u043d\u0430\u0448\u0438\u043c\u0438 \u0433\u043b\u0430\u0437\u0430\u043c\u0438 \u0442\u0430\u043a \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u0435\u0442 XML, \u0441 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0435\u0439 RPC, \u043c\u043e\u0434\u0435\u043b\u044f\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0443\u0441\u043f\u0435\u0435\u043c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 OpenConfig.<\/p>\n<details class=\"spoiler\">\n<summary>\u0412\u0441\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u0410\u0414\u0421\u041c<\/summary>\n<div class=\"spoiler__content\">\n<p><a href=\"https:\/\/habr.com\/ru\/post\/453516\/\" rel=\"noopener noreferrer nofollow\">0. \u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/a><\/p>\n<p><a href=\"https:\/\/habr.com\/ru\/post\/458622\/\" rel=\"noopener noreferrer nofollow\">1. \u0412\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u0435\u0442\u0438<\/a> <\/p>\n<p><a href=\"https:\/\/habr.com\/ru\/post\/475614\/\" rel=\"noopener noreferrer nofollow\">2. \u0414\u0438\u0437\u0430\u0439\u043d \u0441\u0435\u0442\u0438<\/a> <\/p>\n<p><a href=\"https:\/\/habr.com\/ru\/post\/486000\/\" rel=\"noopener noreferrer nofollow\">3. IPAM\/DCIM-\u0441\u0438\u0441\u0442\u0435\u043c\u044b<\/a> <\/p>\n<p><a href=\"https:\/\/habr.com\/ru\/post\/553130\/\" rel=\"noopener noreferrer nofollow\">4. \u0416\u0438\u0437\u043d\u0435\u043d\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438<\/a> <\/p>\n<p><a href=\"https:\/\/habr.com\/ru\/post\/667012\/\" rel=\"noopener noreferrer nofollow\">5. \u0418\u0441\u0442\u043e\u0440\u0438\u044f \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438<\/a><\/p>\n<p><a href=\"https:\/\/habr.com\/ru\/post\/667440\/\" rel=\"noopener noreferrer nofollow\">6. \u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u0441\u0435\u0442\u0435\u0432\u044b\u043c\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438<\/a><\/p>\n<\/div>\n<\/details>\n<hr\/>\n<h2>\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435<\/h2>\n<ul>\n<li>\n<p><a href=\"#CLI\" rel=\"noopener noreferrer nofollow\">CLI &#8212; Command Line Interface<\/a>         <\/p>\n<ul>\n<li>\n<p><a href=\"#NEUN\" rel=\"noopener noreferrer nofollow\">9 \u0433\u0440\u0435\u0445\u043e\u0432 CLI<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#RPC\" rel=\"noopener noreferrer nofollow\">\u041a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f RPC &#8212; Remote Procedure Call<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#NETCONF\" rel=\"noopener noreferrer nofollow\">NETCONF<\/a>         <\/p>\n<ul>\n<li>\n<p><a href=\"#TIMUR_I_EGO_TEAM\" rel=\"noopener noreferrer nofollow\">NETCONF \u0438 \u0435\u0433\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u044b<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#XML\" rel=\"noopener noreferrer nofollow\">&lt;XML\/><\/a>     <\/p>\n<\/li>\n<li>\n<p><a href=\"#NETCONF_AGAIN\" rel=\"noopener noreferrer nofollow\">NETCONF Again<\/a>         <\/p>\n<ul>\n<li>\n<p><a href=\"#NC_OPERATIONS\" rel=\"noopener noreferrer nofollow\">\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438<\/a>             <\/p>\n<\/li>\n<li>\n<p><a href=\"#NC_TOOLS\" rel=\"noopener noreferrer nofollow\">\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0434\u043b\u044f NETCONF<\/a>             <\/p>\n<\/li>\n<li>\n<p><a href=\"#NC_APPLICATIONS\" rel=\"noopener noreferrer nofollow\">\u041a\u0430\u043a \u044d\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c<\/a>             <\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#RESTCONF\" rel=\"noopener noreferrer nofollow\">RESTCONF<\/a>     <\/p>\n<\/li>\n<li>\n<p><a href=\"#CALL_HOME\" rel=\"noopener noreferrer nofollow\">Call-Home<\/a>     <\/p>\n<\/li>\n<li>\n<p><a href=\"#GRPC_GNMI\" rel=\"noopener noreferrer nofollow\">gRPC\/gNMI<\/a>         <\/p>\n<ul>\n<li>\n<p><a href=\"#GRPC\" rel=\"noopener noreferrer nofollow\">gRPC<\/a>             <\/p>\n<\/li>\n<li>\n<p><a href=\"#GNMI\" rel=\"noopener noreferrer nofollow\">gNMI<\/a>             <\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#MODELS\" rel=\"noopener noreferrer nofollow\">\u041c\u043e\u0434\u0435\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0445<\/a>         <\/p>\n<ul>\n<li>\n<p><a href=\"#NATIVE_MODELS\" rel=\"noopener noreferrer nofollow\">Native<\/a>             <\/p>\n<\/li>\n<li>\n<p><a href=\"#STANDARD_MODELS\" rel=\"noopener noreferrer nofollow\">\u0412\u0435\u043d\u0434\u043e\u0440-\u043d\u0435\u0439\u0442\u0440\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438: <\/a><\/p>\n<ul>\n<li>\n<p><a href=\"#STANDARD_MODELS_IETF\" rel=\"noopener noreferrer nofollow\">IETF<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#STANDARD_MODELS_OC\" rel=\"noopener noreferrer nofollow\">OpenConfig<\/a>             <\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#YANG\" rel=\"noopener noreferrer nofollow\">YANG<\/a>         <\/p>\n<ul>\n<li>\n<p><a href=\"#YANG_PRACTICE\" rel=\"noopener noreferrer nofollow\">\u041f\u0440\u0435\u043f\u0430\u0440\u0438\u0440\u0443\u0435\u043c YANG-\u043c\u043e\u0434\u0435\u043b\u044c<\/a>             <\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#MODEL_DRIVEN_PROGRAMMABILITY\" rel=\"noopener noreferrer nofollow\">Model Driven Programmability<\/a>     <\/p>\n<\/li>\n<li>\n<p><a href=\"#ALLTOGETHER\" rel=\"noopener noreferrer nofollow\">\u0412\u0441\u0451 \u0432\u043c\u0435\u0441\u0442\u0435<\/a>         <\/p>\n<ul>\n<li>\n<p><a href=\"#IN_OTHER_WORLDS\" rel=\"noopener noreferrer nofollow\">\u0418 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438<\/a>             <\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#THEEND\" rel=\"noopener noreferrer nofollow\">\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/a>     <\/p>\n<\/li>\n<li>\n<p><a href=\"#LINKS\" rel=\"noopener noreferrer nofollow\">\u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438<\/a>     <\/p>\n<\/li>\n<\/ul>\n<p><a class=\"anchor\" name=\"CLI\" id=\"CLI\"><\/a><\/p>\n<hr\/>\n<h2>CLI &#8212; Command Line Interface<\/h2>\n<p>CLI &#8212; <em>\u0441\u0438\u044d\u043b\u0430\u0439, \u043a\u043b\u0438, \u0441\u043b\u0438, \u0441\u043b\u0430\u0439, \u0441\u043b\u0430\u0438, \u043a\u043e\u043d\u0441\u043e\u043b\u044c, \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b, \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430<\/em>. \u042d\u0442\u043e\u043c\u0443 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0443 \u0443\u0436\u0435 \u043b\u0435\u0442 60. \u0418 \u043e\u043d \u043d\u0438\u043a\u0443\u0434\u0430 \u043d\u0435 \u0434\u0435\u043b\u0441\u044f. \u041e\u043d \u0436\u0438\u0432\u0435\u0435 \u0432\u0441\u0435\u0445 \u0436\u0438\u0432\u044b\u0445 &#8212; \u0433\u0434\u0435-\u0442\u043e \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438, \u0433\u0434\u0435-\u0442\u043e \u0434\u043b\u044f \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438, \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u0434\u043b\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0438 \u0434\u0430\u0436\u0435 \u0434\u043b\u044f \u0435\u0436\u0435\u0434\u043d\u0435\u0432\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b.<br \/> \u041d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430\u0445, \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445, \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445, \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0442\u043e\u0440\u0430\u0445, \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440\u0430\u0445, \u0444\u0430\u0435\u0440\u0432\u043e\u043b\u0430\u0445, \u0410\u0422\u0421, \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0441\u0442\u0430\u043d\u0446\u0438\u044f\u0445. \u0422\u0440\u0443\u0434\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0442\u0430\u043a\u043e\u0435 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435, \u0433\u0434\u0435 \u043d\u0435\u0442 CLI, \u043f\u0443\u0441\u0442\u044c \u0434\u0430\u0436\u0435 \u0445\u043e\u0440\u043e\u0448\u043e \u0441\u043f\u0440\u044f\u0442\u0430\u043d\u043d\u043e\u0433\u043e.<\/p>\n<p>\u0418 \u0432 \u044d\u0442\u043e\u043c \u0435\u0433\u043e \u0441\u0438\u043b\u0430 &#8212; 100% \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043d\u0430 100% \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 CLI. \u041b\u0430\u0434\u043d\u043e 99,9% &#8212; \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0432\u044b\u043a\u0438\u043d\u0443\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0435 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435.<\/p>\n<p>\u042d\u0442\u043e \u043f\u043e\u0440\u043e\u0434\u0438\u043b\u043e \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u044b \u0441\u0442\u0440\u043e\u043a \u043a\u043e\u0434\u0430 \u043d\u0430 Perl, PHP, Python, Go, Ruby, \u0440\u0430\u0437\u0432\u0435\u0441\u0438\u0441\u0442\u044b\u0435 \u0434\u0436\u0438\u043d\u0434\u0436\u0430-\u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0438 \u043f\u043e 300 \u044d\u043a\u0441\u043f\u0435\u043a\u0442\u043e\u0432 \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0441\u043a\u0440\u0438\u043f\u0442\u0435. \u0418 \u0434\u0430\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u0443 \u0442\u044b\u0441\u044f\u0447\u0430\u043c \u043a\u043e\u0434\u0435\u0440\u043e\u0432, \u0432\u044b\u0440\u043e\u0441\u0448\u0438\u0445 \u0438\u0437 \u0441\u0435\u0442\u0435\u0432\u0438\u043a\u043e\u0432 \u0438 \u0430\u0434\u043c\u0438\u043d\u043e\u0432.\u0412\u043e\u0442 \u0443\u0436\u0435 \u043b\u0435\u0442 30, \u0430 \u0442\u043e \u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u043c\u044b \u0441\u0442\u0430\u0440\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0438\u0448\u0435\u043c \u0441\u043a\u0440\u0438\u043f\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441 \u0442\u043e\u0439 \u0438\u043b\u0438 \u0438\u043d\u043e\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u044c\u044e \u0443\u0441\u043f\u0435\u0445\u0430 \u043f\u0440\u0438\u043a\u0438\u0434\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u043c \u043f\u0435\u0440\u0435\u0434 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u043a\u043e\u0440\u043e\u0431\u043a\u043e\u0439.<\/p>\n<p>\u0418 \u0435\u0449\u0451 \u0434\u043e\u043b\u0433\u043e \u043c\u044b \u043d\u0435 \u043e\u0441\u0442\u0430\u043d\u0435\u043c\u0441\u044f \u0431\u0435\u0437 \u0434\u0435\u043b\u0430 &#8212; \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u044e\u0442 \u0432\u0441\u0451 \u043d\u043e\u0432\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0441\u043e\u0444\u0442\u0430, \u0435\u0449\u0451 \u0431\u043e\u043b\u0435\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u0436\u0435\u043b\u0435\u0437\u0430, \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f CLI, \u0438 \u0442\u0430\u043c, \u0433\u0434\u0435 \u0432\u0447\u0435\u0440\u0430 \u0431\u044b\u043b string, \u0437\u0430\u0432\u0442\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 integer. \u0418 \u0442\u0430\u043c, \u0433\u0434\u0435 \u0432\u0447\u0435\u0440\u0430 \u0431\u044b\u043b\u043e <code>no some shitty service enable<\/code>, \u0437\u0430\u0432\u0442\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 <code>some shitty service disable<\/code>. \u0422\u0430\u043c, \u0433\u0434\u0435 \u0432\u0447\u0435\u0440\u0430 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043d\u0430\u0434\u043e \u0431\u044b\u043b\u043e \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c <code>yes<\/code>, \u0437\u0430\u0432\u0442\u0440\u0430 \u0432\u044b\u043b\u0435\u0437\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0430.<\/p>\n<p>\u041a\u043b\u044f\u043d\u0443\u0441\u044c, \u044d\u0442\u043e \u0443\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u0435 \u043f\u0440\u043e\u0434\u043b\u0438\u0442\u0441\u044f \u0435\u0449\u0451 \u0434\u0435\u0441\u044f\u0442\u0438\u043b\u0435\u0442\u0438\u044f.<\/p>\n<p>\u0410 \u0447\u0435\u043c \u0436\u0435 \u043e\u043d\u043e \u0443\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u043e?<\/p>\n<ol>\n<li>\n<p>\u041c\u043e\u0434\u0435\u043b\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043d\u0435 \u0444\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b.<\/p>\n<\/li>\n<li>\n<p>\u041c\u043e\u0434\u0435\u043b\u044c \u0438 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043d\u0435 \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u044b.<\/p>\n<\/li>\n<li>\n<p>CLI \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u0435\u043d.<\/p>\n<\/li>\n<li>\n<p>\u0424\u043e\u0440\u043c\u0430\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0435\u0442 \u044f\u0432\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0441\u0442\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438.<\/p>\n<\/li>\n<li>\n<p>\u0421\u043b\u043e\u0436\u043d\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0442\u044c \u0440\u0430\u0437\u043d\u0438\u0446\u0443 \u043c\u0435\u0436\u0434\u0443 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439.<\/p>\n<\/li>\n<li>\n<p>\u0421\u043b\u043e\u0436\u043d\u043e \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u043f\u0430\u0442\u0447.<\/p>\n<\/li>\n<li>\n<p>\u0422\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u043e\u043d\u043d\u043e\u0441\u0442\u044c \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430.<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0446\u0435\u043b\u0435\u0432\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u2013 \u0437\u0430\u0434\u0430\u0447\u0430 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430.<\/p>\n<\/li>\n<\/ol>\n<p>\u0412\u044b\u0448\u0435 9 \u0441\u043c\u0435\u0440\u0442\u043d\u044b\u0445 \u0433\u0440\u0435\u0445\u043e\u0432 CLI, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u0443\u0441\u043b\u043e\u0432\u0438\u043b\u0438 \u0440\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u044f\u0437\u044b\u043a\u043e\u0432 \u0438\u0445 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f, \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432, \u043a\u0430\u043a SNMP, NETCONF \u0438 gNMI.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0441\u0451 \u043f\u043e \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0438\u0437 \u043d\u0438\u0445 \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0439\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0441\u0435\u043a\u0446\u0438\u044e.<\/p>\n<p><a class=\"anchor\" name=\"NEUN\" id=\"NEUN\"><\/a><\/p>\n<h3>9 \u0433\u0440\u0435\u0445\u043e\u0432 CLI<\/h3>\n<h4>1. \u041c\u043e\u0434\u0435\u043b\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043d\u0435 \u0444\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b<\/h4>\n<p>\u0415\u0441\u0442\u044c \u0442\u0430\u043a\u043e\u0435? \u0415\u0441\u0442\u044c \u0442\u0430\u043a\u043e\u0435.<\/p>\n<p>\u041a\u0430\u043a \u043c\u044b \u0443\u0437\u043d\u0430\u0451\u043c, \u043a\u0430\u043a\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0441 \u043a\u0430\u043a\u0438\u043c\u0438 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0432 \u043a\u0430\u043a\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u043d\u0430\u0434\u043e \u0434\u0430\u0442\u044c?<br \/>\u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e &#8212; \u0438\u0434\u0451\u043c \u0432 <em>Command reference guide<\/em> \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f \u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u043f\u0440\u043e\u0431 \u0438 \u043e\u0448\u0438\u0431\u043e\u043a \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435. \u0418\u043b\u0438 \u0432 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435. \u041d\u043e \u044d\u0442\u0438 \u0434\u0432\u0430 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 (\u0438 \u0435\u0449\u0451 \u043f\u043e\u043c\u043e\u0449\u044c \u0434\u0440\u0443\u0433\u0430) &#8212; \u044d\u0442\u043e \u0442\u043e, \u043a\u0430\u043a \u043c\u044b \u0443\u0437\u043d\u0430\u0451\u043c \u043c\u043e\u0434\u0435\u043b\u044c \u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438.<\/p>\n<p>\u0418 \u0441\u043a\u0430\u0436\u0435\u043c \u0442\u0430\u043a: \u043e\u043d\u0430 \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u0435\u0441\u0442\u044c &#8212; \u0432\u0435\u0434\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043e\u0434\u043d\u0430 \u0438 \u0442\u0430 \u0436\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u043e\u0434\u043d\u043e\u043c\u0443 \u0438 \u0442\u043e\u043c\u0443 \u0436\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0443 (\u043f\u0440\u0430\u0432\u0434\u0430 \u0432\u0435\u0434\u044c? \u041f\u0440\u0430\u0432\u0434\u0430?).<\/p>\n<p>\u0417\u043d\u0430\u0435\u043c \u043a\u0430\u043a \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b, \u0437\u043d\u0430\u0435\u043c \u043a\u0430\u043a \u043e\u043d\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f, \u0433\u0434\u0435 \u0431\u0443\u0434\u0435\u0442 IPv4, \u0430 \u0433\u0434\u0435 IPv6 \u0430\u0434\u0440\u0435\u0441\u0430? \u0415\u0441\u043b\u0438 \u043c\u044b \u0432\u0432\u0435\u0434\u0451\u043c \u0447\u0442\u043e-\u0442\u043e \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, CLI \u0440\u0443\u0433\u043d\u0451\u0442\u0441\u044f, \u043d\u043e \u043c\u044b \u043d\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043c OS \u0432 kernel panic \u0438\u043b\u0438 ASIC \u0432 \u0440\u0435\u0441\u0442\u0430\u0440\u0442?<\/p>\n<p>\u041f\u0440\u043e\u0441\u0442\u043e \u044d\u0442\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0435 \u0444\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430. \u0418\u043b\u0438 \u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435 \u043d\u0430\u043c \u043e\u0431 \u044d\u0442\u043e\u043c \u043d\u0435 \u0433\u043e\u0432\u043e\u0440\u044f\u0442.<br \/>\u0418 \u0434\u0430, \u0441\u0432\u043e\u0438\u043c \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u043e\u043c \u043c\u044b \u0440\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u0442\u0430\u043a\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u0432 \u0441\u0432\u043e\u0435\u0439 \u0433\u043e\u043b\u043e\u0432\u0435 \u0432\u044b\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0438 \u043d\u0430\u0443\u0447\u0430\u0435\u043c\u0441\u044f \u0435\u044e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f.<\/p>\n<p>\u041d\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434, \u043d\u0430\u043c \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0435\u0451 \u0445\u043e\u0440\u043e\u0448\u043e \u0438\u043b\u0438 \u043f\u043b\u043e\u0445\u043e \u0441\u0430\u043c\u0438\u043c \u0444\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c &#8212; \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u044f, \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0432\u0432\u043e\u0434\u0430 \u043a\u043e\u043c\u0430\u043d\u0434, \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0442\u0438\u043f\u044b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439. \u0418 \u0441\u043a\u043e\u0440\u0435\u0435 \u043f\u043b\u043e\u0445\u043e, \u043a\u043e\u043d\u0435\u0447\u043d\u043e.<\/p>\n<h4>2. \u041c\u043e\u0434\u0435\u043b\u044c \u0438 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043d\u0435 \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u044b<\/h4>\n<p>\u0412\u0441\u0451, \u0447\u0442\u043e \u043c\u044b \u0438\u0437\u0443\u0447\u0438\u043b\u0438 \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u044d\u0442\u0430\u043f\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u0432 \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 &#8212; \u0438 \u043c\u044b \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0435\u0440\u0435\u043e\u0431\u0443\u0447\u0430\u0435\u043c \u0441\u0435\u0431\u044f, \u043f\u043e\u0442\u043e\u043c \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u043a\u043e\u0434.<\/p>\n<h4>3. CLI \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u0435\u043d<\/h4>\n<p><code>expect(\"\u0412\u044b \u0442\u043e\u0447\u043d\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c bgp-\u0441\u0435\u0441\u0441\u0438\u044e, mpls \u043d\u0430 \u0432\u0441\u0435\u0439 \u043a\u043e\u0440\u043e\u0431\u043a\u0435 [Y\/n]?\"] Yes!<\/code><br \/><code>expect(\"\u0412\u044b \u0442\u043e\u0447\u043d\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u044d\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0439 [Y\/n]?\"] No!<\/code><\/p>\n<h4>4. \u0424\u043e\u0440\u043c\u0430\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439<\/h4>\n<p>\u041c\u044b \u0437\u0430\u0441\u044b\u043b\u0430\u0435\u043c \u0442\u0443\u0434\u0430 \u043d\u0435\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442. \u041c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043e\u0442\u0442\u0443\u0434\u0430 \u043d\u0435\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442. \u041c\u044b \u0435\u0433\u043e \u043a\u0440\u0430\u0444\u0442\u0438\u043c, \u043c\u044b \u0435\u0433\u043e \u043f\u0430\u0440\u0441\u0438\u043c. \u041c\u044b \u043f\u0438\u0448\u0435\u043c jinja-\u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0438 regexp&#8217;\u044b. \u041c\u044b \u043f\u0440\u043e\u0436\u0438\u0433\u0430\u0435\u043c \u0441\u0432\u043e\u044e \u0436\u0438\u0437\u043d\u044c.<\/p>\n<p>\u041b\u0443\u0447\u0448\u0435 json&#8217;\u044b \u043f\u0435\u0440\u0435\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c.<\/p>\n<blockquote>\n<p>\u0421\u0442\u0440\u043e\u0433\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u0431\u0443\u0434\u044c-\u0442\u043e json \u0438\u043b\u0438 \u0432\u044b\u0432\u043e\u0434 <code>show version<\/code>, \u0432 \u0438\u0442\u043e\u0433\u0435 \u044d\u0442\u043e \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043f\u043e\u0442\u043e\u043a \u0431\u0430\u0439\u0442\u043e\u0432 \u0438 \u043f\u043e \u0441\u0443\u0442\u0438 \u0442\u0435\u043a\u0441\u0442. \u0422\u043e\u043b\u044c\u043a\u043e \u0432 \u043e\u0434\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432 \u043d\u0451\u043c \u0435\u0441\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430, \u0430 \u0432 \u0434\u0440\u0443\u0433\u043e\u043c &#8212; \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u0431\u043e\u0440 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432. <\/p>\n<\/blockquote>\n<h4>5. \u041d\u0435\u0442 \u044f\u0432\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0441\u0442\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438<\/h4>\n<p>\u0412\u044b\u0432\u043e\u0434 CLI \u043d\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043d\u0438 \u0443\u0441\u043f\u0435\u0445, \u043d\u0438 \u043f\u0440\u043e\u0432\u0430\u043b. Warning \u0435\u0449\u0451 \u043d\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0448\u043b\u043e \u043d\u0435 \u0442\u0430\u043a. \u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0432\u044b\u0432\u043e\u0434\u0430 &#8212; \u0435\u0449\u0451 \u043d\u0435 \u043f\u0440\u0438\u0437\u043d\u0430\u043a \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0441\u0442\u0438.<\/p>\n<h4>6. \u0421\u043b\u043e\u0436\u043d\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0442\u044c \u0440\u0430\u0437\u043d\u0438\u0446\u0443 \u043c\u0435\u0436\u0434\u0443 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439<\/h4>\n<p>\u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0434\u0438\u0444\u0430\u0442\u044c \u0434\u0432\u0430 \u0442\u0435\u043a\u0441\u0442\u0430. \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u044d\u0442\u0438\u0445 \u0442\u0435\u043a\u0441\u0442\u0430\u0445 \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u0442\u0440\u043e\u043a. \u041e\u0434\u043d\u0430 \u0438 \u0442\u0430 \u0436\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c (\u0438 \u0431\u0443\u0434\u0435\u0442) \u0440\u0430\u0437\u043d\u043e\u0439 \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 \u041f\u041e. \u0420\u0430\u0437\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u0436\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u043d\u0430\u043f\u0440\u043e\u0442\u0438\u0432 \u043c\u043e\u0436\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0437\u043d\u0430\u0447\u0438\u0442\u044c \u0432 \u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435, \u0430 \u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u0437\u043d\u0430\u0447\u0438\u0442\u044c. \u041e\u0434\u043d\u0430 \u0438 \u0442\u0430 \u0436\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0430, \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430\u0445 \u043c\u043e\u0436\u0435\u0442 \u043e\u0437\u043d\u0430\u0447\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u043e\u0435 (\u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u0435 MPLS \u043d\u0430 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 \u0438\u043b\u0438 \u0432 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 &#8212; \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u044f). \u0414\u0430\u0436\u0435 IPv6-\u0430\u0434\u0440\u0435\u0441\u0430 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u0432 \u0441\u043e\u043a\u0440\u0430\u0449\u0451\u043d\u043d\u043e\u043c \u0438\u043b\u0438 \u043f\u043e\u043b\u043d\u043e\u043c \u0432\u0438\u0434\u0435.<\/p>\n<h4>7. \u0421\u043b\u043e\u0436\u043d\u043e \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u043f\u0430\u0442\u0447<\/h4>\n<p>\u041a\u0430\u043a \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u043f\u0443\u043d\u043a\u0442\u0430 &#8212; \u0432\u044b\u044f\u0441\u043d\u0438\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c &#8212; \u0442\u043e\u0436\u0435 \u043d\u0435\u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u043e. \u041d\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u043c\u0435\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c, \u043d\u043e \u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0443\u0434\u0430\u043b\u044f\u0442\u044c &#8212; \u0430 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 &#8212; \u043d\u0435 \u043e\u0434\u0438\u043d \u0438 \u043d\u0435 \u0434\u0432\u0430. \u041e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043e\u0442\u0440\u0438\u0446\u0430\u043d\u0438\u0435 \u043f\u0440\u044f\u043c\u043e\u0439. \u0427\u0430\u0441\u0442\u043e \u043d\u0443\u0436\u043d\u044b \u043d\u0435 \u0432\u0441\u0435 \u0435\u0451 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b. \u0412 \u043a\u0430\u043a\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u043e\u0442\u043c\u0435\u043d\u044f\u0442\u044c &#8212; \u0438 \u043d\u0435 \u043f\u043e\u043b\u043e\u043c\u0430\u0435\u0442 \u043b\u0438 \u044d\u0442\u043e \u0447\u0435\u0433\u043e-\u0442\u043e \u0435\u0449\u0451? \u0414\u0430\u0436\u0435 \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u043b\u0438.<\/p>\n<h4>8. \u0422\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u043e\u043d\u043d\u043e\u0441\u0442\u044c \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430<\/h4>\n<p>\u0412 \u0446\u0435\u043b\u043e\u043c \u043c\u044b \u0443\u0436\u0435 \u0438\u0437\u0431\u0430\u043b\u043e\u0432\u0430\u043d\u044b \u043a\u043e\u043c\u043c\u0438\u0442\u0430\u043c\u0438 &#8212; \u043c\u043d\u043e\u0433\u0438\u0435 \u0432\u0435\u043d\u0434\u043e\u0440\u044b \u0435\u0433\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442. \u041d\u043e \u043c\u043d\u043e\u0433\u0438\u0435 \u0435\u0449\u0451 \u043d\u0435\u0442. \u0410 \u0442\u0435, \u043a\u0442\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442, \u043c\u043e\u0436\u0435\u0442 \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0442\u043e\u0436\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c, \u043a\u0430\u043a \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f \u0432\u0432\u043e\u0434\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u043a\u043e\u043c\u043c\u0438\u0442\u0435, \u0438\u043b\u0438 \u043a\u043e\u043c\u043c\u0438\u0442 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0432\u0441\u0435\u0445 \u043a\u043e\u043c\u0430\u043d\u0434 \u0431\u0435\u0437 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0434\u0435\u043b\u044c\u0442\u044b.<\/p>\n<h4>9. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0446\u0435\u043b\u0435\u0432\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u2013 \u0437\u0430\u0434\u0430\u0447\u0430 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430<\/h4>\n<p>\u041e\u043e\u043e, \u044d\u0442\u043e \u0441\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 &#8212; \u0430 \u043a\u0430\u043a \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u043a \u0442\u043e\u043c\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u044b \u0436\u0435\u043b\u0430\u0435\u043c \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u0430 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443? \u041a\u0442\u043e \u0438 \u043a\u0430\u043a \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u043f\u0430\u0442\u0447, \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0433\u043e \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0437\u0430 \u0441\u043e\u0431\u043e\u0439, \u0447\u0442\u043e \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u044d\u0442\u0430\u043b\u043e\u043d\u0443?<\/p>\n<hr\/>\n<blockquote>\n<p>\u041d\u043e \u0442\u0443\u0442 \u0441\u0442\u043e\u0438\u0442 \u0431\u044b\u0442\u044c \u0447\u0443\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u0441\u0442\u043d\u044b\u043c &#8212; \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 CLI \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043b\u043e\u0445. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0435\u043d\u0434\u043e\u0440\u044b \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0442 CLI-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0438\u0437 YANG-\u043c\u043e\u0434\u0435\u043b\u0438, \u0447\u0442\u043e \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442 \u0447\u0451\u0442\u043a\u043e\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0442\u0435\u043c, \u0447\u0442\u043e \u0438 \u043a\u0430\u043a \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 CLI \u0438\u043b\u0438 \u043b\u044e\u0431\u044b\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b.<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 Nokia SR Linux \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u0430 \u0442\u0430\u043a \u0436\u0435 gNMI, JSON-RPC \u0438 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0441 \u0435\u0434\u0438\u043d\u044b\u043c API &#8212; <code>mgmt_srv<\/code> &#8212; \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0444\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u0438\u0437 \u043e\u0434\u043d\u043e\u0439 \u0438 \u0442\u043e\u0439 \u0436\u0435 YANG-\u043c\u043e\u0434\u0435\u043b\u0438, \u043d\u043e \u0438 \u0438\u043c\u0435\u044e\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u043e \u0447\u0442\u0435\u043d\u0438\u044e\/\u0437\u0430\u043f\u0438\u0441\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438.<\/p>\n<p> \u0414\u0438\u0444\u044b, \u043a\u043e\u043c\u043c\u0438\u0442\u044b, \u0434\u0430\u0442\u0430\u0441\u0442\u043e\u0440\u044b \u0438 \u043f\u0440\u043e\u0447\u0435\u0435, \u0442\u043e\u0436\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u0434\u0435\u043b\u0430\u043d\u044b \u0441 \u0443\u043c\u043e\u043c &#8212; \u043a\u0430\u043a \u0443 \u0442\u043e\u0439 \u0436\u0435 Nokia \u0438\u043b\u0438 \u0443 Juniper.<\/p>\n<p>\u041d\u043e \u044d\u0442\u043e \u0432\u0441\u0451, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u0435 \u043e\u0442\u043c\u0435\u043d\u044f\u0435\u0442 \u0444\u0430\u043a\u0442\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043d\u0435\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u043c. <\/p>\n<\/blockquote>\n<p>\u042d\u0442\u043e\u0433\u043e \u0432\u0441\u0435\u0433\u043e, \u043a\u0430\u043a \u043c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0434\u0430\u0436\u0435 \u043d\u0435 \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043d\u0430 CLI.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0431\u044b\u043b \u043e\u043f\u044b\u0442 \u0441 SNMP \u0438 \u0432\u0441\u0435\u043c\u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u043c\u0438 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430\u043c\u0438 (\u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0430\u044e \u043f\u0440\u043e\u0439\u0442\u0438 \u0432 <a href=\"https:\/\/habr.com\/ru\/users\/eucariot\/posts\/drafts\/\" rel=\"noopener noreferrer nofollow\">\u043f\u0435\u0440\u0432\u0443\u044e \u0441\u0442\u0430\u0442\u044c\u044e<\/a>). \u041f\u0440\u0438\u0437\u043d\u0430\u0435\u043c \u0435\u0433\u043e \u0443\u0434\u0430\u0447\u043d\u044b\u043c \u043b\u0438\u0448\u044c \u043f\u043e \u0442\u043e\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u0435, \u0447\u0442\u043e \u043e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b \u0441\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a \u043d\u043e\u0432\u044b\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u043c \u0438 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430\u043c.<\/p>\n<p>\u041d\u0435 \u0438\u0441\u0447\u0435\u0440\u043f\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043c\u043e\u0436\u043d\u043e \u0441\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a:<\/p>\n<ul>\n<li>\n<p>\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0432\u0438\u0434\u0435,<\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445,<\/p>\n<\/li>\n<li>\n<p>\u0427\u0438\u0442\u0430\u0435\u043c\u043e\u0441\u0442\u044c \u0434\u043b\u044f \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0441\u0430\u043c\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438,<\/p>\n<\/li>\n<li>\n<p>\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c &#8212; \u0437\u0430\u0434\u0430\u0447\u0443 \u043d\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e &#8212; \u043f\u0440\u043e\u0438\u0433\u0440\u0430\u0442\u044c,<\/p>\n<\/li>\n<li>\n<p>\u041c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043e\u0441\u043d\u043e\u0432\u0430\u043d \u043d\u0430 \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u044f\u0445,<\/p>\n<\/li>\n<li>\n<p>\u0422\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u043e\u043d\u043d\u043e\u0441\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0438 \u0438\u0445 \u043e\u0442\u043a\u0430\u0442,<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0446\u0435\u043b\u0435\u0432\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f.<\/p>\n<\/li>\n<\/ul>\n<p>\u041d\u0435 \u0432\u0441\u0435 \u043e\u043d\u0438 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u0441\u0440\u0430\u0437\u0443. \u041d\u0435 \u0432\u0441\u0435 \u043e\u043d\u0438 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c. \u041d\u043e \u044d\u0442\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u0430\u044f \u0438 \u043f\u0440\u0438\u044f\u0442\u043d\u0430\u044f \u0446\u0435\u043b\u044c.<\/p>\n<p>\u0418 \u043d\u0430 \u0437\u0430\u043c\u0435\u043d\u0443 SNMP, \u0432 \u043f\u043e\u0434\u043c\u043e\u0433\u0443 CLI \u0437\u0430\u0440\u043e\u0434\u0438\u043b\u0441\u044f NETCONF, \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u0438\u0434\u0435\u044e RPC &#8212; Remote Procedure Call. \u0427\u0442\u043e \u0437\u0430 RPC, \u043a\u0430\u043a\u043e\u0435 \u0443 \u043d\u0435\u0433\u043e \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0441 API \u0432\u044b \u0442\u0430\u043a \u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0437\u043d\u0430\u0442\u044c \u0438\u0437 \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438. \u041d\u0443, \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u043a\u043e\u0440\u043e\u0442\u043a\u043e.<\/p>\n<p><a class=\"anchor\" name=\"RPC\" id=\"RPC\"><\/a><\/p>\n<hr\/>\n<h2>\u041a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f RPC &#8212; Russian Pravoslavnaya Church<\/h2>\n<p>RPC &#8212; \u043a\u043b\u0438\u0435\u043d\u0442-\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u0442\u0430\u043a, \u0441\u043b\u043e\u0432\u043d\u043e \u0431\u044b \u043e\u043d <\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-333871","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/333871","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=333871"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/333871\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=333871"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=333871"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=333871"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}