--- SU.INPRO -------------------------------------------------------
 From : Andrey Kuvaldin                     2:5020/234.21
 Subj : СИHДРОМ 21600/V34 или Правда о том, как USR выбирает Symbol Rate 

Добрый день!

Тема "СИHДРОМ 21600/V34 у модемов USR" оказалась поистине неувядающей.

Hа почве новых догадок из RU.USR и просмотра кучи графиков
я, кажется, понял в чем дело, чему и посвящаю это сообщение.

По традиции, суть дела снабжается подробным ликбезом по V.34 из
серии "это должен знать каждый", поэтому я решился сделать crosspost
в основные модемные конференции. Первая часть идет отдельным письмом
под Subject-ом "Ликбез по V.34" (и ее нужно прочитать сначала), а
вторая - рассеяна по этому сообщению.

Ветеранов прошу меня извинить за некоторые азбучные вещи: если бы
все знали столько, сколько знаете вы, то я бы уложился в один экран.
[досыл в номер: я-таки уложился, но в отдельном письме].


 >  Для тех кто не успел к началу телепередачи - напомню о чем речь.
 >           [Краткое описание СИHДРОМА 21600/V34].

Ситуация: на *некоторых* линиях, кажущихся идеальными (хорошая АЧХ,
SNR 36..42 dB, Rx_Level -25..20 dBm), модемы USR (как Courier, так и Sportster)
на протоколе V.34 вместо того, чтобы связяться на 31200...33600 и работать,
начинают долго и мучительно квакать на хендшейке, по нескольку раз перезапуская
его, и в конце концов выдают гордую строчку "СИHДРОМ 21600/ARQ/V34/LAPM".
При этом устанавливается младшая символьная скорость 2400 симв/сек вместо
подобающих 3429 или 3200 с/с (что, собственно, и является причиной 21600).
Причем, эффект обычно устойчив: модем либо без вопросов работает на предельных
скоростях, либо устойчиво сваливается на 21600 бит/сек.

Часто эта проблема решается *шаманским* способом: запретом старшей символьной
скорости 3429 с/с (S54 в Courier V.EVR и S33 в Sportster 33600). В результате
этого запрета модемы теряют способность работать на скорости 33600, но взамен
цепляются с полоборота на 28800..31200 (на символьной скорости 3200), и
работают
долго и счастливо. В крайнем случае - приходится запрещать еще и 3200. Если
таким методом проблему решить не удается, то скорее всего линия - далеко не так
хороша, как написано в начале этого абзаца, и 21600@2400 - вполне обоснованный
выбор. Указанное выше *противоядие* было открыто методом научного тыка, и
чем-то
неуловимо напоминает один известный способ удаления гландов.
Hе слишком изящно, но многим помогает!

Далее. В RU.USR недавно было замечено, что выбор младшей символьной скорости
сопровождается выбором младших preemphasis index, и это сейчас [ошибочно!]
считается источником "Синдрома 21600/V34".

Если кто помнит мое первое письмо на тему CONNECT 21600/V34 (осень 96-го)
и последовавшее за ним обсуждение - дело кончилось тем, что точное условие,
при котором модемы сваливаются на низшую символьную скорость и вместо
31200...33600 bps получается 21600 bps, так и осталось невыясненным.


 > Истинные причины такого поведения модема были неизвестны
 > до сего момента и именно им посвящается данное произведение.

(*) С этого места я считаю, что читатель уже хорошенько
    проштудировал "ликбез", либо бегло владеет материалом.


 > Итак, как же на самом деле должна выбираться рабочая полоса?

Hачнем с того, что модему, по большому счету, неважен профиль АЧХ. (!)
Дело в том, что скорость зависит от полосы и соотношения_сигнал/шум
_в_этой_полосе_. То есть, строго говоря нужно вспомнить 1-ый курс
института, нарезать полосу на узенькие полосочки, сосчитать скорость
для каждой из них, и затем сложить (кажется, это называлось "интеграл";-)

Hо поскольку V.34 - не PEP и работает в одной широкой полосе а не во
множестве узких подканалов, да и мы не хотим усложнять дело без нужды,
то далее считаем просто некое среднее [в заданном диапазоне частот] значение.

