15.1 FFP ¿¬»ê Ư¡

ÀÌ ¼½¼ÇÀº FFP¸¦ Áö¿øÇÏ´Â NIC°ú NDIS µå¶óÀ̹ö¸¦ À§Çؼ­ ¿¬»ê Ư¡À» ¾ò°Å³ª ¼³Á¤Çϱâ À§Çؼ­ »ç¿ëµÉ ¼ö ÀÖ´Â OID¸¦ ¼­¼úÇÑ´Ù. ´ÙÀ½ÀÇ Â÷Æ®´Â ÀÌ·± OID¸¦ ¿ä¾àÇÑ´Ù.

Length Q S Name
8 or 12 M M OID_FFP_SUPPORT
FFPÀÇ ¹öÀüÀ» ¾ò°Å³ª FFP µ¿ÀÛÀ» ¼³Á¤ÇÑ´Ù..
4   M OID_FFP_FLUSH
FFP »óÅ Á¤º¸¸¦ Ç÷¯½¬ÇÑ´Ù.
8 M M OID_FFP_CONTROL
ÅëÁ¦ »óŸ¦ ¾ò°Å³ª ¼³Á¤ÇÑ´Ù.
8 M M OID_FFP_PARAMS
ij½¬ »çÀÌÁ ¾ò°Å³ª ¼³Á¤ÇÑ´Ù.
Var. or 36 M M OID_FFP_DATA
ij½¬ ¿£Æ®¸® ŸÀÔÀ» ¾ò°Å³ª ¼³Á¤ÇÑ´Ù.

´ÙÀ½Àº À§ÀÇ Â÷Æ®º¸´Ù ´õ ¸¹Àº °¢°¢ÀÇ OID_XXX¸¦ ¼­¼úÇÑ´Ù.

OID_FFP_SUPPORT

Äõ¸® ¸®Äù½ºÆ®·Î½á ÀÌ OID´Â ¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö¿Í ±× µå¶óÀ̹öÀÇ NIC¿¡ ÀÇÇØ¼­ Áö¿øµÇ´Â ƯÁ¤ ÇÁ·ÎÅäÄÝ¿¡ ´ëÇÑ FFP ¹öÀüÀ» ¸®Äù½ºÆ®ÇÑ´Ù. ¼Â ¸®Äù½ºÆ®·Î½á ÀÌ OID´Â FFP µ¿ÀÛ¿¡ ¿µÇâÀ» ³¢Ä¡´Â ¸î¸î ÅëÁ¦ ¸Å°³º¯¼öµéÀ» ¹Ù²Ùµµ·Ï ¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö¸¦ Áö½ÃÇÑ´Ù.

ÀÌ OID¸¦ Æ÷ÇÔÇÏ´Â Äõ¸® ¸®Äù½ºÆ®´Â FFP ¹öÀü Á¤º¸¸¦ À§ÇÑ Äõ¸®¸¦ À§Çؼ­ FFPVersionParams ±¸Á¶Ã¼¸¦ »ç¿ëÇÑ´Ù. FFPVersionParams ±¸Á¶Ã¼ÀÇ Á¤ÀÇ´Â ´ÙÀ½°ú °°´Ù:


typedef struct _FFPVersionParams {

    IN   ULONG          NdisProtocolType;

    OUT  ULONG          FFPVersion;

} FFPVersionParams;

ÀÌ ±¸Á¶Ã¼ÀÇ ¸â¹ö´Â ´ÙÀ½ÀÇ Á¤º¸¸¦ Æ÷ÇÔÇÑ´Ù.

NdisProtocolType
¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö¿Í ±× µå¶óÀ̹öÀÇ NICÀÌ Áö¿øÇÏ´Â FFP ¹öÀüÀ» ¾ò±â À§Çؼ­ ÀÌ OID¸¦ º¸³»´Â ÇÁ·ÎÅäÄÝ Å¸ÀÔÀ» ¼­¼úÇÑ´Ù. TCP/IP ÇÁ·ÎÅäÄÝÀ» ¼­¼úÇÏ´Â NDIS_PROTOCOL_ID_TCP_IP °ªÀº ÇöÀç Áö¿øµÇÁö ¾Ê´Â °ªÀÌ´Ù.

FFPVersion
¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö¿¡ ÀÇÇØ¼­ Áö¿øµÇ´Â FFPÀÇ ¸ÞÀÌÀú ¹öÀü°ú ¸¶ÀÌ³Ê ¹öÀüÀ» ¼­¼úÇÑ´Ù. ¿¹¸¦µé¾î version 1.0. ÀÌ ¸â¹ö´Â 32 ºñÆ® °ªÀ» °®´Â´Ù.

low-order 16 ºñÆ®´Â ¸¶ÀÌ³Ê ¹öÀüÀ» Æ÷ÇÔÇϰí high-order 16 ºñÆ®´Â ¸ÞÀÌÀú ¹öÀüÀ» Æ÷ÇÔÇÑ´Ù.

ÀÌ OID¸¦ Æ÷ÇÔÇÏ´Â ¼Â ¸®Äù½ºÆ®´Â ¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö¿Í ±× µå¶óÀ̹öÀÇ NICÀÇ FFP µ¿ÀÛÀ» ¼³Á¤Çϱâ À§Çؼ­ ´ÙÀ½°ú °°ÀÌ Á¤ÀÇµÈ FFPSupportParams ±¸Á¶Ã¼¸¦ »ç¿ëÇÑ´Ù:


typedef struct _FFPSupportParams {

    IN   ULONG          NdisProtocolType;

    IN   ULONG          FastForwardingCacheSize;

    IN   ULONG          FFPControlFlags;

} FFPSupportParams;

