В случае использования FEC возникает полезное взаимодействие с многоадресной передачей, как показано в примере с контрольным пакетом на рис. 7.31. Когда пакеты передаются на множество адресов, разные клиенты могут терять разные пакеты. Например, клиент 1 потерял пакет B, клиент 2 потерял контрольный пакет P, клиент 3 потерял пакет D, а клиент 4 не потерял ни одного пакета.
Рис. 7.31. Многоадресная передача медиа с контрольным пакетом
Однако, несмотря на то что клиенты потеряли разные пакеты, в данном примере все пользователи смогут восстановить утерянную информацию. Все что требуется — это чтобы ни один из клиентов не терял больше одного пакета, тогда отсутствующий сможет быть восстановлен при помощи информации из полученных. Нонненмахер и др. (1997) описали, как можно использовать эту идею для повышения надежности.
Для сервера с большим количеством клиентов многоадресная передача медиа в RTP- и UDP-пакетах является самым эффективным способом. Иначе сервер должен передавать N потоков, когда у него есть N клиентов, что потребует очень большой пропускной способности сети со стороны сервера.
Вы может удивитесь, но на практике Интернет так не работает. Обычно каждый пользователь устанавливает TCP-соединение с сервером, и медиа передается по этому соединению. Для клиента это выглядит так же, как передача сохраненных медиафайлов. И так же как при ней, существует несколько причин для такого, казалось бы, неудачного решения.
Первая причина состоит в том, что многоадресная передача по IP не так уж распространена в Интернете. Некоторые интернет-провайдеры и сети ее поддерживают, но обычно она не является доступной за границами отдельной сети, что ставит крест на глобальном вещании. Другой причиной являются преимущества TCP над UDP, которые мы обсуждали ранее. Передачу при помощи TCP смогут принять практически все пользователи Интернета, особенно в том случае, если передача будет идти как HTTP для прохода через межсетевые экраны, а надежная доставка медиа позволит пользователям легко перематывать контент назад.
Тем не менее существует один важный случай, в котором могут использоваться UDP и многоадресная передача: внутри сети провайдера. Например, компания, занимающаяся кабельным вещанием, может решить передавать телевизионные каналы пользователю через телевизионную приставку, используя IP-технологию вместо традиционного телевещания. Использование IP для передачи видеопрограмм в общем называется IPTV, как мы уже говорили. Так как компания полностью контролирует свою собственную сеть, она может построить эту сеть так, чтобы та поддерживала многоадресную передачу и пропускной способности ее канала было достаточно для вещания на основе UDP. Все это незаметно клиенту, так как IP-технология существует внутри области свободной для навигации.
Такая сеть выглядит просто как кабельное телевидение в отношении обслуживания, но вещание идет через IP, при помощи телеприставки, являющейся компьютером, на котором работает UDP, а телевизор выступает просто в роли монитора, подсоединенного к компьютеру.
Возвращаясь к случаю Интернета, недостаток передачи в реальном времени через TCP заключается в том, что сервер должен отсылать отдельную копию медиа каждому клиенту. Это реально, если клиентов не много, особенно если передается аудио, скользкий момент заключается в размещении сервера в месте с хорошим подключением к Интернету, чтобы пропускной способности канала было достаточно. Обычно это предполагает аренду сервера у провайдера, а не использование домашнего сервера. Рынок таких услуг довольно широк, так что цена вопроса не будет велика.
На самом деле, кто угодно, даже студент может установить медиасервер, а затем управлять им, например таким как радиостанция. Главные компоненты такой станции перечислены на рис. 7.32. Основой является обычный персональный компьютер с качественной звуковой картой и микрофоном. Для получения и кодирования аудио в разных форматах (например, MP4) используется популярное ПО, а для прослушивания, как обычно, используются медиаплееры.
Поток аудиоданных, создаваемый станцией, отправляется на сервер мультимедиа в Интернете с хорошим подключением к сети или как подкасты для передачи сохраненных файлов или для передачи в реальном времени. Сервер распространяет медиа по большому количеству TCP-соединений. На нем также располагается веб-сайт со страницами о станции и ссылками на доступный контент. Существуют как коммерческие программы, включающие в себя все необходимые компоненты, так и открытые программные средства, такие как icecast.
Рис. 7.32. Студенческая радиостанция
Однако при большом числе клиентов использовать TCP для передачи медиа каждому клиенту с одного сервера невозможно. Для этого будет не достаточно полосы пропускания канала одного сервера. Для больших сайтов потокового вещания используется несколько серверов, рассредоточенных географически, так чтобы клиент мог подключиться к ближайшему. Данная схема является сетью распределения контента, о которой мы поговорим в конце этой главы.
7.4.5. Конференции в реальном времени
Когда-то в стародавние времена голосовые звонки передавались коммутируемой телефонной сетью общего пользования. Затем появились Интернет и Всемирная паутина. С годами объем передаваемых данных все возрастал, и к 1999 году объемы данных и речи в телефонной сети уравнялись (и то и другое можно измерить количеством бит в секунду, поскольку сейчас в глубинах телефонной системы используется цифровое PCM-кодирование). К 2002 году объем информационного трафика стал на порядок больше объема речевого трафика, и его рост (экспоненциальный!) продолжается. Между тем, объем речевого трафика сохраняется практически неизменным.
В результате этого телефонные сети стали вытесняться Интернетом. Голосовой трафик сегодня передается при помощи использования интернет-технологий и занимает лишь малую часть сетевой полосы пропускания. Эта подрывная технология известная как IP-телефония (VoIP — Voice over IP, передача голоса поверх IP), или интернет-телефония.
IP-телефония используется в нескольких формах, на что влияют серьезные экономические факторы. (То есть: ее используют потому, что она экономит деньги.)
Одна из форм похожа на обычный (старомодный?) телефон, который включается в Ethernet и посылает вызовы по сети. Пер Андерсон (Pehr Anderson) был студентом последнего курса в M.I.T., когда он и его друзья разработали эту модель для учебного проекта. Они получили за него оценку «B». Не удовлетворившись этим, в 1996 году он основал компанию, названную NBX, стал первооткрывателем этого вида IP-телефонии и через три года продал 3Com за 90 млн долларов. Компании любят этот подход, потому что он позволяет им избавиться от отдельных телефонных линий и довольствоваться уже имеющимися сетями.
Другой подход — использование технологии IP при построении телефонной сети для междугородных звонков. В таких странах, как США, такие сети доступны для альтернативной связи на большие расстояния, для этого перед номером необходимо набрать специальный код. Голосовые отсчеты (сэмплы) помещаются в пакеты, которые отправляются в сеть и извлекаются из пакетов, покидая ее. Так как IP-оборудование намного дешевле, чем обычное телекоммуникационное оборудование, услуга получается более дешевой.
В качестве отступления: разница в цене не исключительно техническая. В течение многих десятилетий услуги телефонной связи были регулируемой монополией, которая гарантировала телефонным компаниям определенный процент дохода от их затрат. Не удивительно, что они увеличивали затраты, например, имели громадное количество избыточных технических средств, что оправдывалось повышением надежности (допустимые сбои телефонной системы предполагались суммарно не более чем на два часа в течение 40 лет или в среднем на три минуты в год). Этот эффект часто называли «синдром позолоченного телефонного столба». После прекращения регулирования этот эффект, конечно, уменьшился, но унаследованное оборудование все еще существует. Индустрия информационных технологий никогда не действовала подобным образом, поэтому она всегда была более эффективной и не содержала лишнего.