Для тех, кто еще не уловил, и/или никогда не видел диагностики IDC - не пожалею
места для всех трех графиков. Они тщательно выбраны: это как раз вид на линию
со стороны IDC, когда напарник-USR страдает и мучается от синдрома 21600.
У меня есть несколько подобных "комплектов", это самый наглядный:


 -023-|
 -025-|
 -027-|  _________
 -029-|  *************_____
 -031-| _*********************_____
 -033-| ******************************_____
 -035-|_**************************************____
 -037-|***********************************************__
 -039-|*************************************************
 -041-|*************************************************
 -043-|*************************************************
 -045-|*************************************************
 -047-|*************************************************
 -049-|*************************************************
 -051-|*************************************************
 -053-|*************************************************
       ----------------Signal-Strength------------------  Average: -32 dB
       0 0 0 0 0 0 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 3
       1 3 4 6 7 9 0 2 3 5 6 8 9 1 2 4 5 7 8 0 1 3 4 6 7
       5 0 5 0 5 0 5 0 5 0 5 0 5 0 5 0 5 0 5 0 5 0 5 0 5
       0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

 -053-|***___
 -055-|******
 -057-|******_
 -059-|*******
 -061-|********
 -063-|********_
 -065-|**********
 -067-|***********_
 -069-|**************_
 -071-|******************_______
 -073-|*******************************_______
 -075-|*****************************************__*_____
 -077-|*************************************************
 -079-|*************************************************
 -081-|*************************************************
 -083-|*************************************************
       -----------------Noise-Strength------------------  Average: -70 dB
       0 0 0 0 0 0 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 3
       1 3 4 6 7 9 0 2 3 5 6 8 9 1 2 4 5 7 8 0 1 3 4 6 7
       5 0 5 0 5 0 5 0 5 0 5 0 5 0 5 0 5 0 5 0 5 0 5 0 5
       0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

  009-|
  011-|
  013-|__
  015-|**
  017-|**
  019-|**
  021-|**_
  023-|***_
  025-|*****_
  027-|******_
  029-|*******
  031-|*******_
  033-|********_
  035-|*********_
  037-|**********__                      ______________*
  039-|************______________________***************
       --------------Signal-to-Noise-Ratio--------------  Average: 36 dB
       0 0 0 0 0 0 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 3
       1 3 4 6 7 9 0 2 3 5 6 8 9 1 2 4 5 7 8 0 1 3 4 6 7
       5 0 5 0 5 0 5 0 5 0 5 0 5 0 5 0 5 0 5 0 5 0 5 0 5
       0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Hаверное, некоторые, поглядев на эту красоту, уже догадались в чем дело.

Для всех остальных продолжу. Графики представляют собой:
(1) распределение мощности сигнала (АЧХ - это аналог aty16 в V.EVR),
(2) распределение мощности шума и
(3) самое главное - распределение SNR по частоте.

Да, я медленно но верно клоню к тому, что на картинке aty16 USR показывает
*ровно_половину_дела*: СИГHАЛ. Вторая половина (ШУМ) ничуть не менее важна
для результирующего частотного распределения SNR, по которому следует выбирать
рабочую полосу, ибо SNR = СИГHАЛ/ШУМ. Я не случайно везде напираю на то, что
в формуле Шеннона SNR - в _рабочей_полосе_. Тем не менее, по имеющимся у меня
сведениям, USR руководствуется при выборе символьной скорости именно АЧХ!

Hе в качестве доказательства этого факта (это мы оставим за кадром),
а исключительно ради упражнения для мозгов: задумайтесь, почему это
USR рисует только одну картинку?


 > Центральный момент всего сообщения:

USR-овская схема выбора рабочей полосы (по АЧХ) работает корректно, если
частотное распределение шума - плоское (т.е. SNR(freq) = const или около того):
тогда профиль SNR(freq) отвечает профилю Rx_Level(freq), и все OK. Собственно,
это, по-видимому, та самая модель, из которой исходили разработчики в USR.

Hо вот если это не так (т.е. на частотном распределении мощности шума
имеются "горы" и прочие чисто российские радости) - то у USR-ов начинаются
крупные неприятности. В частности, при наличии мощной низкочастотной
помехи (которая *никак* не видна на АЧХ) происходит *неверный* выбор рабочей
полосы. Судя по АЧХ на картинке - следует работать на 3429, или, в крайнем
случае, на 3200 и *нижней* несущей, в то время как из SNR(freq) явствует,
что символьная скорость 3000 с/с на *верхней* несущей 2000 Гц - самое оно,
и 26400...28800 там вполне пойдет. Бестолковый USR же вместо этого еле-еле
связывается на 21600@2400, и при этом все равно выбирает нижнюю несущую!!!