ÀÌ ±¸Á¶Ã¼ÀÇ ¸â¹ö´Â ´ÙÀ½ÀÇ Á¤º¸¸¦ Æ÷ÇÔÇÑ´Ù:

NdisProtocolType
FFP µ¿ÀÛÀ» ¼³Á¤Çϱâ À§Çؼ­ ÀÌ OID¸¦ º¸³»´Â ÇÁ·ÎÅäÄÝ Å¸ÀÔÀ» ¼­¼úÇÑ´Ù. TCP/IP ÇÁ·ÎÅäÄÝÀ» ¼­¼úÇÏ´Â NDIS_PROTOCOL_ID_TCP_IP °ªÀº ÇöÀç Áö¿øµÇÁö ¾Ê´Â´Ù.

FastForwardingCacheSize
ºü¸¥ Æ÷¿öµù ij½¬ÀÇ ¹ÙÀÌÆ® »çÀÌÁ ¼­¼úÇÑ´Ù.

ÀÌ Ä³½¬¸¦ À§ÇÑ ±×µé ÀÚ½ÅÀÇ ¸Þ¸ð¸®¸¦ °¡Áö´Â NICÀº ÀÌ OID¸¦ °¡Áö´Â ¼Â ¸®Äù½ºÆ®¸¦ ¹«½ÃÇÒ ¼ö ÀÖ´Ù. ÀÌ Ä³½¬¸¦ À§Çؼ­ ½Ã½ºÅÛ ¸Þ¸ð¸®¸¦ ÇÒ´çÇÏ´Â ´ëÀÀµÇ´Â ¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö¸¦ °®´Â NICÀº ±×µéÀÇ ¸Þ¸ð¸® »ç¿ë·®À» FastForwardingCacheSize ¸â¹öÀÇ °ªÀ¸·Î Á¦ÇÑÇØ¾ßÇÑ´Ù. ij½¬ »çÀÌÁî¿¡¼­ÀÇ ÀÌ·¯ÇÑ Á¦ÇÑÀº Æ÷Æ®´ç ±âÃʺ¸´Ù´Â NIC Àü¹Ý¿¡¼­ Àû¿ëµÈ´Ù.

FFPControlFlags
´ÙÀ½ÀÇ »ç¿ë°¡´ÉÇÑ Ç÷¡±×¸¦ Æ÷ÇÔÇÏ´Â 32 ºñÆ® °ªÀ» ¼­¼úÇÑ´Ù:

Flag Value Meaning
low-order 16 ºñÆ®¿¡¼­ Àû¾îµµ Áß¿äÇÑ ºñÆ®(LSB) 1·Î ¼³Á¤


0À¸·Î ¼³Á¤
¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö¿Í ±× NIC¿¡¼­ FFP¸¦ Àο¡À̺íÇÑ´Ù.

¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö·Î ÇÏ¿©±Ý NICÀÌ ¹ÙÀεùµÈ ÇÁ·ÎÅäÄݷκÎÅÍ ¹ÞÀº ¸ðµç ÆÐŶµéÀ» ÀεðÄÉÀÌÆ®Çϵµ·ÏÇÑ´Ù.
high-order 16 ºñÆ®¿¡¼­ Àû¾îµµ Áß¿äÇÑ ºñÆ®(LSB) 1·Î ¼³Á¤




0À¸·Î ¼³Á¤
ÆÐŶ °æ·Î¸¦ °áÁ¤ÇßÀ» ¶§ ¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö¿Í ±× NICÀ¸·Î ÇÏ¿©±Ý »óÀ§Ãþ ÇÁ·ÎÅäÄÝ Á¤º¸¸¦ »ç¿ëÇϵµ·ÏÇÑ´Ù.

ÆÐŶ °æ·Î¸¦ °áÁ¤ÇßÀ» ¶§¸¸ IP¿¡ ´ëÇØ¼­ ¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö¿Í ±× NICÀ¸·Î ÇÏ¿©±Ý ÆÐŶ ½Äº°ÀÚµéÀ» »ç¿ëÇϵµ·ÏÇÑ´Ù.

´Ù¸¥ ¸ðµç ºñÆ®µéÀº ¹Ì·¡ÀÇ »ç¿ëÀ» À§Çؼ­ ¿¹¾àµÇ¾ú´Ù. ±×·¡¼­ 0À¸·Î ¼³Á¤µÇ¾î¾ßÇÑ´Ù.

IP¿¡ ´ëÇÑ ÆÐŶ ½Äº°ÀÚµéÀº ´ÙÀ¸ Á¤º¸¸¸À» Æ÷ÇÔÇÑ´Ù:

IP SRC address, IP DEST address, IP PROTOCOL 

¿¹¸¦µé¾î »óÀ§Ãþ ÇÁ·ÎÅäÄÝÀº Transmission Control Protocol (TCP), User Datagram Protocol (UDP), and Internet Control Message Protocol (ICMP)À» Æ÷ÇÔÇÑ´Ù.

TCP/IP¸¦ À§ÇÑ ÆÐŶ ½Äº°ÀÚµéÀº ´ÙÀ½ Á¤º¸¸¦ Æ÷ÇÔÇÑ´Ù:

IP SRC address, IP DEST address, IP PROTOCOL, 

          [TCP SRC address + TCP DEST address]

UDP/IP¸¦ À§ÇÑ ÆÐŶ ½Äº°ÀÚµéÀº ´ÙÀ½ Á¤º¸¸¦ Æ÷ÇÔÇÑ´Ù:

