Wi-Fi: неочевидные нюансы (на примере домашней сети) [ч2+1]

в 12:23, , рубрики: 802.11n, wi-fi, wlan, беспроводная связь, беспроводные сети, Беспроводные технологии, домашние сети, Сетевое оборудование, Сетевые технологии, метки: , , , , ,

Сейчас многие покупают точки доступа 802.11n, но хороших скоростей достичь удается не всем. В этом посте поговорим о не очень очевидных мелких нюансах, которые могут ощутимо улучшить (или ухудшить) работу Wi-Fi. Всё описанное ниже применимо как к домашним Wi-Fi-роутерам со стандартными и продвинутыми (DD-WRT & Co.) прошивками, так и к корпоративным железкам и сетям. Поэтому, в качестве примера возьмем «домашнюю» тему, как более родную и близкую к телу. Ибо даже самые администые из админов и инженеристые из инженеров живут в многоквартирных домах (или поселках с достаточной плотностью соседей), и всем хочется быстрого и надежного Wi-Fi.
[!!]: после замечаний касательно публикации первой части привожу текст целиком. Если вы читали первую часть — продолжайте отсюда.

Несколько примечаний перед началом:

  • Стиль изложения нарочито упрощен, т.к. некоторые вещи вам, возможно, придется объяснять соседям, совершенно незнакомым с основами радиосетей, стандартом 802.11 и регуляторной политикой государства.
  • Из любого правила есть исключения, которые опущены для краткости. Предельные случаи можно обсудить в комментариях.
  • Пожалуйста, обратите внимание на слово «неочевидные». Подробное доказательство некоторых тезисов требует погружения в стандарты, я этого делать не хочу (хоть и пришлось пару раз).

1. Как жить хорошо самому и не мешать соседям.

[1.1] Казалось бы – чего уж там? Выкрутил точку на полную мощность, получил максимально возможное покрытие – и радуйся. А теперь давайте подумаем: не только сигнал точки доступа должен достичь клиента, но и сигнал клиента должен достичь точки. Мощность передатчика ТД обычно до 100 мВт (20 dBm). А теперь загляните в datasheet к своему ноутбуку/телефону/планшету и найдите там мощность его Wi-Fi передатчика. Нашли? Вам очень повезло! Часто её вообще не указывают (можно поискать по FCC ID). Тем не менее, можно уверенно заявлять, что мощность типичных мобильных клиентов находится в диапазоне 30-50 мВт. Таким образом, если ТД вещает на 100мВт, а клиент – только на 50мВт, в зоне покрытия найдутся места, где клиент будет слышать точку хорошо, а ТД клиента — плохо (или вообще слышать не будет) – асимметрия. Сигнал есть – а связи нет. Или downlink быстрый, а uplink медленный. Это актуально, если вы используете Wi-Fi для онлайн-игр или скайпа, для обычного интернет-доступа это не так и важно (только, если вы не на краю покрытия). И будем жаловаться на убогого провайдера, глючную точку, кривые драйвера, но не на неграмотное планирование сети.
Wi Fi: неочевидные нюансы (на примере домашней сети) [ч2+1]

Обоснование (для тех, кому интересны подробности):
Наша задача — обеспечить как можно более симметричный канал связи между клиентом (STA) и точкой (AP), дабы уравнять скорости uplink и downlink. Для этого будем опираться на SNR (соотношение сигнал-шум). Почему именно на него, описано в [3.1].
SNR(STA) = Rx(AP) — RxSens(STA); SNR (AP) — Rx(STA) — RxSens(AP)
где Rx(AP/STA) — мощность принятого сигнала с точки/клиента, RxSens(AP/STA) — чувствительность приема точки/клиента. Для упрощения примем, что порог фонового шума ниже порога чувствительности приемника AP/STA. Подобное упрощение вполне приемлемо, т.к. если уровень фонового шума для AP и STA одинаков — он никак не влияет на симметрию канала.
Далее,
Rx(AP) = Tx(AP) [мощность передатчика точки на порту антенны] + TxGain(AP) [усиление передачи антенны точки с учетом всех потерь, усилений и направленности] — PathLoss [потери сигнала на пути от точки до клиента] + RxGain(STA) [усиление приема антенны клиента с учетом всех потерь, усилений и направленности].
Аналогично, Rx(STA) = Tx(STA) + TxGain(STA) — PathLoss + RxGain(AP).
При этом стоит заметить следующее:

  • PathLoss одинаков в обеих направлениях
  • TxGain и RxGain антенн в случае обычных антенн одинаков (верно и для AP и для STA). Здесь не рассматриваются случаи с MIMO, MRC, TxBF и прочими ухищрениями. Так что можно принять: TxGain(AP) === RxGain(AP) = Gain(AP), аналогично для STA.
  • Rx/Tx Gain антенны клиента мало когда известен. Клиентские устройства, обычно, комплектуются несменными антеннами, что позволяет указывать мощность передатчика и чувствительность приемника сразу с учетом антенны. Отметим это в наших выкладках ниже.

