Abstract: A traffic filter for a decentralised peer-to peer data network is described. The data network comprises a number of interconnected ultrapeer nodes, each ultrapeer node being arranged to accept connections from a number of leaf nodes; maintain a database identifying material available from each connected leaf node, receive search queries from connected leaf nodes and other ultrapeers, forward received search queries to connected ultrapeers and provide data from the database matching a received search query. The traffic filter includes an ultrapeer node, a filter module and a protected material database. Upon receiving a search query the ultrapeer node is arranged to pass the query to the filter module.