A key aspect of AFPA is its close integration with the TCP/IP protocol stack. Layer 7 protocols are processed on the same software interrupt on which TCP/IP input processing occurs. To achieve this, AFPA relies on the ability to extend the TCP/IP stack through callback mechanisms. AFPA cache objects use native TCP/IP data structures such as BSD mbufs, Linux skbuffs, or Windows 2000 MDLs (lists of chained page frames used to describe buffers) [25].