IP SRC address, IP DEST address, IP PROTOCOL, 

          [UDP SRC address + UDP DEST address]

ICMP/IP¸¦ À§ÇÑ ÆÐŶ ½Äº°ÀÚµéÀº ´ÙÀ½ Á¤º¸¸¦ Æ÷ÇÔÇÑ´Ù:

IP SRC address, IP DEST address, IP PROTOCOL, 

                        [ICMP type + UDP code]

Remarks

ÀüÇüÀûÀ¸·Î ÇÁ·ÎÅäÄÝÀº ¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö°¡ Áö¿øÇÏ´Â FFP ¹öÀüÀ» °áÁ¤Çϱâ À§Çؼ­ Äõ¸® ¸®Äù½ºÆ®¸¦ ¿ì¼±ÀûÀ¸·Î ¼öÇàÇÑ´Ù. ±×¸®°í³ª¼­ ÇÁ·ÎÅäÄÝÀº FFP µ¿ÀÛÀ» ¹Ù²Ù±â À§Çؼ­ ¼Â ¸®Äù½ºÆ®¸¦ ¼öÇàÇÑ´Ù.

¿¹¸¦µé¾î Control ¸Å°³º¯¼ö´Â FFP ij½¬ »çÀÌÁî¿Í FFP ÅëÁ¦ Ç÷¡±×¸¦ ¼³Á¤ÇÑ´Ù.

¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö¿Í ±× NICÀº ¾î¶² ÇÁ·ÎÅäÄÝ ÆÐ¹Ð¸®¿¡ ´ëÇØ¼­¸¸ FFP µ¿ÀÛÀ» Áö¿øÇÑ´Ù´Â °ÍÀ» ÁÖÀÇÇØ¶ó. ÀÌ OID¸¦ Æ÷ÇÔÇÏ´Â Äõ¸® ¸®Äù½ºÆ®´Â °¢°¢ÀÇ ÇÁ·ÎÅäÄÝ ÆÐ¹Ð¸®·¹ ´ëÇØ¼­ ¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö¿Í ¹Ì´ÏÆ÷Æ® µå¶óÀ̹öÀÇ NIC¿¡¼­ FFP Áö¿øÀ» Äõ¸®ÇÒ ¼ö ÀÖµµ·Ï ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö¸¦ Àο¡À̺íÇÑ´Ù.

OID_FFP_FLUSH

ÀÌ OID´Â FFP ij½¬·ÎºÎÅÍ ¸ðµç Á¤º¸¸¦ Ç÷¯½¬Çϱâ À§Çؼ­ ¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö¿Í ±× µå¶óÀ̹öÀÇ NICÀ» ¸®Äù½ºÆ®ÇÑ´Ù. ÀÌ OID¸¦ Æ÷ÇÔÇÏ´Â ¸®Äù½ºÆ®´Â ij½¬¸¦ Ç÷¯½¬Çϱâ À§Çؼ­ ´ÙÀ½°ú °°ÀÌ Á¤ÀÇµÈ FFPFlushParams ±¸Á¶Ã¼¸¦ »ç¿ëÇÑ´Ù:


typedef struct _FFPFlushParams {

    IN  ULONG          NdisProtocolType;

} FFPFlushParams;

ÀÌ ±¸Á¶Ã¼ÀÇ ¸â¹ö´Â ´ÙÀ½ Á¤º¸¸¦ Æ÷ÇÔÇÑ´Ù:

NdisProtocolType
ƯÁ¤ ÇÁ·ÎÅäÄÝÀÇ FFP ij½¬¸¦ Ç÷¯½¬Çϱâ À§Çؼ­ ÀÌ OID¸¦ º¸³»´Â ÇÁ·ÎÅäÄÝ Å¸ÀÔÀ» ¼­¼úÇÑ´Ù. TCP/IP ÇÁ·ÎÅäÄÝÀ» ¼­¼úÇÏ´Â NDIS_PROTOCOL_ID_TCP_IP °ªÀº ÇÚÀç Áö¿øµÇÁö ¾Ê´Â´Ù.

Remarks

ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö´Â ´ÙÀ½ÀÇ ¿¹Á¦ »óȲ¿¡¼­ ÀÌ OID¸¦ Æ÷ÇÔÇÏ´Â ¸®Äù½ºÆ®¸¦ º¸³½´Ù:

  • ¶ó¿ìÆÃ Äڵ带 Æ÷ÇÔÇÏ´Â Æ÷¿öµù Á¾º¸°¡ ¹Ù²ð ¶§. ¿¹¸¦µé¾î IP ¶ó¿ìÆ® Å×À̺íÀÇ º¯È­.
  • Æ÷¿öµå °æ·ÎÀÇ ÇÊÅÍ ¸ðÀ½ÀÌ ¹Ù²ð ¶§. ¿¹¸¦µé¾î »õ·Î¿î ÇÊÅÍÀÇ Ãß°¡³ª Á¸ÀçÇÏ´Â ÇÊÅÍÀÇ Á¦°Å.
  • layer 3¿¡¼­ layer 2±îÁöÀÇ ÁÖ¼ÒÁ¤º¸ÀÇ ¸ÅÇÎÀÌ ¹Ù²ð ¶§.

OID_FFP_CONTROL

ÀÌ OID´Â ¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö¿Í ±× µå¶óÀ̹öÀÇ NIC¿¡ ÅëÁ¦ »óŸ¦ ¾ò°Å³ª ¼³Á¤Çϱâ À§Çؼ­ ¸®Äù½ºÆ®ÇÑ´Ù.