Итого получаем:
SNR(AP) = Tx*(STA) [с учетом антенны] — PathLoss + Gain(AP) — RxSens(AP)
SNR(STA)=Tx(AP) + Gain(AP) — PathLoss -RxSens*(STA) [с учетом антенны]

Разница между SNR на обоих концах и будет асимметрией канала, применяем арифметику: D = SNR(STA)-SNR(AP) = Tx*(STA) — Tx(AP) — (RxSens*(STA) — (RxSens(AP)).

Таким образом, асимметрия канала не зависит от типа антенны на точке и на клиенте (опять же, зависит, если вы используете MIMO, MRC и проч, но тут рассчитать что-либо будет довольно сложно), а зависит от разности мощностей и чувствительностей приемников. При D<0 точка будет слышать клиента лучше, чем клиент точку. В зависимости от расстояния это будет означать либо, что поток данных от клиента к точке будет медленнее, чем от точки к клиенту, либо клиент до точки достучаться не сможет вовсе.
Для взятых нами мощностей точки (100mW=20dBm) и клиента (30-50mW ~= 15-17dBm) разность мощностей составит 3-5dB. До тех пор, пока приемник точки чувствительнее приемника клиента на эти самые 3-5dB — проблем возникать не будет. К сожалению, это не всегда так. Проведем рассчеты для ноутбука HP 8440p и точки D-Link точки DIR-615 для 802.11g@54Mbps (о том, почему важно также указывать rate/MCS — в следующем разделе):

  • 8440p: Tx*(STA) = 17dBm, RxSens*(STA) = -76dBm@54Mbps
  • DIR-615: Tx(AP) = 20dBm, RxSens(AP) = -65dBm@54Mbps.
  • D = (17 — 20) — (-76 +65) = 3 — 11 = -7dB.

Таким образом, в работе могут наблюдаться проблемы, причем, по вине точки.

Вывод: может оказаться, что для получения более стабильной связи мощность точки придется снизить. Что, согласитесь, не совсем очевидно :)

[1.2] Также далеко не самым известным фактом, добавляющим к асимметрии, является то, что у большинства клиентских устройств мощность передатчика снижена на «крайних» каналах (1 и 11/13 для 2.4 ГГц). Вот пример для iPhone из документации FCC (мощность на порту антенны).
Wi Fi: неочевидные нюансы (на примере домашней сети) [ч2+1]
Как видите, на крайних каналах мощность передатчика в ~2.3 раза ниже, чем на средних. Причина в том, что Wi-Fi – связь широкополосная, удержать сигнал чётко в пределах рамки канала не удастся. Вот и приходится снижать мощность в «пограничных» случаях, чтобы не задевать соседние с ISM диапазоны. Вывод: если ваш планшет плохо работает в туалете – попробуйте переехать на канал 6.

2. Раз уж речь зашла о каналах…

Всем известны «непересекающиеся» каналы 1/6/11. Так вот, они пересекаются! Потому, что Wi-Fi, как было упомянуто раньше, технология широкополосная и полностью сдержать сигнал в рамках канала невозможно. Приведенные ниже иллюстрации демонстрируют эффект для 802.11n OFDM (HT). На первой иллюстрации изображена спектральная маска 802.11n OFDM (HT) для 20МГц канала в 2.4ГГц (взята прямо из стандарта). По вертикали — мощность, по горизонтали — частота (смещение от центральной частоты канала). На второй иллюстрации я наложил спектральные маски каналов 1,6,11 с учетом соседства. Из этих иллюстраций мы сделаем два важных вывода.
Wi Fi: неочевидные нюансы (на примере домашней сети) [ч2+1]
Wi Fi: неочевидные нюансы (на примере домашней сети) [ч2+1]

