История появления и развития открытой телефонии

Опубликовано lynx - пн, 10/03/2016 - 09:51

Автор: Джим Диксон.

Около 20-25 лет назад компания AT&T начала предлагать интерфейсы прикладного программирования (как минимум, один), которые позволяли пользователям настраивать функциональные характеристики голосовой почты Audix/ автоматического секретаря, работающего на платформе Unix AT&T 3BX (обычно 3B10). Эта система стоила тысячи долларов за канал и имела очень ограниченный функционал. В попытке сделать свои услуги более функциональными и привлекательными (особенно для тех, у кого не было АТС AT&T или Central Office для подключения к ним Audix) несколько производителей выпустили карту, которую можно было вставить в компьютер, и которая работала на MS-DOS и только с одной линией POTS (только начало цикла FXO). Эти карты были довольно низкого качества относительно сегодняшних стандартов (не говоря уже об ужасающей среде, в которой они работали) и все равно стоили от $1000 за штуку. Большинство этих карт давали действительно плохое качество звука и были чрезвычайно ненадежными в качестве личных автоответчиков. 

Примерно в 1985 году несколько компаний выпустили довольно приличные 4-портовые карты, которые стоили около $1000 за штуку (цена снизилась до $250 за порт!). Они были НАМНОГО более надежными в работе по сравнению с их однопортовыми предшественниками, и обеспечивали довольно приличное качество звука. Фактически можно было вставлять 6 или 8 карт в быстрый 286 компьютер и тем самым получать 32 порта. Так начался век практичной компьютерной телефонии. Я активно работал консультантом в сфере компьютерной телефонии с самого ее появления. Я очень быстро начал разбираться в вопросах проектирования систем, программного и аппаратного обеспечения. Это было несложно, т.к. у меня за плечами был многолетний опыт работы в сфере традиционной некомпьютерной телефонии.

Мои клиенты (которые применяли разработанные мной системы в ОЧЕНЬ больших масштабах) тратили миллионы долларов каждый год (только один из моих клиентов тратил бы свыше 1 миллиона в год, не считая нескольких других, которые были близки к такой сумме) на высокоплотное аппаратное обеспечение для компьютерной телефонии.У меня сердце разрывалось, когда я видел, как эти люди тратят $5000 или $10000 на плату, на изготовление которой некоторые производители тратят всего несколько сотен долларов. И более того, программное обеспечение и драйвера никогда не работали на 100% правильно. Я думаю одной из причин, по которой у меня было много работы в этой области, было то, что я знал все слабые места таких систем и знал как их обойти (или не обходить). В любом случае карты не могли быть дешевыми, потому что они должны были обладать значительной производительностью (требовались не просто обычные функции, необходим был функционал ЦСП), т.к. компьютеры, к которым эти карты подсоединялись, в то время были довольно слабенькими.

Я тогда уже знал, что когда-нибудь в «прекрасном» будущем все компьютеры будут иметь необходимую мощность, что сделает периферийные устройства, необходимые для подсоединения к интерфейсам связи, ОЧЕНЬ дешевыми и даже обыденными. Поэтому я всегда краем глаза следил за постепенным возрастанием производительности «быстрых, как никогда ранее» процессоров, и в эру 486-66DX2 казалось, что прогресс шел полным ходом, а технологии развивались в геометрической прогрессии. Я знал, особенно после появления процессоров Pentium, что близится момент интернализации компьютерной телефонии, поэтому я еще пристальней стал следить за происходящим.

Я посчитал, что, если я ждал этого, то были и другие, которые думали также и что-то предпринимали. Я смотрел, следил и ждал, и когда появился PentiumIII-1000 (100 МГц), я наконец сказал: «Черт возьми, эти процессоры уж ТОЧНО справятся с этой задачей». Но, к моему ужасу, никто ничего не сделал. Я не осознавал то, что мое видение было на 100% правильным, и не знал, что именно *я* буду первым, кто использует это.

Чтобы подтвердить первоначальную идею, я раздобыл старую карту Mitel MB89000C «ISDN Express Development» (ISA-карта которую можно было бы использовать с их аппаратными средствами связи), на которой были пара интерфейсов Т-1 и перекрестная матрица (таймслот — коммутатор). Это предоставило мне физический доступ с ISA-шины компьютера к данным таймслотов Т-1 (хоть и неэффективно, т.к. это был 8-битный ввод/вывод, и TSI-чип требовал МНОГО тактов ожидания для доступа).

Я написал драйвер для клудж-карты (мне пришлось сделать к ней пару модулей) для FreeBSD (эту ОС я тогда выбрал) и решил, что могу получить 6 надежных каналов ввода-вывода с карты. Но, что более важно, 6 каналов обработки пространства пользователя (перемещение с использованием буфера обмена, декодирование тонального набора с разделением частот и т.д.) практически не затрачивали процессорного времени, доказывая то, что мой тогдашний 600МГц PIII возможно мог обрабатывать 50-75 портов, если шина ввода-ввывода не требовала слишком много мощности. Добившись желаемого результата (я назвал этот драйвер 'mie'), я пошел и купил все, что нужно было для установки новой ISA-карты, в результате чего я добился эффективного использования (как оказалось) ISA-шины в 16-битном режиме без тактов ожидания. У меня получилось перевести 2 полных слота Т-1 (48 каналов) данных по шине, и компьютер справлялся с этой задачей без проблем.

