Its a super complex problem to solve, it has been done in some way many times before but not with the exact constraints and tradeoffs that fit well to the rest of the ipfs architecture and that will work on a global scale with unreliable connections and delivery times in the area of ~ a second. Maybe some ipfs dev reads this and can chime in but as far as i understand they are not even really sure about what the correct algorithm for message distribution should be to build on.