A push-based scheduling algorithm for large scale P2P live streaming