Ä¿¡¡Â¼

1 NETCONF. 1

1.1 Ö°ÄܽéÉÜ... 1

1.1.1 NETCONF¸ÅÊö... 1

1.1.2 NETCONFµÄºÍ̸½á¹¹... 1

1.1.3 NETCONF»á»°½»»¥¹ý³Ì... 2

1.1.4 ¼øÈ¨»úÔì... 7

1.1.5 ºÍ̸¹æ·¶... 9

1.2 ÅäÖù¤×÷¸ÅÀÀ... 9

1.3 ÅäÖÃNETCONF·þÎñÆ÷Óë¿Í»§¶Ë½øÐÐͨѶ... 9

1.3.1 Ö°Äܼò½é... 9

1.3.2 ÅäÖÃÏÞ¶Å×ëÁìµ¼... 9

1.3.3 ÅäÖóﱸ... 10

1.3.4 ÅäÖò½Öè... 10

1.4 ÅäÖÃNETCONF¼øÈ¨... 11

1.4.1 Ö°Äܼò½é... 11

1.4.2 ÅäÖÃÏÞ¶Å×ëÁìµ¼... 11

1.4.3 ÅäÖò½Öè... 11

1.5 ¼à¶½ÓëÊØ»¤... 12

1.6 µäÐÍÅäÖþÙÀý... 12

1.6.1 NETCONFÅäÖþÙÀý... 12

 


1 NETCONF

1.1?? Ö°ÄܽéÉÜ

1.1.1? NETCONF¸ÅÊö

Ëæ×ÅÍøÂç¹æÄ£µÄÔö´ó¡¢¸´ÔÓÐÔµÄÔö³¤ºÍÒì¹¹ÐԵļÓÇ¿ £¬´«Í³µÄIPÍøÂçÖÎÀíºÍ̸SNMP£¨Simple Network Management Protocol £¬µ¥Ò»ÍøÂçÖÎÀíºÍ̸£©¶Ôµ±Ç°¸´ÔÓÍøÂçµÄÖÎÀí±äµÃÔ½À´Ô½ÄÑÌâ £¬ÓÈÆäÎÞ·¨Âú×ãÅäÖÃÖÎÀíÒÔ¼°´óÐÍÍøÂçµÄÀûÓÃϵͳ¿ª·¢·½ÃæµÄÐèÒª¡£ÎªÁËÌí²¹SNMPµÄ²»¼° £¬IETF×éÖ¯Ôì¶©»ùÓÚXML£¨Extensible Markup Language £¬¿ÉÀ©´óÏóÕ÷˵»°£©µÄÍøÂçÖÎÀíÅäÖúÍ̸¡ª¡ªNETCONF£¨Network Configuration Protocol £¬ÍøÂçÅäÖúÍ̸£©¡£ËüÌṩÁËÒ»Öֿɱà³ÌµÄ¡¢¶ÔÍøÂçÉ豸½øÐÐÅäÖúÍÖÎÀíµÄ²½Öè¡£¸ÃºÍ̸ʹÓÃXMLÌåʽµÄ±¨ÎÄÉèÖòÎÊý¡¢»ñÈ¡²ÎÊýÖµ¡¢»ñȡͳ¼ÆÐÅÏ¢µÈ £¬ÓµÓÐÓÅÁ¼µÄÀ©´óÐÔ £¬Ê¹ÍøÂçÉ豸µÄÅäÖÃÖÎÀí¹¤×÷±äµÃ¸üµ¥Ò»¸ü¸ßЧ¡£

1.1.2? NETCONFµÄºÍ̸½á¹¹

NETCONFµÄͨѶģʽѡȡC/Sģʽ £¬É豸ÉÏÔËÐкÍ̸µÄ·þÎñÆ÷·¨Ê½ £¬Óû§ÔËÐкÍ̸µÄ¿Í»§¶Ë·¨Ê½¡£ºÍ̸±¨ÎÄÌåʽΪXMLÌåʽ £¬Ô̺¬ËùÓÐÅäÖÃÊý¾ÝºÍºÍ̸ÐÂΞùΪXMLÌåʽ¡£ÓëISO/OSI·Ö²ãÀàËÆ £¬NETCONFºÍ̸ÓÉÏÂÖÁÉÏ·ÖΪËIJ㣺´«Êä²ã¡¢RPC²ã¡¢²Ù×÷²ã¡¢ÄÚÈݲã¡£Èçͼ1-1Ëùʾ¡£

ͼ1-1     NETCONFµÄºÍ̸½á¹¹Í¼

image011

 

1.    ´«Êä²ã

´«Êä²ãΪNETCONFºÍ̸Ìṩ°²È«´«Êäͨ· £¬Ê¹ÓÃSSH¡¢SOAPºÍBEEPµÈ°²È«ºÍ̸ £¬µ±Ç°Í¨³£Ê¹ÓÃSSHºÍ̸¡£

2.    RPC²ã

RPC²ãÌṩÁËÒ»¸öµ¥Ò»µÄ¡¢Óë´«ÊäºÍ̸Î޹صĻúÔì £¬Ô̺¬Ò»Ð©ÃýÎó·´À¡ÐÂÎÅÔªËØµÄ»®¶¨¡£RPC²ã½ç˵ÁËÈýÖÖÐÂÎÅÀàÐÍ£º

l  Hello£ºÔÚNETCONF¿Í»§¶ËÓë·þÎñÆ÷¸Õ³ÉÁ¢»á»°Ê±ÊµÏÖÄÜÁ¦¼¯»¥»»¡£

l  RPCºÍRPC-Reply£ºRPCÊÇNETCONF¿Í»§¶ËÌáÒéµÄ·¢Ë͸ø·þÎñÆ÷µÄÒªÇóÐÂÎÅ£»RPC-ReplyÊÇNETCONF·þÎñÆ÷ÏìÓ¦¿Í»§¶ËµÄÏìÓ¦Êý¾Ý £¬²»ÄÜ×Ô¶¯ÌáÒé £¬½öÄÜÔÚÊÕµ½RPCÖ®ºó»Ø¸´ £¬ÇÒ±ØÐëЯ´øÓëÊÕµ½µÄRPCÒ»ÑùµÄmessage-id¡£

l  Notification£ºÒÔ¶©ÔÄ·½Ê½½øÐÐÐÂÎÅ֪ͨ¡£

3.    ²Ù×÷²ã

RPCÖÐÀûÓõĸù»ùÔ­Óï²Ù×÷¼¯ £¬½ç˵ÁË9ÖÖ»ù´¡µÄ²Ù×÷²½Öè¡£

l  »ñÈ¡Êý¾Ý²Ù×÷£ºget¡¢get-config¡£

l  ÅäÖòÙ×÷£ºedit-config¡¢copy-config¡¢delete-config¡£

l  ¶ÔÉ豸ÁÙ½ç×ÊÔ´£¨ÅäÖÃÎļþµÈ£©²¢·¢²Ù×÷ʱµÄËø±£»¤£ºlock¡¢unlock¡£

l  ʵÏֻỰ²Ù×÷£ºclose-session¡¢kill-session¡£

4.    ÄÚÈݲã

ÄÚÈݲãÊDZ»ÖÎÀíµÄÊý¾Ý¶ÔÏó¼¯ÖС£ÄÚÈݲãÊÇNETCONFºÍ̸ĿǰΨһûÓб»³ß¶È»¯¡¢Ã»ÓÐͳһÊý¾ÝÄ£Ð͵IJã¡£

*     ×¢Ã÷

GA»Æ½ð¼×²úƷʹÓÃYANG¶ÔÊý¾Ý½¨Ä£ £¬Ê¹ÓÃXML´«ÊäÊý¾Ý¡£

 

ͼ1-2     NETCONF»á»°½»»¥±¨ÎÄʾÒâͼ

image013

 

1.1.3? NETCONF»á»°½»»¥¹ý³Ì

NETCONF»á»°µÄ½»»¥¹ýÈçͼ1-2Ëùʾ £¬Äܹ»·ÖΪÈý²¿ÃÅ¡£

1.    »á»°ÏνÓ

(1)   NETCONF´«Êä²ãÒÀÀµÓÚSSHºÍ̸¡£É豸ÉÏNETCONF·þÎñ¶ËÆô¶¯NETCONF¹ý³Ìºó £¬³ÉÁ¢Ò»¸ö¼àÌý¶Ë¿Ú¡£