Так я сделал ISA-карты и выставил их на продажу (я продал около 50 штук) и выставил всю информацию (включая файлы с графиками) в сеть для общественного пользования. Так как эта концепция была столь революционной и была призвана произвести фурор в своей области, я решил использовать мексиканский революционный мотив и назвал технологию и организацию в честь знаменитого мексиканского революционера Эмилиано Запата (Emiliano Zapata). Я решил назвать карту «tormenta», что на испанском означает «шторм», а точнее «БОЛЬШОЙ шторм» типа урагана.

Вот как началась история Zapata Telephony.

Я полностью написал драйвер для ISA-карты Tormenta для *BSD и выставил в сеть. В ответ я получил, за малым исключением, «да, это классно подходит для BSD, ну а что делать с Linux?»

Лично я до того даже и не видел Linux в работе. Но я решил попробовать, пошел в местный магазин (Fry's в Вудланд Хиллс) и купил копию RedHat Linux 6.0 (думаю, версия 7.0 ТОЛЬКО вышла и еще не поступила в продажу). Я загрузил ее в компьютер (со всеми данными по разработке, включая ядерные исходники). Я ковырялся в исходниках драйверов пока не нашел ОЧЕНЬ простой драйвер, который содержал все основы, точки входа, интерфейсы и т.д. (Я в основном использовал драйвер Video Spigot), и использовал его, чтобы понять, как форматировать (чтобы он хотя бы просто работал) наипростейший драйвер для Linux. Итак, я переделал BSD-драйвер под Linux (на самом деле, это не было *так уж* трудно, т.к. основные концепции практически одинаковые). Он не поддерживал загружаемые ядерные модули (черт, да что это вообще такое? В BSD 3.X нужно было рекомпилировать ядро, чтобы изменить конфигурацию. Последней системой, с которой я использовал загружаемые драйвера, была VAX/VMS.), но все равно работал (после того, как вы рекомпилируете ядро уже вместе с ним). Так как весь мой опыт работы с Linux сводился к установке и написанию ядерного модуля, я *знал*, что он *должен был* быть неправильным, неправильным, неправильным, плохим, несносным, мелочи, ошибки и всякие штуки, от которых даже у веселого пингвина волосы дыбом встанут.

С такими мыслями я выставил его в сеть, уже заранее зная, что придет какой-нибудь знаток по части ярда Linux, обсмеет меня, потом обгадит и опять обсмеет, потом пожалеет меня и предложит переформатировать его под «правильный Linux». В течение 48 часов после размещения драйвера в сети я получил письмо от одного чувака из Алабамы (Марк Спенсер), который именно это и предложил. Он не просто это сказал, у него было кое-что, что идеально подошло бы для всей этой затеи (Asterisk). В то время Asterisk был функциональным концептом, но у него не было реальных шансов стать чем-то действительно полезным, т.к. в то время у него не было возможности напрямую работать (или хотя бы не напрямую, т.к. в то время было не особо много, если вообще было, доступного VOIP-оборудования) с какими-либо аппаратными средствами связи (телефоны, линии и т.д.). Его слияние с концепцией Zapata Telephony и разработкой оборудования/драйвера/библиотеки и интерфейса позволили ему стать настоящей АТС, которая могла работать с настоящими телефонами, линиями и т.д.

К тому же у Марка не было особо точного представления о VOIP, работе сети, внутреннем устройстве системы и т.д., и в самом начале всего этого он просто очень интересовался телефонами и телефонией. Но у него был довольно ограниченный опыт в сфере телефонных систем, того, как они функционируют, и особенно в сфере аппаратных интерфейсов связи. С самого начала я помогал ему в этих вопросах, предоставляя информацию и внедряя код в драйвера и АТС для разных нужных целей. Мы, и с недавнего времени другие, создали хорошую команду (хэх, я постоянно спрашиваю его о ядрах, VOIP и других чисто линуксовских штуках), работающую на достижение общей цели — внедрить последние разработки в технологии связи для общего пользования по реальным и доступным ценам.

Со времен ISA-карты я разработал карту «Tormenta 2 PCI Quad T1/E1», которую Марк выпустил на рынок как Digium T400P и E400P, и теперь Varion продает ее как V400P (Т1 и Е1). Все проектные файлы (включая файлы с графиками) доступны на сайте Zapatatelephony.org для общего пользования.

Сейчас мы разрабатываем новые проекты, с более высокой плотностью.

Как теперь видно, с целенаправленной работой Марка (и большим количеством Моих работ и работ других людей) по драйверам Zaptel и с программным обеспечением Asterisk технологии проделали длинный, длинный путь и продолжают развиваться и совершенствоваться с каждым днем.

Примечание:

Кто-нибудь когда-нибудь задумывался о том, какую ОГРОМНУЮ ответственность принял на себя Марк, взявшись за этот проект? Вы когда-либо думали о том, сколько ему пришлось сделать и сколько еще предстоит! Поэтому я считаю, что я работал с ним над этим проектом дольше, чем кто-либо другой, включая некоторых его сотрудников, и, поверьте мне, уж я то видел как минимум некоторые вещи, через которые ему пришлось пройти, чтобы закончить все это. Лично я бы *НИКОГДА* не взялся за такую задачу, зная, какой уровень ответственности это предполагает. Да, то, чем я занимался, тоже непростая задача и подразумевает довольно высокий уровень ответственности, но я делал то, в чем был уверен. Вклад Марка намного больше моего, и я могу только сказать, что знаю, чего ему стоит делать то, что он делает, и я действительно ценю время и преданность, которые он вложил во все эти невероятные вещи, которые он сделал.

К тому же, я хотел бы поблагодарить всех, кто принял участие в этом проекте, и всех, кто как-нибудь нам помог в его осуществлении. Спасибо за то, что верите в этот проект и верите в нас.

Оригинал статьи на сайте (ENG): app-rpt.qrvc.com/node/136

 

via