I have taken a quick look at the code and from my limited knowledge of Python
it seems that if "IDENTIFIER" and "PREFIX" values in p2pool/networks.py are not equal
between P2Pools, the pools will be working on their own individual shares (a block in P2Pool terms)
and not a collective block distributed amongst ALL P2Pools. This is where the fragmentation
happens and results in a number of decentralised P2Pools.
So it seems the key here would be for ALL P2Pools to use the same "IDENTIFIER" and
"PREFIX" values.
So taking an example from akabane's kind submission to github,
if ALL P2Pool ops had the following in their p2pool/networks.py,
ALL P2Pools would acknowledge each other and work on the same
share (block)..
PREFIX='b6c0601991aa19a3'.decode('hex'),
Please please correct me if I am mistaken...