(2)   ·þÎñ¶Ë¼àÌý830¶Ë¿Ú £¬³ÉÁ¢SSHͨ·£º¾­¹ýһϵÁеĴ«ÊäË㷨ЭÉÌ£¨ÆäÖÐÔ̺¬ÃÜԿЭÉÌ¡¢Ñ¹ËõËã·¨¡¢¹þÏ£Ëã·¨¡¢¼ÓÃÜËã·¨¡¢ÊðÃûËã·¨µÈ£©ºÍÓû§ÈÏÖ¤ºó³ÉÁ¢SSHͨ·¡£

(3)   NETCONF´«Êä²ãµÄÏνӻỰ³ÉÁ¢ £¬NETCONF¿Í»§¶ËÄܹ»Í¨¹ýÕâ¸ö»á»°Í¬NETCONF·þÎñÆ÷½øÐн»»¥¡£

*     ×¢Ã÷

ºÍ̸»®¶¨NETCONFĬÈϵÄSSH TCP¶Ë¿ÚÊÇ830 £¬Äܹ»Æ¾¾ÝÏÖʵÇé¿ö×ÔÐÐÅäÖÃNETCONF SSH TCP¶Ë¿Ú¡£

 

2.    ÄÜÁ¦¼¯»¥»»

NETCONF»á»°½¨Á¢ÏνÓÖ®ºó £¬Ë«·½µ±¼´Í¨¹ýÏ໥·¢ËÍHello±¨ÎÄÌṩ¸÷×ÔʵÏÖµÄÄÜÁ¦¼¯ £¬¶Ô×Ô¼º²»Àí½âµÄ»òÕßûÓÐʵÏÖµÄÄÜÁ¦½øÐкöÂÔ¡£µ«ÊÇË«·½¶¼±ØÐëÖ§³ÖºÍ̸¸ù»ùÄÜÁ¦£¨urn:ietf:params:netconf:base:1.1£©¡£ÈôÊDZØÒª¼æÈݾɺÍ̸°æ±¾ £¬Ë«·½»¹±ØÒªÖ§³Ö¾ÉºÍ̸¸ù»ùÄÜÁ¦£¨urn:ietf:params:netconf:base:1.0£©¡£×îÖÕ»ñµÃÒ»¸öÁ½¶ËʵÏÖÄÜÁ¦µÄ½»¼¯ £¬ÒÔ½øÐкóÐøµÄÊý¾Ý²Ù×÷ÓëÖÎÀí¡£

*    °ÑÎÈ

¡ñ     »¥»»µÄÄÜÁ¦Öµ³ýÁËÔÚNETCONF RFCÖнç˵µÄ¡°ÄÜÁ¦¡±±í £¬¿ª·¢ÈËÔ±Äܹ»Í¨¹ý×ñÑ­RFCÖÐÃèÊöµÄ¹æ·¶ÌåʽÔö³¤¶î±íµÄ¡°ÄÜÁ¦¡±¡£

¡ñ     ¿Í»§¶Ë·¢¸ø·þÎñ¶ËµÄÄÜÁ¦½»»¥±¨ÎÄ £¬²»µÃ´øÓлỰID½Úµã£¨<session-id>£©¡£

 

3.    ºÍ̸²Ù×÷

l  get£º»ñÈ¡É豸״̬»òÅäÖÃÊý¾Ý¡£

¿Í»§¶Ë·¢Ëͱ¨ÎÄÌåʽÈçÏ£º

<?xml version="1.0" encoding="utf-8"?>

<rpc message-id="xxx " xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">

<get>

<filter type="subtree">

¡¡¡¡¡¡ ÅäÖÃÊý¾Ý£¨»òÕß״̬Êý¾Ý£©¹ýÂ˹涨

</filter>

</get>

</rpc>

·þÎñ¶ËÓ¦´ð±¨ÎÄÌåʽÈçÏ£º

<?xml version="1.0" encoding="utf-8"?>

<rpc-reply message-id="xxx " xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">

<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">

»ñÈ¡µ½µÄÅäÖÃÊý¾Ý£¨»òÕß״̬Êý¾Ý£©

</data>

</rpc-reply>

ÈôÊÇÉ豸ÉÏ״̬Êý¾ÝµÄËùÓÐ×Ó¼¯¶¼ÎÞ·¨Æ¥Åä¹ýÂ˹涨 £¬Ôò»áÓ¦´ð¿ÕµÄdata½Úµã £¬ÈçÏ£º

<?xml version="1.0" encoding="utf-8"?>

<rpc-reply message-id="ÐÂÎÅID " xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">

<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"/>

</rpc-reply>

l  get-config£ºÆ¾¾Ý²Ù×÷ÄÚÈݵĹýÂ˽ڵã»ñÈ¡ÏàÓ¦µÄÅäÖÃÊý¾Ý¡£

¿Í»§¶Ë·¢Ëͱ¨ÎÄÌåʽÈçÏ£º

<?xml version="1.0" encoding="utf-8"?>

<rpc message-id="xxx" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">

<get-config>

<source>

<running/>

</source>

<filter type="subtree">

¡¡¡¡¡¡ºÍ̸¹ýÂ˹涨

</filter>

</get-config>

</rpc>

·þÎñ¶ËÓ¦´ð±¨ÎÄÌåʽÈçÏ£º

<?xml version="1.0" encoding="utf-8"?>

<rpc-reply message-id="xxx" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">

<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">

»ñÈ¡µ½µÄÅäÖÃÊý¾Ý

</data>

</rpc-reply>

ÈôÊÇÉ豸ÉÏÅäÖÃÊý¾ÝµÄËùÓÐ×Ó¼¯¶¼ÎÞ·¨Æ¥Åä¹ýÂ˹涨 £¬Ôò»áÓ¦´ð¿ÕµÄdata½Úµã £¬ÈçÏ£º

<?xml version="1.0" encoding="utf-8"?>

<rpc-reply message-id="xxx " xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">

<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"/>

</rpc-reply>

*     ×¢Ã÷

get-config²Ù×÷ͨ¹ý¸÷Àà×ÓÊ÷¹ýÂ˹涨»ñÈ¡ÏàÓ¦µÄÅäÖÃÊý¾Ý×Ó¼¯ £¬µ«ÊDz»ÄÜ»ñÈ¡É豸״̬Êý¾Ý¡£

 

l  edit-config£ºÆ¾¾ÝÊý¾ÝÄ£Ðͽç˵ÒÔ¼°²Ù×÷ÊôÐÔ½øÐÐÉ豸ÅäÖá£

ÅäÖõı¨ÎÄÖÐ £¬Ô̺¬5¸ö²Ù×÷ÊôÐÔ £¬±ÉÈË·¢µÄXML±¨ÎÄÖÐÅäÖýڵãµÄoperationÊôÐÔÃèÊöÖиø³ö £¬Õâ5¸ö²Ù×÷ÊôÐÔ±ðÀëÊÇ£º

*        merge£º½«edit-config±¨ÎÄÖÐÔ̺¬¸ÃÊôÐÔµÄÅäÖÃÊý¾Ý¹é²¢µ½Ö¸¶¨É豸ÅäÖÃÎļþÖлòÕßÊý¾Ý¿âÖС£ÈôÊÇÅäÖÃÊý¾Ý²»´æÔÚ £¬Ôò´´½¨¸ÃÅäÖÃÊý¾Ý¡£

*        replace£º½«edit-config±¨ÎÄÖÐÔ̺¬¸ÃÊôÐÔµÄÅäÖÃÊý¾Ý´úÌæÖ¸¶¨É豸ÅäÖÃÎļþÖлòÕßÊý¾Ý¿âÖеÄÏàÓ¦ÅäÖÃÊý¾Ý½Úµã¡£ÈôÊǸÃÅäÖÃÊý¾Ý²»´æÔÚ £¬ÔòÖ±½Óƾ¾ÝÏ·¢ÄÚÈÝ´´½¨¸ÃÅäÖá£

