LinuxÀÇ °¡»ó ³×Æ®¿öÅ©
NIC, ½ºÀ§Ä¡, ³×Æ®¿öÅ© ¹× ¾îÇöóÀ̾ð½º
¿À´Ã³¯ÀÇ ÄÄÇ»Æÿ¡¼ ºÎÈ°ÀÌ ÁøÇàµÇ°í ÀÖ´Ù. °¡»óÈ´Â ¼ö½Ê ³â Àü¿¡ ¸¸µé¾îÁ³Áö¸¸ »ó¿ë Çϵå¿þ¾îÀÇ »ç¿ëÀ» ÅëÇØ ÁøÁ¤ÇÑ °¡Ä¡°¡ ÇöÀç ½ÇÇöµÇ°í ÀÖ´Ù. °¡»óÈ´Â È¿À²¼ºÀ» À§ÇØ ¼¹ö ¿öÅ©·Îµå¸¦ ÅëÇÕÇÏÁö¸¸ ¼¹ö ȯ°æÀÇ ´Ù¸¥ ¿ä¼Ò°¡ ´õ ÁøÈµÈ ÅëÇÕ¿¡ ÇÊ¿äÇÑ È帷Π¶°¿À¸£°í ÀÖ´Ù. ¸¹Àº »ç¶÷µéÀº °¡»óȸ¦ CPU, ¸Þ¸ð¸® ¹× ½ºÅ丮ÁöÀÇ ÅëÇÕÀ̶ó°í ÀνÄÇÏÁö¸¸ ÀÌ°ÍÀº ¼Ö·ç¼ÇÀ» Áö³ªÄ¡°Ô ´Ü¼øÈÇÏ´Â °ÍÀÌ´Ù. ³×Æ®¿öÅ©´Â °¡»óÈÀÇ ÁÖ¿ä Ãø¸éÀÌ¸ç °¡»óÈ ¼¼Æ®ÀÇ ÆÛ½ºÆ® Ŭ·¡½º ¿ä¼Ò¸¦ ³ªÅ¸³½´Ù.
¹®Á¦Á¡¿¡ ´ëÇÑ ³ôÀº ¼öÁØÀÇ Å½»ö¿¡¼ ½ÃÀÛÇÏ¿© Linux¢ç°¡ ³×Æ®¿öÅ© °¡»óȸ¦ ºôµåÇÏ°í Áö¿øÇÏ´Â ´Ù¾çÇÑ ¹æ¹ý¿¡ ´ëÇØ »ìÆ캸ÀÚ.
±âÁ¸ ȯ°æ(±×¸² 1 ÂüÁ¶)¿¡¼´Â ½ÇÁ¦ ¼¹ö ¼¼Æ®°¡ ÇÊ¿äÇÑ ¾ÖÇø®ÄÉÀÌ¼Ç ¼¼Æ®¸¦ È£½ºÆ®ÇÑ´Ù. ¼¹ö °£ Åë½ÅÀ» »ç¿ëÇϱâ À§ÇØ °¢ ¼¹ö¿¡´Â ¿ÜºÎ ³×Æ®¿öÅ© ÀÎÇÁ¶ó¿¡ Á¢¼ÓÇÏ´Â ³×Æ®¿öÅ© ÀÎÅÍÆäÀ̽º Ä«µå(NIC)°¡ Çϳª ÀÌ»ó Æ÷ÇԵǾî ÀÖ´Ù. NIC´Â ³×Æ®¿öÅ© ¼ÒÇÁÆ®¿þ¾î ½ºÅðú ÇÔ²² ³×Æ®¿öÅ© ÀÎÇÁ¶ó¸¦ ÅëÇØ ¿£µåÆ÷ÀÎÆ® °£ Åë½ÅÀ» »ç¿ë °¡´ÉÇÏ°Ô ÇÑ´Ù. ±×¸² 1°ú °°ÀÌ ÀÌ ±â´ÉÀº ½ºÀ§Ä¡·Î Ç¥½ÃµÇ¸ç ½ºÀ§Ä¡´Â Âü¿©ÇÏ´Â ¿£µåÆ÷ÀÎÆ® °£ È¿À²ÀûÀÎ ÆÐŶ Åë½ÅÀ» °¡´ÉÇÏ°Ô ÇÑ´Ù.
±×¸² 1. ±âÁ¸ ³×Æ®¿öÅ© ÀÎÇÁ¶ó
¼¹ö ÅëÇÕ µÚ¿¡ ¼û°ÜÁø ÁÖ¿ä Çõ½Å»çÇ×Àº ¿©·¯ ¿î¿µ üÁ¦¿Í ¾ÖÇø®ÄÉÀ̼ÇÀÌ Çϵå¿þ¾î¸¦ °øÀ¯ÇÒ ¼ö ÀÖµµ·Ï ÇÏ´Â ½ÇÁ¦ Çϵå¿þ¾îÀÇ Ãß»óÈÀÌ´Ù(±×¸² 2 ÂüÁ¶). ÀÌ·¯ÇÑ Çõ½ÅÀ»
ÇÏÀÌÆÛ¹ÙÀÌÀú(¶Ç´Â
°¡»ó ½Ã½ºÅÛ(VM) ¸ð´ÏÅÍ)¶ó°í ÇÑ´Ù. °¢°¢ÀÇ VM(¿î¿µ üÁ¦ ¹× ¾ÖÇø®ÄÉÀÌ¼Ç ¼¼Æ®)Àº ±âº» Çϵå¿þ¾îÀÇ ÀϺΰ¡ Á¸ÀçÇÏÁö ¾Ê°Å³ª ¿©·¯ VM¿¡¼ °øÀ¯µÉ ¼ö ÀÖ´Â °æ¿ì¿¡µµ ±âº» Çϵå¿þ¾î¸¦ °øÀ¯µÇÁö ¾Ê´Â ¿ÏÀüÇÑ ½Ã½ºÅÛÀ¸·Î °£ÁÖÇÑ´Ù. ÀÌ·¯ÇÑ ¿¹°¡ °¡»ó NIC(vNIC)ÀÌ´Ù. ÇÏÀÌÆÛ¹ÙÀÌÀú´Â °¢ VM¿¡ ´ëÇØ Çϳª ÀÌ»óÀÇ vNIC¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù. ÀÌ·¯ÇÑ NIC´Â VM¿¡°Ô ½ÇÁ¦ NIC·Î Ç¥½ÃµÉ ¼ö ÀÖÁö¸¸ ½ÇÁ¦·Î´Â NICÀÇ ÀÎÅÍÆäÀ̽º¸¸ ³ªÅ¸³½´Ù. ¶ÇÇÑ ÇÏÀÌÆÛ¹ÙÀÌÀú´Â VM ¿£µåÆ÷ÀÎÆ® °£ ±¸¼º °¡´ÉÇÑ Åë½ÅÀ» »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ÇÏ´Â °¡»óÈµÈ ½ºÀ§Ä¡·Î ¿ÏÀüÇØÁö´Â °¡»ó ³×Æ®¿öÅ©ÀÇ µ¿Àû ±¸¼ºÀ» Çã¿ëÇÑ´Ù. ¸¶Áö¸·À¸·Î ÇÏÀÌÆÛ¹ÙÀÌÀú´Â ¼¹öÀÇ ½ÇÁ¦ NIC¸¦ ÇÏÀÌÆÛ¹ÙÀÌÀúÀÇ ³í¸®Àû ÀÎÇÁ¶ó¿¡ Á¢¼ÓÇÏ¿© ÇÏÀÌÆÛ¹ÙÀÌÀú ³»ÀÇ VM °£ È¿À²ÀûÀÎ Åë½Å°ú ¿ÜºÎ ³×Æ®¿öÅ©¿¡ ´ëÇÑ È¿À²ÀûÀÎ Åë½ÅÀ» Çã¿ëÇÏ¿© ½ÇÁ¦ ³×Æ®¿öÅ© ÀÎÇÁ¶ó¿¡ ´ëÇÑ Åë½Åµµ Çã¿ëÇÑ´Ù.
Âü°íÀÚ·á ¼½¼Ç¿¡¼ ¿ÀÇ ¼Ò½º ¿î¿µ üÁ¦ÀÇ Ç³ºÎÇÑ ¿µ¿ªÀÎ Linux¿¡¼ÀÇ ÇÏÀÌÆÛ¹ÙÀÌÀú¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ Á¤º¸ÀÇ Ç³ºÎÇÑ ¸µÅ©¸¦ ãÀ» ¼ö ÀÖ´Ù.
°¡»óÈµÈ ³×Æ®¿öÅ© ÀÎÇÁ¶óµµ °¡»ó ¾îÇöóÀÌ¾ð½º¿Í °°Àº Èï¹Ì·Î¿î ´Ù¸¥ Çõ½Å»çÇ×À» »ç¿ëÇÒ ¼ö ÀÖµµ·Ï Çß´Ù. ¿©±â¼´Â °¡»ó ³×Æ®¿öÅ©ÀÇ ¿ä¼Ò¿¡ Ãß°¡·Î ÀÌ¿¡ ´ëÇØ »ìÆ캻´Ù.
°¡»óÈµÈ ³×Æ®¿öÅ© ÀÎÇÁ¶óÀÇ ÁÖ¿ä ¹ßÀü»çÇ× Áß Çϳª°¡ °¡»ó ½ºÀ§Ä¡ÀÇ °³¹ßÀÌ´Ù. °¡»ó ½ºÀ§Ä¡´Â vNIC¸¦ ¼¹öÀÇ ½ÇÁ¦ NIC¿¡ Á¢¼Ó½ÃÅ°°í ´õ Áß¿äÇÏ°Ô´Â ·ÎÄà Åë½ÅÀ» À§ÇØ ¼¹ö¿¡ ÀÖ´Â ´Ù¸¥ vNIC¿¡ vNIC¸¦ °áÇÕÇÑ´Ù. ÀÌ°ÍÀÌ Èï¹Ì·Î¿î ÀÌÀ¯´Â °¡»ó ½ºÀ§Ä¡ ³»¿¡¼ Á¦ÇÑÀº ³×Æ®¿öÅ© ¼Óµµ¿Í´Â °ü°è°¡ ¾ø°í ¸Þ¸ð¸® ´ë¿ªÆø°ú °ü·ÃµÇ¾î ÀÖ¾î ·ÎÄà VM °£ È¿À²ÀûÀÎ Åë½ÅÀ» °¡´ÉÇÏ°Ô ÇÏ°í ³×Æ®¿öÅ© ÀÎÇÁ¶óÀÇ ¿À¹öÇìµå¸¦ ÃÖ¼ÒÈÇϱ⠶§¹®ÀÌ´Ù. ÀÌ·¯ÇÑ Àý°¨Àº VM °£ Æ®·¡ÇÈÀÌ ¼¹ö ³»¿¡¼ °Ý¸®µÈ »óÅ·Π½ÇÁ¦ ³×Æ®¿öÅ©°¡ ¼¹ö °£ Åë½ÅÀ» À§Çؼ¸¸ »ç¿ëµÊÀ¸·Î ÀÎÇØ ¹ß»ýÇÑ´Ù.
ÇÏÁö¸¸ Linux¿¡¼ ÀÌ¹Ì Ä¿³Î ³»¿¡ °èÃþ 2 ½ºÀ§Ä¡¸¦ ÅëÇÕÇϱ⠶§¹®¿¡ ÀϺΠ»ç¿ëÀÚ´Â °¡»ó ½ºÀ§Ä¡°¡ ¿Ö ÇÊ¿äÇÑÁö ¹°¾ú´Ù. ÀÌ¿¡ ´ëÇÑ ´äº¯¿¡´Â ¿©·¯ ¼Ó¼ºÀÌ °ü·ÃµÇÁö¸¸ °¡Àå Áß¿äÇÑ ¼Ó¼º Áß Çϳª°¡ ÀÌ·¯ÇÑ ½ºÀ§Ä¡ À¯Çü¿¡ ´ëÇÑ »õ·Î¿î ºÐ·ù¿¡ ÀÇÇØ Á¤ÀǵȴÙ. »õ Ŭ·¡½º´Â
ºÐ»ê °¡»ó ½ºÀ§Ä¡¶ó°í ºÎ¸£¸ç ±âº» ¼¹ö ¾ÆÅ°ÅØó¸¦ Åõ¸íÇÏ°Ô ¸¸µå´Â ¹æ½ÄÀ¸·Î ¼¹ö »çÀ̸¦ ¿¬°áÇÒ ¼ö ÀÖ°Ô ÇÑ´Ù. ÇϳªÀÇ ¼¹ö¿¡ ÀÖ´Â °¡»ó ½ºÀ§Ä¡´Â ¶Ç´Ù¸¥ ¼¹ö¿¡ ÀÖ´Â °¡»ó ½ºÀ§Ä¡¿Í Åõ¸íÇÏ°Ô °áÇÕÇÒ ¼ö ÀÖ¾î(
±×¸² 3 ÂüÁ¶) ¼¹ö(¹× ÇØ´ç °¡»ó ÀÎÅÍÆäÀ̽º) °£ VM ¸¶À̱׷¹À̼ÇÀÌ ÈξÀ ´õ ´Ü¼øÇØÁø´Ù. ¿Ö³ÄÇϸé ÀÌ·¯ÇÑ VMÀÌ ¶Ç´Ù¸¥ ¼¹öÀÇ ºÐ»ê °¡»ó ½ºÀ§Ä¡¿¡ Á¢¼ÓÇÏ¿© °¡»ó ½ºÀ§Ä¡ ³×Æ®¿öÅ©¸¦ Åõ¸íÇÏ°Ô °áÇÕÇÒ ¼ö Àֱ⠶§¹®ÀÌ´Ù.
±×¸² 3. ºÐ»ê °¡»ó ½ºÀ§Ä¡
ÀÌ °ø°£¿¡¼ °¡Àå Áß¿äÇÑ ÇÁ·ÎÁ§Æ® Áß Çϳª´Â ÀÌ ±â»ç¿¡¼ ´ÙÀ½¿¡ ´Ù·ç´Â Open vSwitch¶ó´Â °ÍÀÌ´Ù.
¼¹ö ³»¿¡¼ ³í¸®Àû Æ®·¡ÇÈÀ» °Ý¸®ÇÏ´Â °Í°ú °ü·ÃµÈ ÇÑ °¡Áö ¹®Á¦´Â Æ®·¡ÇÈÀÌ ¿ÜºÎ(¿¹: ³×Æ®¿öÅ© ºÐ¼®±â)¿¡ Ç¥½ÃµÇÁö ¾Ê´Â´Ù´Â °ÍÀÌ´Ù. ±¸Çö¿¡¼´Â Æ®·¡ÇÈÀ» Á¦¾îÇÏ°í ¸ð´ÏÅÍÇϱâ À§ÇØ ¿ø°Ý ¾×¼¼½º¸¦ ³»º¸³»´Â µ¥ »ç¿ëµÇ´Â OpenFlow, NetFlow ¹× sFlow¿Í °°Àº ´Ù¾çÇÑ ½ºÅ°¸¶¸¦ ÅëÇØ ÀÌ ¹®Á¦Á¡À» ÇØ°áÇß´Ù.
ºÐ»ê °¡»ó ½ºÀ§Ä¡ÀÇ Ãʱ⠱¸ÇöÀº µ¶Á¡ ÇÏÀÌÆÛ¹ÙÀÌÀú ¼¼Æ®¿¡ ´ëÇÑ ÀÛµ¿À¸·Î¸¸ Á¦ÇѵǾî ÀÖ¾ú´Ù. ÇÏÁö¸¸ ¿À´Ã³¯ÀÇ Å¬¶ó¿ìµå ȯ°æ¿¡¼´Â ¿©·¯ ÇÏÀÌÆÛ¹ÙÀÌÀú°¡ °øÁ¸ÇÒ ¼ö ÀÖ´Â À̱âÁ¾ ȯ°æÀ» Áö¿øÇÏ´Â °ÍÀÌ ÀÌ»óÀûÀÌ´Ù.
Open vSwitch´Â Apache 2.0 ¶óÀ̼¾½º ÇÏ¿¡¼ ¿ÀÇ ¼Ò½º·Î »ç¿ë °¡´ÉÇÑ ´Ù°èÃþ °¡»ó ½ºÀ§Ä¡ÀÌ´Ù. 2010³â 5¿ùºÎÅÍ Open vSwitch´Â ¹öÀü 1.0.1À» »ç¿ëÇÒ ¼ö ÀÖ°Ô µÇ¾ú°í ÀλóÀûÀÎ ±â´ÉÀ» Áö¿øÇÑ´Ù. Open vSwitch´Â KVM(Kernel-based VM), VirtualBox, Xen ¹× XenServer¸¦ Æ÷ÇÔÇÑ ¶Ù¾î³ ¿ÀÇ ¼Ò½º ÇÏÀÌÆÛ¹ÙÀÌÀú ¼Ö·ç¼ÇÀ» Áö¿øÇÑ´Ù. Open vSwitch´Â ÇöÀç Linux ¿¬°á ¸ðµâÀÇ Àӽà ´ëüÀ̱⵵ ÇÏ´Ù.
Open vSwitch´Â ½ºÀ§Ä¡ µð¸Õ°ú ÇÃ·Î¿ì ±â¹Ý ½ºÀ§Ä¡¸¦ °ü¸®ÇÏ´Â µ¿¹Ý Ä¿³Î ¸ðµâ·Î ±¸¼ºµÈ´Ù. ½ºÀ§Ä¡ °ü¸®¿¡ ÇÊ¿äÇÑ ´Ù¾çÇÑ ±âŸ µð¸Õ ¹× À¯Æ¿¸®Æ¼µµ Á¸ÀçÇÑ´Ù(ƯÈ÷ OpenFlowÀÇ °üÁ¡¿¡¼). Open vSwitch Àüü¸¦ »ç¿ëÀÚ °ø°£¿¡¼ ½ÇÇàÇÒ ¼ö ÀÖÁö¸¸ ±×·¸°Ô ÇÏ¸é ¼º´ÉÀÌ ÀúÇϵȴÙ.
VM ȯ°æÀ» À§ÇÑ ÇÁ·Î´ö¼Ç Ç°Áú ½ºÀ§Ä¡¸¦ Á¦°øÇÏ´Â °Í ¿Ü¿¡µµ Open vSwitch¿¡´Â Æó¼âÀûÀÎ ´Ù¸¥ µ¶Á¡ ¼Ö·ç¼Ç°ú °æÀïÇÒ ÀλóÀûÀÎ ±â´É ·Îµå¸ÊÀÌ Æ÷ÇԵȴÙ.
NIC Çϵå¿þ¾îÀÇ °¡»óÈ´Â °¡»ó ½ºÀ§Ä¡°¡ µµÀԵDZâ ÇÑÂü Àü¿¡ ´Ù¾çÇÑ Çü½ÄÀ¸·Î ÀÏÁ¤ ±â°£ µ¿¾È Á¸ÀçÇß´Ù. ÀÌ ¼½¼Ç¿¡¼´Â ÀϺΠ±¸Çö°ú ³×Æ®¿öÅ© °¡»óÈÀÇ ¼Óµµ¸¦ °³¼±Çϱâ À§ÇØ »ç¿ëÇÒ ¼ö ÀÖ´Â Çϵå¿þ¾î °¡¼ÓÈ Áß ÀϺο¡ ´ëÇØ »ìÆ캻´Ù.
QEMU´Â Ç÷§Æû ¿¡¹Ä·¹ÀÌÅÍÀÌÁö¸¸ NIC¸¦ Æ÷ÇÔÇÏ¿© ´Ù¾çÇÑ Çϵå¿þ¾î µð¹ÙÀ̽º¸¦ À§ÇÑ ¼ÒÇÁÆ®¿þ¾î ¿¡¹Ä·¹À̼ÇÀ» Á¦°øÇÑ´Ù. ¶ÇÇÑ QEMU´Â IP ÁÖ¼Ò ÇÒ´çÀ» À§ÇÑ ³»ºÎ DHCP(Dynamic Host Configuration Protocol) ¼¹ö¸¦ Á¦°øÇÑ´Ù. QEMU´Â KVM°ú ÇÔ²² ÀÛ¾÷ÇÏ¿© Ç÷§Æû ¿¡¹Ä·¹À̼ǰú °³º° µð¹ÙÀ̽º ¿¡¹Ä·¹À̼ÇÀ» Á¦°øÇÏ¿© KVM ±â¹Ý °¡»óȸ¦ À§ÇÑ Ç÷¿ÆûÀ» Á¦°øÇÑ´Ù.
Âü°íÀÚ·á ¼½¼Ç¿¡¼ QEMU¿¡ ´ëÇØ ÀÚ¼¼È÷ »ìÆ캼 ¼ö ÀÖ´Ù.
virtio
´Â VM¿¡¼ ÇÏÀÌÆÛ¹ÙÀÌÀú·ÎÀÇ I/O Æ®·¡ÇÈÀ» ´Ü¼øÈÇÏ°í ÃËÁøÇÏ´Â Linux¿ë ÀÔ/Ãâ·Â(I/O) ¹Ý°¡»óÈ ÇÁ·¹ÀÓ¿öÅ©ÀÌ´Ù.
virtio
´Â ºí·Ï µð¹ÙÀ̽º, ÀÏ¹Ý PCI(Peripheral Component Interconnect) µð¹ÙÀ̽º, ³×Æ®¿öÅ© µð¹ÙÀ̽º µîÀ» °¡»óÈÇϱâ À§ÇØ VM°ú ÇÏÀÌÆÛ¹ÙÀÌÀú »çÀÌÀÇ I/O¸¦ À§ÇÑ Ç¥ÁØÈµÈ Àü¼Û ¸ÞÄ¿´ÏÁòÀ» ÀÛ¼ºÇÑ´Ù.
Âü°íÀÚ·á ¼½¼Ç¿¡¼
virtio
ÀÇ ³»ºÎ ±¸Á¶¿¡ ´ëÇØ ÀÚ¼¼È÷ »ìÆ캼 ¼ö ÀÖ´Ù.
°¡»óȴ ȣ½ºÆ® ³×Æ®¿öÅ© ½ºÅÿ¡ ´ëÇÑ VM °Ô½ºÆ® ³×Æ®¿öÅ© ½ºÅà ¾×¼¼½º¸¦ Çã¿ëÇϱâ À§ÇØ »ó´çÇÑ ±â°£ µ¿¾È ³×Æ®¿öÅ© ½ºÅÿ¡¼ ±¸ÇöµÇ¾ú´Ù. ½ºÅ°¸¶ Áß µÎ °¡Áö´Â TAP°ú TUNÀÌ´Ù. TAPÀº ÀÌ´õ³Ý µð¹ÙÀ̽º¸¦ ±¸ÇöÇÏ¿© ÀÌ´õ³Ý ÇÁ·¹ÀÓ ·¹º§¿¡¼ ÀÛµ¿ÇÏ´Â °¡»ó ³×Æ®¿öÅ© Ä¿³Î µå¶óÀ̹öÀÌ´Ù. TAP µå¶óÀ̹ö´Â °Ô½ºÆ® ÀÌ´õ³Ý ÇÁ·¹ÀÓ°ú Åë½ÅÇÏ´Â µ¥ »ç¿ëµÇ´Â ÀÌ´õ³Ý "ÅÇ(tap)"À» Á¦°øÇÑ´Ù. TUN(¶Ç´Â ³×Æ®¿öÅ© "ÅͳÎ")Àº ±âº» ÀÌ´õ³Ý µð¹ÙÀ̽º°¡ TUN IP ÆÐŶÀÇ °èÃþ 2 ÇÁ·¹ÀÓÀ» °ü¸®ÇÒ ¼ö Àֱ⠶§¹®¿¡ ³×Æ®¿öÅ© °èÃþ µð¹ÙÀ̽º¸¦ ½Ã¹Ä·¹À̼ÇÇÏ°í IP ÆÐŶÀÇ »óÀ§ ·¹º§¿¡¼ Åë½ÅÇÏ¿© ¾à°£ÀÇ ÃÖÀûȸ¦ Á¦°øÇÑ´Ù.
I/O °¡»óÈ´Â Çϵå¿þ¾î ·¹º§¿¡¼ °¡»óÈÀÇ °¡¼ÓÀ» °¡´ÉÇÏ°Ô ÇÏ´Â PCI-SIG(Special Interest Group)ÀÇ Ç¥ÁØÈµÈ ½ºÅ°¸¶ÀÌ´Ù. ƯÈ÷ SR-IOV(Single-root IOV)´Â ´ÜÀÏ PCIe(PCI Express) Ä«µå°¡ ´Ù¼öÀÇ »ç¿ëÀÚ¿¡°Ô º¹¼öÀÇ PCIe Ä«µå·Î Ç¥½ÃµÉ ¼ö ÀÖµµ·Ï ÇÏ´Â ÀÎÅÍÆäÀ̽º¸¦ ³ëÃâÇÏ¿© µ¶¸³ÀûÀÎ ¿©·¯ µå¶óÀ̹ö°¡ ¼·Î¿¡ ´ëÇÑ Áö½Ä ¾øÀÌ PCIe Ä«µå¿¡ Á¢¼ÓÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù. SR-IOV´Â PCIe °ø°£ÀÇ ½ÇÁ¦ ÇÔ¼ö·Î ³ªÅ¸³ª°í Ä«µå ³»¿¡¼ °øÀ¯ ÇÔ¼ö·Î Ç¥½ÃµÇ´Â °¡»ó ÇÔ¼ö¸¦ ´Ù¾çÇÑ »ç¿ëÀÚ¿¡°Ô±îÁö È®ÀåÇÏ¿© À̸¦ ´Þ¼ºÇÑ´Ù.
SR-IOV°¡ ³×Æ®¿öÅ© °¡»óÈ¿¡ Á¦°øÇÏ´Â ÇýÅÃÀº ¼º´ÉÀÌ´Ù. ½ÇÁ¦ NICÀÇ °øÀ¯¸¦ ±¸ÇöÇÏ´Â ÇÏÀÌÆÛ¹ÙÀÌÀú ´ë½Å Ä«µå ÀÚü°¡ ¸ÖƼÇ÷º½ÌÀ» ±¸ÇöÇÏ¿© °Ô½ºÆ® VM¿¡¼ Ä«µå·Î Á÷Á¢ I/O¸¦ Àü´ÞÇÒ ¼ö ÀÖ°Ô ÇÑ´Ù.
¿À´Ã³¯ Linux¿¡´Â KVM ÇÏÀÌÆÛ¹ÙÀÌÀú¿¡ µµ¿òÀÌ µÇ´Â SR-IOV¿¡ ´ëÇÑ Áö¿øÀÌ Æ÷ÇԵȴÙ. Xen¿¡µµ SR-IOV¿¡ ´ëÇÑ Áö¿øÀÌ Æ÷ÇԵǾî vNIC¸¦ °Ô½ºÆ® VM¿¡ È¿À²ÀûÀ¸·Î Á¦°øÇÒ ¼ö ÀÖ´Ù. SR-IOV¿¡ ´ëÇÑ Áö¿øÀº Open vSwitch¸¦ À§ÇÑ ·Îµå¸Ê À§¿¡ ÀÖ´Ù.
°ü·ÃÀº ÀÖÁö¸¸ °¡»ó LAN(VLAN)Àº ³×Æ®¿öÅ© °¡»óȸ¦ À§ÇÑ ½ÇÁ¦ ¸Þ¼ÒµåÀÌ´Ù. VLANÀº ºÐ»ê ³×Æ®¿öÅ©¿¡¼ °¡»ó ³×Æ®¿öÅ©¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ´Â ±â´ÉÀ» Á¦°øÇϹǷΠµ¶¸³ ³×Æ®¿öÅ©¿¡ ÀÖ´Â ÀÌÁúÀûÀΠȣ½ºÆ®´Â µ¿ÀÏÇÑ ºê·Îµåij½ºÆ® µµ¸ÞÀÎÀÇ ÀϺÎÀÎ °Íó·³ Ç¥½ÃµÈ´Ù. VLANÀº IEEE(Institute of Electrical and Electronics Engineers) 802.1Q Ç¥Áغ° ƯÁ¤ LAN¿¡ ´ëÇÑ ¸â¹ö½ÊÀ» ½Äº°Çϱâ À§ÇØ ÇÁ·¹ÀÓ¿¡ VLAN Á¤º¸¸¦ ű׷ΠÁöÁ¤ÇÏ¿© À̸¦ ´Þ¼ºÇÑ´Ù. È£½ºÆ®´Â VLAN ½ºÀ§Ä¡¿Í ÇÔ²² ÀÛ¾÷ÇÏ¿© ½ÇÁ¦ ³×Æ®¿öÅ©¸¦ °¡»óÈÇÑ´Ù. ÇÏÁö¸¸ VLANÀÌ ºÐ¸®µÈ ³×Æ®¿öÅ©¿¡ ´ëÇÑ È¯»óÀ» Á¦°øÇÏ´õ¶óµµ VLANÀº µ¿ÀÏÇÑ ³×Æ®¿öÅ©¸¦ °øÀ¯Çϱ⠶§¹®¿¡ Á¤Ã¼·Î ÀÎÇØ ¹ß»ýÇÏ´Â »ç¿ë °¡´ÉÇÑ ´ë¿ªÆø ¹× ¿µÇâÀ» °øÀ¯ÇÑ´Ù.
NIC ¹× ±âŸ µð¹ÙÀ̽º¸¦ ¾ð±ÞÇÏ´Â ´Ù¼öÀÇ I/O Á᫐ °¡»óÈ °¡¼ÓÈ°¡ ³ªÅ¸³ª±â ½ÃÀÛÇß´Ù. Intel¢ç VT-d(Virtualization Technology for Directed I/O)¿¡¼´Â ½Å·Ú¼º ¹× º¸¾È Çâ»óÀ» À§ÇØ I/O ÀÚ¿øÀ» °Ý¸®ÇÏ´Â ±â´ÉÀ» Á¦°øÇÏ¸ç ¿©±â¿¡´Â ¸ÖƼ ·¹º§ ÆäÀÌÁö Å×À̺íÀ» »ç¿ëÇÑ Á÷Á¢ ¸Þ¸ð¸® ¾×¼¼½º Àü¼Û Àç¸ÊÇΰú µð¹ÙÀ̽º ¿¬°ü ÀÎÅÍ·´Æ® Àç¸ÊÇÎÀÌ Æ÷ÇÔµÇ¾î ¼öÁ¤µÇÁö ¾ÊÀº °Ô½ºÆ®¿Í °¡»óȸ¦ ÀνÄÇÏ´Â °Ô½ºÆ®¸¦ µÑ ´Ù Áö¿øÇÑ´Ù. Intel VMDq(Virtual Machine Device Queues)µµ Å¥¸¦ ÀÓº£µåÇÏ°í Çϵå¿þ¾î ³»¿¡¼ ÀÎÅÚ¸®Àü½º¸¦ Á¤·ÄÇÏ¿© ÇÏÀÌÆÛ¹ÙÀÌÀúÀÇ CPU »ç¿ë·®À» ÁÙÀÌ°í Àü¹ÝÀûÀÎ ½Ã½ºÅÛ ¼º´ÉÀ» Çâ»ó½ÃÅ´À¸·Î½á °¡»óÈ ¼³Á¤¿¡¼ ³×Æ®¿öÅ© Æ®·¡ÇÈ Ç÷ο츦 °¡¼ÓÈÇÑ´Ù. Linux¿¡´Â À̵鿡 ´ëÇÑ Áö¿øÀÌ ¸ðµÎ Æ÷ÇԵǾî ÀÖ´Ù.
Áö±Ý±îÁö ÀÌ ±â»ç¿¡¼´Â NIC µð¹ÙÀ̽º ¹× ½ºÀ§Ä¡ÀÇ °¡»óÈ, ±âÁ¸ ±¸Çö Áß ÀϺÎ, ÀÌ·¯ÇÑ °¡»óÈ°¡ Çϵå¿þ¾î¸¦ ÅëÇØ °¡¼ÓȵǴ ¹æ¹ý Áß ÀϺο¡ ´ëÇØ »ìÆìºÃ´Ù. ÀÌÁ¦´Â ÀÏ¹Ý ³×Æ®¿öÅ© ¼ºñ½º±îÁö ¹üÀ§¸¦ È®ÀåÇØ º¸ÀÚ.
°¡»óÈ ¿µ¿ª¿¡¼ Èï¹Ì·Î¿î Çõ½Å»çÇ× Áß ÇÑ °¡Áö´Â ¼¹ö ÅëÇÕÀ¸·ÎºÎÅÍ ÁøÈÇϴ ȯ°æÀÌ´Ù. ¾ÖÇø®ÄÉÀ̼ÇÀ» Çϵå¿þ¾îÀÇ Æ¯¼ö ¹öÀü¿¡ Àü¿ëÇÏ´Â ´ë½Å ¼¹öÀÇ ÀϺΰ¡ ºÐ¸®µÇ¾î ¼¹ö ³»¿¡¼ ¼ºñ½º¸¦ È®ÀåÇÏ´Â VMÀ» °ÈÇÑ´Ù. ÀÌ·¯ÇÑ VMÀº ƯÁ¤ ¾ÖÇø®ÄÉÀ̼ǿ¡ ÃÊÁ¡À» µÎ°í °¡»óÈ ¼³Á¤À» À§ÇØ °³¹ßµÇ¾ú±â ¶§¹®¿¡ °¡»ó ¾îÇöóÀ̾𽺶ó°í ºÎ¸¥´Ù.
°¡»ó ¾îÇöóÀ̾𽺴 ÀϹÝÀûÀ¸·Î ÇÏÀÌÆÛ¹ÙÀÌÀú(¶Ç´Â ÇÏÀÌÆÛ¹ÙÀÌÀú°¡ Á¦°øÇÏ´Â ÀÏ¹Ý ³×Æ®¿öÅ© ÀÎÇÁ¶ó)¿¡ ¿¬°áµÇ¾î ƯÁ¤ ¼ºñ½º¸¦ È®ÀåÇÑ´Ù. ¿©±â¼ ƯÀÌÇÑ ºÎºÐÀº ÅëÇÕ ¼¹ö¿¡¼ ó¸® ¿ë·® Áß ÀϺÎ(¿¹: ÄÚ¾î)¿Í I/O ´ë¿ªÆøÀÌ °¡»ó ¾îÇöóÀ̾𽺸¦ À§ÇØ µ¿ÀûÀ¸·Î ±¸¼ºµÉ ¼ö ÀÖ´Ù´Â Á¡ÀÌ´Ù. À̸¦ À§ÇØ ´ÜÀÏ ¼¹ö°¡ °Ý¸®µÇÁö ¾Ê±â ¶§¹®¿¡ ÀÌ·¯ÇÑ ±â´ÉÀº ºñ¿ë È¿À²À» ´õ ³ôÀ̹ǷΠ»ç¿ëÀÚ´Â ¼¹ö¿¡¼ ½ÇÇà ÁßÀÎ ´Ù¸¥ ¾ÖÇø®ÄÉÀ̼ÇÀÇ ¿ä±¸¿¡ µû¶ó ¿ë·®À» µ¿ÀûÀ¸·Î º¯°æÇÒ ¼ö ÀÖ´Ù. ¶ÇÇÑ °¡»ó ¾îÇöóÀ̾𽺴 VM ³»¿¡¼ ¿î¿µ üÁ¦¿¡ °áÇյDZ⠶§¹®¿¡ °ü¸®°¡ ´õ ´Ü¼øÇÒ ¼ö ÀÖ´Ù. VMÀº ÀüüÀûÀ¸·Î »çÀü ±¸¼ºµÇ¾î Àֱ⠶§¹®¿¡ Ưº°ÇÑ ±¸¼ºÀÌ ÇÊ¿äÇÏÁö ¾Ê´Ù. ÀÌ°ÍÀº °¡»ó ¾îÇöóÀ̾𽺿¡ ´ëÇÑ »ó´çÇÑ ÇýÅÃÀÌ¸ç ¿À´Ã³¯ °¡»ó ¾îÇöóÀ̾𽺰¡ ¼ºÀåÇÏ°í ÀÖ´Â ÀÌÀ¯À̱⵵ ÇÏ´Ù.
°¡»ó ¾îÇöóÀ̾𽺴 ´Ù¼öÀÇ ¿£ÅÍÇÁ¶óÀÌÁî ¾ÖÇø®ÄÉÀ̼ÇÀ» °³¹ßÇØ ¿ÔÀ¸¸ç WAN ÃÖÀûÈ, ¶ó¿ìÅÍ, °¡»ó »ç¼³ ³×Æ®¿öÅ©, ¹æȺ®, ħÀÔ ¹æ¾î/°¨Áö ½Ã½ºÅÛ, À̸ÞÀÏ ºÐ·ù ¹× °ü¸® µîÀ» Æ÷ÇÔÇÑ´Ù. ³×Æ®¿öÅ© ¼ºñ½º ¿ÜºÎ¿¡´Â ½ºÅ丮Áö, º¸¾È, ¾ÖÇø®ÄÉÀÌ¼Ç ÇÁ·¹ÀÓ¿öÅ© ¹× ÄÁÅÙÃ÷ °ü¸®¸¦ À§ÇÑ °¡»ó ¾îÇöóÀ̾𽺰¡ ÀÖ´Ù.
°ü¸®ÇÒ ¼ö ÀÖ´Â ¸ðµç °ÍµéÀÌ ½ÇÁ¦·Î ¸¸Áú ¼ö ÀÖ´Â °ÍÀ̾ú´ø ½ÃÀýÀÌ ÀÖ¾ú´Ù. ÇÏÁö¸¸ ¿À´Ã³¯°ú °°ÀÌ °¡»óÈ°¡ Áõ°¡ÇÏ°í Àִ ȯ°æ¿¡¼´Â ½ÇÁ¦ µð¹ÙÀ̽º ¹× ¼ºñ½º´Â ´«¿¡ º¸ÀÌÁö ¾Êµµ·Ï »ç¶óÁö°í ÀÖ´Ù. ½ÇÁ¦ ³×Æ®¿öÅ©´Â Æ®·¡ÇÈ °Ý¸® ¹× Áö¿ªÀûÀ¸·Î ºÐ»êµÈ ¿£Æ¼Æ¼¿¡¼ÀÇ °¡»ó ³×Æ®¿öÅ© ±¸¼ºÀ» Çã¿ëÇϱâ À§ÇØ °¡»óÀ¸·Î ¼¼±×¸ÕƮȵǰí ÀÖ´Ù. ¾ÖÇø®ÄÉÀ̼ÇÀº °·ÂÇÑ ¼¹ö ³»ÀÇ ÄÚ¾î »çÀÌ¿¡¼ ¼¼±×¸ÕƮȵǴ °¡»ó ¾îÇöóÀ̾𽺠¼ÓÀ¸·Î »ç¶óÁ® °ü¸®ÀÚ¿¡°Ô ´õ ¸¹Àº º¹À⼺À» Á¦°øÇÏÁö¸¸ Çâ»óµÈ À¯¿¬¼º°ú °ü¸®¼ºµµ Á¦°øÇÑ´Ù. ¹°·Ð Linux°¡ À̸¦ À̲ø°í ÀÖ´Ù.