|
Работа сетей Ethernet с медленными каналами связи, методы сопряжения и конвертации |
|
|
|
May 16 2006, 09:08
|
Местный
  
Группа: Свой
Сообщений: 347
Регистрация: 16-02-06
Из: г.Николаев, Украина
Пользователь №: 14 377

|
Здравствуйте! Кто сталкивался с подобной проблемой, когда разные фрагменты сети Ethernet, отстоящие друг от друга на десятки километров, соединены между собой низкоскоростными телекоммуникационными каналами связи типа ИКМ30. Такие каналы используют конверторы и структура канала такая: Ethernet-ИКМ30-Соединительная Линия-ИКМ30-Ethernet, а пиковая скорость передачи равна 64кБит*N, где N=1..30. Для согласования скорости из Ethernet в ИКМ30, по моему представлению, используются такие методы: - «шлюза», когда принятые, но еще не переданные пакеты накапливаются в очереди; - «метод обратного давления», когда во время передачи текущего пакета, прием всех новых пакетов блокируется путем создания коллизий – одновременной передачей из конвертора в сеть Ethernet любого встречного пакета. Мне нужно найти правильный выход, так как с помощью сниффера Ethereal четко заметил, что новый пакет приходит из Ethernet в конвертор до того, как в ИКМ30 передан предыдущий - а это приводит к отказам. Возможно, здесь есть еще тонкости применения в протоколе TCP/IP. Хотел бы обменяться мнениями с теми, кто сталкивался с данной проблемой. Спасибо.
|
|
|
|
|
 |
Ответов
|
May 16 2006, 11:05
|

Гуру
     
Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271