[2.1] Все считают, что ширина канала — 22МГц (так и есть). Но, как показывает иллюстрация, сигнал на этом не заканчивается, и даже непересекающиеся каналы таки перекрываются: 1/6 и 6/11 — на ~-20dBr, 1/11 — на ~-36dBr, 1/13 — на -45dBr.
Попытка поставить две точки доступа, настроенные на соседние «неперекрывающиеся» каналы, близко друг от друга приведет к тому, что каждая из них будет создавать соседке помеху в 20dBm – 20dB – 50dB [которые добавим на потери распространения сигнала на малое расстояние и небольшую стенку] =-50dBm! Такой уровень шума способен целиком забить любой полезный Wi-Fi сигнал из соседней комнаты, или блокировать ваши коммуникации целиком!

Почему

В 802.11 используется метод доступа к среде CSMA/CA (обычно, по методу EDCA/HCF, кому интересно, читайте про 802.11e). Для определения занятости канала используется механизм CCA (Clear Channell Assesment). Вот выдержка из стандарта:
The receiver shall hold the CCA signal busy for any signal 20 dB or more above the minimum modulation and coding rate sensitivity (–82 + 20 = –62 dBm) in the 20 MHz channel.
Соответственно станция (точка или клиент) считает эфир занятым, если слышит сигнал -62dBm и выше, независимо то того, велась ли передача на том же канале, на соседнем, или это вообще микроволновка работает. В случае клиента все еще не так плохо, но если у вас помеха в >=-62dBm в районе точки — будет страдать вся ячейка. По той же причине все серьезные вендоры просто не выпускают dual-radio ТД, в которых оба модуля могут работать в 2.4 одновременно: легче запретить, чем каждый раз объяснять, что не «ВендорХ — гавно», а «учите матчасть».

Вывод: если вы поставите точку рядом со стеной, а ваш сосед – с другой стороны стены, его точка на соседнем «неперекрывающемся» канале все равно может доставлять вам серьезные проблемы. Попробуйте посчитать значения помехи для каналов 1/11 и 1/13 и сделать выводы самостоятельно.
Аналогично, некоторые стараются «уплотнить» покрытие, устанавливая две точки настроенные на разные каналы друг на друга стопкой — думаю, уже не надо объяснять, что будет (исключением тут будет грамотное экранирование и грамотное разнесение антенн — все возможно, если знать как).

[2.2] Второй интересный аспект – это попытки чуть более продвинутых пользователей «убежать» между стандартными каналами 1/6/11. Опять же, логика проста: «Я между каналами словлю меньше помех». По факту, помех, обычно, ловится не меньше, а больше. Раньше вы страдали по полной только от одного соседа (на том же канале, что и вы). Но это были помехи не первого уровня OSI (интерференция), а второго – коллизии — т.к. ваша точка делила с соседом коллизионный домен и цивилизованно соседствовала на MAC-уровне. Теперь вы ловите интерференцию (Layer1) от двух соседей с обеих сторон.
В итоге, delay и jitter, может, и попытались немного уменьшиться (т.к. коллизий теперь как бы нет), но зато уменьшилось и соотношение сигнал/шум. А с ним уменьшились и скорости (т.к. каждая скорость требует некоторого минимального SNR — об этом в [3.1]) и процент годных фреймов (т.к. уменьшился запас по SNR, увеличилась чувствительность к случайным всплескам интерференции). Как следствие, обычно, возростает retransmit rate, delay, jitter, уменьшается пропускная способность.
Кроме того, значительном перекрытии каналов таки возможно корректно принять фрейм с соседнего канала (если соотношение сигнал/шум позволяет) и таки получить коллизию. А при помехе выше -62dBm вышеупомянутый механизм CCA просто не даст воспользоваться каналом. Это только усугубляет ситуацию и негативно влияет на пропускную способность.
Вывод: не старайтесь использовать нестандартные каналы, не просчитав последствий, и отговаривайте от этого соседей. В общем, то же, что и мощностью: отговаривайте соседей врубать точки на полную мощность на нестандартных каналах – будет меньше интерференции и коллизий у всех. Как просчитать последствия станет понятно из [3].

