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

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

    Около 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
    Поделиться публикацией
    Комментарии 24
      +1
      «У меня сердце разрывалось, когда я видел, как эти люди тратят $5000 или $10000 на плату, на изготовление которой некоторые производители тратят всего несколько сотен долларов»
      У большинства Open-source проектов схожие мотивы.
        0
        У любого промышленного производства всегда схожие мотивы.
        +3
        Ага… Я все жду, когда наконец кто-то по-серьезному возьмется за OpenERP…
          0
          В смысле?
            0
            Ну вот есть много контор, которые за деньги помогают внедрять Asterisk. А Вы хоть одну компанию знаете, которая обеспечивает коммерческую поддержку OpenERP? Я — нет.
              0
              Да есть немного, в основном я видел что компании сами пишут допольнительные модули.
                0
                Погодите. А где в свободном доступе адаптированный план счетов? А где конфигурации по остальным блокам? 1С из бухгалтерской программы выросла в систему комплектной автоматизации. Чтобы OpenERP хотя бы в затылок дунула, надо провести громадную работу по адаптации. Где герои!?
                  0
                  Где деньги Зина?
                    0
                    А деньги потом будут. Кто-то должен стартануть и разогнать эко-систему, чтобы подхватили.
          0
          Эта система стоила тысячи долларов за канал и имела очень ограниченный функционал.

          А что считается каналом?
            0
            порт RJ-11/RJ-12
              0
              Уж точно не T1 или SIP пир :-)
                0
                Канал в телефонии — голосовой, то есть способный проключить один разговор.
                  0
                  Там в статье есть неопределенность. Нортел они оценивают по линиям, а Asterisk — по инсталяциям. Но мне кажется, это только занижает долю Asterisk.
                0
                Чёрт возьми. Первая система (довольно слабая по сегодняшним меркам) где я запустил свою первую IP-АТС Asterisk — это FreeBSD. В качестве эсперимента пока работает на 3 телефона. К сожалению пока у меня нет своей локалки… :(
                  0
                  Как бы хотелось, прочитать подобного рода статью от самого автора) По стилю изложения сразу видно, что это перевод с ненашенского.
                  За статью спасибо, было интересно.
                    0
                    Внизу ссылка на оригинал же!
                      0
                      Говоря это, я подразумевал вас)
                      Просто часто вижу на хабре такие истории, но в абсолютном большинстве случаев — это переводы.
                        0
                        Мою историю!?
                          0
                          Историю хабровчанина вообще. Чтобы она была такой же интересной и жизненной.
                          Они есть, я не спорю, но их мало.
                            +1
                            Я достаточно весело к Asterisk'у пришел :-)
                            Как нибудь напишу. Пока история в самом разгаре!
                    0
                    > чтобы понять, как форматировать наипростейший драйвер для Linux
                    может быть «сформировать»?
                      0
                      to show me how to format (well at least to be functional)
                      a minimal Linux driver

                      Как перевести?
                        0
                        «как сформировать простейший драйвер» — разве плохо?

                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                    Самое читаемое