It's very complex - P2P is very large objects, very long sessions, undocumented protocols, it's very demanding. Your average copy of Squid or Microsoft ISA is not capable of dealing with P2P.