±à¼ÍƼö: |
±¾ÎÄÀ´Ô´Î¢ÐÅ£¬½éÉÜÁËCLI
£¬Netconf£¬°²È«´«Êä²ã£¬ÏûÏ¢²ã£¬²Ù×÷²ã£¬ÄÚÈݲ㠣¬NAPALMµÈ֪ʶ¡£ |
|

Êý¾ÝÖÐÐÄÍøÂçÔËά×Ô¶¯»¯¸ÃÔõô×ö£¿
Ê×ÏÈ£¬ÈÃÎÒÃǼÙÏëÒ»¸ö³¡¾°£º
ÓÉÓÚÒµÎñ·¢Éú±ä¸ü£¬ÐèҪΪһ¸ö POD ÀïÃæµÄ¼¸Ê®Ì¨½»»»»úÐÞ¸Ä QoS ÅäÖá£×÷ÎªÍøÂçÔËάÈËÔ±£¬Ó¦¸ÃÔõÑù´¦ÀíÕâÏ×÷ÄØ£¿
Èç¹ûÐèÒª±ä¸üµÄ¶ÔÏóÊÇÕû¸öÊý¾ÝÖÐÐŲ̀ÉõÖÁ¼¸Ç§Ì¨½»»»»ú£¬ÓÖ¸ÃÔõÑù´¦ÀíÕâÏ×÷ÄØ£¿
µ±Ï£¬»¥ÁªÍøÐÐÒµÒѾÆÕ±é²ÉÓà DevOps µÄÌåϵÁ÷³Ì¡£¿¿ÈËÁ¦È¥Ò»Ì¨É豸һ̨É豸µÄ¸ü¸ÄÅäÖã¬ÒѾ²»ÔÙÊÇÕýÈ·µÄ˼ά·½Ê½¡£ÔÒò²»½ö½öÊÇÀË·Ñʱ¼ä
¡ª¡ª ÒªÖªµÀ£¬ÈËÈç¹ûÒª³¤Ê±¼ä±£³Ö×¢ÒâÁ¦¼¯ÖУ¬´óÄÔÐèÒªºÄ·Ñ´óÁ¿µÄÄÜÁ¿£¬ºÜÄѱ£Ö¤²»³öÏÖÒÅ©»òÕß´íÎó¡£¶ø»úÆ÷È´²»»á¡£
Òò´Ë£¬ÕýÈ·µÄ·½·¨ÊÇÀûÓà DevOps µÄÁ÷³Ì£¬ÈûúÆ÷À´Íê³ÉÕâÏ×÷¡£ÀýÈç²ÉÓûùÓÚ Python µÄ
SSH ¿â Paramiko »ò Netmiko£¬ÒÔ¼° Ansible »ò SaltStack µÈ×Ô¶¯»¯¹¤¾ß±àдÔËά½Å±¾¡£
Netmiko ¿âºÍ Ansible µÈÔËά¹¤¾ßËäÈ»¿ÉÒÔͨ¹ý³ÌÐò»¯µÄ½Å±¾¶ÔÍøÂçÉ豸ʵÏÖÅúÁ¿¹ÜÀí£¬µ«ÈÔÈ»ÐèÒªÔËά¹¤³Ìʦ¶ÔÍøÂçÉ豸µÄ
CLI ºÜÊìϤ£¬Ô¤ÏÈÔڽű¾Öн¨Á¢ÐèÒª±»Ö´ÐÐµÄ Command ÁÐ±í¡£
CLI
CLI ×î´óµÄÎÊÌâ¾ÍÊÇÔÚ²»Í¬³§É̵ÄÉ豸֮¼ä£¬ÉõÖÁÔÚ²»Í¬°æ±¾Ö®¼ä´æÔڽϴó²îÒì¡£±ÈÈçÔÚij
C ³§É̽»»»»úÉÏÅäÖñßÔµ¶Ë¿Ú£¬²»Í¬µÄ OS °æ±¾ÃüÁî²¢²»Ïàͬ£º

¶ø¶ÔÓÚÁíһЩ³§ÉÌ£¬ÅäÖÃÃüÁîÔò²îÒì¸ü´ó¡£ÀýÈçÔÚij E Æ·ÅÆ ½»»»»úÉÏÅäÖñßÔµ¶Ë¿ÚµÄÃüÁîΪ£º