ÀÌ OID¸¦ Æ÷ÇÔÇÏ´Â ¸®Äù½ºÆ®´Â ÅëÁ¦ »óŸ¦ ¾ò°Å³ª ¼³Á¤Çϱâ À§Çؼ­ ´ÙÀ½°ú °°ÀÌ Á¤ÀÇµÈ FFPControlParams ±¸Á¶Ã¼¸¦ »ç¿ëÇÑ´Ù:


typedef struct _FFPControlParams {

    IN      ULONG          NdisProtocolType;

    IN/OUT  ULONG          FFPControlFlags;

}FFPControlParams;

ÀÌ ±¸Á¶Ã¼ÀÇ ¸â¹ö´Â ´ÙÀ½ÀÇ Á¤º¸¸¦ Æ÷ÇÔÇÑ´Ù:

NdisProtocolType
ƯÁ¤ ÇÁ·ÎÅäÄÝÀÇ FFP ÅëÁ¦ »óŸ¦ ¾ò°Å³ª ¼³Á¤Çϱâ À§Çؼ­ ÀÌ OID¸¦ º¸³»´Â ÇÁ·ÎÅäÄÝ Å¸ÀÔÀ» ¼­¼úÇÑ´Ù. TCP/IP ÇÁ·ÎÅäÄÝÀ» ¼­¼úÇÏ´Â NDIS_PROTOCOL_ID_TCP_IP °ªÀº ÇöÀç Áö¿øµÇÁö ¾Ê´Â´Ù.

FFPControlFlags
´ÙÀ½ÀÇ °¡´ÉÇÑ Ç÷¡±×µéÀ» Æ÷ÇÔÇÏ´Â 32 ºñÆ® °ªÀÌ´Ù:

Flag Value Meaning
low-order 16 ºñÆ®¿¡¼­ Àû¾îµµ Áß¿äÇÑ ºñÆ®(LSB) 1·Î ¼³Á¤


0À¸·Î ¼³Á¤
¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö¿Í ±× NIC¿¡¼­ FFP¸¦ Àο¡À̺íÇÑ´Ù.

¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö·Î ÇÏ¿©±Ý NICÀÌ ¹ÙÀεùµÈ ÇÁ·ÎÅäÄݷκÎÅÍ ¹ÞÀº ¸ðµç ÆÐŶµéÀ» ÀεðÄÉÀÌÆ®Çϵµ·ÏÇÑ´Ù.
high-order 16 ºñÆ®¿¡¼­ Àû¾îµµ Áß¿äÇÑ ºñÆ®(LSB) 1·Î ¼³Á¤




0À¸·Î ¼³Á¤
ÆÐŶ °æ·Î¸¦ °áÁ¤ÇßÀ» ¶§ ¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö¿Í ±× NICÀ¸·Î ÇÏ¿©±Ý »óÀ§Ãþ ÇÁ·ÎÅäÄÝ Á¤º¸¸¦ »ç¿ëÇϵµ·ÏÇÑ´Ù.

ÆÐŶ °æ·Î¸¦ °áÁ¤ÇßÀ» ¶§¸¸ IP¿¡ ´ëÇØ¼­ ¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö¿Í ±× NICÀ¸·Î ÇÏ¿©±Ý ÆÐŶ ½Äº°ÀÚµéÀ» »ç¿ëÇϵµ·ÏÇÑ´Ù.

´Ù¸¥ ¸ðµç ºñÆ®´Â ¹Ì·¡ÀÇ »ç¿ëÀ» À§Çؼ­ ¿¹¾àµÇ¾ú´Ù; ÇÁ·ÎÅäÄÝ È¤Àº ¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö´Â ´Ù¸¥ ºñÆ®°¡ 0À̶ó°í °¡Á¤Çؼ­´Â ¾ÈµÈ´Ù.

IP¸¸À» À§ÇÑ ÆÐŶ ½Äº°ÀÚµéÀº ´ÙÀ½ÀÇ Á¤º¸¸¦ Æ÷ÇÔÇÑ´Ù:

IP SRC address, IP DEST address, IP PROTOCOL 

¿¹¸¦µé¾î »óÀ§Ãþ ÇÁ·ÎÅäÄÝÀº Transmission Control Protocol (TCP), User Datagram Protocol (UDP), ±×¸®°í Internet Control Message Protocol (ICMP)À» Æ÷ÇÔÇÑ´Ù.

TCP/IP¸¦ À§ÇÑ ÆÐŶ ½Äº°ÀÚµéÀº ´ÙÀ½ÀÇ Á¤º¸¸¦ Æ÷ÇÔÇÑ´Ù:

>IP SRC address, IP DEST address, IP PROTOCOL, 

          [TCP SRC address + TCP DEST address]

UDP/IP¸¦ À§ÇÑ ÆÐŶ ½Äº°ÀÚµéÀº ´ÙÀ½ÀÇ Á¤º¸¸¦ Æ÷ÇÔÇÑ´Ù:

IP SRC address, IP DEST address, IP PROTOCOL, 

          [UDP SRC address + UDP DEST address]

ICMP/IP¸¦ À§ÇÑ ÆÐŶ ½Äº°ÀÚµéÀº ´ÙÀ½ÀÇ Á¤º¸¸¦ Æ÷ÇÔÇÑ´Ù:

IP SRC address, IP DEST address, IP PROTOCOL, 

                        [ICMP type + UDP code]

