Я, наивный, раньше думал, что протоколов общения с GSM-модемом на сегодняшний день существует не так уж и много. Пока не набрёл в Сети на одну
занимательную PDF-ку с презентацией. Оказывается, оных технологий существует около десятка. Причём, как относительно "стандартных" и более-менее распространённых, так и всяких проприетарных и экзотических. Наглядно проиллюстрировать ситуацию можно так:
Если вкратце, то весь этот зоопарк сводится примерно к следующему.
- Семейство AT-комманд + PPP
- Семейство ECM (Ethernet Control Model)
- Семейство EEM (Ethernet Emulation Model)
- Семейство NCM (Network Control Model)
- Проприетарщина типа Sierra и Option
- Условно-проприетарщина типа QCDM, WMC, QMI
- RNDIS
- MBIM
Если интересно, сравнение стандартизированных протоколов (ECM, EEM, NCM) и RNDIS можно посмотреть
вот здесь.
Как говорится, "оу май факинг гад"! Но это всё голая теория. А что мы имеем на практике и какой протокол / модем лучше выбрать для использования в повседневной нелёгкой админской жизни и на какие грабли можно наступить? Какие нюансы следует держать в голове и учитывать?
- Варианты с PPP и RNDIS - самые тормозные, но в то же время и самые универсальные. Если вам нужна высокая скорость передачи данных и/или торренты, то они не для вас. Первый упирается в архитектурные ограничения, второй - в вычислительные мощности модема, который в таком случае становится уже и не модемом, а очень даже роутером. И помните, что RNDIS автоматически подразумевает наличие ещё одного NAT-а внутри модема, наряду с NAT-ом в сети провайдера.
- Самым свежим, "молодым" и перспективным протоколом является MBIM. В Windows начиная с 8-ки он поддерживается "из коробки", никаких драйверов устанавливать не требуется: "воткнул и работает". По этой же причине он не всегда корректно заводится под Linux-ом. В 2013-м году там было вообще всё очень грустно. Как сейчас - не знаю, надо тестировать. Может, и допилили. Именно этому протоколу следует отдавать предпочтение при прочих равных.
- Если выбирать между PPP, ECM, EEM и NCM, то лучше уж NCM. Именно он реализован в большинстве хуявых (Huawei) модемов.
- Почти все устройства на базе широко распространённых чипов имени Qualcomm будут поддерживать QMI. С точки зрения пользователя это вполне нормальный, годный протокол. Linux-ом обычно понимается нормально. Под винду надо ставить драйвера от производителя. Если оный супостат не приложил к железке диск с драйверами, то попробуйте взять их от Sierra Wireless EM7345. :)
- Бывает, что одно и то же устройство умеет работать в нескольких различных режимах. Тогда предпочтение тому или иному протоколу следует отдавать в таком порядке, по убыванию: проприетарщина, QMI, MBIM, NCM, ECM, RNDIS, PPP. Данная рекомендация касается админов и пользователей. У разработчиков софта скорее всего будет диаметрально противоположное мнение. :)
- Некоторые устройства по-разному представляются операционной системе в зависимости от её типа и версии. Например, бывают модемы, которые под Windows 7 автоматически включают режим RNDIS, под Windows 8 - MBIM, а под Linux-ом - QMI. Такая технология называется "морфинг" (morphing). Иногда это удобно, а иногда наоборот, прибавляет проблем.
Теперь касаемо выбора конкретного железа. Из того, что на момент написания этого поста реально купить, достойны внимания четыре модели.
- Sierra AirCard 320U. Офигенно, дорого, в России официально не продаётся. Есть на AliExpress-е. Заводится под чем угодно быстро и без проблем. Понимает свой собственный проприетарный протокол имени "Direct IP" (есть модуль под Linux) и QMI.
- Huawei E3272 и его клоны. Снят с производства, но можно взять на каком-нибудь Avito БУшный. Понимает RNDIS, он же HiLink, и NCM. Для переключения между одним и другим требуется перепрошивка. Обычно из коробки идёт с NCM-ом.
- Huawei E3372 и его модификации. Старший брат предыдущего товарища на более новом чипе и с более мощным процессором. Также понимает RNDIS и NCM, но намного хуже перепрошивается. Вариант для настоящих красноглазиков. Из коробки обычно идёт с прошивкой RNDIS (HiLink). Экземпляры из некоторых партий дык вообще перешиваются исключительно с применением паяльника. Спорный выбор, но имеет право на существование.
- ZTE MF823D. Полиморф. Настоящий комбайн с труЪ-линуксом внутри. Сделан на базе Qualcomm. Понимает QMI, RNDIS, MBIM и вроде как ECM. Для ценителей доступен линуксовый shell через telnet либо ADB-интерфейс. В MBIM переключать без особой нужды не рекомендуется, ибо при этом сразу теряется доступ к "кишкам" модема. Весьма занятный представитель своего племени.
Что касается конкретно меня, то первые два типа "мопедов" у меня уже довольно давно и успешно трудятся на благо предприятия. Про остальные два больше ничего сказать толком не могу. Купил по штучке "на пробу", буду ковырять и смотреть как они себя ведут под реальной нагрузкой. Если у кого-то уже есть опыт использования одного из них, милостиво прошу поделиться своими соображениями. Потому что пока не могу решить кому бы отдать предпочтение при закупке следующей партии.