ÕâÒâζ×Å£ºÈç¹ûÉ豸°æ±¾Éý¼¶£¬¾Í¿ÉÄÜÐèÒª¸ü¸ÄÔËά½Å±¾µÄ´úÂ롣ΪÁ˱ÜÃâ³§Ḛ́󶨣¬ÍøÂçÄÚͨ³£Ò²»áͬʱ´æÔÚ¶à¸ö³§É̵ÄÉ豸£¬ÏàÓ¦µØ£¬Ò²¿ÉÄÜÐèҪ׼±¸¶àÖÖÔËά½Å±¾»òÕßÈÃÔËά½Å±¾±äµÃºÜ¸´ÔÓ
¡ª¡ª ÏÈÅжÏÉ豸ÐͺźͰ汾ºÅ£¬ÔÙÔËÐÐÏàÓ¦µÄ Command-list¡£
ËùÒÔ CLI ²¢²»ÊʺÏÓÃÀ´×÷ΪһÖÖ API¡£ËäÈ»²ÉÓÃ×Ô¶¯»¯¹¤¾ß´¦Àí Commands ¿ÉÒÔ½ÚÊ¡ÍøÂçÔËάÈËÔ±µÄ¹¤×÷Á¿£¬µ«ÊǼ¼ÊõÃż÷ºÍά»¤³É±¾¶¼±È½Ï¸ß¡£SNMP
ËÆºõÊÇÒ»ÖÖ¸üºÃµÄÑ¡Ôñ¡£

SNMP Overview
SNMP µÄÀúÊ·ºÜÓÆ¾Ã£¬µÚ 1 ¸öÓëÖ®Ïà¹ØµÄ RFC 1065 ·¢²¼ÓÚ 1988 Ä꣬¾à½ñÒÑÓÐ 30
Äê¡£ÔÚ SNMP ¼Ü¹¹ÖУ¬Ò»¸öÍøÂçÉ豸ÒÔÊØ»¤½ø³ÌµÄ·½Ê½ÔËÐÐ SNMP Agent£¬¶ø NMS£¨ÍøÂç¹ÜÀíϵͳ£©ºÍÍøÂçÔËάÈËÔ±ËùʹÓõĸ÷ÖÖ
SNMP ¹ÜÀí¹¤¾ßÔò³ÆÎª SNMP Manager¡£SNMP Agent Äܹ»ÏìÓ¦À´×Ô SNMP Manager
µÄ¸÷ÖÖÇëÇóÐÅÏ¢¡£
SNMP Agent »áά»¤Ò»¸ö MIB£¨¹ÜÀíÐÅÏ¢¿â£©£¬ÀïÃæ±£´æ×Å´óÁ¿µÄ OID £¨¶ÔÏó±êʶ·û£©¡£Ò»¸ö
OID ÊÇÒ»¶ÔΨһµÄ Key-Value£¬SNMP Manager Ïò SNMP Agent ²éѯ»òÐÞ¸ÄÈô¸É
KeyËù¶ÔÓ¦µÄ Value£¬¾Í¿ÉÒÔʵÏÖÐÅÏ¢²É¼¯»òÕßÍøÂçÉ豸µÄÅäÖÃÐ޸ġ£

