Eve is an intelligence agency with the capability to scan all cleartext communications and do traffic analysis against encrypted communications.
There are n Alices, who each want to communicate secretly with some of the other Alices. So, they want the content of their communication to be secret, and the fact that they are actively trying to communicate secretly to be secret.
There are also N>>n Bobs, who disagree with mass surveillance but don't want to do anything which would give them any legal liability, such as transmitting illegal material (IE, they don't want to run TOR nodes).
So the Bobs decide to help by sending junk communications to other Bobs, which are indistinguishable from encrypted data. An individual Bob, if challenged, can show that his transmissions are junk, thus avoiding legal liability (NB - I Am Not A Lawyer). For the purpose of the exercise Eve in not allowed to challenge 'many' Bobs.
Eve wins if she can distinguish the Alices from the Bobs, or at least, as many Alices as possible. In particular, Eve may start by knowing at least some of the Alices; we don't want the security of the other Alices to collapse if she does.
A dumb approach is as follows: For each period of time, each Bob (or masquerading Alice) chooses another Bob(Alice) to communicate with at random from a public list. The Bobs send junk, the Alices send their encrypted message. In this scheme, the Alices are indistinguishable from the Bobs, but the Alices only obtain 1/N of the bandwidth of an individual communication, which is very low since N is large, and have very high latency, since they have to wait many time periods before they happen to communicate with who they want.
Is it possible to do better?