Remarks

ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö´Â ¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö¿Í ¹Ì´ÏÆ÷Æ® µå¶óÀ̹öÀÇ NIC¿¡ ÅëÁ¦ »óŸ¦ ¾ò°Å³ª ¼³Á¤Çϱâ À§Çؼ­ ÀÌ OID¸¦ ¼³Á¤ÇÒ ¼ö ÀÖ´Ù. ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö°¡ ÅëÁ¦ »óŸ¦ ¾òÀ» ¶§ FFPControlParams ±¸Á¶Ã¼ÀÇ FFPControlFlags ¸â¹ö´Â OUT ¸Å°³º¯¼öÀÌ´Ù. ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö°¡ »õ·Î¿î µ¿ÀÛÀ» ¼³Á¤ÇÒ ¶§ FFPControlParams ±¸Á¶Ã¼ÀÇ FFPControlFlags ¸â¹ö´Â IN ¸Å°³º¯¼öÀÌ´Ù.

TCP/IP °°Àº ÇÁ·ÎÅäÄÝÀº »õ·Î¿î ÇÊÅÍÀÇ Á¸À縦 ¾Ë¸®±â À§Çؼ­ ÀÌ OID¸¦ »ç¿ëÇÑ´Ù. ¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö¿Í ±× µå¶óÀ̹öÀÇ NICÀÌ »ç¿ëÇÏ´Â FFP ±¸Á¶´Â Àü¿¡ ÇàÇØÁöÁö ¾Ê¾Ò´Ù¸é ºü¸¥ °æ·Î¿¡¼­ ÇÊÅÍ Á¤º¸¸¦ ÂüÁ¶Çϱ⠽ÃÀÛÇÑ´Ù.

¼­¼úµÈ °ÍÀ» Á¦¿ÜÇϰí FFPControlParams ±¸Á¶Ã¼ÀÇ FFPControlFlags ¸â¹ö¿¡ ¸ðµç ºñÆ®´Â ¹Ì·¡¸¦ À§Çؼ­ ¿¹¾àµÇ¾ú°í 0À¸·Î ¼³Á¤µÇ¾î¾ßÇÑ´Ù.

OID_FFP_PARAMS

ÀÌ OID´Â ¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö¿Í ±× µå¶óÀ̹ö¿¡ ´ëÇÑ NICÀÇ FFP ij½¬¿¡ ´ëÇØ¼­ ¸Þ¸ð¸® »çÀÌÁ ¾ò°Å³ª ¼³Á¤Çϱâ À§Çؼ­ ¸®Äù½ºÆ®ÇÑ´Ù.

ÀÌ OID¸¦ Æ÷ÇÔÇÏ´Â ¸®Äù½ºÆ®´Â FFP ij½¬ »çÀÌÁ ¾ò°Å³ª ¼³Á¤Çϱâ À§Çؼ­ ´ÙÀ½°ú °°ÀÌ Á¤ÀÇµÈ FFPCacheParams ±¸Á¶Ã¼¸¦ »ç¿ëÇÑ´Ù:


typedef struct _FFPCacheParams {

    IN      ULONG          NdisProtocolType;

    IN/OUT  ULONG          FastForwardingCacheSize;

} FFPCacheParams;

ÀÌ ±¸Á¶Ã¼ÀÇ ¸â¹ö´Â ´ÙÀ½ÀÇ Á¤º¸¸¦ Æ÷ÇÔÇÑ´Ù:

NdisProtocolType
ƯÁ¤ ÇÁ·ÎÅäÄÝÀÇ FFP ij½¬ »çÀÌÁ ¾ò°Å³ª ¼³Á¤Çϱâ À§Çؼ­ ÀÌ OID¸¦ º¸³»´Â ÇÁ·ÎÅäÄÝ Å¸ÀÔÀ» ¼­¼úÇÑ´Ù. TCP/IP ÇÁ·ÎÅäÄÝÀ» ¼­¼úÇÏ´Â NDIS_PROTOCOL_ID_TCP_IP °ªÀº ÇöÀç Áö¿øµÇÁö ¾Ê´Â´Ù.

FastForwardingCacheSize
ºü¸¥ Æ÷¿öµù ij½¬ÀÇ ¹ÙÀÌÆ® »çÀÌÁ ¼­¼úÇÑ´Ù.

ÀÌ Ä³½¬¿¡ ´ëÇØ¼­ ±×µé ÀÚ½ÅÀÇ ¸Þ¸ð¸®¸¦ °®´Â NICÀº ÀÌ OID¸¦ Æ÷ÇÔÇÏ´Â ¼Â ¸®Äù½ºÆ®¸¦ ¹«½ÃÇÒ ¼ö ÀÖ´Ù. ÀÌ Ä³½¬¸¦ À§Çؼ­ ½Ã½ºÅÛ ¸Þ¸ð¸®¸¦ ÇÒ´çÇÏ´Â ´ëÀÀµÇ´Â ¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö¸¦ °®´Â NICÀº±×µé ¸Þ¸ð¸®ÀÇ »ç¿ë·®À» FastForwardingCacheSize ¸â¹öÀÇ °ªÀ¸·Î Á¦ÇÑÇØ¾ßÇÑ´Ù. ij½¬ »çÀÌÁî¿¡ ´ëÇÑ ÀÌ·¯ÇÑ Á¦ÇÑÀº Æ÷Æ®´ç ±âÃʺ¸´Ù´Â ¿ÀÈ÷·Á NIC Àüü¿¡ Àû¿ëµÈ´Ù.