[2.3] По примерно тем же причинам не стоить ставить точку доступа у окна, если только вы не планируете пользоваться/раздавать Wi-Fi во дворе. Толку от того, что ваша точка будет светить вдаль, вам лично никакого – зато будете собирать коллизии и шум от всех соседей в прямой видимости. И сами к захламленности эфира добавите. Особенно в многоквартирных домах, построенных зигзагами, где окна соседей смотрят друг на друга с расстояния в 20-30м. Соседям с точками на подоконниках принесите свинцовой краски на окна… :)

3. Раз уж речь зашла о скоростях…

[3.1] Уже несколько раз мы упоминали скорости (rate/MCS — не throughput) в связке с SNR. Ниже приведена таблица необходимых SNR для рейтов/MCS, составленная мной по материалам стандарта. Собственно, именно поэтому для более высоких скоростей чувствительность приемника меньше, как мы заметили в [1.1].
Wi Fi: неочевидные нюансы (на примере домашней сети) [ч2+1]
В сетях 802.11n/MIMO благодаря MRC и другим многоантенным ухищрениям нужный SNR можно получить и при более низком входном сигнале. Обычно, это отражено в значениях чувствительности в datasheet'ах.
Отсюда, кстати, можно сделать еще один вывод: эффективный размер (и форма) зоны покрытия зависит от выбранной скорости (rate/MCS). Это важно учитывать в своих ожиданиях и при планировании сети.

[3.2] Этот пункт может оказаться неосуществимым для владельцев точек доступа с совсем простыми прошивками, которые не позволяют выставлять Basic и Supported Rates. Как уже было сказано выше, скорость (rate) зависит от соотношения сигнал/шум. Если, скажем, 54Mbps требует SNR в 25dB, а 2Mbps требует 6dB, то понятно, что фреймы, отправленные на скорости 2Mbps «пролетят» дальше, т.е. их можно декодировать с большего расстояния, чем более скоростные фреймы. Тут мы и приходим к Basic Rates: все служебные фреймы, а также броадкасты (если точка не поддерживает BCast/MCast acceleration и его разновидности), отправляются на самой нижней Basic Rate. А это значит, что вашу сеть будет видно за многие кварталы. Вот пример (спасибо Motorola AirDefense).
Wi Fi: неочевидные нюансы (на примере домашней сети) [ч2+1]
Опять же, это добавляет к рассмотренной в [2.2] картине коллизий: как для ситуации с соседями на том же канале, так и для ситуации с соседями на близких перекрывающихся каналах. Кроме того, фреймы ACK (которые отправляются в ответ на любой unicast пакет) тоже ходят на минимальной Basic Rate (если точка не поддерживает их акселерацию)

Еще немного математики

Предположим, ваша точка работает в 802.11 со всеми MCS. Она вам шлет фрейм на MCS7 (65.5 Mbps) а вы ей в ответ ACK на MCS0 (6.5Mbps). Убрав поддержку, скажем, MCS0-3, вы будете посылать ACKи на MCS4 (39Mbps) — в 6 раз быстрее, чем на MCS0. Таким нехитрым приемом мы только что сократили гарантированную задержку в сети, что приятно, если хочется низких пингов в играх и ровного голоса/видеоконференций.

Вывод: отключайте низкие скорости – и у вас, и у соседей сеть станет работать быстрее. У вас – за счет того, что весь служебный трафик резко начнет ходить быстрее, у соседей – за счет того, что вы теперь для них не создаете коллизий (правда, вы все еще создаете для них интерференцию — сигнал никуда не делся — но обычно достаточно низкую). Если убедите соседей сделать то же самое – у вас сеть будет работать еще быстрее.

[3.3] Понятно, что при отключении низких скоростей подключиться к тоже можно будет только в зоне более сильного сигнала (требования к SNR стали выше), что ведет к уменьшению эффективного покрытия. Равно как и в случае с понижением мощности. Но тут уж вам решать, что вам нужно: максимальное покрытие или быстрая и стабильная связь. Используя табличку и datasheet'ы производителя точки и клиентов почти всегда можно достичь приемлемого баланса.