*        create£ºÔÚÖ¸¶¨ÅäÖÃÊý¾ÝÎļþÖлòÕßÊý¾Ý¿âÖд´½¨edit-config±¨ÎÄÖÐÔ̺¬¸ÃÊôÐÔµÄÅäÖÃÊý¾Ý¡£ÈôÊÇÅäÖÃÊý¾Ý²»´æÔÚ £¬Ôò³É¹¦Ï·¢ÄÚÈÝ´´½¨¸ÃÅäÖÃÊý¾Ý£»ÈôÊÇÅäÖÃÊý¾ÝÒѾ­´æÔÚ £¬Ôò»áÓ¦´ðrpc-error±¨ÎÄ £¬error-tagֵΪ¡°data-exists¡±¡£

*        delete£ºÔÚÖ¸¶¨ÅäÖÃÊý¾ÝÎļþÖлòÕßÊý¾Ý¿âÖÐɾ³ýedit-config±¨ÎÄÖÐÔ̺¬¸ÃÊôÐÔµÄÅäÖÃÊý¾Ý¡£ÈôÊÇÅäÖÃÊý¾Ý²»´æÔÚ £¬Ôò»áÓ¦´ðrpc-error±¨ÎÄ £¬error-tagֵΪdata-missing£»ÈôÊÇÅäÖÃÊý¾Ý´æÔÚ £¬ÔòÖ±½Óɾ³ýÏàÓ¦µÄÅäÖá£

*        remove£ºÔÚÖ¸¶¨ÅäÖÃÊý¾ÝÎļþÖлòÕßÊý¾Ý¿âÖÐÒÆ³ýedit-config±¨ÎÄÖÐÔ̺¬¸ÃÊôÐÔµÄÅäÖÃÊý¾Ý¡£ÈôÊÇÅäÖÃÊý¾Ý²»´æÔÚ £¬ÔòºöÂԸòÙ×÷·µ»Øok£»ÈôÊÇÅäÖÃÊý¾Ý´æÔÚ £¬ÔòÖ±½ÓÒÆ³ýÏàÓ¦µÄÅäÖá£

¿Í»§¶Ë·¢Ëͱ¨ÎÄÌåʽÈçÏ£º

<?xml version="1.0" encoding="utf-8"?>

<rpc message-id="xxx " xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">

<edit-config>

<target> <running/> </target>

<config xmlns:xc="urn:ietf:params:xml:ns:netconf:base:1.0">

¡¡¡¡¡¡¡¡ÅäÖÃÊý¾Ý

</config>

</edit-config>

</rpc>

·þÎñ¶ËÓ¦´ð±¨ÎÄÌåʽÈçÏ£º

<?xml version="1.0" encoding="utf-8"?>

<rpc-reply message-id="ÐÂÎÅID " xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">

<ok/>

</rpc-reply>

±¨ÎÄÖÐЯ´øerror-option½Úµã¡£error-option½ÚµãÊÇö¾ÙÀàÐ͵Ľڵã £¬É豸Äܹ»Ö§³ÖµÄÖµÓУº

*        continue-on-error£ºedit-config²Ù×÷ʱ £¬Óöµ½ÅäÖ÷¸´í»á¼Í¼µ±Ç°µÄÃýÎó½Úµã²¢³ÖÐø´¦ÖÃÔü×ÒµÄÅäÖà £¬µ«ÊÇ×îºó·µ»ØÃýÎóÐÅÏ¢£¨¼´³öÏÖÈκÎÅäÖÃÃýÎó £¬×îÖÕµÄÓ¦´ð±¨ÎľùΪrpc-error£©¡£

*        stop-on-error£º¸ÃֵΪerror-optionµÄȱʡֵ¡£edit-config²Ù×÷ʱ £¬Óöµ½µÚÒ»¸öÃýÎóʱ £¬ÔòÂíÉÏÖÕ³¡µ±Ç°µÄedit-config²Ù×÷ £¬µ±Ç°ÅäÖñ¨ÎÄÇ°ÃæÅäÖõÄÊý¾Ý¶¼ÒѾ­ÉúЧ£¨·¸´í֮ǰµÄÅäÖã©¡£

ͨ³£ÈçÏÂÌåʽ£º

<?xml version="1.0" encoding="utf-8"?>

<rpc message-id="xxx" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">

<edit-config>

<target> <running/> </target>

<error-option>ÅäÖ÷¸´íʱµÄÐÐΪѡÏî</error-option>

<config xmlns:xc="urn:ietf:params:xml:ns:netconf:base:1.0">¡¡

¡¡¡¡¡¡ ÅäÖÃÊý¾Ý

</config>

</edit-config>

</rpc>

*     ²úÆ·/°æ±¾Ö§³ÖÇé¿ö

ĿǰÉ豸¶Ôreplace²Ù×÷Ôݲ»Ö§³Ö £¬ÈôÊÇÓÐÏ·¢¸ÃÊôÐÔ²Ù×÷°´merge²Ù×÷´¦Öá£

 

*     ×¢Ã÷

¡ñ     edit-config±¨ÎÄÖÐûÓÐЯ´øerror-option½Úµãʱ £¬Ä¬ÈϸýڵãֵΪstop-on-error £¬¼´Ò»µ©Óöµ½Äĸö½ÚµãÅäÖ÷¸´í £¬ÔòÂíÉÏÖÕ³¡Í³Ò»¸ö±¨ÎÄÖÐÔü×ҵĺóÐøÅäÖò¢·µ»ØÃýÎó(rpc-error)¡£

¡ñ     edit-config±¨ÎÄÖÐûÓÐЯ´øtest-option½Úµã £¬Ä¬ÈϸýڵãµÄֵΪtest-then-set¡£

¡ñ     edit-config±¨ÎÄÖÐûÓÐЯ´ødefault-operation½Úµã £¬Ä¬ÈϸýڵãµÄֵΪmerge²Ù×÷¡£

 

l  copy-config£ºÅäÖÃÎļþ¸´Ôì £¬È罫ºòÑ¡ÅäÖø´ÔìÖÁÅäÖÃÎļþ¡¢Æô»úÅäÖø´ÔìÖÁÔËÐÐÅäÖá¢ÔËÐÐÅäÖÃдÈëÆô»úÅäÖõÈ £¬ÕâЩ±ØÒªÖ¸±êÎļþÖ§³Ö¿ÉдµÄÄÜÁ¦¡£

¿Í»§¶Ë·¢ËÍÌåʽÈçÏ£º

<?xml version="1.0" encoding="utf-8"?>

<rpc message-id="xxx"¡¡xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">

¡¡<copy-config>

¡¡¡¡<target>

¡¡¡¡¡¡<startup/>

¡¡¡¡</target>

¡¡¡¡<source>

¡¡¡¡¡¡<running/>

¡¡¡¡</source>

¡¡</copy-config>

</rpc>

·þÎñ¶ËÓ¦´ð±¨ÎÄÌåʽÈçÏ£º

<?xml version="1.0" encoding="utf-8"?>

<rpc-reply message-id="xxx"¡¡xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">

¡¡<ok/>

</rpc-reply>

l  delete-config£ºÉ¾³ýÉ豸ÅäÖÃÎļþ £¬µ«²»ÔÊÐíɾ³ýÉ豸µÄÔËÐÐÎļþ¡£

¿Í»§¶Ë·¢ËÍÌåʽÈçÏ£º

<?xml version="1.0" encoding="utf-8"?>

<rpc message-id="xxx " xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">

?<delete-config>

¡¡ <target>

¡¡¡¡ <startup/>

¡¡ </target>

?</delete-config>

</rpc>

·þÎñ¶ËÓ¦´ð±¨ÎÄÌåʽÈçÏ£º

<?xml version="1.0" encoding="utf-8"?>

<rpc-reply message-id="xxx " xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">

¡¡<ok/>

</rpc-reply>

*     ²úÆ·/°æ±¾Ö§³ÖÇé¿ö

ĿǰÉ豸½öÖ§³Ö½«Æô»úÅäÖÃͬ²½ÖÁÔËÐÐÅäÖá£

 

l  lock£º¶ÔÅäÖÃÊý¾ÝÎļþ½øÐÐËø±£»¤ £¬ÔÊÐíµ±Ç°¿Í»§¶Ë½øÐнӼû»òÕßÅú¸Ä¡£Í¬Ê±ÆäËû¿Í»§¶Ë»òÕß·ÇNETCONF¿Í»§¶Ë£¨ÈçSNMP»òÕßCLI£©ÎÞ·¨½Ó¼û»òÕßÅú¸Ä¡ £¿Í»§¶Ë·¢ËÍÌåʽÈçÏ£º

