¼ÒÇÁÆ®¿þ¾î ±â¹Ý TOEÀÇ ±¸Çö
TOE ±¸ÇöÀ» À§ÇÑ È£½ºÆ® Ä¿³ÎÀÇ ¼öÁ¤
TOE¸¦ »ç¿ëÇϱâ À§Çؼ´Â È£½ºÆ® Ä¿³ÎÀÇ ¼öÁ¤ÀÌ ÇÊ¿äÇÏ´Ù. ¾Æ·¡ [±×¸²2]¿¡¼ º¸µíÀÌ È£½ºÆ®ÀÇ »ç¿ëÀÚ ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼ ¼ÒÄÏ ¶óÀ̺귯¸®ÀÇ ÇÔ¼ö¸¦ È£ÃâÇÏ¸é ±× ¸í·ÉÀº ÀϹÝÀûÀ¸·Î È£½ºÆ®¿¡¼ TCP/IP¸¦ ó¸®ÇÒ °æ¿ì, BSD ¼ÒÄÏ °èÃþ, INET ¼ÒÄÏ °èÃþ, TCP/IP °èÃþÀ» °ÅÃÄ µð¹ÙÀ̽º °èÃþÀ¸·Î Àü´ÞµÇ°Ô µÇ¾îÀÖ´Ù. ÇÏÁö¸¸ TOE¸¦ »ç¿ëÇϴ ȯ°æ¿¡¼´Â BSD °èÃþ¿¡¼ TOE¸¦ »ç¿ëÇÏ´Â Áö, »ç¿ëÇÏÁö ¾ÊÀº Áö¸¦ ÆÇº°ÇÏ¿© INET, TCP/IP °èÃþÀ» °ÅÄ¡Áö ¾Ê°í µð¹ÙÀ̽º °èÃþÀ¸·Î ¹Ù·Î Àü´ÞÇÒ Çʿ䰡 ÀÖ´Ù.
º» ³í¹®¿¡¼´Â À§¿Í °°Àº ÀÌÀ¯·Î È£½ºÆ® Ä¿³ÎÀÎ 2.4.27 ¹öÀüÀÇ ¸®´ª½º Ä¿³ÎÀ» ¼öÁ¤ÇÏ¿´´Ù. ÀÌ·¯ÇÑ ¼öÁ¤À¸·Î¼ ±âÁ¸ÀÇ ¼ÒÄÏ ÀÀ¿ë ÇÁ·Î±×·¥Àº ¼ÒÄÏÀ» »ý¼ºÇÏ´Â socket()ÇÔ¼öÀÇ ÀÎÀÚ·Î TOE¸¸ Á¤ÀÇÇϱ⸸ Çϸé TOE ±â´ÉÀ» »ç¿ëÇÒ ¼ö ÀÖ°Ô µÈ´Ù. ¿©±â¼ ´Ù¸¥ ³ª¸ÓÁö ÇÔ¼öµéÀÇ ¼öÁ¤À» ÇÊ¿äÇÏÁö ¾Ê´Ù. TOE¸¦ ÀÌ¿ëÇÏ´Â ÄÚµåµéÀº µð¹ÙÀ̽º °èÃþ¿¡ ±¸ÇöµÈ ¼ÒÄÏ ÇÔ¼öµéÀ» Á÷Á¢ È£ÃâÇÏ°í ±× °á°ú¸¦ µ¹·Á ¹Þ°Ô µÈ´Ù.
[±×¸² 2] TOE¸¦ »ç¿ëÇϱâ À§ÇÑ È£½ºÆ® Ä¿³ÎÀÇ ¼öÁ¤
TOEÀÇ ±¸ÇöÀ» À§ÇÑ ¼ÒÄÏ ¶óÀ̺귯¸®ÀÇ ºÐ·ù
TOEÀÇ ±¸ÇöÀ» À§Çؼ ¼ÒÄÏ ¶óÀ̺귯¸®¸¦ ºÐ·ùÇÏ¸é ¾Æ·¡ [±×¸²3]°ú °°ÀÌ µÎ °¡Áö Á¾·ù·Î ³ª´ ¼ö ÀÖ´Ù. ù°´Â ¼¹ö Ãø°ú Ŭ¶óÀÌ¾ðÆ® ÃøÀÇ ¿¬°áÀ» ´ã´çÇÏ´Â ¿¬°á °ü·Ã ÇÔ¼ö°¡ ÀÖ°í, µÑ°´Â µ¥ÀÌÅ͸¦ ¼Û¼ö½ÅÇϱâ À§ÇÑ µ¥ÀÌÅÍ Àü¼Û ÇÔ¼ö°¡ ÀÖ´Ù.
[±×¸² 3] ¼ÒÄ϶óÀ̺귯¸®ÀÇ ºÐ·ù
´ÙÀ½¿¡ ¼³¸íµÉ ¼ÒÇÁÆ®¿þ¾î ±â¹Ý TOEÀÇ ±¸Çö¿¡¼´Â ÀÌ·¯ÇÑ ºÐ·ù¹æ½Ä¿¡ µû¶ó¼ ±× µ¿ÀÛ¹æ½ÄÀ» °áÁ¤Çϰí ÀÖ´Ù.
ÀÓº£µðµå ¸®´ª½º¸¦ ÀÌ¿ëÇÑ TOEÀÇ ±¸Çö
´ÙÀ½ [±×¸²4]´Â ÀÓº£µðµå ¸®´ª½º¸¦ ÀÌ¿ëÇÏ¿© TOE¸¦ ±¸ÇöÇÏ´Â µ¥ ÀÖ¾î¼, ¿¬°á°ú °ü·ÃµÈ ÇÔ¼öµéÀÇ Ã³¸®°úÁ¤À» º¸À̰í ÀÖ´Ù. ¼ÒÄÏÀ» »ý¼ºÇÏ´Â ÇÔ¼öÀÎ socket()ÀÇ Ã³¸®°úÁ¤À» ÅëÇØ¼ ±× µ¿ÀÛÀ» »ìÆìº¸°Ú´Ù. ³ª¸ÓÁö ¿¬°á°ü·Ã ÇÔ¼öµéÀÇ µ¿ÀÛÀº socket()°ú °°´Ù.
[±×¸² 4] ÀÓº£µðµå ¿î¿µÃ¼Á¦¸¦ ÀÌ¿ëÇÑ TOEÀÇ ±¸Çö
(¿¬°á °ü·Ã ÇÔ¼ö ó¸®)
[±×¸²4]¿¡¼ º¸µíÀÌ TOE°¡ ±¸ÇöµÈ ÀÓº£µðµå ½Ã½ºÅÛ ¿µ¿ªÀº ½ÇÁ¦ ¼ÒÄ϶óÀ̺귯¸® Äڵ带 ¼öÇàÇÏ´Â ÀÓº£µðµå ÀÀ¿ë ÇÁ·Î±×·¥°ú ÀÎÅÍ·´Æ® ó¸®¿Í È£½ºÆ®¿ÍÀÇ ÀÎÅÍÆäÀ̽º¸¦ ´ã´çÇÏ´Â ÀÓº£µðµå Ä¿³Î ¸ðµâ·Î ³ª´µ°Ô µÈ´Ù.
µ¿ÀÛ ¹æ½ÄÀº ´ÙÀ½°ú °°´Ù. ¸ÕÀú »ç¿ëÀÚ ÇÁ·Î±×·¥ÀÌ socket()À» È£ÃâÇϸé, BSD ¼ÒÄÏ °èÃþÀ» °ÅÃÄ µð¹ÙÀ̽º µå¶óÀ̹öÀÇ toe_socket()ÀÌ È£ÃâµÈ´Ù ¨ç. toe_socket()Àº ÀÎÅÍ·´Æ®¿Í ÇÔ²² socket()ÀÇ ÀÎÀÚ¸¦ ÀÓº£µðµå ½Ã½ºÅÛ¿¡ Àü´ÞÇϰí ÀÚ½ÅÀº ´ë±â »óÅ¿¡ Á¢¾îµç´Ù ¨è. ÀÎÅÍ·´Æ®¸¦ ¹ÞÀº ÀÓº£µðµå Ä¿³Î ¸ðµâÀº ÀÎÅÍ·´Æ® Çڵ鷯¸¦ ÅëÇØ¼ ÀÌÀü¿¡ ´ë±âÇϰí ÀÖ´ø ÀÓº£µðµå ÀÀ¿ëÇÁ·Î±×·¥À» ±ú¿î´Ù ¨é. ´ë±â»óÅ¿¡¼ ±ú¾î³ ÀÓº£µðµå ÀÀ¿ëÇÁ·Î±×·¥Àº ½ÇÁ¦ socket() ó¸® Äڵ带 ¼öÇàÇÑ´Ù ¨ê. socket()À» ó¸®ÇÏ°í ³ª¿Â ¹Ýȯ°ªÀ» ioctl()À» ÅëÇØ¼ ÀÓº£µðµå Ä¿³Î ¸ðµâ·Î Àü´ÞÇÑ´Ù ¨ë. ÀÓµ¥µðµå Ä¿³Î ¸ðµâÀÇ ioctl()Àº ÀÎÅÍ·´Æ®¸¦ ÅëÇØ¼ °á°ú°ªÀ» È£½ºÆ® ÃøÀ¸·Î Àü´ÞÇÑ´Ù ¨ì. ÀÎÅÍ·´Æ®¸¦ Àü´Þ¹ÞÀº È£½ºÆ® ÃøÀÇ ÀÎÅÍ·´Æ® Çڵ鷯´Â ´ë±â »óÅ¿¡ ÀÖ´Â toe_socket()À» ±ú¿ì°í, ´ë±â »óÅ¿¡¼ ¹þ¾î³ toe_socket()ÇÔ¼ö´Â °á°ú°ªÀ» »ç¿ëÀÚ ÀÀ¿ëÇÁ·Î±×·¥ ¿µ¿ª¿¡ Àü´ÞÇÏ¿© ±× µ¿ÀÛÀÌ ¿Ï·áµÈ´Ù ¨í.
´ÙÀ½ [±×¸²5]Àº ÀÓº£µðµå ¸®´ª½º¸¦ ÀÌ¿ëÇÏ¿© TOE¸¦ ±¸ÇöÇÏ´Â µ¥ ÀÖ¾î¼, µ¥ÀÌÅÍ Àü¼Û ÇÔ¼öµéÀÇ Ã³¸®°úÁ¤À» º¸À̰í ÀÖ´Ù. µ¥ÀÌÅÍ ¼Û½Å ÇÔ¼ö send()ÀÇ Ã³¸®°úÁ¤À» ÅëÇØ¼ ±× µ¿ÀÛÀ» »ìÆìº¸°Ú´Ù. ³ª¸ÓÁö ¿¬°á°ü·Ã ÇÔ¼öµéÀÇ µ¿ÀÛÀº send()°ú °°´Ù.
[±×¸² 5] ÀÓº£µðµå ¿î¿µÃ¼Á¦¸¦ ÀÌ¿ëÇÑ TOEÀÇ ±¸Çö
(µ¥ÀÌÅÍ Àü¼Û ÇÔ¼ö ó¸®)
µ¥ÀÌÅÍ Àü¼Û ÇÔ¼öÀÇ Ã³¸® ¹æ½ÄÀº À§ÀÇ ¿¬°á°ü·Ã ÇÔ¼ö 󸮹æ½Ä°ú °ÅÀÇ À¯»çÇÏ´Ù. ´ÜÁö »ç¿ëÀÚ ¿µ¿ª ¸Þ¸ð¸®ÀÇ ³»¿ëÀ» ÀÓº£µðµå ½Ã½ºÅÛ¿¡ Àü´ÞÇϱâ À§ÇÏ¿© 2°¡Áö ÀÛ¾÷ÀÌ Ãß°¡ µÈ´Ù. »ç¿ëÀÚ ¿µ¿ª ¸Þ¸ð¸®ÀÇ ³»¿ëÀ» ÀÓº£µðµå ½Ã½ºÅÛÀÌ DMAÇϱâ À§ÇÏ¿© µð¹ÙÀ̽º µå¶óÀ̹ö °èÃþ¿¡¼ »ç¿ëÀÚ ¿µ¿ª ¸Þ¸ð¸®¸¦ ¹°¸®ÀûÀÎ ÁÖ¼Ò·Î º¯È¯ÇÏ´Â ÀÛ¾÷°ú ÀÓº£µðµå ½Ã½ºÅÛ¿¡¼ÀÇ DMA ÀÛ¾÷ÀÌ ±×°ÍÀÌ´Ù.
ÀÌ·¯ÇÑ ÀÓº£µðµå ¸®´ª½º¸¦ ÀÌ¿ëÇÑ TOEÀÇ ¼º´ÉÀº ½ÇÇè°á°ú ¿î¿µÃ¼Á¦ÀÇ »ç¿ëÀ¸·Î ÀÎÇÑ ¿À¹öÇìµå·Î ÀÎÇÏ¿© ÁÁÀº ¼º´ÉÀÌ ³ª¿ÀÁö ¾Ê¾Ò´Ù. ±×·¯ÇÑ ¿À¹öÇìµå´Â ÀÓº£µðµå ÀÀ¿ëÇÁ·Î±×·¥°ú Ä¿³Î ¸ðµâ°£ÀÇ context switch¿Í ´ë±â »óÅ·ÎÀÇ ÁøÀÔ, ´ë±â »óŸ¦ ºüÁ®³ª¿À´Â ÀÛ¾÷ÀÌ µÉ ¼ö ÀÖ´Ù. º» ³í¹®¿¡¼´Â ÀÌ·¯ÇÑ ¿À¹öÇìµå¸¦ ÇØ°áÇϱâ À§ÇÑ ¹æ¹ýÀ¸·Î ¿î¿µÃ¼Á¦¸¦ »ç¿ëÇÏÁö ¾Ê°í Àü¿ë ÇÁ·Î±×·¥À» °³¹ßÇÏ¿© TOE¸¦ ±¸ÇöÇÏ´Â ¹æ¹ýÀ» »ç¿ëÇÏ¿´´Ù. ÀÌ·¯ÇÑ ±¸Çö¿¡¼ TCP/IP¸¦ ó¸®Çϱâ À§ÇÑ ÄÚµå·Î¼ lwIP¸¦ »ç¿ëÇÏ¿´´Ù.
¿î¿µÃ¼Á¦ ¾øÀÌ lwIP¸¦ ÀÌ¿ëÇÑ TOEÀÇ ±¸Çö
´ÙÀ½ÀÇ [±×¸²6]°ú [±×¸²7]Àº ¿î¿µÃ¼Á¦¸¦ »ç¿ëÇÏÁö ¾Ê°í lwIP¸¦ ÀÌ¿ëÇÏ¿© TOE¸¦ ±¸ÇöÇßÀ» ¶§ °¢ ÇÔ¼öµéÀ» ¾î¶»°Ô ó¸®ÇÏ´ÂÁö¸¦ º¸¿©ÁÖ°í ÀÖ´Ù.
¿¬°á°ú °ü·ÃµÈ ÇÔ¼öµéÀÇ Ã³¸®´Â ´ÙÀ½°ú °°´Ù.
[±×¸² 6] ¿î¿µÃ¼Á¦ ¾øÀÌ lwIP ÀÌ¿ëÇÑ TOEÀÇ ±¸Çö
(¿¬°á °ü·Ã ÇÔ¼ö ó¸®)
µ¥ÀÌÅÍ Àü¼Û°ú °ü·ÃµÈ ÇÔ¼öµéÀÇ Ã³¸®´Â ´ÙÀ½°ú °°´Ù.
[±×¸² 7] ¿î¿µÃ¼Á¦ ¾øÀÌ lwIP ÀÌ¿ëÇÑ TOEÀÇ ±¸Çö
(µ¥ÀÌÅÍ Àü¼Û ÇÔ¼ö ó¸®)
À§ÀÇ ±×¸²¿¡¼µµ ¾Ë ¼ö ÀÖµíÀÌ, ¿î¿µÃ¼Á¦¸¦ »ç¿ëÇÏÁö ¾Ê´Â ȯ°æ¿¡¼´Â ¾Õ¼± ÀÓº£µðµå ¿î¿µÃ¼Á¦¸¦ »ç¿ëÇÏ¿© TOE¿¡¼¿Í´Â ´Þ¸® ÀÓº£µðµå ½Ã½ºÅÛ ¿µ¿ªÀº ÀÓº£µðµå ÀÀ¿ë ÇÁ·Î±×·¥ Çϳª·Î¸¸ ±¸¼ºµÇ¾î ÀÖ´Ù. ±×¸®°í ´ë±â »óÅ·ΠÁ¢¾îµå´Â ÀÛ¾÷°ú À̸¦ ±ú¿ì´Â ÀÛ¾÷ÀÌ ¾ø´Ù. ±×·¸±â ¶§¹«¿¡ ÀÓº£µðµå ¿î¿µÃ¼Á¦¸¦ ÀÌ¿ëÇÑ TOE¿¡¼ ÁöÀûÇÑ OS »ç¿ëÀ¸·Î ÀÎÇÑ ¿À¹öÇìµå´Â Á¸ÀçÇÏÁö ¾Ê´Â´Ù.
lwIP¸¦ ÀÌ¿ëÇÑ TOEÀÇ ¼º´É Çâ»óÀ» À§ÇÑ lwIPÀÇ ¼º´É°³¼±
1. lwIPÀÇ ÀÎÀÚ ¼³Á¤ÀÇ ¼öÁ¤: lwIP´Â ¸Þ¸ð¸® »ç¿ë·®À» ÃÖ¼ÒÈÇϵµ·Ï °³¹ßµÇ¾ú±â ¶§¹®¿¡ ¼Û¼ö½Å ¹öÆÛÀÇ Å©±â, À©µµ¿ìÀÇ Å©±â, ¼¼±×¸ÕÆ®ÀÇ Å©±â µîÀÌ ÀÛÀº °ªÀ¸·Î ¼³Á¤µÇ¾î ÀÖ´Ù. ÃæºÐÇÑ ¼º´ÉÀ» ³»±â À§Çؼ´Â ÀÌ·¯ÇÑ ÀÎÀÚµéÀ» »óÇâ ¼³Á¤ÇÒ Çʿ䰡 ÀÖ¾î, º» ³í¹®¿¡¼´Â ½ÇÇèÀ» ÅëÇØ ÀûÀýÇÑ °ªÀ» ã¾Æ³»¾î »óÇâ ¼³Á¤ ÇÏ¿´´Ù.
2. ¸Þ¸ð¸® º¹»çÀÇ Á¦°Å: lwIP´Â ¼ö½Å ÆÐŶÀ» ÀúÀåÇϰí ÀÖ´Â µð¹ÙÀ̽º µå¶óÀ̹ö ÃøÀÇ ¹öÆÛ¿¡¼ lwIP Àü¿ë ÆÐŶ ¹öÆÛ ±¸Á¶Ã¼·Î º¹»çÇϵµ·Ï ±¸ÇöµÇ¾î ÀÖ´Ù. º» ³í¹®¿¡¼´Â ÀÌ´õ³Ý ÀåÄ¡¿¡¼ lwIP Àü¿ë¹öÆÛ·Î Áß°£¿¡ º¹»ç ¾øÀÌ ¹Ù·Î DMAÇϵµ·Ï ¼öÁ¤ÇÏ¿´´Ù.
[±×¸² 8] TOEÀÇ ¼º´É Çâ»óÀ» À§ÇÑ lwIPÀÇ ¸Þ¸ð¸® º¹»ç Á¦°Å
3. lwIPÀÇ ACK Àü¼Û ¹æ½ÄÀÇ ¼öÁ¤: lwIP´Â µ¥ÀÌÅÍ ÆÐŶÀ» ¹ÞÀ¸¸é ACK¸¦ ¹Ù·Î »ó´ë ³ëµå¿¡°Ô Àü¼ÛÇϵµ·Ï ±¸ÇöµÇ¾îÀÖ´Ù. Á» ´õ È¿À²ÀûÀ¸·Î ACK¸¦ Àü¼ÛÇϰíÀÚ Áö¿¬ ACK¹æ½ÄÀ» »ç¿ëÇϵµ·Ï lwIP¸¦ ¼öÁ¤ÇÏ¿´´Ù.
[±×¸² 9] TOEÀÇ ¼º´É Çâ»óÀ» À§ÇÑ lwIPÀÇ ACK Àü¼Û ¹æ½Ä ¼öÁ¤
¼ÒÇÁÆ®¿þ¾î ±â¹Ý TOE¸¦ ±¸ÇöÇϱâ À§ÇÑ °³¹ß ȯ°æ
º» ³í¹®¿¡¼´Â ¼ÒÇÁÆ®¿þ¾î ±â¹Ý TOE¸¦ °³¹ßÇϱâ À§ÇÏ¿©, Cyclone»çÀÇ PCI-730 ÀÓº£µðµå ½Ã½ºÅÛÀ» »ç¿ëÇÏ¿´´Ù.
[±×¸² 10] PCI-730ÀÇ ºí·Ï ´ÙÀ̾î±×·¥