MIB-Example
ÉÏͼÊÇÒ»¸ö MIB ʾÀý£¬Çë×¢Òâ±ê»ÆÉ«µÄ²¿·Ö¡£OID 1.3.6.1.2.1.2.2.1.5 ÓÃÀ´ÒÔ
bps Ϊµ¥Î»ÆÀ¹À½Ó¿ÚÁ÷Á¿£¬ËüÊôÓÚ RFC 1213 ±ê×¼ MIB£¬Ãû³ÆÎª ifSpeed£¬Ö»¶Á¡£ÒòΪÕâ¸ö
MIB ²¢²»ÊÇÎÒ´ÓÕýÔÚÔËÐеÄÉ豸ÉÏÈ¡ÏÂÀ´µÄ£¬ËùÒÔµ±Ç°µÄ Value Ϊ¿Õ¡£
ÐèҪעÒâµÄÊÇ£¬SNMP Manager ²àµÄ MIB ²¢²»ÊDZØÐèµÄ¡£Èç¹ûʹÓÃÊý×Ö OID 1.3.6.1.2.1.2.2.1.5£¬SNMP
Manager ¿ÉÒÔÖ±½Ó´Ó SNMP Agent get½Ó¿ÚÁ÷Á¿´ø¿í£¬¶ø²»ÐèÒª°²×°ÍêÕûµÄ MIB¡£
ÏÖÔÚ SNMP ÔÚÍøÂç¼à¿ØÁìÓòÒѾ±»¹ã·ºÊ¹Óã¬ÀûÓà Zabbix¡¢Nagios¡¢Cacti µÈ¿ªÔ´µÄ
SNMP ¹ÜÀí¹¤¾ß²É¼¯ÍøÂçÉ豸½Ó¿ÚÁ÷Á¿´ø¿íºÍÆäËûÉ豸ÐÅÏ¢£¬Í¬Ê±Ò²ÓдóÁ¿µÄ»ùÓÚ Python µÄ SNMP
¿âÓÃÀ´ÊµÏÖÔËά¿ª·¢£¬ÀýÈç PySNMP¡¢ EasySNMP¡¢ Net-SNMPµÈµÈ£¬²¢ÇÒËüÃǶ¼¿ÉÒÔ¼¯³Éµ½
Ansible ºÍ SaltStack µÈ×Ô¶¯»¯ÔËά¹¤¾ßÉÏ¡£
¿´ÉÏÈ¥»¹²»´í£¬µ«Êµ¼ÊÉÏ SNMP ÈÔÈ»²»ÊÇÒ»¸öºÏÊ浀 API£¬ÒòΪËü´æÔÚ¼¸¸öÎÊÌ⣺
Ì«¹ÅÀÏ£¬²¢·¢ÐÔÄܲ»ºÃ ;
»ùÓÚ UDP ÐÒé´«Ê䣬±È½Ï²»¿É¿¿¡£ËäÈ»ÔÚÓ¦ÓòãÓÐ Response »úÖÆ±£Ö¤¶ª°üÖ®ºóµÄÖØ¸´ get/
set£¬µ«´ú¼Û¾ÍÊÇÐÔÄܺÍÔËÐÐʱ¼ä¶¼Êܵ½Ó°Ï죻
×îÖÂÃüµÄÎÊÌâÊÇ£¬¸÷³§É̶¼´óÁ¿µÄʹÓÃ˽ÓÐ MIB£¬È´²»´æÔÚÒ»¸ö¿ÉÒÔ×Ô¶¯·¢ÏÖÍøÂçÉ豸µ±Ç°Ëù²ÉÓÃµÄ MIB
µÄ»úÖÆ¡£ÍøÂçÔËάÈËÔ±±ØÐë·Ö±ðÏòÉ豸³§ÉÌË÷È¡ÍøÂçÉ豸µÄ MIB£¬ºÄ·Ñ´óÁ¿µÄʱ¼äÕûÀí×Ô¼ºÐèÒªµÄ OID£¬ÔÙÊÖ¹¤µ¼Èëµ½×Ô¶¯»¯ÔËάƽ̨»òÕ߽ű¾µ±ÖС£
ËùÒÔ SNMP ÈÔȻֻÊʺÏÓÃÀ´×öÐÅÏ¢²É¼¯£¬Ìṩ¸æ¾¯ºÍ¿ÉÊÓ»¯±¨±í£¬µ«×Ô¶¯»¯ÔËάµÄ API ÔòÐèÒª¿¼ÂÇÆäËûµÄÑ¡Ïî¡£Õ¾ÔÚÍøÂçÔËάÈËÔ±µÄ½Ç¶È£¬Õâ¸ö
API Ó¦¸ÃÂú×ãÒÔÏÂÒªÇó£º
ÈÝÒ×ʹÓà ¡ª¡ª Usability ÊÇËùÓвúÆ·µÄºËÐļÛÖµ£»
ÐèÒªÄܹ»ÇåÎúµØÇø·Ö¡°ÅäÖÃÊý¾Ý¡±£¬¡°É豸ÔËÐÐ״̬Êý¾Ý¡±ºÍ¡°Í³¼ÆÊý¾Ý¡±£»
ÐèÒªÄܹ»·Ö±ð´Ó¸÷¸öÍøÂçÉ豸»ñÈ¡ÉÏÊö 3 ÖÖÊý¾Ý£¬²¢ÇÒ¿ÉÒÔ·½±ãµØ¶Ô±È²»Í¬É豸µÄÊý¾Ý£»
¿ÉÒÔÈÃÍøÂçÔËάÈËÔ± ͳһµØ ¹ÜÀíÕû¸öÍøÂçµÄËùÓÐÉ豸£¬¶ø²»ÊÇһ̨һ̨µÄµ¥¶À¹ÜÀí£»
¶Ô²»Í¬³§É̵ÄÉ豸¶¼Äܹ»Ê¹ÓÃͬһÖÖÅäÖ÷½·¨£»
ÅäÖñä¸ü¶ÔÍøÂçÒµÎñµÄÓ°ÏìÒª¾¡¿ÉÄܵÄС£»
Äܹ»Ìṩһ¸ö±ê×¼»¯µÄ£¬¶ÔÉ豸 Pulling ºÍ Pushing ÅäÖÃÎļþµÄÁ÷³Ì£¬ÒÔÂú×ã¶ÔÉ豸ÅäÖõı¸·ÝºÍ»Ö¸´µÄÒµÎñÐèÇó£»
Äܹ»ºÜ·½±ãµØ£¬³ÖÐøµØ£¬¼ì²éÉ豸ÅäÖÃÎļþµÄÒ»ÖÂÐÔ£»
Äܹ»Ìṩ»ùÓÚÎı¾µÄÅäÖ÷½Ê½£¬²¢ÇÒ²»»áµ¼ÖÂÅäÖõÄÂÒÐò£¬ÀýÈç²»ÄܽÁÂÒ ACL ¹æÔòµÄ˳Ðò¡£
Äܹ»Âú×ãÕâЩҪÇóµÄÍøÂçÉ豸µÄ±±Ïò API ½Ó¿Ú¾ÍÊÇ Netconf¡£
Netconf
Netconf ÊÇ IETF ·¢²¼µÄ±ê×¼ÐÒ飬ËüµÄÈ«³ÆÊÇ Network Configuration
Protocal¡£´ÓÃû×־ͿÉÒÔ¿´³öÀ´£¬Netconf µÄ×÷ÓÃÊÇ»ùÓÚÍøÂçÀ´°²×°¡¢²Ù×÷ºÍɾ³ýÉ豸µÄÅäÖá£ÔÚ
Netconf µÄ¼Ü¹¹ÖУ¬ÍøÂçÉ豸³äµ± Netconf Server µÄ½ÇÉ«£¬¶øÔËάÈËÔ±µÄÕâÒ»²àÔòÊÇ
Netconf Client¡£´ËÍ⣬ºÍ OSI ±ê׼ģÐÍÒ»Ñù£¬Netconf Ò²ÊÇ·Ö²ã½á¹¹¡£