[3.4]Еще одним интересным вопросам являются режимы совместимости (т.н. “Protection Modes”). В настоящее время есть режим совместимости b-g (ERP Protection) и a/g-n (HT Protection). В любом случае скорость падает. На то, насколько она падает, влияет куча факторов (тут еще на две статьи материала хватит), я обычно просто говорю, что скорость падает примерно на треть. При этом, если у вас точка 802.11n и клиент 802.11n, но у соседа за стеной точка g, и его трафик долетает до вас – ваша точка точно так же свалится в режим совместимости, ибо того требует стандарт. Особенно приятно, если ваш сосед – самоделкин и ваяет что-то на основе передатчика 802.11b. :) Что делать? Так же, как и с уходом на нестандартные каналы – оценить, что для вас существеннее: коллизии (L2) или интерференция (L1). Если уровень сигнала от соседа относительно низок, переключайте точки в режим чистого 802.11n (Greenfield): возможно, понизится максимальная пропускная способность (снизится SNR), но трафик будет ходить равномернее из-за избавления от избыточных коллизий, пачек защитных фреймов и переключения модуляций. В противном случае – лучше терпеть и поговорить с соседом на предмет мощности/перемещения ТД. Ну, или отражатель поставить… Да, и не ставьте точку на окно! :)

[3.5] Другой вариант – переезжать в 5 ГГц, там воздух чище: каналов больше, шума меньше, сигнал ослабляется быстрее, да и банально точки стоят дороже, а значит – их меньше. Многие покупают dual radio точку, настраивают 802.11n Greenfield в 5 ГГц и 802.11g/n в 2.4 ГГц для гостей и всяких гаджетов, которым скорость все равно не нужна. Да и безопаснее так: у большинства script kiddies нет денег на дорогие игрушки с поддержкой 5 ГГц.
Для 5 ГГц следует помнить, что надежно работают только 4 канала: 36/40/44/48 (для Европы, для США есть еще 5). На остальных включен режим сосуществования с радарами (DFS). В итоге, связь может периодически пропадать.

4. Раз уж речь зашла о безопасности…

Упомянем некоторые интересные аспекты и здесь.
[4.1] Какой должна быть длина PSK? Вот выдержка из текста стандарта 802.11-2012, секция M4.1:
Keys derived from the pass phrase provide relatively low levels of security, especially with keys generated form short passwords, since they are subject to dictionary attack. Use of the key hash is recommended only where it is impractical to make use of a stronger form of user authentication. A key generated from a passphrase of less than about 20 characters is unlikely to deter attacks.
Вывод: ну, у кого пароль к домашней точке состоит из 20+ символов? :)

[4.2] Почему моя точка 802.11n не «разгоняется» выше скоростей a/g? И какое отношение это имеет к безопасности?
Стандарт 802.11n поддерживает только два режима шифрования: CCMP и None. Сертификация Wi-Fi 802.11n Compatible требует, чтобы при включении TKIP на радио точка переставала поддерживать все новые скоростные режимы 802.11n, оставляя лишь скорости 802.11a/b/g. В некоторых случаях можно видеть ассоциации на более высоких рейтах, но пропускная способность все равно будет низкой. Вывод: забываем про TKIP – он все равно будет запрещен с 2014 года (планы Wi-Fi Alliance).

[4.3] Стоит ли прятать (E)SSID? (это уже более известная тема)

спрятался

Во-первых, следует понимать, что при сокрытии ESSID ваша точка не исчезает из эфира. Она точно так же старательно шлет beacon’ы, просто не указывая в них ESSID. И этот ESSID перестанет быть скрытым, как только к точке попытается подключиться клиент (который для успешного подключения обязан правильно указать ESSID). В этот момент ловится привязка ESSID к BSSID – и игра в прятки заканчивается. Процесс можно ускорить, отстрелив существующего клиента фреймом диссоциации (disassociation). Так что пользы от этого сокрытия никакой. Вывод: эффективность прятания SSID примерно равна эффективности прятания текста под спойлером.
Тем не менее прятать стоит – вреда от этого тоже никакого. Но тут есть два важных исключения: устройства с кривыми драйверами (Apple IOS, например, имеет ряд забавных косяков, связанных с сохраненными профилями скрытых сетей) которые не могут уверенно подключаться к скрытым ESSID. Также, компьютеры под управлением Windows XP с WZC – эти постоянно ищут приключений сконфигуренные на клиенте сети со скрытыми SSID, чем не только выдают их имена, но еще и напрашиваются на атаки evil twin.