|
насколько я представляю работу стека протоколов, при переполнении входного буфера вашего узкого горлышка, пакеты канального уровня теряются, никуда не деться. Но выше этого уровня есть транспортный, в частности, протокол TCP. Глубоко не вникал в его работу, но этот протокол должен по количеству недошедших пакетов подстраивать скорость передачи пакетов, чтобы они не терялись и не образовывались задержки, связанные с повторной передачей пакетов. Я пока начинаю работать над похожей задачей и надеюсь, что так и будет, как я выше описал. А все перечисленные вами ранее методы бесполезны: если в каналах разная скорость, это обязательно когда-то приведёт к невозможности доставить очередной пакет. Например, метод шлюза работает, пока не переполнится буфер. А потом всё равно пакеты потеряются. Метод обратного давления приводит к бесполеному "торможению по цепочке". Вообще, коллизии имеют место только в полудуплексном режиме (я работаю с полным дуплексом на гигабитном изернете). В полном дуплексе есть механизм управления потоком, описываемый стандартом IEEE 802.3х (см. тему http://electronix.ru/forum/index.php?showtopic=15533 К стати, я с этим механизмом до конца так и не разобрался, так что был бы благодарен за помощь с русскоязычными текстами, поясняющими его). Что будет происходить: переполнится входной буфер вашего узкого горлышка, он будет оказывать обратное давление (хоть коллизией, хоть через механизм контроля потоков) на стоящее перед ним (по ходу передачи пакета) оборудование канального уровня (в первую очередь, коммутирующее), которое должно приостановить передачу пакета. В этом случае уже в этом предыдущем устройстве начнёт заполняться буфер и переполнится. Он опять должен оказывать обратное давление на предыдущее устройство и т.д. по цепочке. Это всё лишнее, если протокол TCP нормально выполняет свои функции и не даёт переполняться буферам, обеспечивая скорость "на грани"
|
|
|
|
|
May 16 2006, 14:15
|
Частый гость
 
Группа: Свой
Сообщений: 160
Регистрация: 23-12-04
Из: Уфа
Пользователь №: 1 631

|
Цитата(Krys @ May 16 2006, 17:05)  насколько я представляю работу стека протоколов, при переполнении входного буфера вашего узкого горлышка, пакеты канального уровня теряются, никуда не деться. Почему же "никуда не деться" ? Надо просто попросить устройства посылающие пакеты притормозиться, не дожидаясь полного заполнения буфера. Ну и буфер брать приличного размера, пакетов на 10..20 (наверное  ). Цитата(Krys @ May 16 2006, 17:05)  Что будет происходить: переполнится входной буфер вашего узкого горлышка, он будет оказывать обратное давление (хоть коллизией, хоть через механизм контроля потоков) на стоящее перед ним (по ходу передачи пакета) оборудование канального уровня (в первую очередь, коммутирующее), которое должно приостановить передачу пакета. В этом случае уже в этом предыдущем устройстве начнёт заполняться буфер и переполнится. Он опять должен оказывать обратное давление на предыдущее устройство и т.д. по цепочке. Это всё лишнее, если протокол TCP нормально выполняет свои функции и не даёт переполняться буферам, обеспечивая скорость "на грани" К сожалению, протокол TCP контролирует целостность только одного сеанса связи между двумя процессами (потребителями). А через узкое горло может быть организовано ничем не ограниченное множество независимых сеансов TCP. Да и вообще, речь идет о передаче не IP пакетов, а пакетов Ethernet, в которые могут инкапсулироваться множество различных протоколов. Поэтому без управления потоком на MAC уровне не обойтись. Я тоже только подступаюсь к этой проблеме. Посколько разбираться со всеми нюансами нет времени, я решил взять микросхему свича KS8993M фирмы Micrel, которая уже содержит в себе реализацию механизмов контроля потока. Один из 3-х портов этого свича может отдавать пакеты по MII интерфейсу, и я собираюсь эти пакеты упаковывать в поток E1 на своей скорости, а контроль переполнения очередей возлагаю на свич, который судя по его описанию умеет это делать. Если у вас нет требований по индустриальному исполнению, есть еще более удобный свич фирмы Infineon ADM6993/X, у него третий порт может отдавать пакеты в формате HDLC на вашей скорости.
|
|
|
|
|
May 17 2006, 07:03
|

Гуру
     
Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271

|
Цитата(Shamil @ May 16 2006, 21:15)  Цитата(Krys @ May 16 2006, 17:05)  насколько я представляю работу стека протоколов, при переполнении входного буфера вашего узкого горлышка, пакеты канального уровня теряются, никуда не деться.
Почему же "никуда не деться" ? Надо просто попросить устройства посылающие пакеты притормозиться, не дожидаясь полного заполнения буфера. Ну и буфер брать приличного размера, пакетов на 10..20 (наверное :cranky: ). Почему именно такая цифра? С потолка? Вы знаете, что если скорости не совпадают, то любой буфер переполнится, какой большой бы он ни был. Зачем такой здоровый буфер? Это же надо сколько памяти? Железка будет очень дорогой. Обычно руководствуются правилом, что в буфере должно укладываться 2 пакета: чтобы протоколы TCP успели договориться на приёмной и передающей сторонах Цитата(Shamil @ May 16 2006, 21:15)  Надо просто попросить устройства посылающие пакеты притормозиться, не дожидаясь полного заполнения буфера. Да и к чему я это всё пишу: Цитата(Krys @ May 16 2006, 17:05)  Что будет происходить: переполнится входной буфер вашего узкого горлышка, он будет оказывать обратное давление (хоть коллизией, хоть через механизм контроля потоков) на стоящее перед ним (по ходу передачи пакета) оборудование канального уровня (в первую очередь, коммутирующее), которое должно приостановить передачу пакета. В этом случае уже в этом предыдущем устройстве начнёт заполняться буфер и переполнится. Он опять должен оказывать обратное давление на предыдущее устройство и т.д. по цепочке. Под переполнением я, разумеется, имел в виду заполнение до определённого порога, при котором посылается команда приостановки передачи. Но самое главное: вы представляете, что каждый раз при переполнении всё оборудование канального уровня от узкого места до источника пакетов будет подвержено распространению по цепочке кадра приостановки передачи, а после опустошения буфера - кадра возобновления передачи? Кому нужен весь этот бесполезный трафик, если гораздо проще поручить на передающем конце протоколу TCP подстроить оптимальную скорость посылки пакетов в сеть? И тогда весь механизм контроля потоков не пригодится. А если ещё учесть, что на пути от источника пакетов до узкого горлышка возможно хоть один свич не поддерживает механизм контроля потоков? Тогда все старания этого механизма, весь паразитный трафик из кадров приостановки и возобновления передачи напрасны. Этот свич, не поддерживающий механизм контроля потока будет слать пакеты, и следующее по пути их распространения оборудование будет заполнять свой приёмный буфер. И он заполнится. Лишние пакеты всё равно начнут убиваться. Пусть уж лучше протокол TCP возьмётся за эту работу. Цитата(Shamil @ May 16 2006, 21:15)  К сожалению, протокол TCP контролирует целостность только одного сеанса связи между двумя процессами (потребителями). А через узкое горло может быть организовано ничем не ограниченное множество независимых сеансов TCP. Каждый проткол задаёт скорость своего соединения, скорость делится пропорционально. Так что в целом скорость как раз благодаря действию всех протоколов TCP должна установиться на грани пропускной способности узкого горлышка. Цитата(Shamil @ May 16 2006, 21:15)  Да и вообще, речь идет о передаче не IP пакетов, а пакетов Ethernet, в которые могут инкапсулироваться множество различных протоколов. Поэтому без управления потоком на MAC уровне не обойтись. Если протоколы работают через ненадёжную среду, а это любая среда без подтверждения доставки пакетов - тот же протокол UDP, то эти протоколы должны быть готовы к потере пакетов, поэтому для таких протоколов потеря пакетов не нештатная ситуация, а вполне привычное явление. Цитата(Shamil @ May 16 2006, 21:15)  Я тоже только подступаюсь к этой проблеме. Посколько разбираться со всеми нюансами нет времени, я решил взять микросхему свича KS8993M фирмы Micrel, которая уже содержит в себе реализацию механизмов контроля потока. Один из 3-х портов этого свича может отдавать пакеты по MII интерфейсу, и я собираюсь эти пакеты упаковывать в поток E1 на своей скорости, а контроль переполнения очередей возлагаю на свич, который судя по его описанию умеет это делать. Если у вас нет требований по индустриальному исполнению, есть еще более удобный свич фирмы Infineon ADM6993/X, у него третий порт может отдавать пакеты в формате HDLC на вашей скорости. У меня лично Gigabit Ethernet, там со свичами с малым количеством портов пока проблема... я делаю вообще свич на ПЛИС.
|
|
|
|
|
May 17 2006, 07:08
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата сли гораздо проще поручить на передающем конце протоколу TCP подстроить оптимальную скорость посылки пакетов в сеть? Махровый идеализм :-)))). Цитата(Krys @ May 17 2006, 10:03)  я делаю вообще свич на ПЛИС. Тогда это вообще не Ваша "проблема".
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
Сообщений в этой теме
Волощенко Работа сетей Ethernet с медленными каналами связи May 16 2006, 09:08    Krys Цитата(zltigo @ May 17 2006, 14:08) Махро... May 17 2006, 11:02     zltigo Цитата(Krys @ May 17 2006, 14:02) А вот п... May 17 2006, 11:41  iosifk Здесь говорилось о:
микросхему свича KS8993M фирм... May 24 2006, 06:33 Волощенко Лучше бы работать по методу квитирования пакетов, ... May 16 2006, 15:09 Krys Цитата(Волощенко @ May 16 2006, 22:09) Лу... May 17 2006, 06:25 Harbour Можете сделать бридж, у которого медленный интерфе... May 18 2006, 05:34 kolobok0 Цитата(Harbour @ May 18 2006, 09:34) Може... May 18 2006, 13:42  Волощенко Спасибо за ответы и ссылки на документацию.
Есть м... May 22 2006, 08:38   zltigo Цитата(Волощенко @ May 22 2006, 11:38) Ес... May 22 2006, 08:43    Krys Цитата(zltigo @ May 22 2006, 15:43) Цитат... May 31 2006, 06:30   Joe Цитата(Волощенко @ May 22 2006, 11:38) Сп... May 24 2006, 05:52   Krys Цитата(Волощенко @ May 22 2006, 15:38) 1.... May 31 2006, 07:10 Волощенко Спасибо за информацию.
Удачное сравнение проблемы... May 24 2006, 08:06 zltigo Цитата(Волощенко @ May 24 2006, 11:06) ап... May 24 2006, 12:02 Волощенко Привет Всем!!!
Заработали мои конверто... May 26 2006, 09:09 zltigo Цитата(Волощенко @ May 26 2006, 12:09) Ск... May 31 2006, 15:40 Волощенко Конвертор построен на CS8900A-CQ3, C8051F123 и XC9... May 31 2006, 14:22 Волощенко Схема организации связи такая: Я отключаю свой ком... Jun 1 2006, 07:03 zltigo Цитата(Волощенко @ Jun 1 2006, 10:03) Мож... Jun 1 2006, 08:41 Harbour Я так понял что лишние пакеты Вы просто херите ? Jun 1 2006, 13:54 DS_ Цитата(Волощенко @ Jun 1 2006, 11:03) Схе... Jun 1 2006, 17:38 Волощенко Помимо работы в Internet (на устойчивых к потерям ... Jun 2 2006, 07:07 DS_ Broadcustы пропускать обязательно, иначе не будет ... Jun 2 2006, 07:32 Krys Да, тут Вы правы, надо включать "NetBIOS over... Jun 2 2006, 07:41 DS_ В Netbios over TCP/IP есть возможность организоват... Jun 2 2006, 08:05 Волощенко Добрый день!
Работа по моему конвертору Ethern... Jul 28 2006, 10:50 Krys Цитата(Волощенко @ Jul 28 2006, 17:50) В ... Aug 4 2006, 03:32  zltigo Цитата(Krys @ Aug 4 2006, 06:32) Протокол... Aug 4 2006, 06:00 Harbour SHDSL сами делали ? Если да на каком чипсете ? Aug 3 2006, 12:53 Волощенко Ответ Harbour. Я лично разработал и программировал... Aug 4 2006, 06:27 zltigo Цитата(Волощенко @ Aug 4 2006, 09:27) Отв... Aug 4 2006, 06:55 Волощенко Конверторы испытывались при связи удаленного компь... Aug 4 2006, 07:27 zltigo Цитата(Волощенко @ Aug 4 2006, 10:27) не ... Aug 4 2006, 07:46  Волощенко to zltigo:
Задача была конкретная: получить ... Aug 4 2006, 08:10   zltigo Цитата(Волощенко @ Aug 4 2006, 11:10) Зад... Aug 4 2006, 08:35   TomaT Цитата(Волощенко @ Aug 4 2006, 12:10) ...... Aug 4 2006, 11:20 TomaT У нас для примерно тех же целей (радиорелейка 4Е1+... Aug 4 2006, 07:31 Волощенко Спасибо! Я тоже за то, что с виду якобы ... Aug 4 2006, 08:55 iosifk Цитата(Волощенко @ Aug 4 2006, 12:55) Спа... Aug 4 2006, 09:18  Волощенко Было такое предложение-пожелание:
Цитата(iosifk ... Sep 25 2006, 15:08   iosifk [quote name='Волощенко' date='Sep 25 2... Sep 26 2006, 05:34 dmivs Цитата(Krys @ May 16 2006, 14:05) Я пока ... Aug 4 2006, 10:54 Волощенко to TomaT
Может мне еще придется разрабатывать что-... Aug 4 2006, 12:35 TomaT Частью секрет, частью нет
4E1+Eth->Radio не оч... Aug 4 2006, 12:52 Victor® Цитата(Волощенко @ May 16 2006, 12:08) Зд... Sep 28 2006, 09:34 Волощенко К Victor®, спасибо за ссылку на Zarlink!
Мы ра... Sep 28 2006, 11:26  Ledol Цитата(Волощенко @ Sep 28 2006, 17:26) К ... Oct 3 2006, 13:44   zltigo Цитата(Ledol @ Oct 3 2006, 16:44) ADM6993... Oct 3 2006, 13:48    Ledol Цитата(zltigo @ Oct 3 2006, 19:48) Цитата... Oct 3 2006, 14:28     zltigo Цитата(Ledol @ Oct 3 2006, 17:28) Ого. Пр... Oct 3 2006, 20:22    Волощенко Цитата(zltigo @ Oct 3 2006, 16:48) Цитата... Oct 4 2006, 06:32     Ledol Цитата(Волощенко @ Oct 4 2006, 12:32) Цит... Oct 4 2006, 12:30   Shamil Цитата(Ledol @ Oct 3 2006, 19:44) ADM6993... Oct 3 2006, 14:43    Dainis Цитата(Shamil @ Oct 3 2006, 17:43) Цитата... Oct 3 2006, 18:59 Victor® Вот еще интересные чипы
http://www.mindspeed.com/w... Oct 6 2006, 14:12 Harbour Особенное веселье с их доставанием через некоего г... Oct 7 2006, 05:26 Victor® Цитата(Harbour @ Oct 7 2006, 08:26) Особе... Oct 9 2006, 07:29  Harbour Цитата(Victor® @ Oct 9 2006, 10:29) Цитат... Oct 11 2006, 06:45 Волощенко Добрый день!
Опять нужен совет. Стоит необходи... Oct 26 2006, 06:42 Vit1248 Цитата(Волощенко @ Oct 26 2006, 10:42) 1.... Nov 3 2006, 10:53  Волощенко Цитата(Vit1248 @ Nov 3 2006, 14:53) 1. Кт... Nov 3 2006, 11:59   Vit1248 [quote name='Волощенко' date='Nov 3 20... Nov 6 2006, 07:19 Ledol В теме "Вопрос по микросхеме ADM6993" вы... Nov 8 2006, 15:58 Hedgehog in the Fog Уважаемый All!
Увидел. что в этой теме люди р... Feb 9 2007, 15:10 Волощенко Мы вот сделали еще один Ethernet-мост для наших SH... Mar 20 2007, 17:26 Батька Есть ли у кого примеры структурных схем соединения... Jun 11 2010, 14:31 Волощенко Цитата(Батька @ Jun 11 2010, 17:31) Есть ... Jun 14 2010, 08:44
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|