Netconf 4 Layers
ËüÓÐ 4 ¸ö²ã´Î£¬´Óϵ½ÉÏÒÀ´ÎΪ£º
°²È«´«Êä²ã
°²È«´«Êä²ãÔÚ Netconf Client ºÍ Netconf Server Ö®¼äÌṩ°²È«µÄ¶Ëµ½¶ËÁ¬½Ó¡£Óë
SNMP ²ÉÓ÷ÇÃæÏòÁ¬½ÓµÄ UDP ÐÒ鲻ͬ£¬Netconf ²ÉÓÃÃæÏòÁ¬½ÓµÄ TCP ÐÒ飬ͨ³£ÊÇ
SSH ÐÒ飬±£Ö¤Á¬½ÓµÄ¿É¿¿ÐԺͰ²È«ÐÔ¡£
ÏûÏ¢²ã
ÏûÏ¢²ãÒ²³ÆÎª RPC£¨Ô¶³Ì¹ý³Ìµ÷Ó㩲㡣Netconf Server£¨ÍøÂçÉ豸£©ÉÏÃæ²¿ÊðÁË Netconf
Ó¦Óã¬Netconf Client ÐèÒªµ÷Óà Server ÉϵÄÓ¦ÓÃËùÌṩµÄº¯Êý / ·½·¨£¬µ«ÓÉÓÚ
Client ºÍ Server ²»ÔÚͬһ¸öÄÚ´æ¿Õ¼ä£¬ÎÞ·¨Ö±½Óµ÷Óã¬ËùÒÔÐèҪͨ¹ýÍøÂçÀ´±í´ïµ÷ÓõÄÓïÒ壬²¢´«´ïµ÷ÓõÄÊý¾Ý¡£Õâ¸ö¹ý³Ì£¬³ÆÎª
RPC¡£ËüÌṩÁËÒ»¸ö¼òµ¥µÄ£¬Ó밲ȫ´«Êä²ãÎ޹صĻúÖÆÀ´·â×°²Ù×÷²ãºÍÄÚÈݲãµÄÊý¾Ý£º
RPC µ÷Óãº<rpc>ÔªËØËù·â×°µÄÏûÏ¢£»
RPC ½á¹û£º<rpc-reply>ÔªËØËù·â×°µÄÏûÏ¢£»
ʼþ֪ͨ£º<notification>ÔªËØËù·â×°µÄÏûÏ¢¡£
²Ù×÷²ã
²Ù×÷²ã¶¨ÒåÁËÈçͼËùʾµÄ 9 ÖÖ»ù´¡²Ù×÷¼¯£¬ÆäÖУº
<get>¡¢ <get-config>ÓÃÀ´¶ÔÉ豸½øÐÐȡֵ²Ù×÷£»
<edit-config>¡¢ <copy-config>¡¢ <delete-config>
ÓÃÓÚÅäÖÃÉ豸²ÎÊý£»
<lock> ºÍ <unlock> ÊÇÔÚ¶ÔÉ豸½øÐвÙ×÷ʱ£¬Îª·ÀÖ¹²¢·¢²úÉú»ìÂÒµÄËøÐÐΪ£»
<close-session>ºÍ <kill-session>ÓÃÓÚ½áÊøÒ»¸ö»á»°²Ù×÷¡£
ÄÚÈݲã
¹ËÃû˼Ò壬ÄÚÈݲã¾ÍÊÇÓÃÀ´±í´ïÅäÖÃÊý¾ÝºÍ״̬Êý¾Ý£¬ÍøÂçÔËάÈËÔ±Ö»ÐèÒª¹Ø×¢Êý¾Ý±¾Éí£¬¶ø²»ÐèҪȥ¹Ø×¢É豸µÄÏà¹ØÃüÁî¡£»ù´¡ÍøÂçÉ豸ÔÚÄÚÈݲãËù²ÉÓõÄÊý¾Ý¸ñʽͨ³£ÊÇ
XML£¬µ«Ò²Óг§É̵ÄÊý¾Ý¸ñʽ²ÉÓÃÁË JSON¡£
ËäÈ»ÍøÂçÔËάÈËÔ±²»ÔÙÐèÒª¹Ø×¢É豸µÄÏà¹ØÃüÁîÁË£¬µ«ÈÔÈ»ÎÞ·¨Ö±½ÓʹÓà Netconf ÅäÖÃÉ豸£¬»¹ÐèÒª¿¼ÂÇ
ÅäÖýṹ¡£
ʲô½Ð¡°ÅäÖýṹ¡±ÄØ£¿
¼ÙÈçÎÒÃÇÏÖÔÚÒª½«½»»»»úµÄ 10# ¶Ë¿Ú»®Èë VLAN 20¡£R ³§µÄ½»»»»úÐèÒªÔÚÎïÀí¶Ë¿ÚģʽÏÂÅäÖãº