<?xml version="1.0" encoding="utf-8"?>

<rpc message-id="xxx " xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">

?<lock>

¡¡ <target>

¡¡¡¡ <running/>

¡¡ </target>

?</lock>

</rpc>

·þÎñ¶ËÓ¦´ð±¨ÎÄÌåʽÈçÏ£º

<?xml version="1.0" encoding="utf-8"?>

<rpc-reply message-id="xxx "¡¡xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">

¡¡<ok/>

</rpc-reply>

*     ×¢Ã÷

RFC6241×¢Ã÷lockÊÇÓÃÀ´Ëø¶¨ÅäÖÃÊý¾Ý¿â£¨ÅäÖÃÎļþ£© £¬Ô¤·À¶à¸öÔ´£¨ÈçCLI¡¢SNMPÒÔ¼°¶à¸öNETCONF»á»°µÈ£©Í¬Ê±¶ÔÉ豸µÄÅäÖÃÎļþ½øÐж©Õý £¬µ¼ÖÂÒýÈëÆäËûÎ޹صÄÅäÖö©Õý¡£É豸µ±Ç°Õë¶ÔÕâ¸ö²Ù×÷×öһЩ²Ã¼ô £¬Ö»ÄÜÔ¤·À¶à¸öNETCONF»á»°Í¬Ê±¶©ÕýÔËÐÐÅäÖà £¬±£ÕÏÅäÖÃÊý¾Ý¶©Õý°²È«¡£

 

l  unlock£º¶ÔÅäÖÃÊý¾Ý¿â£¨ÅäÖÃÎļþ £¬ÔÚÉ豸ÖÐÖ¸µÄÊÇÔËÐÐÅäÖ㩽øÐнâËø²Ù×÷ £¬Óëlock²Ù×÷ÊdzɶԲÙ×÷¡£

¿Í»§¶Ë·¢ËÍÌåʽÈçÏ£º

<?xml version="1.0" encoding="utf-8"?>

<rpc message-id="xxx "¡¡xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">

?<unlock>

¡¡ <target>

¡¡¡¡ <running/>

¡¡ </target>

?</unlock>

</rpc>

·þÎñ¶ËÓ¦´ð±¨ÎÄÌåʽÈçÏ£º

<?xml version="1.0" encoding="utf-8"?>

<rpc-reply message-id="xxx "¡¡xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">

¡¡<ok/>

</rpc-reply>

l  close-session£º¹Ø¹Øµ±Ç°»á»° £¬Ô̺¬×ÊÔ´¡¢ËøµÄ¿ªÊÍÒÔ¼°ÏνӶϿªµÈ¡£

¿Í»§¶Ë·¢ËÍÌåʽÈçÏ£º

<?xml version="1.0" encoding="utf-8"?>

<rpc message-id="xxx" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">

¡¡ <close-session/>

</rpc>

·þÎñ¶ËÓ¦´ð±¨ÎÄÌåʽÈçÏ£º

<?xml version="1.0" encoding="utf-8"?>

<rpc-reply message-id="xxx"¡¡xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">

¡¡<ok/>

</rpc-reply>

*     ×¢Ã÷

ʹÓÃclose-session²Ù×÷¹Ø¹Øµ±Ç°»á»°Ê± £¬ÈôÊÇÓÐÒµÎñÔÚ´¦Öà £¬±ØÐë±£Õϵ±Ç°ÒµÎñ´¦ÖýáÊø £¬²¢ÇÒ²»ÔÙ½ÓÊÜеĴ¦Öô¦ÖÃÒªÇó £¬ÔÙÖ´ÐйعػỰ²Ù×÷¡£

 

l  kill-session£ºÇ¿Ôì¹Ø¹Ø»á»° £¬Ô̺¬×ÊÔ´¡¢ËøµÄ¿ªÊÍÒÔ¼°ÏνӶϿªµÈ¡£

*    °ÑÎÈ

¡ñ     ʹÓÃkill-session²Ù×÷Ç¿ÐйعػỰʱ £¬ÈôÊÇÓе±Ç°ÒµÎñÔÚ´¦Öà £¬±ØÐëÖÕ³¡´¦Öà £¬²¢ÇÒ½«Î´ÊµÏÖµÄÒµÎñ»Ø¹öÖÁÒµÎñ´¦ÖÃÆðͷ֮ǰ £¬ÔÙÖ´ÐйعػỰҪÇó¡£

¡ñ     kill-session²Ù×÷²»ÔÊÐí¹Ø¹Øµ±Ç°»á»°¡£

 

1.1.4? ¼øÈ¨»úÔì

NETCONF¼øÈ¨»úÔìÓÃÓÚÖÎÀíÌØ¶¨Óû§Ö´ÐÐNETCONF²Ù×÷ºÍ½Ó¼ûNETCONF×ÊԴȨÏÞ £¬Ê¹ÕâЩÓû§Ö»ÄÜÖ´Ðлò½Ó¼ûNETCONFºÍ̸»®¶¨µÄ²Ù×÷ºÍÊý¾Ý½ÚµãÐÅÏ¢¡£

1.    NETCONF¼øÈ¨Ö°ÄÜÖ§³ÖµÄ½Ó¼ûȨÏÞ

ȱʡÇéÇé¿öÏ £¬Ã»ÓÐÅäÖÃNETCONF¼øÈ¨Ö°ÄÜ £¬ÈÏÖ¤Óû§ÓµÓÐËùÓÐNETCONFȨÏÞ¡£Ö§³ÖµÄ½Ó¼ûȨÏÞÈçÏ£º

l  Create£ºÔÊÐíºÍ²»ÈÝÔö³¤ÐµÄÊý¾Ý½Úµã¡£

l  Read£ºÔÊÐíºÍ²»ÈݶÁÈ¡Êý¾Ý½ÚµãÐÅÏ¢¡£

l  Update£ºÔÊÐíºÍ²»ÈݸüÐÂÊý¾Ý½Úµã¡£

l  Delete£ºÔÊÐíºÍ²»ÈÝɾ³ýÊý¾Ý½Úµã¡£

l  Exec£ºÔÊÐíºÍ²»ÈÝËùÓеĺÍ̸²Ù×÷¡£

2.    NETCONF¼øÈ¨Ö°ÄÜÖ§³ÖµÄÄÚÈÝ

NETCONF¼øÈ¨Ö°ÄÜÖ§³ÖµÄÄÚÈÝÔ̺¬RPC²½Öè¼øÈ¨ºÍÊý¾Ý½Úµã¼øÈ¨¡£

l  RPC²½Öè¼øÈ¨

NETCONFµÄRPC²½Öè¼øÈ¨ÓÃÓÚ½ÚÔìNETCONFºÍ̸»®¶¨µÄ²Ù×÷²½ÖèȨÏÞ¡£¾ßÌåRPC²½ÖèÒÔ¼°Ä¬ÈÏȨÏÞÈç±í1-1Ëùʾ¡£

±í1-1     RPC²½ÖèÒÔ¼°Ä¬ÈÏȨÏÞ×¢Ã÷±í

RPC²½Öè

Ö°ÄÜ×¢Ã÷

ĬÈÏȨÏÞ£¨¶Á£ºR£»Ð´£ºW£»Ö´ÐУºX£©

get

»ñÈ¡Êý¾Ý

X¨¤R

get-config

»ñÈ¡ÅäÖÃ

X¨¤R

edit-config

Åú¸ÄÅäÖÃ

X¨¤W

copy-config

Ô´ÅäÖôúÌæÖ¸±êÅäÖÃ

X

delete-config

ɾ³ýÅäÖÃ

X

validate

Ó﷨УÑé

X

commit

ºòÑ¡ÅäÖÃÉúЧÔËÐÐÅäÖÃ

X

cancel-commit

È¡µÞconfirmed-commit²Ù×÷

X

discard-changes

ÉÕ»Ù»¹Î´ÉúЧµÄºòÑ¡ÅäÖÃ

X

lock/unlock