5. Всякая всячина.

[5.1] Немного о MIMO. Почему-то по сей день я сталкиваюсь с формулировками типа 2x2 MIMO или 3x3 MIMO. К сожалению, для 802.11n эта формулировка малополезна, т.к. важно знать еще количество пространственных потоков (Spatial Streams). Точка 2x2 MIMO может поддерживать только один SS, и не поднимется выше 150Mbps. Точка с 3x3 MIMO может поддерживать 2SS, ограничиваясь лишь 300Mbps. Полная формула MIMO выглядит так: TX x RX: SS. Понятно, что количество SS не может быть больше min (TX, RX). Таким образом, приведенные выше точки будут записаны как 2x2:1 и 3x3:2. Многие беспроводные клиенты реализуют 1x2:1 MIMO (смартфоны, планшеты, дешевые ноутбуки) или 2x3:2 MIMO. Так что бесполезно ожидать скорости 450Mbps от точки доступа 3x3:3 при работе с клиентом 1x2:1. Тем не менее, покупать точку типа 2x3:2 все равно стоит, т.к. большее количество принимающих антенн добавляет точке чувствительности (MRC Gain). Чем больше разница между количеством принимающих антенн точки и количеством передающих антенн клиента — тем больше выигрыш (если на пальцах). Однако, в игру вступает multipath.

[5.2] Как известно, multipath для сетей 802.11a/b/g – зло. Точка доступа, поставленная антенной в угол, может работать не самым лучшим образом, а выдвинутая из этого угла на 20-30см может показать значительно лучший результат. Аналогично для клиентов, помещений со сложной планировкой, кучей металлических предметов и т.д.
Для сетей MIMO с MRC и в особенности для работы нескольких SS (и следовательно, для получения высоких скоростей) multipath – необходимое условие. Ибо, если его не будет – создать несколько пространственных потоков не получится. Предсказывать что-либо без специальных инструментов планирования здесь сложно, да и с ними непросто. Вот пример рассчетов из Motorola LANPlanner, но однозначный ответ тут может дать только радиоразведка и тестирование.
Wi Fi: неочевидные нюансы (на примере домашней сети) [ч2+1]

[5.3] Ну, и несколько интересных фактов для коллекции:

  • Человеческое тело ослабляет сигнал на 3-5dB (2.4/5ГГц). Просто развернувшись лицом к точке можно получить более высокую скорость.
  • Некоторые дипольные антенны имеют асммметричную диаграмму направленности в H-плоскости («вид сбоку») и лучше работают перевернутыми
  • В фрейме 802.11 может использоваться одновременно до четырех MAC-адресов, а в 802.11s (новый стандарт на mesh) — до шести!

Итого

Технология 802.11 (да и радиосетей в целом) обладает множеством неочевидных особенностей. Лично у меня вызывает громадное уважение и восхищение тот факт, что люди отточили насколько сложную технологию до уровня «воткни-работай». Мы рассмотрели (в разном объеме) разные аспекты физического и канального уровня сетей 802.11:

  • Асиметрию мощностей
  • Ограничения на мощность передачи в граничных каналах
  • Пересечение «непересекающихся» каналов и последствия
  • Работу на «нестандартных» каналах (отличных от 1/6/11/13)
  • Работу механизма Clear Channel Assesment и блокировку канала
  • Зависимость скорости (rate/MCS) от SNR и, как следствие, зависимость чувствительности приемника и заны покрытия от требуемой скорости
  • Особенности пересылки служебного трафика
  • Последствия включения поддержки низких скоростей
  • Последствия включения поддержки режимов совместимости
  • Выбор каналов в 5ГГц
  • Некоторые забавные аспекты безопасности, MIMO и проч.

Не все было рассмотрено в полном объеме и исчерпывающем виде, равно как за бортом остались неочевидные аспекты сосуществования клиентов, балансировки нагрузки, WMM, питания и роуминга, экзотика типа Single-Channel Architecture и индивидуальных BSS — но это уже тема для сетей совсем другого масштаба. Если следовать хотя бы вышеприведенныым соображениям, в обычном жилом доме можно получить вполне приличный коммунизм microcell, как высокопроизводительных корпоративных WLAN. Надеюсь, статья была вам интересна.

Автор: apcsb

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js