¶ø H ³§½»»»»úÈ´ÐèÒªÔÚ VLAN Âß¼¶Ë¿ÚģʽÏÂÅäÖãº

´ÓÉÏÃæÁ½¸öÅäÖÃʾÀý¿ÉÒÔ·¢ÏÖ R ³§½»»»»úºÍ H ³§½»»»»úµÄÅäÖýṹÓÐÃ÷ÏÔ²îÒ죬ËùÒÔÎÞ·¨Ö±½ÓʹÓà XML
»òÕß JSON ÐÞ¸ÄËüÃǵÄÉ豸ÅäÖá£
ΪÁ˽â¾öÅäÖýṹµÄÎÊÌ⣬ÐèÒª½« XML ºÍ JSON Êý¾Ý¸ñʽ³éÏó³ÉÒ»¸öͳһµÄ±ê×¼µÄÄ£ÐÍ£¬Õâ¾ÍÊÇ
YANG¡£YANG µÄÈ«³ÆÊÇ Yet Another Next Generation£¬Ã»ÓÐÇ¡µ±µÄÖÐÎÄÀ´·ÒëËü¡£Í¨Ë׵Ľ²£¬YANG
ÊDZí´ï Netconf Ëù²Ù×÷µÄÅäÖÃÊý¾ÝºÍ״̬Êý¾ÝµÄÄ£°å£¬ËüÃèÊöʲô²ÅÊÇ·ûºÏÉ豸ÆÚÍûµÄÊý¾Ý¡£ÓÐÁË YANG
Model£¬ÅäÖýṹ¾Í½»¸øËüÈ¥´¦Àí£¬ÍøÂçÔËάÈËÔ±¾ÍÖ»ÐèÒª×öÒ»¸öÍêÐÎÌî¿Õ¼´¿É¡£
Ìî¿ÕµÄÌâÄ¿´ó¸ÅÊÇÕâÑù×ӵģº

Ìî¿ÕÌâµÄ´ð°¸´ó¸ÅÊÇÕâÑù×ӵģº