ÅäÖÃÉÏËø/½âËø

X

close-session

¹Ø¹Øµ±Ç°»á»°

X

kill-session

¹Ø¹ØÆäËû»á»°

X

get-schema

»ñÈ¡yangÎļþ

X

 

*     ×¢Ã÷

¡ñ     ËùÓеÄRPC²½ÖèĬÈ϶¼±ØÒªÖ´ÐÐȨÏÞÄÜÁ¦²Ù×÷¡£ÆäÖÐget¡¢get-configºÍedit-config±ØÒª²é³­Êý¾Ý½ÚµãµÄ¶ÁºÍдȨÏÞ¡£

¡ñ     close-sessionĬÈÏÔÊÐí £¬ÎÞ·¨ÅäÖò»ÈÝ¡£

¡ñ     delete-configºÍkill-sessionĬÈÏÇé¿öÏÂÊDz»ÈÝ £¬Äܹ»ÅäÖÃÔÊÐí¡£ÆäËûRPC²½Öè £¬Ä¬ÈÏÇé¿öÏÂÊÇÔÊÐí¡£

¡ñ     lock/unlockÊDZØÒªÅä¶Ô £¬Ö»ÓÐÅäÖÃlockȨÏÞ £¬unlockÒ²ÓµÓÐͬÑùȨÏÞ¡£

 

l  Êý¾Ý½Úµã¼øÈ¨

NETCONFµÄÊý¾Ý½Úµã¼øÈ¨ÓÃÓÚ½ÚÔìNETCONFÊý¾Ý½ÚµãµÄȨÏÞ¡ £Äܹ»×öµ½¶ÔËùÓÐÄ £¿é¡¢µ¥¸öÄ £¿éºÍÌØ¶¨µÄÊý¾Ý½ÚµãµÄȨÏÞ½øÐнÚÔì¡£¾ßÌåÇé¿öÈçÏ£º

*        ÈôÊÇÖ»ÅäÖá°/¡± £¬Ôò×¢Ã÷ÊǶÔËùÓÐÄ £¿éµÄÊý¾Ý½ÚµãȨÏÞ½ÚÔì¡£

*        ÈôÊÇÅäÖõ½Ä £¿éÃû £¬Ôò×¢Ã÷ÊǶԵ¥¸öÄ £¿éµÄÊý¾Ý½ÚµãȨÏÞ½ÚÔì £¬ÀýÈ磺/rg-snmp:snmp¡£

*        ÆäËûÇé¿öÔòÊǶԾßÌåÄ £¿éϵÄÊý¾Ý½ÚµãȨÏÞ½ÚÔì¡£

1.1.5? ºÍ̸¹æ·¶

l  RFC4741£ºNETCONF Configuration Protocol

l  RFC4742£ºUsing the NETCONF Configuration Protocol over Secure Shell (SSH)

l  RFC4743£ºUsing NETCONF over the Simple Object Access Protocol (SOAP)

l  RFC4744£ºUsing the NETCONF Protocol over the Blocks Extensible Exchange Protocol (BEEP)

l  RFC5277£ºNETCONF Event Notifications

l  RFC5381£ºExperience of Implementing NETCONF over SOAP

l  RFC5539£ºNETCONF Over Transport Layer Security (TLS)

l  RFC5717£ºPartial Lock RPC for NETCONF

l  RFC6022£ºNETCONF Monitoring Schema

l  RFC6241£ºNetwork Configuration Protocol

l  RFC6242£ºUsing the Network Configuration Protocol over Secure Shell

l  RFC6243£ºWith-defaults capability for NETCONF

l  RFC6470£ºNETCONF Notification Events

l  RFC6536£ºNETCONF Access Control Model (NACM)

*     ×¢Ã÷

RFC4741ºÍRFC4742ÒѱðÀë±»RFC6241ºÍRFC6242È¡´ú¡£

 

1.2?? ÅäÖù¤×÷¸ÅÀÀ

NETCONFÅäÖù¤×÷ÈçÏ£º

(1)   ÅäÖÃNETCONF·þÎñÆ÷Óë¿Í»§¶Ë½øÐÐͨѶ

(2)   £¨¿ÉÑ¡£©ÅäÖÃNETCONF¼øÈ¨

1.3?? ÅäÖÃNETCONF·þÎñÆ÷Óë¿Í»§¶Ë½øÐÐͨѶ

1.3.1? Ö°Äܼò½é

ÔÚNETCONF·þÎñÆ÷¶Ë¿ªÆôNETCONFÖ°ÄÜ £¬Óë¿Í»§¶Ë¿ÉÄÜÕý³£Í¨Ñ¶ £¬ÊµÏÖÖÎÀíÍøÂçÉ豸µÄÖ÷ÕÅ¡£

1.3.2? ÅäÖÃÏÞ¶Å×ëÁìµ¼

l  Ö´ÐÐnetconf yang multi-revisionºÅÁî £¬±ØÐëÔÚNETCONF·þÎñ¶ËÄÜÁ¦±¨ÎÄ£¨Hello£©¹«¸æÖ®Ç°ÅäÖá£

l  Ö´ÐÐno netconf yang multi-revisionºÅÁî £¬±ØÐëÔÚNETCONF·þÎñ¶ËÄÜÁ¦±¨ÎÄ£¨Hello£©¹«¸æÖ®Ç°ÅäÖà £¬ÇÒÄÜÁ¦¹«¸æ±¨ÎÄÖÐÒ»¸öYANGÄ £¿éÖ»¹«¸æËüµ±Ç°×îа汾¡£

l  ÑϸñУÑéģʽ¿ÉÄܻᵼÖ²¿ÃÅÔÚÇáÁ¿¼¶Ð£ÑéģʽÏÂÄܹ»Ï·¢µÄXML±»À¹½Ø¡£

1.3.3? ÅäÖóﱸ

NETCONFºÍ̸³ÐÔØÔÚSSHºÍ̸ÉÏ £¬Òò¶øÔÚʹÓÃNETCONFÖ°ÄÜ֮ǰ £¬±ØÒªÔÚÉ豸ÉÏÏÈÅäÖÃSSH¡£ÅäÖÃÇë²Î¿¼¡°SSHÅäÖᱡ£

1.3.4? ÅäÖò½Öè

(1)   ½øÈëÌØÈ¨Ä£Ê½¡£

enable

(2)   ½øÈëÈ«¾ÖÅäÖÃģʽ¡£

configure terminal

(3)   ÅäÖÃNETCONF·þÎñÆ÷ÊôÐÔ²ÎÊý¡£ÒÔÏÂÅäÖþùΪ¿ÉÑ¡ £¬ÇëÆ¾¾ÝÏÖʵÇé¿öÑ¡ÔñÅäÖá£

*        £¨¿ÉÑ¡£©ÅäÖÃNETCONF·þÎñ¿ªÆô¡£

netconf enable

ȱʡÇé¿öÏ £¬NETCONFÖ°ÄÜ´¦ÓÚ¿ªÆô״̬¡£

*        £¨¿ÉÑ¡£©ÅäÖÃNETCONFÖ§³ÖµÄ»á»°×î´óÏνӸöÊý¡£

netconf max-sessions max-sessions-numbers

ȱʡÇé¿öÏ £¬NETCONFÖ§³ÖµÄ»á»°×î´óÏνӸöÊýΪ5¸ö¡£

*        £¨¿ÉÑ¡£©ÅäÖÃNETCONF»á»°edit-config²Ù×÷µÄ³¬²»¶Ï¼ä¡£

netconf timeout timeout

ȱʡÇé¿öÏ £¬NETCONF»á»°edit-config²Ù×÷µÄ³¬²»¶Ï¼äΪ120Ãë¡£

*        £¨¿ÉÑ¡£©ÅäÖÃYANGÄ £¿é¶à°æ±¾¹«¸æ¡£

netconf yang multi-revision

ȱʡÇé¿öÏ £¬NETCONFµÄYANGÄ £¿é¶à°æ±¾¹«¸æÖ°ÄÜ´¦ÓÚ¿ªÆô״̬¡£

*        £¨¿ÉÑ¡£©ÅäÖÃNETCONFÄÜÁ¦¡£

netconf capability{ candidate | rollback | validate }

