0. ÒýÑÔ
ÍøÂçÉ豸ÖÎÀíµÄÒ»´ó°ÃÄÕÀ´×ÔÓÚ²î±ð³§É̵ÄÉ豸ʹÓòî±ðµÄ²Ù×÷ϵͳ,£¬ÕâЩϵͳÃüÁÑù²»Í³Ò»£¬ ¶ÔÐÒéµÄÖ§³Öˮƽ·×ÆçÖÂ,ÉõÖÁÔÚϵͳÂß¼ÉÏÒ²·×ÆçÖÂ. ±ÊÕßËùÖÎÀíµÄÍøÂçÓÐÊ®¼¸¸öÆ·ÅƵÄϵͳ,£¬ÔÚϵͳÉý¼¶£¬°æ±¾ÖÎÀí£¬ ©¶´ÓëÄþ¾²ÖÎÀíÉ϶¼Òª»¨·Ñ½Ï¶àµÄʱ¼äºÍ¾«Á¦¡£
SONiC µÄ·ºÆ𣬽Ϻõػº½âÁËÕâЩʹ¿à, ËüµÄͳһϵͳ¡¢²»å´»úÉý¼¶¡¢¸ß¶È¶¨ÖÆ»¯µÈµÈÌØÐÔ, ×ÊÖú±ÊÕß½ÚÔ¼ÁË´ó×ÚµÄʱ¼äºÍ¾«Á¦ ¡£
ÕýÎÄ¿ªÊ¼Ç°£¬ ÇëÔÊÐíÎÒ½éÉÜһϿªÔ´¡¢¿ª·ÅÍøÂçºÍ SDN¡£ºóÐøµÄÎÄÕÂÖлá¶ÔÆä¿´·¨Óн϶àµÄÒýÓã¬ÕÆÎÕÕâЩ¿´·¨£¬ ÎÒÃÇÉÏÊÖ SONiC µÄËٶȾͿìÁËÐí¶à¡£
1.¿ªÔ´¡¢¿ª·ÅÍøÂçºÍ SDN ¿´·¨
ʲôÊÇ¿ªÔ´£¬Ê²Ã´ÊÇ¿ª·ÅÐÍÍøÂ磬ʲôÊÇÈí¼þ½ç˵ÍøÂ磬ËûÃÇÓÖÓÐÈçºÎµÄ¹Øϵ£¬ÓÐÄÄЩ²î±ðÄØ£¿ÎÒÃÇÏÈÀ´¿´Ò»ÏÂÏÂÃæµÄÕâ¸öͼ£º
¿ÉÒÔ¿´³ö£¬ËüÃÇÈýÕß»¥Îª¹Øϵ£¬¿ÉÊÇÓÖÓÐÐí¶àÏàͬºÍ²î±ðµã¡£ÎÒÃÇÏÈÀ´Á˽âһϿ´·¨°É¡£
1.1.SDN (SoftWare-Defined Networking, Èí¼þ½ç˵ÍøÂç)?[1]
SDN (Èí¼þ½ç˵ÍøÂç, SoftWare-Defined Networking )ͨ³£±»ÈÏΪÊÇÒ»ÖÖ½«¿ØÖÆƽÃæÓëÍøÂçÄڵİüת·¢(Êý¾Ý)ƽÃæ½âñîµÄÌåϵ½á¹¹¡£ÔÚÕâÖÖÇé¿öÏ£¬¿ÉÒÔ´ÓÖÐÐÄλÖýøÐÐÍøÂçÅäÖúÍÖÎÀí£¬¶ø²»ÊÇͨ¹ýÍøÂçÁ¬½Óÿ¸öÌض¨µÄ½»»»»ú»òЧÀÍÆ÷¡£ÕâʹµÃÆóÒµºÍЧÀÍÌṩÉÌÄܹ»¿ìËÙÏìÓ¦ÒµÎñÐèÇóµÄ±ä¸ï¡£
SDN µÄÖ÷Òª×é³É²¿·ÖÖ®Ò»ÊÇSDN¿ØÖÆÆ÷¡£Ëüͨ¹ýÓ¦ÓóÌÐò±à³Ì½Ó¿Ú (api) ÓëÓ¦ÓóÌÐòͨÐÅ¡£Óë´Ëͬʱ£¬Ëü»¹Ê¹ÓÃOpenFlow µÈ½Ó¿ÚÓë½»»»»ú»ò·ÓÉÆ÷ͨÐÅ¡£ÒòΪ OpenFlow ÐÒéÊÇÍøÂçÖÐÆձ鱣´æµÄ¿ªÔ´×é¼þµÄÒ»¸öÀý×Ó£¬ËùÒÔÓÐЩÈËÈÏΪ SDN ºÍ¿ªÔ´Èí¼þÊÇÒ»ÑùµÄ¡£Êµ¼ÊÉÏ£¬´ó´ó¶¼ SDN ¼Ü¹¹ÈÔÈ»ÔÚµÚÈý·½»òÉÌÒµÓ²¼þÉÏʹÓñÕÔ´Èí¼þ»ò¿ªÔ´Èí¼þ¡£
1.2.¿ªÔ´ (Open Sources)??[2]
¡°¿ªÔ´¡±Õâ¸öÊõÓïÖ¸µÄÊÇÈËÃÇ¿ÉÒÔÐ޸ĺ͹²ÏíµÄ¹¤¾ß£¬ÒòΪËüµÄÉè¼ÆÊǹûÕæ¿É»á¼ûµÄ¡£Õâ¸öÊõÓïÆðÔ´ÓÚÈí¼þ¿ª·¢ÖУ¬Ö¸´´Á¢ÅÌËã»ú³ÌÐòµÄÌض¨ÒªÁ졣ȻÏÖÔÚÌ죬¡°¿ªÔ´¡±´ú±íÁ˸ü¹ã·ºµÄ¼ÛÖµ£¬ÎÒÃdzÆ֮Ϊ¡°¿ªÔ´·½·¨¡±¡£¿ªÔ´·½·¨¿ÉÒÔÊÇÏîÄ¿¡¢²úÆ·»ò¼Æ»®£¬¾ß±¸ÒÔÏÂÔÔò£¬¿ª·ÅµÄ½»Á÷¡¢Ð×÷¼ÓÈë¡¢¿ìËÙµÄÔÐÍÉè¼Æ¡¢Í¸Ã÷µÄ¡¢¿É±»ÖÎÀíµÄºÍÃæÏòÉçÇøµÄ¿ª·¢Àú³Ì¡£
1.3.¿ªÔ´Èí¼þ (Open Source Software)?[3]
¿ªÔ´Èí¼þ¼´ÊÇ¿ª·ÅÔ´´úÂëµÄÈí¼þ£¬ÊÇÈκÎÈ˶¼¿ÉÒÔ¼ì²é¡¢Ð޸ĺÍÔöÇ¿Ô´´úÂëµÄÈí¼þ¡£¡°Ô´´úÂ롱ÊÇ´ó´ó¶¼ÅÌËã»úÓû§´Óδ¼û¹ýµÄÈí¼þµÄ×é³É£»ËüÊÇÅÌËã»ú³ÌÐòÔ±¿ÉÒÔÀûÓõĴúÂ룬ÒԸıäÈí¼þ(³ÌÐò»òÓ¦ÓóÌÐò)µÄÊÂÇé·½·¨¡£¿ÉÒÔ»á¼ûÅÌËã»ú³ÌÐòÔ´´úÂëµÄ³ÌÐòÔ±¿ÉÒÔͨ¹ýÌí¼ÓÌØÐÔ»òÐÞ¸´²»¿ÉÕý³£ÊÂÇéµÄ²¿·ÖÀ´¸ïгÌÐò¡£¡°¿ªÔ´Èí¼þ¡±ÊÇÏà¹ØÓÚ¡°±ÕÔ´Èí¼þ¡±¶øÑԵģ¬ÓÐЩÈí¼þµÄÔ´´úÂëÖ»Óд´Á¢ËüµÄ¸öÈË¡¢ÍŶӻò×éÖ¯²Å»ªÐ޸ģ¬²¢ÇÒ¼á³Ö¶ÔËüµÄ¶ÀÍÌ¿ØÖÆ¡£ÈËÃdzÆÕâÖÖÈí¼þΪ¡°×¨Óеġ±»ò¡°±ÕÔ´µÄ¡±Èí¼þ¡£
¿ÉÊÇÏÖÔÚÎÒÃÇÔÚ»¥ÁªÍøÁìÓòÌýµ½µÄ´ó´ó¶¼ Open Source ¶àÖ¸¿ªÔ´Èí¼þ£¬ÆäʵÒѾԶԶËõСÁË Open Source µÄ¿´·¨ÁË¡£
ÔÚÁ˽⿪·ÅÐÍÍøÂç֮ǰ£¬ÐèÒªÁ˽âһϿª·ÅÐÍÍøÂçÊÇÈçºÎÀ´µÄ£¬ÆðÔ´À´×ÔÓÚÒ»¸ö¿ª·ÅÅÌËãÏîÄ¿¡£
1.4. ¿ª·ÅÅÌËãÏîÄ¿ (Open Compute Project)?[4]
¿ª·ÅÅÌËãÏîÄ¿ (OCP£¬Open Compute Project)£¬¿ª·ÅÅÌËãÏîÄ¿ (OCP) ÊÇÒ»¸öÐ×÷ÉçÇø£¬×¨×¢ÓÚÖØÐÂÉè¼ÆÓ²¼þ¼¼Êõ£¬ÒÔÓÐЧµØÖ§³Ö¶ÔÅÌËãÐÍ»ù´¡ÉèÊ©²»¾øÔö³¤µÄÐèÇó¡£ ¹ÊÊÂÔ´ÓÚ2009Ä꣬Facebook ΪÊý°ÙÍòÈËÌṩһÖÖеÄЧÀÍ£¬ÕâÖÖЧÀÍÊÇÒ»¸ö·ÖÏíÕÕƬºÍÊÓƵµÄÉ罻ƽ̨£¬Æ½Ì¨³ÊÖ¸Êý¼¶Ôö³¤¡£Õ¹ÍûδÀ´£¬¸Ã¹«Ë¾Òâʶµ½£¬Ëü±ØÐëÖØп¼ÂÇÆä»ù´¡ÉèÊ©µÄ±¾Ç®£¬Í¨¹ý¿ØÖƱ¾Ç®ºÍÄÜÔ´ÏûºÄÀ´³ÐÔØ´ó×ÚÓ¿ÈëµÄÐÂÓû§ºÍÊý¾Ý¡£¾ÍÔÚÄÇʱ£¬Facebook Æô¶¯ÁËÒ»¸öÏîÄ¿£¬Éè¼ÆÊÀ½çÉÏ×î½ÚÄܵÄÊý¾ÝÖÐÐÄ£¬ÒÔ¾¡¿ÉÄܵ͵ı¾Ç®´¦ÀíÇ°ËùδÓйæÄ£µÄÊý¾Ý¡£Ò»¸öÓɹ¤³Ìʦ×é³ÉµÄСÍŶӻ¨ÁËÁ½Äêʱ¼äÖØпªÊ¼Éè¼ÆºÍ½¨ÔìÊý¾ÝÖÐÐÄ£¬Éæ¼°ÄÚÈÝ°üÀ¨£ºÈí¼þ¡¢Ð§ÀÍÆ÷¡¢»ú¼Ü¡¢µçÔ´ºÍÀäȴϵͳ¡£Ä¿Ç°Õâ¸öÊý¾ÝÖÐÐÄ×ÅÂäÔÚ¶íÀÕ¸ÔÖݵÄÆÕÁÖά¶û¡£Óë¸Ã¹«Ë¾Ö®Ç°µÄÉèÊ©Ïà±È£¬Õâ¸öȫеÄÊý¾ÝÖÐÐĽÚÄÜÂÊÌá¸ßÁË38%£¬ÔËÓª±¾Ç®½µµÍÁË24%£¬Óë´Ëͬʱ´øÀ´Á˸ü´óµÄÁ¢Òì¡£ 2011Ä꣬Facebook Óë Intel ºÍ Rackspace¡¢¸ßÊ¢ºÍ Andy Bechtolsheim ÅäºÏÌᳫÁË¿ª·ÅÅÌËãÏîÄ¿£¬²¢½¨Á¢ÁË¿ª·ÅÅÌËãÏîÄ¿»ù½ð»á¡£ÎåÃû³ÉԱϣÍûÔÚÓ²¼þÁìÓòÌᳫһ³¡Ô˶¯£¬¾ÍÏñÎÒÃÇÔÚ¿ªÔ´Èí¼þÖп´µ½µÄÄÇÖÖ´´Á¢Á¦ºÍÐ×÷£¬Õâ¾ÍÊÇÕýÔÚ±¬·¢µÄÊÂÇé¡£
1.5.¿ª·ÅÐÍÍøÂç (Open Networking)??[5]
1.5.1.ʲôÊÇ¿ª·ÅÐÍÍøÂç?
¿ª·ÅÐÍÍøÂçµÄ»ù±¾ÐèÒª¼¸¸öÌõ¼þ£¬Ê×ÏÈÊǽ¨Á¢ÔÚ¿ª·Å±ê×¼Ö®ÉÏ£¬Í¨³£ÎÒÃdz£Ìýµ½µÄ¿ª·Å±ê×¼ÀýÈç OpenFlow ÐÒéµÈ£¬ÔÙÓоÍÊÇÄܹ»Ö§³Ö¿ª·ÅÍøÂçµÄÓ²¼þ£¬ÎÒÃdzÆ֮Ϊ¡°ÂãÉ豸¡±£¬ÔÙÆä´Î¾ÍÊÇ¿ÉÒÔ×ÔÓÉÑ¡Ôñ×ÔÖ÷×°ÖõÄÍøÂç²Ù×÷ϵͳ£¬Ö»Óо߱¸ÕâЩ²Å»ªÍ»ÆÆÈí¼þºÍÓ²¼þÔÚÍøÂç²ãÃæµÄ¹ÌÓÐÌØÐÔ£¬Ê¹ÎÒÃÇÄܹ»Äõ½Ò»¸ö¿É½»¸¶µÄ¡¢Áé»îµÄ¡¢¿ÉÉìËõµÄ¡¢¿É±à³ÌµÄÒÔ¼°ÊÊÓ¦ÖÖÖÖÐèÇóµÄÍøÂç¡£
1.5.2.¿ª·ÅÐÍÍøÂç¼òÊ·?[6]
ÎÒÃÇ°Ñ¿ª·ÅÐÍÍøÂç½ç˵Ϊ´Ó2013Ä꿪ʼ£¬ÎªÊ²Ã´¿ª·ÅÐÍÍøÂç½ç˵Ϊ´Ó2013¿ªÊ¼£¿ÔÚ»¥ÁªÍøÉÏÒ»Ö±±£´æ×ÅijÖÖˮƽµÄ¿ª·ÅÐÍÍøÂ磬Õâ´ÎÎÒÃÇ¿ÉÒÔ°ÑÖصã·ÅÔÚ£¬Ê²Ã´Ê±ºò¿ª·ÅÐÍÍøÂçÓ²¼þºÍÈí¼þ³ÉΪÖ÷Á÷ºÍÒ×ÓÚʹÓã¬Ê²Ã´Ê±ºò¿ª·ÅÐÍÍøÂç×°ÖÃÇé¿öµÄ½ç˵ºÍÐû²¼¡£Ê×ÏÈÎÒÃÇÀ´¿´Ò»Ï¿ª·ÅÐÍÍøÂçÖбȽÏÖصãµÄ½ç˵£º
1.5.3. ¿ª·ÅÐÔÍøÂç×°ÖÃÇé¿ö (ONIE)??[7]
¿ª·ÅÐÔÍøÂç×°ÖÃÇé¿ö, ONIE ¨C Open Network Install Environment
ÇáÁ¿¼¶ Linux Çé¿ö£¬ÔÊÐí×°Öá¢Ð¶ÔØ¡¢µ÷ÊÔµÄÍøÂç²Ù×÷ϵͳ£¬¿ª·ÅÐÔÍøÂç×°ÖÃÇé¿öʹµÃ¿ª·ÅÐÍÍøÂç³ÉΪ¿ÉÄÜ¡£
ÎÒÃÇͨ¹ýÒ»¸öÀý×ÓÀ´±ÈÕÕһϿª·ÅÐÔÍøÂç×°ÖÃÇé¿öÔÚ½ç˵ǰºóÎÒÃǵÄʹÓÃÉÏÓкβî±ð¡£
¿ª·ÅÐÔÍøÂç×°ÖÃÇé¿öδ½ç˵ǰ£¬ÎÒÃǶÔÍøÂçÉ豸װÖõ÷ÊÔ¿ÉÄܵİ취£º
1)? ¿ª´ò½»»»»úÒƳý CF/SD¿¨
2)? ÔÚ CF/SD ¿¨ÉÏÖÆ×÷¾µÏñÎļþ
3)? °Ñ CF/SD ¿¨·Å»Ø½»»»»ú
4)? Æô¶¯½»»»»ú½øÈë¶Ô»°Ä£Ê½
5)? ¹ÒÔØ CF/SD¿¨
6)? ¿½±´/½âѹ¾µÏñÔÚ CF/SD/¿¨ÉÏ
7)? ÉèÖÃÆô¶¯²ÎÊý
8)? Éú´æºÍÖØÖÃеľµÏñ
¿ª·ÅÐÔÍøÂç×°ÖÃÇé¿ö½ç˵ºó£¬ÎÒÃǶÔÍøÂçÉ豸װÖõ÷ÊÔ¿ÉÄܵİ취£º
1)? ͨ¹ý USB ×°Öÿª·ÅÐÔÍøÂç×°ÖÃÇé¿ö (Èç¹ûÔ¤ÏÈδװÖÿª·ÅÐÔÍøÂç×°ÖÃÇé¿öµÄÇé¿ö)
2)? Æô¶¯½»»»»ú²¢ÔÚ¿ª·ÅÍøÂç×°ÖÃÇé¿öÖÐÑ¡ÔñÐèÒªµÄ²Ù×÷
a)? ×°ÖòÙ×÷ϵͳ
b)? ·¿ªÃüÁîÐÐģʽ
c)? жÔزÙ×÷ϵͳ
3)? Éý¼¶¿ª·ÅÍøÂç×°ÖÃÇé¿ö
4)? Íê³É
¿ÉÒÔ¿´³ö£¬Í¨¹ý¿ª·ÅÐÔÍøÂç×°ÖÃÇé¿ö£¬¿É¸üΪ±ãµ±µØÖÎÀíÍøÂçÉ豸£¬Ê¡È¥ÁËƵ·±µÄÓ²¼þ²Ù×÷£¬´Ó¿ª·ÅÐÔÍøÂç×°ÖÃÇé¿ö²ãÃæʵÏÖÁËÍøÂç²Ù×÷ϵͳµÄ±ä»»¡£
ËäÈ»£¬Òª×é³É¿ª·ÅÐÍÍøÂ磬³ýÁ˽â¾öÁË×°ÖÃÇé¿ö£¬»¹ÐèÒªÓ²¼þÖ§³Ö£¬ËäÈ»¿ª·ÅÐÍÍøÂçÐèÒª°üÀ¨¿ª·ÅµÄÅÌËãÓ²¼þ/¿ª·ÅµÄÍøÂçÓ²¼þ (Switches)¡£
1.5.4. ¿ª·ÅµÄÍøÂçÓ²¼þ(Open Switches)??[8]
1.5.4.1.ÔõôÀí½âÓ²¼þ¿ª·Å?
¿ª·Å¿ÉÒÔ´ú±íÐí¶à¹¤¾ß£¬´Ó×°Öòî±ðµÄÍøÂç²Ù×÷ϵͳµ½ÏòÃñÖÚÌṩÍêÕûµÄÉè¼Æ°ü£¬×î¾ß´ú±íµÄÊÇ¡°Ô´ÓÚ¿ª·ÅÅÌËãÏîÄ¿ÍøÂç×顱£¬¶Ô£¬¾ÍÊÇÎÒÃÇÇ°ÃæÌáµ½µÄÄǸö×éÖ¯ Open Compute Project (OCP)£¬ÍøÂç×齨Á¢ÓÚ2013Ä꣬Ӳ¼þÉè¼ÆТ¾´Õß°üÀ¨ Edge-Core, Quanta, Facebook, Mellanox µÈ¡£ÆäÖÐËùÓÐÌá½»µÄÉè¼Æ¶¼ÊÇ¿ª·ÅµÄ£¬°üÀ¨¹¹½¨ÍøÂçÉ豸ËùÐèµÄÊý¾Ý¡£
1.5.4.2.³£¼ûµÄ¿ª·ÅÓ²¼þ
ÎÒÃdz£¼ûµÄ¿ª·ÅÓ²¼þÓÐÒÔÏÂÁ½ÖÖ£º
1)? Brite-BOX
Dell ON Series, HPE Altoline, Arista, Broadcom
ÓÉ´÷¶ûºÍ HPE µÈÖªÃû³§ÉÌÏúÊÛµÄÆ·ÅÆÖ§³Ö½»»»»ú
ͨ³£´øÓг§É̵ÄÍøÂç²Ù×÷ϵͳ£¬µ«Ò²¿ÉÒÔÔËÐÐÆäËûÍøÂç²Ù×÷ϵͳ, Ðí¶àÕâÀàÐͽ»»»»úÊÇÓÉ°×Åƽ»»»»ú¸ïжøÀ´¡£
2) White-Box
Mellanox, Edge-Core, Quanta ͨÓõĽ»»»»úºÍÓ²¼þÖ§³Öͨ³£¾ß±¸¿ª·ÅÐÍÍøÂç×°ÖÃÇé¿ö¡£
1.5.5. ¿ª·ÅµÄÍøÂçÈí¼þ (Open Networking Software)??[9]
1.5.5.1. ¿ªÔ´ÍøÂç²Ù×÷ϵͳ
Ç°ÃæÎÒÃǽ²ÁË¿ª·ÅÐÔÍøÂç×°ÖÃÇé¿ö£¬ËüÊǸø¿ª·ÅÍøÂç²Ù×÷ϵͳ׼±¸µÄ£¬ÏÖÔÚÎÒÃÇÀ´Á˽âÒ»ÏÂËü¡£
¿ª·ÅÍøÂç Linux (ONL, Open Networking Linux), ¼´½»»»»úƽ̨֧³ÖµÄÍøÂç²Ù×÷ϵͳ¡£
ONL ÓÉÓÚÁ¼ºÃµÄÌåÏÖ·ºÆðÁË¿ç¶àƽ̨Á÷´«ÏÖÏó£¬NTT, Facebook, Google, Cord, Stratum µÈ¶à¼Ò¹«Ë¾µÄƽ̨¶¼ÌṩÁËÖ§³Ö£¬²¢ÇÒ²î±ðµÄÍøÂçÉ豸¶¼¿ªÊ¼Ö§³Ö ONL¡£
1.5.5.2. ʲôʹµÃÍøÂçÈí¼þ¿ª·Å£¿
ÍøÂç²Ù×÷ϵͳ Linux»¯£¬Ê¹µÃ Linux Ϊ»ù´¡µÄÍøÂ磬ÆäÌṩÁËÓ²¼þºÍÍøÂçµÄÁýͳµÄÂß¼£¬²¢Ê¹ÓÿªÔ´µÄÍøÂçÕ»¡£
ÀýÈç: FRR, BIRD
ËäÈ»´ó´ó¶¼³§É̶¼ÓÐһЩ·Ç¿ª·ÅµÄÒÀÀµ£¬ÈçÓ²¼þÖ¸Á£¬×ª·¢ ASIC API/SDK£¬ÒÔ¼°Ò»Ð©ÁýͳµÄÍøÂç¿ØÖƼ¯£¬Ò»°ãÆÕ±é»ùÓÚ Debian Linux,
ÀýÈç: OPX, SONIC, ONL, µÈµÈ¡£
OpenSwitch(OPX), Dell OS10 Open Edition (Debian + CPS) + Quagga/FRR, focused on Dell Open Networking switches
CoRD, ONOS Controller with Indigo agent on switchesFRR, Routing suite used by most open networking software
ÕâÀïÌرðÌá³ö SAI ÊǵÚÒ»¸ö¿çƽ̨µÄ¿ªÔ´½»»»»úÁýͳ¡£(ºóÃæÎÒÃÇ»á½âÊÍʲôÊÇ SAI)
1.6.¿ªÔ´ÍøÂç²Ù×÷ϵͳÆÊÎö??[10]
ÎÒÃÇÏÈÀ´¿´Ò»¸ö¼Ü¹¹Âß¼À´Àí½âһϿªÔ´ÍøÂç²Ù×÷ϵͳÔÀí£º
ÕâÀÎÒÃÇ¿ÉÒÔ¿´³öÂÌÉ«²¿·ÖÊôÓÚ¿ªÔ´²¿·Ö£¬×ÏÉ«²¿·Öʹ±ÕÔ´²¿·Ö£¬ÇàÉ«²¿·Ö Linux£¬Ç³À¶É«ÎªÓ²¼þ²ã£¬´óÖ·ÖΪӲ¼þ£¬Æ½Ì¨£¬Ó¦ÓòãÈý¸ö²ãÃ棬¶øƽ̨²ãÃæµÄÇý¶¯ºÍÓ²¼þ¿ØÖƽӿÚÊDZÕÔ´µÄ£¬¿ÉÊÇÓ¦ÓòãÃæÒѾ°Ñ´«¸ÐÆ÷½ø³Ì£¬ÍøÂçÖÎÀí£¬ÍøÂç¿ØÖÆÐÒé²ãÁýͳ³öÀ´¡£
1.7.¿ª·ÅµÄÍøÂç²Ù×÷ϵͳ (Network Operating System)??[11]
ËäÈ»ÍøÂç²Ù×÷ϵͳ×é¼þ²¢²»ÊÇÍêÈ«¿ªÔ´£¬ËäÈ»Ðí¶àоƬ³§É̹ØÓÚ½»»»»úµÄÁýͳ½Ó¿ÚÕÕ¾ÉÖ»Ö§³Ö¶þ½øÖÆ£¬¿ÉÊÇËæ×ÅSAIºÍP4µÄ·ºÆð£¬ÎÒÃÇ·¢Ã÷ÁËһЩ±ä¸ï£¬ÎÒÃÇÒ²ÓÐÀíÓÉÏàÐÅδÀ´»áÔ½À´Ô½ºÃ£¬ÏÂÃæ¸ø¸÷ÈË×öÒ»¸ö±ÈÕÕ£º
OpenNSL |
·Ç¿ªÔ´ | ½ö¿ª·ÅAPI |
OF-DPA | ·Ç¿ªÔ´ | ¼æÈÝOpenFlow vX ±ê×¼ |
SAI | ·Ç¿ªÔ´ | ¼æÈÝSAI vX ±ê×¼ |
P4 Runtime | ·Ç¿ªÔ´ | ¼æÈÝP4 vX ±ê×¼ |
SDKLT | ¿ªÔ´SDK | |
OtherCavium OpenXPS | ¿ªÔ´ |
¼æÈÝ SAI ±ê×¼ |
˵µ½¿ª·ÅµÄÍøÂç²Ù×÷ϵͳ£¬²»µÃ²»Ìáµ½ÒÔϼ¸¸öÀý×Ó£ºMicrosoft Azure SonicOpen Network Linux, Network API (SAI, OpenNSL), OpenSwitch (OPX).
Õâ¸öÎÒÃÇ·¢Ã÷Ðí¶àÖ§³ÖSAI±ê×¼£¬ÄÇôʲôÊÇ SAI?
1.8.SAI (Switch Abstraction Interface)??[12]
½»»»»úÁýͳ½Ó¿Ú (SAI) , ËûÊÇ¿çƽ̨µÄ½»»»»úƽ̨½Ó¿Ú£¬¿ÉÒÔ¿´³ÉÊÇÒ»¸öÓû§¼¶µÄÇý¶¯£¬½»»»»úÁýͳ½Ó¿Ú (SAI) ÊÇÒ»ÖÖ±ê×¼»¯µÄ API£¬API º¸Ç¶àÖÖ¹¦Ð§£¬Ê¹ÓÃÕß²»ÐèÒªµ£ÐÄÓ²¼þ³§É̵ÄÔ¼Êø£¬²»±ØÌåÌùÆä½»»»×¨Óü¯³Éµç·¡¢ÍøÂç´¦Àíµ¥Î»»òÆäÊÇÒ»¸öÈí¼þ½»»»»ú£¬¶¼¿É½ÓÄÉͳһµÄ·½·¨ÖÎÀí¡£ÆäÄ¿µÄ¶¼ÊÇΧÈƼò»¯³§ÉÌ SDK¡£
½»»»»úÁýͳ½Ó¿Ú (SAI) ÔÚËùÓÐÓ²¼þÉÏÔËÐÐÏàͬµÄÓ¦ÓóÌÐò»õ²Ö£¬ÕâʹµÃ SAI ½Ó¿Ú¾ß±¸¼òµ¥ÐÔ£¬Ò»ÖÂÐÔ¡£Ê¹ÓÃÕß²»ÐèÒªÌåÌùÍøÂçÓ²¼þ¹©Ó¦É̵ÄÓ²¼þÌåϵ½á¹¹µÄ¿ª·¢ºÍ¸ïУ¬Í¨¹ýʼÖÕÒ»ÖÂÐԵıà³Ì½Ó¿Ú¿ÉÒÔºÜÈÝÒ×µÄÓ¦ÓÃ×îÐÂ×îºÃµÄÓ²¼þ£¬²¢ÇÒеÄÓ¦ÓóÌÐò¿ÉÒÆÖ²ÐÔ¸üÇ¿£¬bug ¸üµÍ¡£ÕâÆäÖÐÒÔ Microsoft, Dell, Facebook, Broadcom, Intel, MellanoxΪ´ú±í¡£
1.8.1.SAI Éú³¤Ñ¸ËÙ
1.8.2.SAI ÁýͳµÄ½»»»»úϵͳµÄϵͳ¼Ü¹¹
ÎÒÃÇ¿ÉÒÔ¿´µ½ SAI Êǽ¨Á¢ÔÚ¿ª·ÅµÄ ASIC Áýͳ֮Éϵģ¬API ͨ¹ý C ÓïÑÔ½Ó¿ÚÓëÍøÂçרÓÃоƬͨÐÅ£¬½Ó¿Ú´óÖ·ÖΪ¼¸À๦Ч£º
ÐëÒª¹¦Ð§£¬Ñ¡Å书Ч£¬×Ô½ç˵¹¦Ð§
1.8.3.SAI Ö§³ÖµÄ¹¦Ð§ÕªÒª
ÎÒÃÇÀ´¿´Ò»Ï SAI Ö§³ÖµÄ¹¦Ð§ÕªÒª£º
ÐëÒª¹¦Ð§ | ÃèÊö |
sai_switch_api_t | Top-level switch object |
sai_port_api_t | Port management |
sai_fdb_api_t | Forwarding database |
sai_vlan_api_t | VLAN management |
sai_vr_api_t | Virtual router |
sai_route_interface_api_t | Routing interface |
sai_route_api_t | Routing table |
sai_neighbor_api_t | Neighbor table |
sai_next_hop_t | Next hop table |
sai_next_hop_api_t | Next hop group |
sai_qos_api_t | Quality of service |
sai_acl_api_t | ACL management |
LAG, STP, Control packet send/recevie |
²Î¿¼ÎÄÏ×£º
[1] https://en.wikipedia.org/wiki/Software-defined_networking
[2] https://en.wikipedia.org/wiki/Open_source
[3] https://en.wikipedia.org/wiki/Open-source_software
[4] https://www.opencompute.org/about
[5] https://aptira.com/what-is-open-networking/
[6] https://events19.linuxfoundation.org/wp-content/uploads/2017/11/Open-Hardware-and-Open-Networking-Software-How-We-Got-Here-and-Where-We-are-Going-Steven-Noble-Big-Switch-Networks-_-NetDEF.pdf
[7] https://www.opencompute.org/wiki/Networking/ONIE
[8] https://www.openswitch.net/about/
[9] http://opennetlinux.org/
[10] https://events19.linuxfoundation.org/wp-content/uploads/2017/11/Open-Hardware-and-Open-Networking-Software-How-We-Got-Here-and-Where-We-are-Going-Steven-Noble-Big-Switch-Networks-_-NetDEF.pdf
[11] https://events19.linuxfoundation.org/wp-content/uploads/2017/11/Open-Hardware-and-Open-Networking-Software-How-We-Got-Here-and-Where-We-are-Going-Steven-Noble-Big-Switch-Networks-_-NetDEF.pdf
[12] https://www.opencompute.org/documents/switch-abstraction-interface
[13] https://github.com/Azure/SONiC/wiki/Architecture
[14] https://github.com/Azure/SONiC/wiki/Sonic-Roadmap-Planning