Õâ¸ö¹ý³ÌÔÚÂß¼ÉÏ£¬ÓëÏò SNMP µÄ OID Ìî³ä / ¶ÁÈ¡ Value ²î²»¶à¡£
Netconf ºÍ YANG Model µÄ³öÏÖ£¬ÎªÍøÂç×Ô¶¯»¯´øÀ´Á˼«´óµÄ±ãÀû¡£ÅäºÏ×Ô¶¯»¯µÄ³ÌÐò£¬¿ÉÒÔʵÏÖ¶¯Ì¬ÏòÍøÂçÉ豸Ï·¢ÅäÖ㬽«Êý¾ÝÃæºÍ¿ØÖÆÃæ·ÖÀ룬×é³ÉÈí¼þ¶¨ÒåµÄÍøÂç¡£ÊÂʵÉÏ£¬Netconf
Ò²ÊÇ OpenDayLight µÈ¿ªÔ´ SDN Controller Ëù¹ã·ºÊ¹ÓõÄÄÏÏò½Ó¿ÚÖ®Ò»¡£ ´ËÍ⣬Ansible
Ò²¼¯³ÉÁË Netconf µÄ Module£¬²¢ÇÒ¿ÉÒÔͨ¹ý Python À´À©Õ¹ ncclientºÍ
nxpyµÈ¿â£¬ÊµÏÖ¹¦ÄÜÀ©Õ¹¡£
µ« Netconf ¾ÍÊÇÎÒÃÇÔÚѰÕÒµÄÀíÏëµÄ API Âð£¿
Õ¾ÔÚÍøÂçÔËάÕߵĽǶȣ¬´ð°¸È´ÊÇ·ñ¶¨µÄ¡£
ÔÒòÔÚÓںܶ೧ÉÌËäȻ֧³Ö Netconf£¬µ«ÓÐһЩ Key-Value È´´æÔÚ²îÒì¡£±ÈÈçΪÁ˱í´ï¡°¶Ë¿Ú¡±£¬ÓÐЩ³§ÉÌÓÃintf×÷Ϊ
Key£¬µ«ÁíÍâһЩ³§ÉÌÈ´Óà interface×÷Ϊ Key¡£ÁíÒ»¸öÀý×Ó¾ÍÊÇ Uptime£¬É豸ÔËÐÐʱ¼ä£¬¸÷¼Ò³§É̵ÄÉ豸·µ»ØµÄʱ¼ä¸ñʽ¸üÊÇÎ廨°ËÃÅ¡£ÕâÎªÍøÂçÔËάÈËÔ±´¦ÀíÊý¾ÝµÄ¹¤×÷Ôì³ÉÁ˺ܴóµÄÂé·³£¬²»µÃ²»ºÄ·Ñ´óÁ¿µÄʱ¼äºÍ¾«Á¦È¥ÔĶÁÉ豸³§É̵Ä
Netconf Îĵµ£¬È¥±àд´óÁ¿µÄÕýÔò±í´ïʽ¡£
»¹ÓУ¬ËäÈ»Ö÷Á÷µÄ SDN Controller µÄÄÏÏò½Ó¿Ú¶¼Ö§³Ö Netconf£¬µ«ÊÇÔÚʵ¼Ê²¿Êðʱ£¬ºÜÉÙÄÜÓõ¥Ò»µÄ
Controller È¥¿ØÖƶ೧É̵ÄÍøÂçÉ豸¡£Í¨³£¶¼ÊǸ÷¸ö³§ÉÌʹÓÃ×Ô¼ºµÄ SDN Controller
¿ØÖÆ×Ô¼ºµÄÉ豸£¬È»ºóÔÙÓà REST API ÓëÓû§µÄ SDN Controller ¶Ô½Ó¡£

¶à¿ØÖÆÆ÷¼Ü¹¹
ÉÏÎÄËùÌáµ½µÄÍøÂçÔËάÈËÔ±Ëù¹ØÐÄµÄ 9 ´óÎÊÌ⣬Netconf ¼¸ºõ¶¼ÄÜÂú×㣬µ«¾àÀë ÍêÈ« Âú×㻹ÓÐһЩ²î¾à¡£
ÓÐÒ»¸ö½â¾ö°ì·¨£¬¾ÍÊÇÀûÓà NAPALM¡£
NAPALM
NAPALM ÊÇÒ»¸ö Python ¿â£¬ËüµÄÈ«³ÆÊÇ Network Automation and
Programmability Abstraction Layer with Multivendor
support£¬¶à³§ÉÌÖ§³ÖµÄÍøÂç×Ô¶¯»¯ºÍ¿É±à³Ì³éÏó²ã¡£
Ŀǰ Ansible ¼¯³ÉÁË 3 ¸ö NAPALM Ä£¿é£¬·Ö±ðÊÇ£º
napalm_parse_yang£ºÓÃÓÚ´ÓÉ豸»òÎļþÖнâÎöÅäÖà / ״̬Êý¾Ý£»
napalm_diff_yang£ºÓÃÓÚ±È½Ï 2 ¸ö YANG ¶ÔÏóµÄ²îÒ죻
napalm_translate_yang£ºÓÃÓÚ½« YANG ¶ÔÏóתÒë³ÉÉ豸ÔʼµÄÅäÖá£
´ÓÉ豸ȡ³öÔʼÅäÖÃÊý¾Ý / ״̬Êý¾ÝÖ®ºó£¬¿ÉÒÔʹÓà NAPALM ½«Æä·Òë³É±ê×¼¸ñʽµÄ NAPALM
Êý¾Ý¡£·´Ö®£¬Ò²¿ÉÒÔ½«±ê×¼¸ñʽµÄ NAPALM Êý¾Ý·Òë³ÉÉ豸ÔʼÅäÖÃÊý¾Ý£¬²¢ Push µ½ÍøÂçÉ豸ÀïÃæ£¬ÒÔÐÞ¸ÄÉ豸µÄÅäÖÃÎļþ¡£