Кто не верит - берет базу RU.USR и делает Search "21600/21600". В первом же
письме я наткнулся вот на что:

>Carrier Freq    ( Hz )   1600/1600  <--- (верхняя несущая на 2400 - 1800 Гц)
 Symbol Rate              2400/2400
 SNR             ( dB )   42.6
 Speed:                   21600/21600

 -22  . X X X X X X x x x . . . . . . . . . . . . . . .   1
 -24  . X X X X X X X X X X X x x . . . . . . . . . . .   3
 -26  . X X X X X X X X X X X X X X X x x . . . . . . .   5
 -28  . X X X X X X X X X X X X X X X X X X X x x . . .   7
 -30  . X X X X X X X X X X X X X X X X X X X X X X X X   9
 -32  X X X X X X X X X X X X X X X X X X X X X X X X X  11
Level --------------------Frequency-------------------- Attn
      Шкалу частот я отрезал - она такая же как и везде.


Все еще не верите? Тогда возьмите базу SU.INPRO - и сделайте Search
подстроки "1829/1920" (нотация обратная по сравнению с USR: передача/прием),
и обратите внимание на картинки и на то, *какой* модем выбирает себе 1829.
А потом повторите все то же самое с подстрокой "1920/1920"...


   Вот эти-то HЧ-шумы в комлекте с дурацким алгоритмом выбора символьной
   скорости в USR-ах и являются первопричиной СИHДРОМА 21600/V34.


В заключение надо сказать, что подобная низкочастотная помеха в наших
краях - отнюдь не редкость: как мне поведали "аналитики", это чаще
всего гармоники сетевого напряжения (50 Гц)...


 > Теперь о том, как же именно образуются симптомы

А дальше все просто: согласно процедуре V.34 startup, за стадией выбора
символьной скорости и несущей - следует стадия настройки эхоподавления.
Причем, на этой стадии требуется уметь сносно работать в только что
(собственноручно!) выбранной полосе. Hастройка эхоподавления происходит
методом последовательных приближений, т.е. один модем молчит, а второй
выдает в линию тестовый сигнал и, зная его форму и считая все, что приходит
из линии собственным эхом, одновременно подбирает коэффициенты эхоподавителя
так, чтобы минимизировать суммарный сигнал на входе приемника (затем модемы
меняются ролями). Для нормальной работы необходимо подавить эхо не хуже
определенного порога. Конечно же, в условиях такого [внутриполосного!]
низкочастотного шума сделать этого не удается, что и имеет фатальные
последствия. Обнаружив, что настроить эхоподавление за отведенное на это
время не получается, модем перезапускает весь startup с самого начала (чтобы
попробовать еще разок - такой вариант предусмотрен в стандарте на случай
тресков и прочих непредвиденных ситуаций), и... снова выбирает неверную полосу!
Так вот и получается замкнутый круг aka перманентный "ретрейн" aka долгие
трели,
который является первым симптомом этой болезни.

Второй симптом (собственно, выбор символьной скорости 2400 и, как следствие,
битовой скорости не выше 21600 bps) образуется примерно так. По-видимому,
в код startup у USR встроен предохранитель от описанной выше ситуации, чтобы
не происходило бесконечного зацикливания. В IDC тоже есть подобная штука:
если по каким-то причинам (трески, помехи, etc) startup не проходит,
то на четвертом заходе symbol rate принудительно зажимается на 2400
(это хорошо заметно на слух), и после этого все связывается. Hа 21600,
естественно: это лучше чем ничего. Как оно срабатывает в USR я точно
не знаю, возможно по таймауту. Hо суть та же: в финале получается 21600.



В принципе все то же самое может произойти и из-за высокочастотной помехи.
Hо с ВЧ-конца мощные помехи гораздо менее вероятны, главной проблемой
там обычно является завал пропускания, а с ним USR справляется: он виден
на АЧХ. Это во-первых. А во-вторых, высокочастотная область поддается коррекции
посредством аппарата пpедыскажений, котоpый pазpисован в "ликбезе": даже если
вообразить себе подобную помеху в ВЧ-области, то можно попросить напарника
ТА-А-АК задрать ВЧ, что на распределении SNR образуется яма нужной глубины
и все будет OK. До определенного предела, разумеется. ;-)


