Понимание Android "Аппарат радиостанции" для лучшего времени автономной работы

На странице документации Google Оптимизация загрузок для эффективного сетевого доступа суть заключается в том, что "пробуждение радио плохое", "пакет ваших передач" или "контрейлерные" на GCM ". Эта статья оставляет некоторые внутренние принципы работы для любопытных:

  • Он сказал: "Каждый раз, когда вы создаете новое сетевое соединение, радио переходит в состояние полной мощности". Что здесь означает соединение? Это TCP-соединение? Означает ли это, что отправка пакета UDP не пробудит радио?

  • В режиме ожидания он сказал: "Ожидание: минимальное энергетическое состояние, при котором сетевое подключение не активно или не требуется". Означает ли это, что сетевой модуль полностью отключен? Если да, то как GCM может работать даже тогда, когда устройство находится в спящем режиме? Если нет, примерно столько, сколько батарея будет использоваться по сравнению с режимом полной мощности?

  • "Каждый раз, когда вы создаете новое сетевое соединение, радио переходит в состояние полной мощности". Как это связано с долговременными TCP-соединениями? Если я создам TCP-соединение, а затем просто буду получать пакеты, то я не буду создавать новые сетевые подключения или отправлять какие-либо данные. Это позволяет сетевому модулю перейти в режим ожидания?

  • У iPhone работают практически одинаково?

Ответ 1

Ссылка @minhaz заставила меня начать с длинного иска, чтобы понять сотовый сети в сетевом слое. Итак, вот:

Этот вопрос, в основном, касается того, как 3G-сеть реализованы. Отвечая на центральный вопрос: "Итак, как GCM может получить сообщения, находящиеся в "состоянии ожидания", могут ответить на все вышеперечисленные вопросы.

Короткий ответ

Да, в то время как в модели Idle радио может по-прежнему получать ограниченные "управляющие сигналы". В основном оператор сети попросит устройство переключить состояния энергии на способных получать фактические полезные нагрузки. Механизм, который они используют для этого, аналогичен тому, как вы получать телефонные звонки или SMS.

Длинный ответ

Оказывается, что переход состояния контролируется сетью оператора, а не самого сотового телефона. Из Resource Radio Control (RRC); протокол спецификация:

8.6.3.3 Общие правила перехода состояния в зависимости от принятых информационных элементов

IE (информационный элемент) "Индикатор состояния RRC" указывает состояние UE (Пользовательское оборудование). UE должно войти в состояние указанном в IE "Индикатор состояния RRC...

И как это делает оператор сети, когда RRC находится в режиме ожидания? Из книги 3G, 4G и Beyond: Привлечение сетей, устройств и Интернета Вместе:

2.2.3.3 Состояние управления радиоресурсами

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

Из LTE в Пули:

23.1 Процедура установления соединения RRC всегда инициируется UE, но может быть вызвано либо UE, либо сетью.... сеть инициирует процедуру установления соединения RRC путем отправки сообщение пейджинга....

Итак, у нас это есть. Теперь довольно очевидно увидеть, как все эти галстуки вместе. Чтобы ответить на исходные вопросы:

  • Соединение означает RRC-соединение. Поскольку RRC-соединение является Уровень 3, все (обычные) виды сетевой активности, включая TCP и UDP, будет создавать RRC-соединение (т.е. "разбудить радио" ).

  • Поскольку радио по-прежнему необходимо прослушивать пейджинговый канал, это не полностью отключен. Эмпирически он по-прежнему использует энергию, как экспериментировал ссылка XMPP предоставленный @minhaz. В результате это на 2 порядка меньше потребление энергии по сравнению с другими состояниями.

  • Как упоминалось в разных местах и, по-видимому, TCP соединения сохраняются в памяти, и не важно, базовые слои прошли процедуру повторного подключения RRC. Если TCP-соединение не работает, RRC-соединение может быть освобождено (то есть UE может простаивают). Если он будет продолжать получать данные, сеть не будет инструктировать UE освободить соединение RRC, чтобы он не перешел в режим ожидания.

  • Поскольку RRC принадлежит UMTS WCDMA, который основанный на 3G, вполне вероятно, что iPhone также работает аналогично.


Примечания:

  • Ресурсы, которые я связал с миксами 3G и 4G. Я подозреваю, что 4G - это постепенное улучшение, поэтому основные понятия могут быть смешаны между ними.

Сброс ресурсов для более глубокого понимания (т.е. источников для вышеупомянутого дайджеста):

Ответ 2

Я не эксперт по SOC, но вот что я понимаю, читая ту же документацию.

It said "Every time you create a new network connection, the radio transitions to the full power state." What does connection mean here? Is that a TCP connection? Does that mean sending a UDP packet will not wake up the radio?

Любая передача данных по сети разбудит радио, это не имеет значения, если это UDP или TCP 1 байт или 1 МБ.

In Standby it said: "Standby: The minimal energy state during which no network connection is active or required." Does that mean the network module is completely shut off? If so how can GCM even work even when the device is in sleep mode? If not, roughly how much battery does it use compared to full power mode?

Не просыпаясь всю радиостанцию, вы все равно можете подключиться к беспроводной башне. Я считаю, что этот дизайн давно сделал, чтобы сэкономить мобильную батарею, и это не имеет ничего общего с Android. Он может использовать другой чип для этой работы, но я оставлю этот ответ специалисту SOC.

"Every time you create a new network connection, the radio transitions to the full power state." How does that gibe with long lived TCP connections? If I create a TCP connection and then just keep receiving packets, then I won't be creating new network connections or sending out any data. Does that allow the network module to go to Standby mode?

для открытия TCP-соединения вам всегда требуется некоторая степень Handshaking, и это будет поддерживать радиопередатчик. TCP - это надежный протокол, который означает, что передача будет проверена на обоих концах, чтобы избежать ошибки передачи. И в нашем случае это означает, что независимо от того, система всегда будет отправлять, получать что-то по сети. Поддерживается TCP, также поддерживается подключение к сети (keep_alive), и это означает, что если данные не были переданы, это будет поддерживать слежение передатчика.