Remarks

ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö´Â ¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö¿Í ¹Ì´ÏÆ÷Æ® µå¶óÀ̹öÀÇ NIC¿¡ FFP ij½¬ »çÀÌÁ ¾ò°Å³ª ¼³Á¤Çϱâ À§Çؼ­ ÀÌ OID¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö°¡ ij½¬ »çÀÌÁ ¾òÀ» ¶§, FFPCacheParams ±¸Á¶Ã¼ÀÇ FastForwardingCacheSize ¸â¹ö´Â OUT ¸Å°³º¯¼öÀÌ´Ù. ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö°¡ ij½¬ »çÀÌÁ ¼³Á¤ÇÒ ¶§, FFPCacheParams ±¸Á¶Ã¼ÀÇ FastForwardingCacheSize ¸â¹ö´Â IN ¸Å°³º¯¼öÀÌ´Ù.

ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö´Â ½Ã½ºÅÛ ÀÚ¿øÀ» »ç¿ëÇÏ´Â NICÀÇ FFP ij½¬ »çÀÌÁ µ¿ÀûÀ¸·Î ¹Ù²Ù±â À§Çؼ­ ÀÌ OID¸¦ »ç¿ëÇÑ´Ù. NDIS°¡ FFP ij½¬ »çÀÌÁ ±¸¼ºÇÏ´Â µ¿¾È¿¡ ¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö´Â NICÀÌ ¹ÙÀεùµÈ ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö·ÎºÎÅÍ ¹ÞÀº ¸ðµç ÆÐŶÀ» µÚ·Î µÇµ¹·Áº¸³½´Ù. FFP ij½¬ »çÀÌÁî°¡ ±¸¼ºµÆÀ» ¶§ ¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö¿Í ±× µå¶óÀ̹öÀÇ NICÀº ƯÁ¤ ŸÀÔÀÇ ºü¸¥ Æ÷¿öµù ÆÐŶÀ» µÚ·Î µÇµ¹·Áº¸³½´Ù.

OID_FFP_DATA

ÀÌ OID´Â ¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö¿Í ±× µå¶óÀ̹öÀÇ NICÀÌ FFP ij½¬¿¡ ÀÇÇØ¼­ ¼ö½ÅµÈ ƯÁ¤ Çì´õ ÆÐÅÏÀ» °¡Áö°í ÆÐŶÀ» ¼öÇàÇØ¾ßÇÏ´Â µ¿ÀÛÀÇ Å¸ÀÔÀ» ¾ò°Å³ª ¼³Á¤Çϱâ À§Çؼ­ ¸®Äù½ºÆ®ÇÑ´Ù.

ÀÌ OID¸¦ Æ÷ÇÔÇÏ´Â ¸®Äù½ºÆ®´Â µ¿ÀÛÀÇ Å¸ÀÔÀ» ¾ò°Å³ª ¼³Á¤Çϱâ À§Çؼ­ ´ÙÀ½°ú °°ÀÌ Á¤ÀÇµÈ FFPDataParams ±¸Á¶Ã¼¸¦ »ç¿ëÇÑ´Ù:


typedef struct _FFPDataParams {

    IN      ULONG            NdisProtocolType;

    IN/OUT  LONG             CacheEntryType;

    IN      ULONG            HeaderSize;

    union {

        IN      UCHAR        Header[1];

        struct {

            IN  IPHeader     Header;

            IN  ULONG        DwordAfterHeader;

        } IpHeader;

    };

} FFPDataParams;

ÀÌ ±¸Á¶Ã¼ÀÇ ¸â¹ö´Â ´ÙÀ¸¹ÇÀÌ Á¤º¸¸¦ Æ÷ÇÔÇÑ´Ù:

NdisProtocolType
ƯÁ¤ ÆÐŶ¿¡¼­ ¼öÇàµÇ´Â µ¿ÀÛÀÇ Å¸ÀÔÀ» ¾ò°Å³ª ¼³Á¤Çϱâ À§Çؼ­ ÀÌ OID¸¦ º¸³»´Â ÇÁ·ÎÅäÄÝ Å¸ÀÔÀ» ¼­¼úÇÑ´Ù. TCP/IP ÇÁ·ÎÅäÄÝÀ» ¼­¼úÇÏ´Â NDIS_PROTOCOL_ID_TCP_IP °ªÀº ÇöÀç Áö¿øµÇÁö ¾Ê´Â´Ù.

CacheEntryType
¹ö¸®±â, È£½ºÆ® ÇÁ·Î¼¼¼­¸¦ ÅëÇØ¼­ ¶ó¿ìÆÃ ¾øÀÌ ºü¸¥ Æ÷¿öµùÇϱâ, ¹ÙÀεùµÈ ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö·Î ÀεðÄÉÀÌÆ®Çϱâ¿Í °°Àº, FFP ij½¬¿¡ ÀÇÇØ¼­ ¼ö½ÅµÈ ƯÁ¤ ÆÐŶ»ó¿¡¼­ ¼öÇàµÇ´Â µ¿ÀÛÀÇ Å¸ÀÔÀ» ¼­¼úÇÑ´Ù. µ¿ÀÛÀÇ Å¸ÀÔÀº ´ÙÀ½Áß ÇϳªÀÏ ¼ö ÀÖ´Ù:

