Chapter 16 Task Offload °´Ã¼
´ÙÀ½ Â÷Æ®´Â TCP/IP task-offload ¿¬»êµéÀ» Áö¿øÇÏ´Â OIDµéÀ» ¿ä¾àÇÑ´Ù. ±×·¯ÇÑ ¿¬»êµéÀÇ ¼³¸íÀ» À§ÇØ, Network Design GuideÀÇ Part 2¸¦ ºÁ¶ó.
| Length |
Q |
S |
Name |
| Arr |
M |
M |
OID_TCP_TASK_OFFLOAD
Äõ¸®ÇÒ ¶§, NICÀÇ task-offload ´É·ÂµéÀ» º¸°íÇϱâ À§ÇØ ¹Ì´ÏÆ÷Æ®¿¡°Ô ¿ä±¸ÇÑ´Ù. ¼³Á¤ÇÒ ¶§, ¹Ì´ÏÆ÷Æ®¿¡°Ô NICÀÇ ÁöÁ¤µÈ task-offload ´É·ÂµéÀ» °¡´ÉÇÏ°Ô ¿ä±¸ÇÑ´Ù.
|
| Arr |
|
M |
OID_TCP_TASK_IPSEC_ADD_SA
¹Ì´ÏÆ÷Æ®¿¡°Ô NIC¿¡ ´ëÇÑ Çϳª ȤÀº ±× ÀÌ»óÀÇ º¸¾È Çùȸ(SA)µéÀ» Ãß°¡Çϱâ À§ÇØ ¿ä±¸ÇÑ´Ù.
|
| 4 |
M |
OID_TCP_TASK_IPSEC_DELETE_SA
¹Ì´ÏÆ÷Æ®¿¡°Ô NICÀ¸·ÎºÎÅÍ SA¸¦ Áö¿ìµµ·Ï ÇÑ´Ù.
|
´ÙÀ½Àº ¿ÏÀüÇÏ°Ô ¼±Çà Â÷Æ®¿¡¼ ¸®½ºÆ®µÈ OID_XXXÀÇ °¢°¢À» ¼³¸íÇÑ´Ù.
OID_TCP_TASK_OFFLOAD
TCP/IP Àü¼Û °èÃþÀº ÀÌ OID¸¦ ¹Ì´ÏÆ÷Æ®ÀÇ NICÀÇ task-offload ´É·ÂµéÀ» °áÁ¤Çϱâ À§ÇØ Äõ¸®ÇÑ´Ù. NICÀÌ Áö¿øÇϴ ŽºÅ©-offload ´É·ÂµéÀÌ ¾î´À°ÍÀÎÁö °áÁ¤ÇÑ ÈÄ, TCP/IP Àü¼Û ÇÁ·ÎÅäÄÝÀº ÀÌ OID¸¦ º¸°íµÈ ´É·ÂµéÀ» °¡´ÉÇϵµ·Ï ¼³Á¤ÇÑ´Ù. TCP/IP ÇÁ·ÎÅäÄÝÀº ¶ÇÇÑ ÀÌ OID¸¦ ¼³Á¤ÇÔÀ¸·Î½á NICÀÇ task-offload ´É·ÂµéÀÇ ¸ðµç °ÍÀ» ºÒ´ÉÀ¸·Î ÇÒ ¼ö ÀÖ´Ù. ´ÜÁö Çѹø¿¡ ÇϳªÀÇ ÇÁ·ÎÅäÄÝÀÌ Æ¯Á¤ NICÀÇ task-offload ´É·ÂµéÀ» °¡´ÉÇÒ ¼ö ÀÖ°Ô ÇÑ´Ù.
Querying a NIC's Task-Offload Capabilities
TCP/IP Àü¼Û °èÃþÀÌ OID_TCP_TASK_OFFLOAD¸¦ Äõ¸®ÇÒ ¶§, NDIS_TASK_OFFLOAD_HEADER ±¸Á¶Ã¼ÀÎ InformationBuffer·Î Á¦°øÇÑ´Ù. ÀÌ ±¸Á¶Ã¼´Â TCP/IP Àü¼Û °èÃþ¿¡ ÀÇÇØ 󸮵ȴÀ ¼Û½Å ¼ö½Å ÆÐŶµéÀ» À§ÇÑ Ä¸½¶È Æ÷¸Ë, ±×·¯ÇÑ ÆÐŶµé¿¡¼ ĸ½¶È Çì´õÀÇ Å©±â, TCP/IP Àü¼Û°èÃþ¿¡ ÀÇÇØ Á¦°øµÇ´Â task-offload ¹öÀüÀ» ÁöÁ¤ÇÑ´Ù. ÀÌ·¯ÇÑ Á¤º¸¿¡¼, ¹Ì´ÏÆ÷Æ® ȤÀº NICÀº offload task¸¦ ÇàÇϱâ À§ÇØ ÇÊ¿äÇÑ °ÍµéÀÎ Àü¼Û ÆÐŶ¿¡¼ ù IP Çì´õÀÇ ½ÃÀÛÀ» À§Ä¡ÇÒ ¼ö ÀÖ´Ù.
OID_TCP_TASK_OFFLOADÀÇ Äõ¸®¿¡ ÀÀ´äÇÏ¿©, ¹Ì´ÏÆ÷Æ®´Â InformationBuffer·Î Çϳª ȤÀº ±× ÀÌ»óÀÇ NDIS_TASKOFFLOAD ±¸Á¶Ã¼µé¿¡ ÀÇÇØ Àü¿¡ NDIS_TASK_OFFLOAD_HEADER ±¸Á¶Ã¼¸¦ ¸®ÅÏÇÑ´Ù. ¸¸¾à ¹Ì´ÏÆ÷Æ®ÀÇ NICÀº ƯÁ¤ ŽºÅ©-offload ´É·ÂÀÇ ´ÙÁß ¹öÀüµéÀ» Á¦°øÇÑ´Ù¸é, °¢ ¹öÀüÀ» À§ÇØ ÇϳªÀÇ NDIS_TASK_OFFLOAD ±¸Á¶Ã¼¸¦ ¸®ÅÏÇØ¾ß ÇÑ´Ù.
°¢ NDIS_TASK_OFFLOAD ±¸Á¶Ã¼´Â ±¸Á¶Ã¼°¡ Àû¿ëÇϴ ƯÁ¤ offload taskÀ» ÁöÁ¤ÇÏ´Â Task ¸â¹ö¸¦ °¡Áø´Ù. °¢ NDIS_TASK_OFFLOAD ±¸Á¶Ã¼´Â ¶ÇÇÑ Æ¯Áö¾î offload ŽºÅ©¿¡ ¼ÓÇÑ Á¤º¸¸¦ Æ÷ÇÔÇÑ TaskBuffer¸¦ °¡Áø´Ù. TaskBuffer³»¿¡ Á¤º¸´Â ´ÙÀ½ ±¸Á¶Ã¼µéÀÇ Çϳª·Î Æ÷¸ËȵȴÙ.
- NDIS_TASK_TCP_IP_CHECKSUM
üũ¼¶ offload ´É·ÂµéÀ» ÁöÁ¤ÇÑ´Ù.
- NDIS_TASK_IPSEC
IP Security offload ´É·ÂµéÀ» ÁöÁ¤ÇÑ´Ù.
- NDIS_TASK_TCP_LARGE_SEND
Å« TCP ÆÐŶ ¼¼±×¸ÕÆ® ´É·ÂµéÀ» ÁöÁ¤ÇÑ´Ù.
Enabling a NIC's Task-Offload Capabilities
NICÀÇ task-offload ´É·ÂµéÀ» Äõ¸®ÇÑ ÈÄ, TCP/IP Àü¼Û °èÃþÀº OID_TCP_TASK_OFFLOAD¸¦ ¼³Á¤ÇÔÀ¸·Î½á Çϳª ȤÀº ±× ÀÌ»óÀÇ ÀÌ·¯ÇÑ ´É·ÂµéÀÌ °¡´ÉÇÏ´Ù. OID_TCP_TASK_OFFLOAD¸¦ ¼³Á¤ÇÒ ¶§, TCP/IP Àü¼Û °èÃþÀº Àü¼Û °èÃþÀÌ °¡´ÉÇÑ °¢ task-offload ´É·ÂÀ» À§ÇÑ NDIS_TASK_OFFLOAD ±¸Á¶Ã¼ Àü¿¡ NDIS_TASK_OFFLOAD_HEADER ±¸Á¶Ã¼ÀÎ InformationBuffer¸¦ Á¦°øÇÑ´Ù.
°¢ NDIS_TASK_OFFLOAD ±¸Á¶Ã¼ÀÎ Task´Â TCP/IP Àü¼Û °èÃþÀÌ °¡´ÉÇÏ´Â offload task¸¦ ÀεðÄÉÀÌÆ®ÇÑ´Ù. TCP/IP Àü¼Û °èÃþÀº ¶ÇÇÑ °¢ NDIS_TASK_OFFLOAD ±¸Á¶Ã¼ÀÇ TaskBuffer³» ±¸Á¶Ã¼ÀÇ ¸â¹öµé(NDIS_TASK_TCP_IP_CHECKSUM, NDIS_TASK_IPSEC, ȤÀº NDIS_TASK_LARGE_SEND) ¼³Á¤ÇÔÀ¸·Î½á ƯÁ¤ offload ŽºÅ©¸¦ À§ÇÑ ´É·ÂµéÀ» °¡´ÉÇÏ°Ô ÇÑ´Ù.
Changing a NIC's Task-Offload Capabilities
NIC¿¡ ÀÇÇØ Á¦°øµÇ´Â ¸ðµç task-offload ´É·ÂµéÀÌ ºÒ´ÉÀ¸·Î Çϱâ À§ÇØ, TCP/IP Àü¼Û °èÃþÀº OID_TCP_TASK_OFFLOAD¸¦ ¼³Á¤ÇÑ´Ù. ¹Ì´ÏÆ÷Æ®´Â ´ÜÁö OID_TCP_TASK_OFFLOADÀÇ °¡Àå ÃÖ±Ù ¼³Á¤¿¡ ÀÇÇØ ÁöÁ¤µÈ ÀÌ·¯ÇÑ task-offload ´É·ÂµéÀ» °¡´ÉÇÏ°Ô ÇØ¾ß ÇÑ´Ù.
Disabling a NIC's Tasl-Offload Capabilities
NIC¿¡ ÀÇÇØ Áö¿øµÈ ¸ðµç task-offload capabilitiesÀ» ºÒ°¡´ÉÇÏ°Ô Çϱâ À§ÇØ, TCP/IP Àü¼Û °èÃþÀº ´ÜÁö 0À¸·Î ¼³Á¤µÈ ÀÌ ±¸Á¶Ã¼ÀÇ OffsetFirstTask ¸â¹ö·Î NDIS_TASK_OFFLOAD_HEADER ±¸Á¶Ã¼ÀÎ InformationBuffer¿¡ Àü´ÞµÇ´Â OID_TCP_TASK_OFFLOAD¸¦ ¼³Á¤ÇÑ´Ù.
OID_TCP_TASK_IPSEC_ADD_SA
Æ®·£½ºÆ÷Æ® ÇÁ·ÎÅäÄÝÀº ÀÌ OID¸¦ ¹Ì´ÏÆ÷Æ®°¡ NIC¿¡´ëÇÑ ÇϳªÈ¤Àº ±×ÀÌ»óÀÇ º¸¾È ¿¬ÇÕ(SAs)À» Ãß°¡ÇÏ´Â ¿äûÀ» ÇϱâÀ§ÇØ ¼³Á¤ÇÑ´Ù.
°¢ SA¿¡´ëÇÑ Á¤º¸´Â ´ÙÀ½°ú°°ÀÌ Á¤ÀÇµÈ OFFLOAD_IPSEC_ADD±¸Á¶Ã¼·Î½á Æ÷¸ËµÈ´Ù.
typedef struct _OFFLOAD_IPSEC_ADD_SA {
IPAddr SrcAddr;
IPMask SrcMask;
IPAddr DestAddr;
IPMask DestMask;
ULONG Protocol;
USHORT SrcPort;
USHORT DestPort;
IPAddr SrcTunnelAddr;
IPAddr DestTunnelAddr;
USHORT Flags;
SHORT NumSAs;
OFFLOAD_SECURITY_ASSOCIATION SecAssoc[OFFLOAD_MAX_SAS];
NDIS_HANDLE OffloadHandle;
ULONG KeyLen;
UCHAR KeyMat[1];
} OFFLOAD_IPSEC_ADD_SA, *POFFLOAD_IPSEC_ADD_SA;
|
ÀÌ ±¸Á¶Ã¼ÀÇ ¸â¹ö´Â ´ÙÀ½ Á¤º¸¸¦ Æ÷ÇÔÇÑ´Ù.
- SrcAddr
- ¼Ò½º È£½ºÆ®(ÆÐŶÀ» º¸³»´Â È£½ºÆ®)ÀÇ IP¾îµå·¹½º¸¦ ÁöÁ¤ÇÑ´Ù.
- SrcMask
- ¼Ò½º IP¾îµå·¹½º¿¡´ëÇÑ ¼ºê³Ý ¸¶½ºÅ©¸¦ ÁöÁ¤ÇÑ´Ù.
- DestAddr
- ¸ñÀûÁö È£½ºÆ®(ÆÐŶÀ» ¹Þ´Â È£½ºÆ®)ÀÇ IP¾îµå·¹½º¸¦ ÁöÁ¤ÇÑ´Ù.
- DestMask
- ¸ñÀûÁö IP¾îµå·¹½º¿¡´ëÇÑ ¼ºê³Ý ¸¶½ºÅ©¸¦ ÁöÁ¤ÇÑ´Ù.
- Protocol
- IPÇÁ·ÎÅäÄÝÀ» ÁöÁ¤ÇÑ´Ù. TCP, UDP, ICMP, IP¿Í °°Àº ÇÁ·ÎÅäÄÝ Å¸ÀÔÀÇ ¾î¶²Á¶È°¡ ÁöÁ¤µÉ¼ö ÀÖ´Ù. ÇÁ·ÎÅäÄÝÀÇ ¾Ïȣȴ IPÇì´õ³»¿¡ ÇÁ·ÎÅäÄÝ ÇʵåÀÇ °Í°ú µ¿ÀÏÇÏ´Ù. ¸¸¾à ÇÁ·ÎÅäÄÝÀÌ 0À¸·Î ¼³Á¤µÇ¸é, SA´Â ¾î¶² IPÇÁ·ÎÅäÄÝ¿¡ Àû¿ëµÈ´Ù.
- SrcPort
- ¼Ò½º TCPȤÀº UDPÆ÷Æ®¸¦ ÁöÁ¤ÇÑ´Ù. ¸¸¾à SrcPort°¡ 0À¸·Î ¼³Á¤µÇ¸é, SA´Â ¾î¶² ¼Ò½º TCP/UDPÆ÷Æ®¸¦ Àû¿ëÇÑ´Ù.
- DestPort
- ¸ñÀûÁö TCPȤÀº UDPÆ÷Æ®¸¦ ÁöÁ¤ÇÑ´Ù. ¸¸¾à DestPort°¡ 0À¸·Î ¼³Á¤µÇ¸é, SA´Â ¾î¶² ¼Ò½º TCP/UDPÆ÷Æ®¸¦ Àû¿ëÇÑ´Ù.
- SrcTunnelAddr
- °ÔÀÌÆ® ¿þÀ̿Ͱ°Àº ÅͳÎÀÇ ¼Ò½º ¿£Æ®Æ÷ÀÎÆ®¿¡´ëÇÑ IP¾îµå·¹½º¸¦ ÁöÁ¤ÇÑ´Ù. ¹Ì´ÏÆ÷Æ®´Â SA¿¡ º¸³»´Â ÅͳÎIPÇì´õ ÆÐŶ¿¡´ëÇÑ ¼Ò½º ¾îµå·¹½º¿Í°°Àº SrcTunnelAddr¸¦ »ç¿ëÇÑ´Ù. SrcTunnelAddr´Â ÆÐŶÀÇ ÅͳÎÀ§Ä¡¿¡ Àû¿ëÇÏ´Â SA¿¡´ëÇØ¼¸¸ ÁöÁ¤µÈ´Ù. SrcTunnelAddr´Â ÆÐŶÀÇ Æ®·£½ºÆ÷Æ® À§Ä¡¿¡ Àû¿ëÇÏ´Â SA¿¡´ëÇØ 0À¸·Î ¼³Á¤ÇÑ´Ù.
- DestTunnelAddr
- °ÔÀÌÆ®¿þÀÌ¿Í °°Àº ÅͳÎÀÇ ¸ñÀûÁö ¿£µåÆ÷ÀÎÆ®¿¡´ëÇÑ IP¾îµå·¹½º¸¦ ÁöÁ¤ÇÑ´Ù. ¹Ì´ÏÆ÷Æ®´Â SA¿¡ º¸³»´Â ÆÐŶÀÇ ÅͳΠIPÇì´õ¿¡´ëÇÑ ¸ñÀûÁö ¾îµå·¹½º·Î½á DestTunnelAddr¸¦ »ç¿ëÇÑ´Ù. DestTunnelAddr´Â ÆÐŶÀÇ ÅͳÎÀ§Ä¡¿¡ Àû¿ëÇÏ´Â SA¿¡´ëÇØ¼¸¸ ÁöÁ¤µÈ´Ù. DestTunnelAddr´Â ÆÐŶÀÇ Æ®·£½ºÆ÷Æ® À§Ä¡¿¡ Àû¿ëÇÏ´Â SA¿¡´ëÇØ¼ 0À¸·Î ¼³Á¤ÇÑ´Ù.
- Flags
- Ãß°¡µÈ SA°¡ ´ÙÀ½°ú °°ÀÌ ÀιÙÀεù SAÀÎÁö ¾Æ¿ô¹ÙÀεùSAÀÎÁö¸¦ ÀεðÄÉÀÌÆ® ÇÏ´Â ºñÆ®¸¶½ºÅ©.
- OFFLOAD_INBOUND_SA
- ÀιÙÀεù SA¸¦ ÁöÁ¤ÇÑ´Ù.
- OFFLOAD_OUTBOUND_SA
- ¾Æ¿ô ¹ÙÀεù SA¸¦ ÁöÁ¤ÇÑ´Ù.
- NumSAs
- SecAssoc¹è¿³»ÀÇ ¿ä¼Ò¼ö¸¦ ÁöÁ¤ÇÑ´Ù. ¹è¿³»ÀÇ °¢ ¿ä¼Ò´Â ¾Æ·¡ ¼³¸íµÈ OFFLOAD_SECURITY_ASSOCIATION±¸Á¶Ã¼ÀÌ´Ù.
- SecAssoc
- SA¿¡´ëÇØ IP Security¿¬»ê(AH and/or ESP)ÀÇ Á¤º¸¸¦ Æ÷ÇÔÇÏ´Â ´Ù¾çÇÑ ±æÀÌÀÇ ¹è¿À» ÁöÁ¤ÇÑ´Ù. °¢ IP Security¿¬»ê¿¡´ëÇÑ Á¤º¸´Â ¾Æ·¡ ¼³¸íµÈ OFFLOAD_SECURITY_ASSOCIATION±¸Á¶Ã¼·Î½á Æ÷¸ËµÈ´Ù.
TCP/IPÆ®·£½ºÆ÷Æ®´Â SecAssocÀÇ ¹öÆÛ³»¿¡ ÇϳªÈ¤Àº ±×ÀÌ»óÀÇ OFFLOAD_SECURITY_ASSOCIATION±¸Á¶Ã¼¸¦ ÁöÁ¤ÇÑ´Ù. °¢ OFFLOAD_SECURITY_ASSOCIATION±¸Á¶Ã¼´Â ±¸Á¶Ã¼³»¿¡ ÁöÁ¤µÈ SA°¡ »ç¿ëµÈ°Í¿¡´ëÇÑ ¿¬»ê - ÀÎÁõȤÀº ¾ÏÈ£È/º¹È£È - ŸÀÔÀ» ÀεðÄÉÀÌÆ®ÇÑ´Ù. ¹è¿³»ÀÇ OFFLOAD_SECURITY_ASSOCIATION±¸Ã¼ÀÇ ¼ø¼´Â ¹Ì´ÏÆ÷Æ®°¡ °¢ SA¿¡´ëÇÑ ¿¬»êÀ» ¼öÇàÇØ¾ßÇϴ°Ϳ¡¼ÀÇ ¼ø¼¸¦ ÀεðÄÉÀÌÆ®ÇÑ´Ù. ´Ü ÇϳªÀÇ ¿¬»ê Á¶È¸¸ÀÌ Áö¿øÇÑ´Ù: ÀÎÁõ¿¡ÀÇÇØ (AH)¾ÏÈ£È/º¹È£È(ESP).
- OffloadHandle
- »õ·Ó°Ô »ý¼ºµÈ SA¿¡´ëÇÑ ÇÚµéÀ» ÁöÁ¤ÇÑ´Ù. ¹Ì´ÏÆ÷Æ®´Â OID_TCP_TASK_IPSEC_ADD_SA¿äûÀÇ ¿Ï·áÀü¿¡ ÀÌÇÚµéÀ» Á¦°øÇÑ´Ù. TCP/IPÆ®·£½ºÆ÷Æ®´Â ÀÌÇÚµéÀ» ¹Ì´ÏÆ÷Æ®¿¡°Ô ÆÐŶÀ» º¸³»±âÀü¿¡ NDIS_IPSEC_PACKET_INFO±¸Á¶Ã¼³»¿¡ ÁöÁ¤ÇÑ´Ù. TCP/IPÆ®·£½ºÆ÷Æ®´Â ¶ÇÇÑ OID_TCP_TASK_IPSEC_DELETE_SA¿äûÀ¸·Î SA¸¦ Áö¿ï¶§ ÀÌÇÚµéÀ» ÁöÁ¤Çؾ߸¸ ÇÑ´Ù.
- KeyLen
- KeyMat¿¡ ¹öÆÛÀÇ ¹ÙÀÌÆ® ±æÀ̸¦ ÁöÁ¤ÇÑ´Ù.
- KeyMat
- SecAssoc¿¡ ¼¼úµÈ SA¿¡ ´ëÇÑ Å°¸¦ Æ÷ÇÔÇÏ´Â °¡º¯±æÀÌÀÇ ¹è¿À» ¼¼úÇÑ´Ù. ¸¸¾à ½Å·Ú¼º(encryption/decryption) ¾Ë°í¸®Áò°ú ¹«°á¼º(authentication) ¾Ë°í¸®ÁòÀÌ OFFLOAD_SECURITY_ASSOCIATION ±¸Á¶Ã¼ÀÇ ConfAlgo¿Í IntegrityAlgo¿¡ ÀÇÇØ¼ ¼¼úµÈ´Ù¸é KeyMat¿¡ ¹öÆÛ´Â ¿ì¼± ½Å·Ú¼º ¾Ë°í¸®Áò¿¡ ´ëÇÑ Å° Á¤º¸¸¦ Æ÷ÇÔÇÑ´Ù. À̰ÍÀº ¹«°á¼º ¾Ë°í¸®Áò¿¡ ´ëÇÑ Å° Á¤º¸¿¡ ÀÇÇØ¼ Áï½Ã µÚµû¸¥´Ù.
KeyMat¿¡ ¹öÆÛ¿¡ ÀÖ´Â °¢°¢ÀÇ Å°¿¡ ´ëÇÑ ±æÀÌ´Â ½Å·Ú¼º°ú ¹«°á¼º ¾Ë°í¸®ÁòÀ» ¼¼úÇÏ´Â OFFLOAD_ALGO_INFO ±¸Á¶Ã¼ÀÇ algoKeyLen¿¡ ÀÇÇØ¼ ¼¼úµÈ´Ù.(OFFLOAD_ALGO_INFO ±¸Á¶Ã¼´Â OFFLOAD_SECURITY_ASSOCIATION ±¸Á¶Ã¼ÀÇ ¸â¹öÀÌ´Ù.)
OFFLOAD_IPSEC_ADD_SA ±¸Á¶Ã¼ÀÇ Ã¹ 7¸â¹öµé(SrcAddr, SrcMask, DestAddr, DestMask, Protocol, SrcPort, DestPort)Àº SAµéÀÌ Àû¿ëÇÏ´Â IP ÇÁ·ÎÅäÄݵé°ú ¸¶Âù°¡Áö·Î ¼Ò½º¿Í ¸ñÀûÁö¸¦ ÁöÁ¤ÇÏ´Â ÇÊÅ͸¦ ±¸¼ºÇÑ´Ù. ÇÊÅÍ´Â Àü¼Û °èÃþ ¸ðµå ¿¬°á¿¡ ¼ÓÇÑ´Ù. Áï, µÎ°³ÀÇ È£½ºÆ®µé »çÀÌ¿¡ end-to-end ¿¬°á. ¸¸¾à ƯÁ¤ ¿¬°áÀÌ ÅͳÎÀ» ÅëÇØ ¸¸µé¾îÁø´Ù¸é, ÅͳÎÀÇ ¼Ò½º¿Í ¸ñÀûÁö ÁÖ¼ÒµéÀº °¢°¢ SrcTunnelAddr°ú DestTunnelAddr¿¡ ÀÇÇØ ÁöÁ¤µÈ´Ù.
¸¸¾à ÇÊÅÍ ¸Å°³º¯¼ö°¡ 0À¸·Î ¼³Á¤µÇ¸é, ±×·¯ÇÏ ¸Å°³º¯¼ö´Â ÁöÁ¤µÈ SAµéÀ» À§ÇÑ ÆÐŶµéÀ» ÇÊÅÍÇϱâ À§ÇØ »ç¿ëµÇÁö ¾Ê´Â´Ù. ¿¹¸¦ µé¾î, ¸¸¾à SrcAddrÀÌ 0À¸·Î ¼³Á¤µÇ¸é, ƯÁ¤ SAµéÀº ¾î¶² ¼Ò½º ÁÖ¼Ò¸¦ Æ÷ÇÔÇÏ´Â ÆÐŶ¿¡ Àû¿ëÇÒ ¼ö ÀÖ´Ù. ÃÖ´ë·Î À̰ÍÀ» °¡Áö±â À§ÇØ, ¸¸¾à ¸ðµç ÇÊÅÍ ¸Å°³º¯¼öµéÀÌ 0À¸·Î ¼³Á¤µÇ¸é, ƯÁ¤ SAµéÀº ¾î¶² ¸ñÀûÁö È£½ºÆ®¿¡ ÆÐŶÀÇ ¾î¶² ŸÀÔÀ» º¸³»´Â ¾î¶² ¼Ò½º È£½ºÆ®¿¡ Àû¿ëÇÑ´Ù.
TCP/IP Àü¼Û °èÃþÀº ƯÁ¤ SAµéÀÌ Æ¯Á¤ ÇÁ·ÎÅäÄÝ Å¸ÀÔÀÇ ÆÐŶµé¿¡ Àû¿ëÇÏ´Â °ÍÀ» ÀεðÄÉÀÌÆ®Çϱâ À§ÇØ Protocol ¸â¹ö³» IP ÇÁ·ÎÅäÄÝÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. ¸¸¾à ProtocolÀÌ 0À¸·Î ¼³Á¤µÇ¸é, ÁöÁ¤µÈ SAµéÀº ÁöÁ¤µÈ ¼Ò½º¿¡¼ ÁöÁ¤µÈ ¸ñÀûÁö·Î º¸³»¾îÁö´Â ¸ðµç ÆÐŶµé¿¡ Àû¿ëÇÑ´Ù.
OFFLOAD_SECURITY_ASSOCIATION ±¸Á¶Ã¼
OFFLOAD_SECURITY_ASSOCIATION±¸Á¶Ã¼°¡ ´ÜÀÏ º¸¾È ÁýÇÕ(SA)À» ¼¼úÇÑ´Ù. OFFLOAD_SECURITY_ASSOCIATION±¸Á¶Ã¼´Â SecAssoc º¯¼ö ±æÀÌ ¹è¿¾ÈÀÇ ¿ä¼ÒÀÌ´Ù. SecAssocÀº Çϳª ¶Ç´Â µÎ°¡ÁöÀÇ OFFLOAD_SECURITY_ASSOCIATION±¸Á¶Ã¼µéÀ» Æ÷ÇÔÇÑ´Ù.
OFFLOAD_SECURITY_ASSOCIATION±¸Á¶Ã¼´Â ´ÙÀ½°ú °°ÀÌ Á¤ÀǵȴÙ.
typedef struct _OFFLOAD_SECURITY_ASSOCIATION
{
OFFLOAD_OPERATION_E Operation;
SPI_TYPE SPI;
OFFLOAD_ALGO_INFO IntegrityAlgo;
OFFLOAD_ALGO_INFO ConfAlgo;
OFFLOAD_ALGO_INFO Reserved;
} OFFLOAD_SECURITY_ASSOCIATION, *POFFLOAD_SECURITY_ASSOCIATION;
|
OFFLOAD_SECURITY_ASSOCIATION±¸Á¶Ã¼ÀÇ ¸â¹öµéÀº ´ÙÀ½ÀÇ Á¤º¸¸¦ Æ÷ÇÔÇÑ´Ù.
- Operation
- SA°¡ »ç¿ëµÇ´Â °ÍÀ» À§ÇÑ IP º¸¾È ¿¬»êÀ» ¼¼úÇÑ´Ù. ´ÙÀ½ÀÇ ¿¬»êµéÀÌ Á¦°øµÈ´Ù.
- AUTHENTICATE
- SA°¡ ÀÔÁõÀ» À§ÇØ »ç¿ëµÇ´Â°ÍÀ» ¼¼úÇÑ´Ù. (¿Ïº®ÇÑ Ã¼Å·)
- ENCRYPT
- SA°¡ ¾ÏÈ£/ÇØµ¶À» À§Çؼ »ç¿ëµÇ´Â°ÍÀ» ¼¼úÇÑ´Ù. (ºñ¹Ð¼º)
- SPI
- SA¸¦ À§ÇÑ º¸¾È ÆÄ¶ó¹Ì³Ê À妽º¸¦ ¼¼úÇÑ´Ù.
- IntegrityAlgo
- OFFLOAD_ALGO_INFO±¸Á¶Ã¼·Î Æ÷¸Ë µÈ SA¸¦ À§ÇÑ ¿Ïº®ÇÑ(È®½ÇÇÑ)¾Ë°í¸®ÁòÀ» ¼¼úÇÑ´Ù. OFFLOAD_ALGO_INFO±¸Á¶Ã¼´Â ¹Ø¿¡¼ ¼¼úµÈ´Ù.
- ConfAlgo
- OFFLOAD_ALGO_INFO±¸Á¶Ã¼·Î Æ÷¸Ë µÈ SA¸¦ À§ÇÑ ºñ¹Ð¼º(¾ÏÈ£/ÇØµ¶)¾Ë°í¸®ÁòÀ» ¼¼úÇÑ´Ù. OFFLOAD_ALGO_INFO±¸Á¶Ã¼´Â ¹Ø¿¡¼ ¼¼úµÈ´Ù.
- Reserved
- À̰ÍÀº ¿¹¾àµÆ´Ù.
SA´Â ÇÁ·Î¼¼½Ì ¾ÈÀÇ »ç¿ëÀ» À§ÇÏ¿© ¿Ïº®ÇÑ Çì´õ(AH)¸¦ ¼¼úµÆ°í AUTHENTICATEÀÇ ¿¬»ê ŸÀÔ°ú IntegrityAlgo(¿Ïº®ÇÑ ¾Ë°í¸®Áò)À» °¡Áö°í ÀÖÀ» °ÍÀÌ´Ù. ÀÌ ÄÉÀ̽º¿¡¼ ¿Ïº®ÇÑ ¾Ë°í¸®ÁòÀº Á¦·Î¸¦ Æ÷ÇÔÇÒ °ÍÀÌ´Ù.
SA´Â ÇÁ·Î¼¼½Ì ¾ÈÀÇ »ç¿ëÀ» À§ÇÏ¿© ĸ½¶ÈµÈ º¸¾È ÆäÀ̷εå(ESPs)°¡ ¼¼úµÆ°í ENCRYPTÀÇ ¿¬»ê ŸÀÔ°ú IntegrityAlgo(¿Ïº®ÇÑ ¾Ë°í¸®Áò)±×¸®°í ConfAlgo(ºñ¹Ð¼ºÀÇ ¾Ë°í¸®Áò)À» °¡Áö°í ÀÖÀ» °ÍÀÌ´Ù.
OFFLOAD_ALGO_INFO ±¸Á¶Ã¼
OFFLOAD_SECURITY_ASSOCIATION ±¸Á¶Ã¼ÀÇ ¸â¹öÀÎ OFFLOAD_ALGO_INFO ±¸Á¶Ã¼´Â º¸¾È°ü°è(SA)¸¦ À§ÇØ »ç¿ëµÇ´Â ¾Ë°í¸®ÁòÀ» ¼¼úÇÑ´Ù.
OFFLOAD_ALGO_INFO ±¸Á¶Ã¼ÀÇ Á¤ÀÇ´Â ´ÙÀ½°ú °°´Ù:
typedef struct _OFFLOAD_ALGO_INFO {
ULONG algoIdentifier;
ULONG algoKeylen;
ULONG Reserved;
} OFFLOAD_ALGO_INFO, *POFFLOAD_ALGO_INFO;
|
OFFLOAD_ALGO_INFO ±¸Á¶Ã¼ÀÇ ¸â¹ö´Â ´ÙÀ½ÀÇ Á¤º¸¸¦ Æ÷ÇÔÇÑ´Ù:
- algoIdentifier
- SA¸¦ À§Çؼ »ç¿ëµÇ´Â ½Å·Ú¼º ȤÀº ¹«°á¼º ¾Ë°í¸®ÁòÀ» ¼¼úÇÑ´Ù.
¾Ë°í¸®ÁòÀÌ ½Å·Ú¼º ¾Ë°í¸®ÁòÀ̶ó¸é (Áï, OFFLOAD_ALGO_INFO ±¸Á¶Ã¼°¡ ConfAlgo¸¦ ¼¼úÇÑ´Ù¸é), algoIdentifier´Â ´ÙÀ¸ÀÇ °ªÁß¿¡ Çϳª°¡ µÉ ¼ö ÀÖ´Ù:
- OFFLOAD_IPSEC_CONF_NONE
- ½Å·Ú¼º ¾Ë°í¸®ÁòÀÌ ¾Æ´Ï¶ó´Â °ÍÀ» ¼¼úÇÑ´Ù. NULL ¾Ïȣȸ¦ À§Çؼ »ç¿ëµÈ´Ù-Áï, ÆÐŶÀÌ ¾Ïȣȴ µÇ¾îÀÖÁö¸¸ ±×°ÍÀÇ ESP Çì´õ´Â ÀÔÁõÀÚ Á¤º¸¸¦ Æ÷ÇÔÇÑ´Ù.
- OFFLOAD_IPSEC_CONF_DES
- DES ¾Ë°í¸®ÁòÀ» ¼¼úÇÑ´Ù.
- OFFLOAD_IPSEC_CONF_3_DES
- Æ®¸®Çà DES ¾Ë°í¸®ÁòÀ» ¼¼úÇÑ´Ù.
¸¸¾à ¾Ë°í¸®ÁòÀÌ ¹«°á¼º ¾Ë°í¸®ÁòÀ̶ó¸é (Áï, OFFLOAD_ALGO_INFO ±¸Á¶Ã¼°¡ IntegrityAlgo¸¦ ¼¼úÇÑ´Ù¸é), algoIdentifier´Â ´ÙÀ½Áß ÇϳªÀÇ °ªÀ» ¼¼úÇÑ´Ù:
- OFFLOAD_IPSEC_INTEGRITY_NONE
- ¹«°á¼º ¾Ë°í¸®ÁòÀÌ ¾Æ´Ï¶ó´Â °ÍÀ» ¼¼úÇÑ´Ù. ESP Çì´õ°¡ ÀÔÁõÀÚ Á¤º¸¸¦ Æ÷ÇÔÇÏÁö ¾ÊÀ» ¶§ »ç¿ëµÈ´Ù.
- OFFLOAD_IPSEC_INTEGRITY_MD5
- Áß¿äÇÑ MD5 ¾Ë°í¸®ÁòÀ» ¼¼úÇÑ´Ù.
- OFFLOAD_IPSEC_INTEGRITY_SHA
- SHA 1 ¾Ë°í¸®ÁòÀ» ¼¼úÇÑ´Ù.
- algoKeylen
- ¾Ë°í¸®ÁòÀ» À§Çؼ ŰÀÇ ¹ÙÀÌÆ® ±æÀ̸¦ ¼¼úÇÑ´Ù. Ű´Â OFFLOAD_IPSEC_ADD_SA ±¸Á¶Ã¼¿¡ ¼¼úµÈ °¡º¯±æÀÌÀÇ ¹è¿ÀÎ KeyMat¿¡ ¹öÆÛ¿¡ Æ÷ÇԵȴÙ.
¸¸¾à ¹«°á¼º ¾Ë°í¸®ÁòÀÌ(IntegrityAlgo) OFFLOAD_SECURITY_ASSOCIATION ±¸Á¶Ã¼ ¾È¿¡ ¼¼úµÈ´Ù¸é algoKeylenÀº KeyMat¿¡ ¹öÆÛÀÇ ½ÃÀÛÁ¡À¸·ÎºÎÅÍ ½ÃÀ۵Ǵ ¹«°á¼º ¾Ë°í¸®Áò¿¡ ´ëÇØ¼ ŰÀÇ ±æÀ̸¦ ¾Ë¸°´Ù.
¸¸¾à ¹«°á¼º ¾Ë°í¸®Áò°ú ½Å·Ú¼º ¾Ë°í¸®ÁòÀÌ µ¿½Ã¿¡ ¼¼úµÈ´Ù¸é(IntegrityAlgo ¿Í ConfAlgo) ¹«°á¼º ¾Ë°í¸®ÁòÀ» À§ÇÑ algoKeylenÀº KeyMat¿¡ ¹öÆÛÀÇ ½ÃÀÛÁ¡À¸·ÎºÎÅÍ ½ÃÀ۵Ǵ ¹«°á¼º ¾Ë°í¸®ÁòÀ» À§ÇÑ Å°ÀÇ ±æÀ̸¦ ¾Ë¸°´Ù. ½Å·Ú¼º¿¡ ´ëÇÑ algoKeylenÀº ÀÌ·¯ÇÑ °æ¿ì¿¡ ¹«°á¼º ¾Ë°í¸®Áò¿¡ ´ëÇÑ Å°ÀÇ ³¡À¸·ÎºÎÅÍ ½ÃÀ۵Ǵ ½Å·Ú¼º ¾Ë°í¸®Áò¿¡ ´ëÇÑ Å°ÀÇ ±æÀ̸¦ ¾Ë¸°´Ù.
- Reserved
- ¿¹¾à
OID_TCP_TASK_IPSEC_DELETE_SA
Æ®·£½ºÆ÷Æ® ÇÁ·ÎÅäÄÝÀº ¹Ì´ÏÆ÷Æ®°¡ NICÀ¸·ÎºÎÅÍ º¸¾È°ü°è(SA)¸¦ »èÁ¦ÇÏ´Â °ÍÀ» ¸®Äù½ºÆ®Çϱâ À§Çؼ ÀÌ OID¸¦ ¼³Á¤ÇÑ´Ù. SA Á¤º¸´Â OFFLOAD_IPSEC_DELETE ±¸Á¶Ã¼·Î½á Æ÷¸ËµÈ´Ù. Á¤ÀÇ´Â ´ÙÀ½°ú °°´Ù:
typedef struct _OFFLOAD_IPSEC_DELETE_SA {
ULONG OffloadHandle;
} OFFLOAD_IPSEC_DELETE_SA, *POFFLOAD_IPSEC_DELETE_SA;
|
ÀÌ ±¸Á¶Ã¼ÀÇ ¸â¹ö´Â ´ÙÀ½ÀÇ Á¤º¸¸¦ Æ÷ÇÔÇÑ´Ù:
- OffloadHandle
- SA¿¡ ´ëÇØ¼ »èÁ¦µÇ´Â ÇÚµéÀ» ¼¼úÇÑ´Ù.
ÀÌ ¸®Äù½ºÆ®ÀÇ ¼ö½Å¿¡¼ ¹Ì´ÏÆ÷Æ®´Â SA¿¡ ´ëÇØ¼ NICÀ¸·ÎºÎÅÍ ¸í½ÃµÈ SA¸¦ »èÁ¦Çϰí ÇÒ´çµÈ ¾î¶² ½Ã½ºÅÛ ÀÚ¿øÀ» ÇØÁ¦ÇؾßÇÑ´Ù.
|