Netconf & NAPALM
¶Áµ½ÕâÀҲÐíÄúÒѾ²Âµ½ÎÒ½«ÒªËµÊ²Ã´ÁË¡¡
Êǵģ¬NAPALM »¹ÊDz»Äܳ¹µ×½â¾öÍøÂç×Ô¶¯»¯ËùÃæÁÙµÄÎÊÌâ¡£
ÒòΪ¸÷³§ÉÌ Netconf µÄÊý¾Ý±í´ï´æÔںܶà²îÒ죬ËùÒÔ NAPALM ±ØÐëÒªÒÀÀµµÚÈý·½µÄ Module
À´Íê³ÉÔʼÊý¾ÝµÄ½âÎöºÍ·Òë¡£Èç¹ûÒª½âÎö³§ÉÌ A µÄij¸ö OS ϵͳµÄÅäÖ㬾ÍÐèÒªÒ»¸ö OSA_Module£»Èç¹ûÒª½âÎö³§ÉÌ
B µÄij¸ö OS ϵͳµÄÅäÖã¬ÔòÐèÒª OSB_Module¡£ËùÒÔĿǰ NAPALM Ö§³ÖµÄ OS ÀàÐÍ»¹±È½ÏÉÙ£¬½öÏÞÓÚij¼¸¸ö¹úÍâÆ·ÅÆ³§É̵Ä
OS ϵͳ¡£
¼´Ê¹ÊÇÕ⼸¸ö¹úÍâÆ·ÅÆ³§ÉÌ£¬NAPALM ĿǰҲÎÞ·¨ÊµÏÖÍêÕûµÄ¹¦Äܼ¯¡£ËùÒÔ Google µÈÍøÂçÉ豸µÄ´óÓû§Ò»Ö±ÔÚÖÂÁ¦ÓÚÍÆ¹ãÒ»¸öÄܹ»Ìæ´ú
Netconf µÄ±ê×¼»¯½Ó¿Ú£º OpenConfig¡£
OpenConfig
IETF ÒѾΪ Netconf ºÍ YANG Model ·¢²¼Á˺ܶà RFC£¬´Ó 2006 ÄêµÄ
Netconf RFC 4741£¬2010 ÄêµÄ YANG Model RFC 6020£¬µ½ÏÖÔÚÒѾ³¬¹ý
10 Äê¡£¶ø×îеÄÒ»¸ö RFC ÔÚʲôʱºòÄØ£¿¾ÍÔÚ¼¸Ìì֮ǰµÄ 2018 Äê 4 Ô 3 ÈÕ£¬3 ¼ÒÉ豸³§ÉÌÁªºÏÌá½»ÁËÒ»¸ö
OSPF YANG Model µÄ²Ý°¸ ¡ª¡ª ±ê×¼»¯µÄ½øÕ¹Ì«ÂýÁË¡£
Ò²Ðí£¬Õâ¾ÍÊÇÎÊÌâËùÔÚ ¡ª¡ª Netconf ±ê×¼ÊÇÓÉÍøÂçÉ豸³§ÉÌÍÆ¶¯µÄ£¬ÄÚºÄÌ«´ó¡£¸÷¸öÉ豸³§É̶¼Ï£ÍûÔÚÈí¼þ¶¨ÒåÍøÂçµÄʱ´ú¼ÌÐø±£³ÖÓ²¼þÉ豸µÄÖØÒªÐÔ£¬²¢ÇÒÄܹ»ÌåÏÖ×Ô¼º¹«Ë¾²úÆ·µÄ²îÒ컯ÓÅÊÆ¡£
µ«ÊÇ´ÓÍøÂçÔËάÕߵĽǶȿ¼ÂÇ£¬ÕâÏÔÈ»²»ºÏÀí£¬ÒòΪÉ豸³§ÉÌËùÍÆ¶¯µÄ Netconf ±ê×¼²¢²»ÊÇËûÃÇÕæÕýÏëÒªµÄ¡£ËùÒÔ
Google£¬AT&T£¬British Telecom£¬Facebook£¬Apple£¬Microsoft
µÈ»¥ÁªÍø·þÎñÌṩÉ̳ÉÁ¢ÁË OpenConfig ¹¤×÷×飬ϣÍûÌṩһ¸ö ÖÐÁ¢ÓÚÉ豸³§ÉÌ µÄ±ê×¼ API¡£Ä¿Ç°¹úÄÚµÄÌÚѶ¡¢°Ù¶ÈºÍ°¢ÀïµÈ»¥ÁªÍø·þÎñÌṩÉÌÒ²ÒѾ¼ÓÈëÁË
OpenConfig ¹¤×÷×é¡£
OpenConfig ÑØÓÃÁË Netconf µÄÐÒé¿ò¼Ü£¬µ«ÊÇËü²»Ì«¹Ø×¢µ×²ãµÄÊý¾Ý´«Ê䣬¶øÊǸü¹Ø×¢ÉϲãµÄÊý¾Ý±í´ïºÍÊý¾Ý½¨Ä£¡£ÕâÒâζ×Å£º²»¹ÜÊÇ
A ³§»¹ÊÇ B ³§£¬ËùÓеÄÊý¾Ý¶¼±ØÐë·ûºÏ OpenConfig YANG Model£¬²¢ÇÒ Key-Value
¶¼±ØÐëÊÇ OpenConfig Ëù¹æ¶¨µÄ ±ê×¼¸ñʽ£¡
OpenConfig µÄÁíÍâÒ»¸öºËÐÄÒªµãÊÇ£ºËäÈ»ÍøÂçÉ豸¿ÉÄÜÖ§³Ö·á¸»µÄ¹¦ÄÜÌØÐÔ£¬ÉõÖÁÊÇÉ豸³§ÉÌ˽ÓеŦÄÜÌØÐÔ£¬µ«ÊÇ
OpenConfig Ö»¹ØÐÄÓ뻥ÁªÍøÐÐÒµÓû§Í¨ÓõÄÔËά¹¤×÷ºÍÍøÂçÉè¼Æ¹¤×÷Ïà¹ØµÄ¹¦ÄÜ£¬ÀýÈç BGP¡¢OpenFlow¡¢Telemetry
µÈµÈ¡£OpenConfig ²»»áΪÉ豸³§É̵Ä˽ÓÐÌØÐÔ¶¨Òå YANG Model£¬Ò²²»»áΪÉ豸³§ÉÌËùÌØÓеÄ
Key-Value ×ö¶¨Ò壬ËùÒÔ²»»á³öÏÖ²»¼æÈݵÄÇé¿ö¡£µ«·´¹ýÀ´½²£¬OpenConfig Ò²²»»áΪÁ˼æÈÝijЩÉ豸³§É̶øÈÃ
YANG Model ¹ýÓÚ¼òµ¥£¬ËùÒÔÉ豸³§ÉÌÐèÒªÈÃ×Ô¼ºµÄ¹¦ÄÜÂú×ã OpenConfig YANG Model
µÄÒªÇ󣬾߱¸ Model Ëù¶¨ÒåµÄËùÓÐµÄ Key£¬²¢ÇÒÄܹ»ÎªËùÓÐµÄ Key Ìṩ¶ÔÓ¦µÄ Value¡£
ÔÚ Key-Value ¸ñʽ¹Ì¶¨Ö®ºó£¬ÍøÂçÔËάÈËÔ±¶ÔÊý¾ÝµÄ½âÎö¹¤×÷¾Í·Ç³£·½±ãÁË¡£Ö»ÒªÍøÂçÉ豸֧³Ö±ê×¼µÄ
OpenConfig YANG£¬NAPALM ¾Í¿ÉÒÔ¶ÔÔʼÊý¾Ý½øÐнâÎö£¬²»ÔÙÒÀÀµµÚÈý·½ Module
¾Í¿ÉÒÔ¹ÜÀí¶à³§É̶à OS µÄÍøÂ磬½ø¶øÊµÏÖÕæÕýµÄÍøÂç×Ô¶¯»¯¡£