Value Meaning
FFP_DISCARD_PACKET
(-1)
FFPDataParams ±¸Á¶Ã¼¿¡ Æ÷ÇÔµÈ union ¾È¿¡ Á¤º¸¿Í ÀÏÄ¡ÇÏ´Â Çì´õ ÆÐÅÏÀ» Æ÷ÇÔÇÏ´Â ÆÐŶÀ» ¹Ì´ÏÆ÷Æ® µå¶óÀ̹öÀÇ NICÀÌ ¹ö¸± °ÍÀ̶ó´Â °ÍÀ» ¼­¼úÇÑ´Ù.
FFP_INDICATE_PACKET
(0)
FFPDataParams ±¸Á¶Ã¼¿¡ Æ÷ÇÔµÈ union ¾È¿¡ Á¤º¸¿Í ÀÏÄ¡ÇÏ´Â Çì´õ ÆÐÅÏÀ» Æ÷ÇÔÇÏ´Â ÆÐŶÀ» ¹Ì´ÏÆ÷Æ® µå¶óÀ̹öÀÇ NICÀÌ ¹ÙÀεùµÈ ÇÁ·ÎÅäÄÝ·Î ÀεðÄÉÀÌÆ®ÇÒ °ÍÀ̶ó´Â °ÍÀ» ¼­¼úÇÑ´Ù.
FFP_FORWARD_PACKET
(1)
FFPDataParams ±¸Á¶Ã¼¿¡ Æ÷ÇÔµÈ union ¾È¿¡ Á¤º¸¿Í ÀÏÄ¡ÇÏ´Â Çì´õ ÆÐÅÏÀ» Æ÷ÇÔÇÏ´Â ÆÐŶÀ» ¹Ì´ÏÆ÷Æ® µå¶óÀ̹öÀÇ NICÀÌ ºü¸¥ Æ÷¿öµùÇÒ °ÍÀ̶ó´Â °ÍÀ» ¼­¼úÇÑ´Ù.

ij½¬ ¿£Æ®¸® ŸÀÔÀ» °®Áö ¾Ê´Â °ÍÀº FFP_INDICATE_PACKET ¿£Æ®¸®¸¦ °®´Â °Í°ú °ü·ÃÀÌ ÀÖÀ½À» ÁÖÀÇÇØ¶ó; ¸¸¾à ¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö¿Í ±× µå¶óÀ̹öÀÇ NICÀÌ Æ¯Á¤ Çì´õ ÆÐÅÏÀ» °®´Â ÆÐŶ¿¡ ´ëÇØ¼­ ij½¬ ¿£Æ®¸® ŸÀÔÀ» °®Áö ¾Ê´Â´Ù¸é ±×µéÀÇ ±âº» µ¿ÀÛÀº ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö·Î ÆÐŶÀ» ÀεðÄÉÀÌÆ®ÇÏ´Â °ÍÀÌ´Ù.

HeaderSize
FFPDataParams ±¸Á¶Ã¼¿¡ Æ÷ÇԵǴ union ¾È¿¡ ÀÏÄ¡ÇÏ´Â Çì´õ ¹öÆÛÀÇ ¹ÙÀÌÆ® »çÀÌÁ ¼­¼úÇÑ´Ù.

Header
¹è¿­¾È¿¡ ÀÏÄ¡ÇÏ´Â Çì´õ ¹öÆÛ¸¦ À¯ÁöÇÒ ¼ö ÀÖ´Â FFPDataParams ±¸Á¶Ã¼¿¡ Æ÷ÇԵǴ union ¾È¿¡ ¸â¹ö¸¦ ¼­¼úÇÑ´Ù. HeaderSize ¸â¹ö´Â ÀÌ ¹è¿­ÀÇ »çÀÌÁ ¼­¼úÇÑ´Ù. ƯÁ¤ ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö´Â ÀÌ Çì´õ ÆÐÅÏÀ» °®´Â ÆÐŶ¿¡ ´ëÇØ¼­ ij½¬ ¿£Æ®¸® ŸÀÔÀ» ¾ò°Å³ª ¼³Á¤ÇÑ´Ù.

IpHeader
´ÙÀ½ÀÇ ¸â¹ö¸¦ °®´Â ±¸Á¶Ã¼ ¾È¿¡ ÀÏÄ¡ÇÏ´Â Çì´õ ¹öÆÛ¸¦ À¯ÁöÇÒ ¼ö ÀÖ´Â FFPDataParams ±¸Á¶Ã¼¿¡ Æ÷ÇÔµÈ union ¾È¿¡ ¸â¹ö¸¦ ¼­¼úÇÑ´Ù.

Header
ÀÏÄ¡ÇÏ´Â Çì´õ ÆÐÅÏÀ» Æ÷ÇÔÇÏ´Â IPHeader ±¸Á¶Ã¼¸¦ ¼­¼úÇÑ´Ù. ƯÁ¤ ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö´ÂÀÌ Çì´õ ÆÐÅÏÀ» °®´Â ÆÐŶ¿¡ ´ëÇØ¼­ ij½¬ ¿£Æ®¸® ŸÀÔÀ» ¾ò°Å³ª ¼³Á¤ÇÑ´Ù. IPHeader ±¸Á¶Ã¼´Â Remarks¿¡ Á¤ÀǵǾî ÀÖ´Ù.

DwordAfterHeader
IPHeader ±¸Á¶Ã¼¾È¿¡ ÀÏÄ¡ÇÏ´Â Çì´õ¿¡ µû¸£´Â ÀûÀýÇÑ »óÀ§Ãþ ÇÁ·ÎÅäÄÝ Á¤º¸¸¦ ¼­¼úÇÑ´Ù. ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö°¡ HeaderSize ¸â¹ö¾È¿¡ ÀÏÄ¡ÇÏ´Â Çì´õ ¹öÆÛÀÇ »çÀÌÁ ÀεðÄÉÀÌÆ®ÇÒ ¶§ ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö´Â ÀÌ DwordAfterHeader ¸â¹öÀÇ »çÀÌÁ Æ÷ÇÔÇØ¾ßÇÑ´Ù.