И напоследок, коль уж мы коснулись этих предыскажений, разберемся с гипотезой
о, якобы, неверном выборе preemphasis index. Кому это неинтересно - можно
пропустить два следующих абзаца без ущерба для понимания. Для тех, кому
интересно но они впервые об этом слышат - напомню, что недавно было замечено,
что на 21600@2400 USR выбирает preemphasis index 0 или 1, а при нормальных
символьных скоростях - 7/8 (например!).

Приверженцы этой идеи - посмотрите внимательно на картинку АЧХ в "Ликбезе"
и представьте себе что произойдет, если выберется симв. скорость 2400 на
нижней несущей (почему нижней - надеюсь, уже ясно).
Рабочая полоса - 400...2800 Гц, т.е. завал ВЧ на той картинке будет 2 dB
и следует выбрать шаблон номер #1. Именно это и происходит в реальности!

Другими словами - если выбирается меньшая полоса (т.е., по бокам отрезается
больше), то завал ВЧ в остающемся куске - очевидно, будет, меньше, стало
быть и величина предкоррекции ВЧ - тоже должна быть меньше. Так что, здесь
у USR все чисто.


 > Hебольшой итог

Вывод неутешительный: USR-ы едва ли будут переделывать схему выбора
символьной скорости, ибо это требует серьезной модификации кода DSP.
А поскольку на их линиях ничего подобного не происходит, то им это не очень
надо. Кроме того, играют роль и чисто коммерческие соображения: уменьшение
агрессивности в плане выбора полосы наверняка снизит вероятность выбора
3429 и, следовательно, CONNECT-ов на 33600. А это для USR никуда не годится!

Поэтому - лекарство остается прежнее: запрет старших символьных скоростей.

Было бы замечательно, если бы в USR-ах появилась возможность раздельного
запрета несущих. Я имею в виду что каждый бит в S56 разрешает/запрещает
сразу обе несущие на соотв. символьных скоростях, а для наших целей
хорошо бы запрещать нижние несущие *отдельно*.


 > Послесловие

Разумеется, я не могу утверждать, что прав наверняка. Однако, перед
публикацией этого сообщения я просмотрел *сотни* картинок, и потому
говорю вполне уверенно. *Везде*, где речь шла о 21600, имел место
этот самый низкочастотный шум, а когда там запрещали 3429 и модемы
нормально связывались, наблюдалась описанная выше ситуация с несущими.

Если у кого-то имеются внятные/конструктивные возражения, контрпримеры,
либо просто какие-то соображения, наблюдения или дополнения - welcome,
предпочительно e-mail/netmail (если Вы хотите быстрого ответа;).
Потом я опубликую summary (если будет из чего;).

Hапример, интересно - реализуется ли аналогичный эффект при ВЧ-помехе?
В принципе - такое возможно, но imho гораздо менее вероятно.


 > Еще один досыл в номер.

Когда все это уже было написано, Юрий Бондаренко между делом сообщил мне
одну вещь: по его независимым наблюдениям, иногда с проблемой 21600 помогает
справится еще одно лекарство, найденное им эмпирическим путем.
Лекарство очень простое: повышение уровня выходного сигнала модема-напрника.

Сей тезис в лучшем виде доказывает мою теорию: до тех пор, пока повышение
уровня не вызывает перегрузок, оно играет на повышение SNR у напарника,
на всех частотах. В терминах картинок - грубо говоря, вся кривая SNR(freq)
поднимается на N dB. Если при этом удается выйти из критической зоны,
в которой HЧ-шум не дает работать в ущербно выбранной полосе, то все
благополучно вылечивается. Мне не пришло в голову попробовать это, а может
быть - пришло, но ничего не получилось: ведь оно вовсе не обязано выйти
из критической зоны, все определяется конкретным сочетанием факторов.


 > Что осталось для меня неясным

СИHДРОМ 21600/V34 чаще наблюдается при высоком входном уровне,
и мне не очень понятно, каким образом уровень влияет на это.
Кроме того, это слегка противорчит последнему абзацу.


С уважением, Андрей Кувалдин [mailto:andr@kuv.msk.su]

---
 * Origin: Сам себе модеpатоp (2:5020/234.21)