OpenConfig & NAPALM
ʹÓà OpenConfig µÄÁíÒ»¸öºÃ´¦¾ÍÊÇ¿ÉÒÔ¼ò»¯ SDN ÍøÂç¼Ü¹¹£¬Óû§Ê¹ÓÃÒ»¸ö¿ØÖÆÆ÷¼¯Èº¾Í¿ÉÒÔͬʱ¿ØÖƶà¸ö³§É̵ÄÍøÂçÉ豸£¬²»ÔÙÐèҪʹÓÃÉ豸³§É̵ÄÉÌÓÿØÖÆÆ÷×öÖм̡£

µ¥¿ØÖÆÆ÷¼Ü¹¹
OpenConfig ¹¤×÷×éÔÚ 2015 ÄêÒѾÏò IETF Ìá½»ÁË 2 ¸ö YANG ±ê×¼²Ý°¸£¬ËäȻĿǰ»¹Ã»Óбê×¼µÄ
RFC ·¢²¼£¬µ«ÊÇËüÏÖÒѳÉÎªÍøÂç×Ô¶¯»¯¼¼ÊõµÄ·¢Õ¹Ç÷ÊÆ£¬Òò´Ë¸÷´óÍøÂçÉ豸³§É̶¼¿ªÊ¼ÁË OpenConfig
µÄ¿ª·¢¹¤×÷¡£Ïñ¹úÄÚij R Æ·ÅÆµÄÊý¾ÝÖÐÐĽ»»»»úÖ§³Ö Netconf YANG ºÍ OpenConfig
YANG£¬Ä¿Ç°ÕýÔÚ¹úÄÚÅäºÏ¹«ÓÐÔÆÌṩÉ̽øÐбê×¼»¯ SDN µÄ²âÊÔ¹¤×÷¡£ |