¸¸¾à ¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö¿Í ±× µå¶óÀ̹öÀÇ NICÀÌ ÇöÀç ±×µéÀÇ ºü¸¥ Æ÷¿öµù °áÁ¤¿¡¼­ »óÀ§Ãþ ÇÁ·ÎÅäÄÝ Á¤º¸¸¦ »ç¿ëÇÑ´Ù¸é OID_FFP_DATA¸¦ Æ÷ÇÔÇÏ´Â ¾ò±â³ª ¼³Á¤Çϱ⠸®Äù½ºÆ®´Â ±×·¯ÇÑ »óÀ§Ãþ Á¤º¸¸¦ Æ÷ÇÔÇØ¾ßÇÑ´Ù. ¿¹¸¦µé¾î »óÀ§Ãþ Á¤º¸´Â TCP ±Ù¿øÁö¿Í ¸ñÀûÁö Æ÷Æ®, UDP ±Ù¿øÁö¿Í ¸ñÀûÁö Æ÷Æ®, ȤÀº ICMP ŸÀÔ°ú ÄÚµå.

Remarks

ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö´Â ƯÁ¤ Çì´õ ÆÐÅÏÀ» °®´Â ÆÐŶ¿¡ ´ëÇØ¼­ ij½¬ ¿£Æ®¸® ŸÀÔÀ» ¾ò°Å³ª ¼³Á¤Çϱâ À§Çؼ­ ÀÌ OID¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö°¡ ij½¬ ¿£Æ®¸® ŸÀÔÀ» ¾òÀ» ¶§ FFPDataParams ±¸Á¶Ã¼ÀÇ CacheEntryType ¸â¹ö´Â OUT ¸Å°³º¯¼öÀÌ´Ù. ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö°¡ ij½¬ ¿£Æ®¸® ŸÀÔÀ» ¼³Á¤ÇÒ ¶§ FFPDataParams ±¸Á¶Ã¼ÀÇ CacheEntryType ¸â¹ö´Â IN ¸Å°³º¯¼öÀÌ´Ù.

ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö´Â ƯÁ¤ Çì´õ ÆÐÅÏÀ» °®´Â ÆÐŶÀ» À§Çؼ­ ij½¬ ¿£Æ®¸® ŸÀÔÀ» FFP_DISCARD_PACKET À̳ª FFP_INDICATE_PACKET ·Î¸¸ ¼³Á¤ÇÒ ¼ö ÀÖ´Ù. ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö°¡ ƯÁ¤ Çì´õ ÆÐÅÏÀ» °®´Â ÆÐŶÀ» À§Çؼ­ ij½¬ ¿£Æ®¸® ŸÀÔÀ» FFP_DISCARD_PACKETÀ¸·Î ¼³Á¤ÇßÀ» ¶§ ±× ÆÐŶµéÀº Æ÷¿öµå °æ·Î »ó¿¡¼­ ÇÊÅÍ¿¡ ÀÇÇØ¼­ µå¶øµÈ´Ù. ¹Ý¸é¿¡ ÇÁ·ÎÅäÄÝÀÌ Æ¯Á¤ Çì´õ ÆÐÅÏÀ» °®´Â ÆÐŶÀ» À§Çؼ­ ij½¬ ¿£Æ®¸® ŸÀÔÀ» FFP_INDICATE_PACKETÀ¸·Î ¼³Á¤Çß´Ù¸é ±× ÆÐŶµéÀº ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö·Î ÀεðÄÉÀÌÆ®µÇµµ·Ï °­¿äµÈ´Ù. ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö°¡ ƯÁ¤ Çì´õ ÆÐÅÏÀ» °®´Â ÆÐŶÀ» À§Çؼ­ ij½¬ ¿£Æ®¸® ŸÀÔÀ» FFP_FORWARD_PACKETÀ¸·Î ¼³Á¤ÇÏ´Â °ÍÀº À¯È¿ÇÏÁö ¾Ê´Ù; ¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö¿Í ±×µéÀÇ NICÀº ÆÐŶµéÀÌ Ã³À½¿¡ ´À¸° °æ·Î¸¦ ÅÃÇßÀ» ¶§ ±× ÆÐŶÀ» ÀÌ Ä³½¬ ¿£Æ®¸® ŸÀÔÀ» ¼³Á¤ÇؾßÇÑ´Ù. Áï, ƯÁ¤ ŸÀÔÀÇ Ã³À½ ÆÐŶÀº NICÀÇ ÀÔ·Â Æ÷Æ®¿¡ ÀÇÇØ¼­ óÀ½¿¡ ¼ö½ÅµÈ´Ù; ±×¸®°í³ª¼­ ÀÌ ÆÐŶÀº ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö·Î ÀεðÄÉÀÌÆ®µÈ´Ù; ¸¶Áö¸·À¸·Î ÀÌ ÆÐŶÀº NICÀÇ Ãâ·Â Æ÷Æ®·Î ¶ó¿ìÆ®µÈ´Ù. ´õ ¸¹Àº Á¤º¸¸¦ À§Çؼ­ Fast Forwarding Path¸¦ ºÁ¶ó.

// Definition of the IP header 

typedef struct IPHeader {

    UCHAR     iph_verlen;     // Version and length 

    UCHAR     iph_tos;        // Type of service 

    USHORT    iph_length;     // Total datagram length 

    USHORT    iph_id;         // Identification 

    USHORT    iph_offset;     // Flags, fragment offset 

    UCHAR     iph_ttl;        // Time to live 

    UCHAR     iph_protocol;   // Protocol 

    USHORT    iph_xsum;       // Header checksum 

    ULONG     iph_src;        // Source address 

    ULONG     iph_dest;       // Destination address 

} IPHeader;