ȱʡÇé¿öÏ £¬Î´ÅäÖÃNETCONFÓйØÄÜÁ¦Ö°ÄÜ¡£

*        £¨¿ÉÑ¡£©ÅäÖÃNETCONFУÑéģʽ¡£

netconf calibration-mode { lightweight | strict }

ȱʡÇé¿öÏ £¬NETCONFУÑéģʽΪÇáÁ¿¼¶Ð£Ñéģʽ¡£

*        £¨¿ÉÑ¡£©ÅäÖÃNETCONFÈÕÖ¾¿ª¹Ø¡£

netconf log { capability | edit | get | session }

ȱʡÇé¿öÏ £¬NETCONFÈÕÖ¾¿ª¹Ø´¦ÓڹعØ×´Ì¬¡£

*        £¨¿ÉÑ¡£©ÅäÖÃNETCONF·þÎñ¶Ë±êÓï¡£

netconf port port-number

ȱʡÇé¿öÏ £¬NETCONF·þÎñ¶Ë±êÓïΪ830¡£

1.4?? ÅäÖÃNETCONF¼øÈ¨

1.4.1? Ö°Äܼò½é

ÅäÖÃNETCONF¼øÈ¨»úÔìÓÃÓÚÖÎÀíÌØ¶¨Óû§Ö´ÐÐNETCONF²Ù×÷ºÍ½Ó¼ûNETCONF×ÊԴȨÏÞ £¬Ê¹ÕâЩÓû§Ö»ÄÜÖ´Ðлò½Ó¼ûNETCONFºÍ̸»®¶¨µÄ²Ù×÷ºÍÊý¾Ý½ÚµãÐÅÏ¢¡£

1.4.2? ÅäÖÃÏÞ¶Å×ëÁìµ¼

l  ²»ÄÜ´´½¨Óû§×é¡°ÐǺţ¨*£©¡± £¬Óû§×é¡°ÐǺţ¨*£©¡±°µÊ¾ËùÓÐЧ»§×é¡£

l  ¶ÔÓÚµ¥¸ö¹æ¶¨ÁбíÇé¿ö £¬Óû§¹æ¶¨Æ¥ÅäµÄ°¤´ÎÊÇÆ¾¾ÝÓû§ÅäÖõĹ涨°¤´Î½øÐС£ÈôÊDzÙ×÷Æ¥Åäµ½ÔÊÐí¹æ¶¨ £¬Ôò×¢Ã÷²Ù×÷ÊDZ»ÔÊÐí¡£ÈôÊDzÙ×÷Æ¥Åäµ½²»Èݹ涨»òÕßûÓÐÆ¥Åäµ½¹æ¶¨ £¬Ôò×¢Ã÷²Ù×÷ÔÚµ±Ç°¹æ¶¨ÁбíÊDZ»²»ÈÝ¡£

l  ¶ÔÓÚ¶à¸ö¹æ¶¨ÁбíÇé¿ö £¬·ÖÆç¹æ¶¨ÁбíϵĹ涨ҲÊÇÒÀÕÕÓû§ÅäÖõݤ´Î½øÐÐÆ¥Åä¡£ÈôÊDzÙ×÷Æ¥Åäµ½Ò»¸ö¹æ¶¨ÁбíÖеÄÔÊÐí¹æ¶¨ £¬Ôò×¢Ã÷²Ù×÷ÊDZ»ÔÊÐí¡£ÈôÊDzÙ×÷Æ¥Åäµ½²»Èݹ涨 £¬Ôò×¢Ã÷²Ù×÷ÊDZ»²»ÈÝ¡£ÈôÊǵ±Ç°µÄ¹æ¶¨ÁбíûÓÐÆ¥Åäµ½Èκι涨 £¬ÔòÆ¥ÅäÏÂÒ»¸ö¹æ¶¨ÁбíµÄ¹æ¶¨¡£

l  RPC²Ù×÷²½ÖèÔ̺¬get¡¢get-config¡¢edit-config¡¢copy-config¡¢delete-config¡¢validate¡¢commit¡¢cancel-commit¡¢discard-changes¡¢lock¡¢kill-sessionºÍget-schemaµÈ¡£

l  ûÓÐÅäÖù涨ÀàÐÍÇé¿öÏ £¬Ôò°µÊ¾Í¬Ê±¿ªÆô¶ÔRPC²Ù×÷²½ÖèºÍÊý¾Ý½Úµã¹æ¶¨È¨ÏÞ½ÚÔì¡£

l  ¹æ¶¨ÏÂÓÐÅäÖÿªÆôRPC²Ù×÷·½ÂÉÀýÔò½ÚÔì¡£ÈôÊǹ涨ÏÂÅäÖõĽӼû²Ù×÷ȨÏÞÔ̺¬execȨÏÞ £¬Ôò½øÐÐRPC²Ù×÷²½Öè²é³­Ê±»á½øÐиù涨µÄÆ¥Å䣻²»È»½øÐÐRPC²Ù×÷²½Öè²é³­Ê±²»»á½øÐиù涨µÄÆ¥Åä¡£

l  ¹æ¶¨ÏÂÓÐÅäÖÿªÆôÊý¾Ý½Úµã¹æ¶¨½ÚÔì¡£ÈôÊǹ涨ÏÂÅäÖõĽӼû²Ù×÷ȨÏÞÔ̺¬create¡¢read¡¢updateºÍdeleteÖÐÖÁÉÙÒ»ÖÖȨÏÞ £¬Ôò½øÐÐÊý¾Ý½Úµã²é³­Ê±»á½øÐиù涨µÄÆ¥Å䣻²»È»½øÐÐÊý¾Ý½Úµã²é³­Ê±²»»á½øÐиù涨µÄÆ¥Åä¡£

1.4.3? ÅäÖò½Öè

(1)   ½øÈëÌØÈ¨Ä£Ê½¡£

enable

(2)   ½øÈëÈ«¾ÖÅäÖÃģʽ¡£

configure terminal

(3)   ½øÈë¼øÈ¨ÅäÖÃģʽ¡£

netconf acm

(4)   ÅäÖÃÓû§×é²¢½øÈëÓû§×éģʽ¡£

user-group-name name

ȱʡÇé¿öÏ £¬Î´ÅäÖÃÓû§×é¡£

(5)   ÅäÖÃÓû§×鹨ÁªÓû§¡£

user-name name

ȱʡÇé¿öÏ £¬Î´ÅäÖÃÓû§×鹨ÁªÓû§¡£

(6)   Í˳öµ½¼øÈ¨ÅäÖÃģʽ¡£

exit

(7)   ÅäÖù涨ÁÐ±í²¢½øÈë¹æ¶¨Áбíģʽ¡£

rule-list name

ȱʡÇé¿öÏ £¬Î´ÅäÖù涨Áбí¡£

(8)   ÅäÖù涨ÁÐ±í¹ØÁªÓû§×é¡£

user-group { * | name }

ȱʡÇé¿öÏ £¬Î´ÅäÖù涨ÁÐ±í¹ØÁªÓû§×é¡£

(9)   ÅäÖù涨²¢½øÈë¹æ¶¨Ä£Ê½¡£

rule name action { permit | deny }

ȱʡÇé¿öÏ £¬Î´ÅäÖù涨¡£

(10) ÅäÖù涨ÀàÐÍ¡£

rule-type { rpc-name { name | * } | path path }

ȱʡÇé¿öÏ £¬Î´ÅäÖù涨ÀàÐÍ¡£

(11) ÅäÖù涨µÄ½Ó¼û²Ù×÷ȨÏÞ¡£

access-operation { * | { create | delete | exec | read | update } * }

ȱʡÇé¿öÏ £¬Î´ÅäÖù涨µÄ½Ó¼û²Ù×÷ȨÏÞ¡£

1.5?? ¼à¶½ÓëÊØ»¤

Äܹ»Í¨¹ýshowºÅÁîÐв鿴ְÄÜÅäÖúóµÄÔËÐÐÇé¿öÒÔÑéÖ¤ÅäÖóÉЧ¡£

±í1-2     NETCONF¼à¶½ÓëÊØ»¤

×÷ÓÃ

ºÅÁî

²é¿´Óû§¹ØÁªµÄ¹æ¶¨ÁбíÐÅÏ¢¡¢¹æ¶¨Áбí¾ßÌåÐÅÏ¢ºÍÓû§×éÐÅÏ¢

