Про протоколы взаимодействия с 3G/LTE-модемом
klink0v — 01.10.2016Я, наивный, раньше думал, что протоколов общения с 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 переключать без особой нужды не рекомендуется, ибо при этом сразу теряется доступ к "кишкам" модема. Весьма занятный представитель своего племени.