Откровенно говоря, я не знаю как работает сопкаст, но наша задача была максимально разгрузить каналы источника, а не нагрузить их по максимуму. Собственно, в идеале, источник вообще должен работать только с узлами поддержки и тогда скорость отдачи источника будет полностью прогнозируемая. В любом случае, все еще будет оптимизироваться и улучшаться.
На мой взгляд это не совсем правильная политика распределения отдачи с серверами поддержки, они должны быть лишь как дополнение, хотя не исключаю возможность включения трансляции бродкастеру только с подключением сервера поддержки, но этот параметр он должен включать сам если ему это будет необходимо(например он имеет отдачу 5 мбит/с, естественно что уже проблематично будет раздать трансляцию например в 3 мбит/с, поэтому он может включить возможность подключения к самому источнику лишь серверу поддержки, а обычные зрители пиры будут получать этот поток лишь от этого сервера).
Стабильность сопкаста кроется в правильном распределении пиров в случае слабых скоростей загрузок и отдач. Хотя там всего лишь используется 11 юзеров пиров по умолчанию(там это нерегулируемый параметр и это один из минусов сопок), но при этом все нормально раздают друг другу поток из-за того, что если на одного из подключенных пиров падает отдача, то тут же ищется новый пир, который будет забирать необходимую отдачу у бродкастера, а после того как он его найдет, старый пир просто отключается от источника. Аналогично это работает на раздаче и у обычного юзера, который смотрит трансляцию. В свою очередь обычный пир для загрузки потока также ищет новых пиров, если его существующие пиры начинают плохо отдавать поток ему, после нахождение хороших пиров отключаются старые, которые плохо отдавали поток. Но что самое интересное если начинает серьезно проседать буфер у сопки, то пир который смотрит трансляцию не отключает своих плохих пиров, с которых тянет трансляцию и при этом подключает все новых и новых чтобы получить заветные данные для прогрузки буфера и как только этот буфер прогружается до нормального значения (а в идеале это 100% ) он постепенно отключает своих плохих пиров, которые плохо ему раздают поток. Как правило ему хватает 3-5 сильных пиров и несколько слабых, чтобы нормально прогружать буфер сопкаста. Еще одно важное значение для стабильности имеет протокол UDP у сопкаста, так как в случае неправильного куска трансляции происходит перезакачивание этого же куска с другого пира, на протоколе TCP этого вроде как не происходит.
У TS явно несколько другая топология соединений пиров между собой, я пока не совсем понял как именно обмениваются данными пиры между собой, но думаю вы сами это прекрасно знаете и надеюсь вы улучшите эту топологию, так как сейчас слишком много пиров подключается к юзеру и источнику, которые проще говоря просиживают свое место на порту в холостую, и должного обмена пирами сейчас не происходит, которые к тому же еще и плохо раздают другим трансляцию(пока пеняем это на windows, в linux дела с этим происходят получше).