show netconf authorization user-name name { rule-list [ detail ] | user-group }

²é¿´NETCONFµ±Ç°ËùÓеĻỰÐÅÏ¢

show netconf session

²é¿´NETCONFµ±Ç°È«¾Öͳ¼ÆÐÅÏ¢

show netconf statistics

²é¿´É豸µ±Ç°Ö§³ÖµÄËùÓÐyangÎļþ

show netconf yang file

²é¿´É豸µ±Ç°Ö§³ÖµÄËùÓнڵãõè¾¶

show netconf yang node-path

²é¿´É豸µ±Ç°Ö§³ÖµÄËùÓÐyangÄ£ÐÍÊ÷

show netconf yang tree

 

1.6?? µäÐÍÅäÖþÙÀý

1.6.1? NETCONFÅäÖþÙÀý

1.    ×éÍøÐèÒª

¶ÔÓÚ°²È«ÐÔ¡¢¿ÉÀ©´óÐÔÒªÇó¸ßµÄÍøÂçÉ豸ÖÎÀíÐèÒª £¬Äܹ»Ê¹ÓÃNETCONF×÷ÎªÍø¹Ü¹¤¾ß¡£NETCONFµÄ³ÐÔØºÍ̸ΪSSHºÍ̸ £¬SSHºÍ̸×÷ΪÀûÓòãµÄ°²È«ºÍ̸ £¬±£ÏÕÁËNETCONFµÄ°²È«ÐÔ¡£ÒÔͼ1-3ΪÀý £¬Óû§Í¨¹ýNETCONFÍøÂçÖÎÀíÈí¼þ £¬À´¶ÔÍøÂçÉ豸½øÐÐÖÎÀíºÍ¼à¿Ø¡£

2.    ×éÍøÍ¼

ͼ1-3     NETCONF×éÍøÍ¼

image015

 

3.    ÅäÖÃÖØµã

l  ÅäÖÃNETCONF·þÎñ¶ËµÄÍøÂçÖÎÀí¿ÚIPµØÖ· £¬±£ÕÏNETCONFµÄ¿Í»§¶ËÓë·þÎñ¶ËÖ®¼äÈý²ã·Óɿɴï¡£

l  ÔÚNETCONF·þÎñ¶ËÉϲ¿ÊðSSHÖ°ÄÜ¡£

l  ÔÚNETCONF·þÎñ¶ËÉÏÅäÖÃNETCONFÖ°ÄÜÓйزÎÊý £¬ÒÔÂú×ãÏÖʵ³¡¾°ÐèÒª¡£

l  NETCONF¿Í»§¶ËÈí¼þͨ¹ýSSHºÍ̸Ïνӵ½NETCONF·þÎñ¶Ë £¬ÊµÏÖ¶ÔÍøÂçÉ豸µÄÖÎÀíºÍ¼à¿Ø¡£

4.    ÅäÖò½Öè

# ÅäÖÃNETCONF·þÎñ¶ËµÄÍøÂçÖÎÀí¿ÚIPµØÖ·¡£

Hostname> enable

Hostname# configure terminal

Hostname(config)# interface mgmt 0

Hostname(config-if-Mgmt 0)# ip address 172.29.71.62 255.255.255.0

Hostname(config-if-Mgmt 0)# gateway 172.29.71.1

# ¿ªÆôSSHÖ°ÄÜ £¬²¢ÌìÉú±¾µØÃÜÔ¿¡£ÃÜÔ¿ÀàÐ͵ÄÑ¡Ôñ×¼Ôò £¬Çë²Î¿¼¡°SSHºÅÁîÊֲᡱÖеÄcrypto key generateºÅÁîµÄʹÓÃÁìµ¼¡£

Hostname> enable

Hostname# configure terminal

Hostname(config)# enable service ssh-server

Hostname(config)# crypto key generate rsa

% You already have RSA keys.

% Do you really want to replace them? [yes/no]:y

Choose the size of the rsa key modulus in the range of 512 to 2048

and the size of the dsa key modulus in the range of 360 to 2048 for your

Signature Keys. Choosing a key modulus greater than 512 may take

a few minutes.

Choose the size of the ecc key modulus from (256, 384, 521)

 

How many bits in the modulus [1024]:2048

% Generating 2048 bit RSA1 keys ...[ok]

% Generating 2048 bit RSA keys ...[ok]

Hostname(config)#

# ´´½¨Óû§ÃûΪnetconfµÄSSHÓû§ £¬²¢ÅäÖÃÃÜÂëΪnetconf_1234¡£

Hostname(config)# username netconf privilege 15 password netconf_1234

*    °ÑÎÈ

Ϊ±£Õϰ²È«ÐÔ £¬Ç붨ÆÚÅú¸ÄÓû§Ãû¼°ÃÜÂë¡£

 

# ÅäÖÃVTYÏß·±¾µØÓû§ÈÏÖ¤¡£

Hostname(config)# line vty 0 35

Hostname(config-line)# login local

# ÔÚNETCONF·þÎñ¶ËÉÏ¿ªÆôNETCONF·þÎñÖ°ÄÜ¡£

Hostname(config)# netconf enable

# ÔÚNETCONF·þÎñ¶ËÉÏÅäÖÃÖ§³ÖµÄ»á»°×î´óÏνӸöÊýΪ6¡£

Hostname(config)# netconf max-sessions 6

# ÔÚNETCONF·þÎñ¶ËÉÏÅäÖÃNETCONF»á»°edit-config²Ù×÷µÄ³¬²»¶Ï¼äΪ100Ãë¡£

Hostname(config)# netconf timeout 100

# ÔÚNETCONF·þÎñ¶ËÉÏÅäÖÃYANGÄ £¿é¶à°æ±¾¹«¸æ¡£

Hostname(config)# netconf yang multi-revision

# ÔÚNETCONF·þÎñ¶ËÉÏÅäÖÿªÆôNETCONF·þÎñ¶ËcandidateÄÜÁ¦¡£

Hostname(config)# netconf capability candidate

# ÔÚNETCONF·þÎñ¶ËÉÏÅäÖÃNETCONFУÑéģʽΪÇáÁ¿¼¶Ð£Ñéģʽ¡£

Hostname(config)# netconf calibration lightweight

# ÔÚNETCONF·þÎñ¶ËÉÏÅäÖÃNETCONF»á»°ÓйصÄSyslogÈÕÖ¾¿ª¹Ø¡£

Hostname(config)# netconf log session

# ÔÚNETCONF·þÎñ¶ËÉÏÅäÖÃNETCONF·þÎñ¶Ë±êÓïΪ5000¡£

Hostname(config)# netconf port 5000

# Èçͼ1-4Ëùʾ £¬Ê¹ÓÃNETCONF¿Í»§¶ËÈí¼þͨ¹ýSSHºÍ̸µÇ¼µ½NETCONF·þÎñ¶Ë £¬ÊµÏÖ¶ÔÍøÂçÉ豸µÄÖÎÀíºÍ¼à¿Ø¡£

ͼ1-4     NETCONF¿Í»§¶ËÈí¼þµÇ¼É豸ʾÀýͼ

image016

 

5.    ÑéÖ¤ÅäÖÃÁ˾Ö

# ͨ¹ýpingºÅÁî²é¿´NETCONFµÄ¿Í»§¶ËÓë·þÎñ¶ËÊÇ·ñÈý²ã¿É´ï¡£

Hostname# ping oob 172.29.71.100

Sending 5, 100-byte ICMP Echoes to 172.29.71.100, timeout is 2 seconds:

¡¡< press Ctrl+C to break >

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/3 ms.

Hostname#

# ͨ¹ýshow serviceºÅÁî²é¿´SSH·þÎñÊÇ·ñ¿ªÆô¡£

Hostname# show service

snmp-agent¡¡¡¡: enabled

ssh-server¡¡¡¡: enabled

telnet-server : enabled

# ÔÚÉ豸ÉÏͨ¹ýshow netconf sessionºÅÁî²é¿´NETCONF¿Í»§¶ËÈí¼þʹÓÃSSHºÍ̸ÏνÓNETCONF·þÎñ¶Ë³É¹¦¡£

Hostname# show netconf session

************************session information************************

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Session count: 1

*******************************************************************

Session ID¡¡¡¡¡¡¡¡¡¡¡¡¡¡: 20

Session version¡¡¡¡¡¡¡¡ : 1.1

Session transport¡¡¡¡¡¡ : netconf-ssh

Session login IP¡¡¡¡¡¡¡¡: 172.29.69.21¡¡¡¡

Session login time¡¡¡¡¡¡: 2020-12-18T08:26:30Z

Session in rpcs¡¡¡¡¡¡¡¡ : 0

Session in bad rpcs¡¡¡¡ : 0

Session out rpc errors¡¡: 0

Session out notification: 0

Session out rpcs¡¡¡¡¡¡¡¡: 0

Session out send fail¡¡ : 0

Session get¡¡¡¡¡¡¡¡¡¡¡¡ : 0

Session get config¡¡¡¡¡¡: 0

Session edit config¡¡¡¡ : 0

Session copy config¡¡¡¡ : 0

Session delete config¡¡ : 0

Session close session¡¡ : 0

Session unsupport¡¡¡¡¡¡ : 0

Session lock_or_unlock¡¡: 0

===================================================================

6.    ÅäÖÃÎļþ

NETCONF_ServerµÄÅäÖÃÎļþ

hostname Hostname

!

username netconf privilege 15 password netconf_1234

!

netconf log session

netconf capability candidate

netconf port 5000

netconf max-sessions 6

netconf timeout 100

!

enable service ssh-server

!

interface Mgmt 0

?ip address 172.29.71.62 255.255.255.0

?gateway 172.29.71.1

!

line vty 0 35

?login local

!

end

1.6.2? NETCONF¼øÈ¨ÅäÖþÙÀý

1.    ×éÍøÐèÒª

Óû§user1Õ¼ÓÐËùÓÐÄ £¿éµÄget²Ù×÷ȨÏÞ £¬Óû§user2Õ¼ÓжÔSNMPÄ £¿éµÄ´´½¨È¨ÏÞ¡£

2.    ×éÍøÍ¼

ͼ1-5     NETCONF¼øÈ¨×éÍøÍ¼

image018

 

3.    ÅäÖÃÖØµã

ÅäÖÃÓû§user1¶ÔËùÓÐÄ £¿éÓµÓÐget²Ù×÷ȨÏÞ¡£

ÅäÖÃÓû§user2½ö¶ÔSNMPÄ £¿éÕ¼Óд´½¨È¨ÏÞ¡£

4.    ÅäÖò½Öè

(1)   ÅäÖÃÓû§user1¶ÔËùÓÐÄ £¿éÓµÓÐget²Ù×÷ȨÏÞ¡£

# ÅäÖÃÓû§user1¡£

Device> enable

Device# configure terminal

Device(config)# username user1 password test12345

# ÅäÖýøÈë¼øÈ¨Ä£Ê½¡£

Device(config)# netconf acm

# ÅäÖÃÓû§×éguser1¡£

Device(config-nacm)# user-group-name guser1

# ÅäÖÃÓû§×éguser1¹ØÁªÓû§user1¡£

Device(config-nacm-user-group)# user-name user1

Device(config-nacm-user-group)# exit

# ÅäÖù涨Áбírule-list1¡£

Device(config-nacm)# rule-list rule-list1

# ÅäÖù涨Áбírule-list1¹ØÁªÓû§×éguser1¡£

Device(config-nacm-rule-list)# user-group guser1

# ÅäÖÃÔÊÐí¹æ¶¨rule1¡£

Device(config-nacm-rule-list)# rule rule1 action permit

# ÅäÖÃRPC·½ÂÉÀýÔòÀàÐÍget¡£

Device(config-nacm-rule-list-rule)# rule-type rpc-name get

Device(config-nacm-rule-list-rule)# end

(2)   ÅäÖÃÓû§user2½ö¶ÔSNMPÄ £¿éÕ¼Óд´½¨È¨ÏÞ¡£

# ÅäÖÃÓû§user2¡£

Device# configure terminal

Device(config)# username user2 password test12345

# ÅäÖýøÈë¼øÈ¨Ä£Ê½¡£

Device(config)# netconf acm

# ÅäÖÃÓû§×éguser2¡£

Device(config-nacm)# user-group-name guser2

# ÅäÖÃÓû§×éguser2¹ØÁªÓû§user2¡£

Device(config-nacm-user-group)# user-name user2

# ÅäÖù涨Áбírule-list2¡£

Device(config-nacm-user-group)# exit

# ÅäÖù涨Áбírule-list2¹ØÁªÓû§×éguser2¡£

Device(config-nacm)# rule-list rule-list2

Device(config-nacm-rule-list)# user-group guser2

# ÅäÖÃÔÊÐí¹æ¶¨rule2¡£

Device(config-nacm-rule-list)# rule rule2 action permit

# ÅäÖÃÊý¾Ý½Úµã¹æ¶¨ÀàÐÍ £¬²¢ÅäÖÃÊý¾Ý½ÚµãΪSNMPÄ £¿éÃû¡£

Device(config-nacm-rule-list-rule)# rule-type path /rg-snmp:snmp

# ÅäÖýӼû²Ù×÷ȨÏÞΪcreate¡£

Device(config-nacm-rule-list-rule)# access-operation create

5.    ÑéÖ¤ÅäÖÃÁ˾Ö

# ͨ¹ýshow netconf authorization user-name user2 user-groupºÅÁî²é¿´Óû§user1µÄÓû§×éÐÅÏ¢¡£

Device # show netconf authorization user-name user1 user-group

UserGroup: guser1

# ͨ¹ýshow netconf authorization user-name user2 user-groupºÅÁî²é¿´Óû§user1µÄÓû§×éÐÅÏ¢¡£

Device # show netconf authorization user-name user2 user-group

UserGroup: guser2

# ͨ¹ýshow netconf authorization user-name user1 rule-list detailºÅÁî²é¿´Óû§user1¹ØÁªµÄ¹æ¶¨Áбí¾ßÌåÐÅÏ¢¡£

Device# show netconf authorization user-name user1 rule-list detail

RuleList: rule-list1

¡¡-------------------------------------------------------------------

¡¡Rule¡¡¡¡¡¡¡¡¡¡¡¡ Action¡¡ AccessOperation¡¡ Type¡¡¡¡¡¡Entity¡¡¡¡¡¡

¡¡-------------------------------------------------------------------

¡¡rule1¡¡¡¡¡¡¡¡¡¡¡¡permit¡¡ RCUDX¡¡¡¡¡¡¡¡¡¡¡¡ RPC¡¡¡¡¡¡ get

¡¡[R:Read C:Create U:Update D:Delete X:Exec]

# ͨ¹ýshow netconf authorization user-name user2 rule-list detailºÅÁî²é¿´Óû§user2¹ØÁªµÄ¹æ¶¨Áбí¾ßÌåÐÅÏ¢¡£

Device# show netconf authorization user-name user2 rule-list detail

RuleList: rule-list2

¡¡-------------------------------------------------------------------

¡¡Rule¡¡¡¡¡¡¡¡¡¡¡¡ Action¡¡ AccessOperation¡¡ Type¡¡¡¡¡¡Entity¡¡¡¡¡¡

¡¡-------------------------------------------------------------------

¡¡rule2¡¡¡¡¡¡¡¡¡¡¡¡permit¡¡ -C---¡¡¡¡¡¡¡¡¡¡¡¡ PATH¡¡¡¡¡¡/rg-snmp:snmp

¡¡[R:Read C:Create U:Update D:Delete X:Exec]

6.    ÅäÖÃÎļþ

DeviceµÄÅäÖÃÎļþ

hostname Device

!

username user1 password test12345

username user2 password test12345

!

netconf acm

?user-group-name guser1

¡¡user-name user1

?user-group-name guser2

¡¡user-name user2

?rule-list rule-list1

¡¡user-group guser1

¡¡rule rule1 action permit

¡¡ rule-type rpc-name get

?rule-list rule-list2

¡¡user-group guser2

¡¡rule rule2 action permit

¡¡ access-operation create

¡¡ rule-type path /rg-snmp:snmp

!

end

¡¾ÍøÕ¾µØÍ¼¡¿