Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Cетевые протоколы и технологии

Cетевые протоколы и технологии TCP/IP стек

Ответ
 
Опции темы Опции просмотра
Старый 23.12.2016, 08:46   #1
Petr
Senior Member
 
Аватар для Petr
 
Регистрация: 25.02.2007
Возраст: 46
Сообщений: 1,734
Вес репутации: 3438/90
Petr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond repute
По умолчанию Обсуждение TCP_MSS в LwIP

Суть моего интереса в следующем:
Есть TCP Maximum segment size. (TCP_MSS) (файл lwipopts.h)
Общепринятый размер поля для Ethernet 1460 байт. И все ничего.
Но я активно использую файловую систему в работе и обращение
к микросхемам памяти. Там сектор 512 байт.
Если сделать размер TCP_MSS (и "окна" тоже, например #define TCP_WND (2*TCP_MSS)) кратным 512 показатели скорости заметно улучшаются (не космос, но все же).
Понятно - делаем минимум на одно обращение к памяти меньше для чтения/записи "хвоста".

И все работает (в моей сети). Но насколько корректно такое решение? Ухудшает ли это совместимость или нет?
Мы же все работаем не с стандартами в чистом виде, а с их реализациями в различном оборудовании.
Petr вне форума   Ответить с цитированием
Старый 23.12.2016, 09:24   #2
ampersant
Senior Member
 
Аватар для ampersant
 
Регистрация: 26.02.2008
Адрес: IgorV
Сообщений: 2,266
Вес репутации: 4411/101
ampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond repute
По умолчанию Re: Обсуждение TCP_MSS в LwIP

Цитата:
Сообщение от Petr Посмотреть сообщение
Суть моего интереса в следующем:
Есть TCP Maximum segment size. (TCP_MSS) (файл lwipopts.h)
Общепринятый размер поля для Ethernet 1460 байт. И все ничего.
Но я активно использую файловую систему в работе и обращение
к микросхемам памяти. Там сектор 512 байт.
Если сделать размер TCP_MSS (и "окна" тоже, например #define TCP_WND (2*TCP_MSS)) кратным 512 показатели скорости заметно улучшаются (не космос, но все же).
Понятно - делаем минимум на одно обращение к памяти меньше для чтения/записи "хвоста".

И все работает (в моей сети). Но насколько корректно такое решение? Ухудшает ли это совместимость или нет?
Мы же все работаем не с стандартами в чистом виде, а с их реализациями в различном оборудовании.

Нашел вот это:
Цитата:
Максимальный размер сегмента

TCP требует явного указания максимального размера сегмента (MSS) в случае, если виртуальное соединение осуществляется через сегмент сети, где максимальный размер блока (MTU) менее, чем стандартный MTU Ethernet (1500 байт).

В протоколах туннелирования, таких как GRE, IPIP, а также PPPoE MTU туннель меньше, чем стандартный, поэтому сегмент TCP максимального размера имеет длину пакета больше, чем MTU. Это приводит к фрагментации и уменьшению скорости передачи полезных данных. Если на каком-либо узле фрагментация запрещена, то со стороны пользователя это выглядит как «зависание» соединений. При этом «зависание» может происходить в произвольные моменты времени, а именно тогда, когда отправитель использовал сегменты длиннее допустимого размера. Для решения этой проблемы на маршрутизаторах применяются правила Firewall-а, добавляющие параметр MSS во все пакеты, инициирующие соединения, чтобы отправитель использовал сегменты допустимого размера.

MSS может также управляться параметрами операционной системы.
В почту загляни ещё
ampersant вне форума   Ответить с цитированием
Старый 23.12.2016, 09:42   #3
Petr
Senior Member
 
Аватар для Petr
 
Регистрация: 25.02.2007
Возраст: 46
Сообщений: 1,734
Вес репутации: 3438/90
Petr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond repute
По умолчанию Re: Обсуждение TCP_MSS в LwIP

Да, я читал что то подобное.
1460 - это и есть стандартные 1500 - заголовок IP - заголовок TCP

Решил оставить TCP_MSS равным 1024. Пусть туннели дробят, а шлюзы пишут туда что хотят (меньше 1024). В любом случае дробные (по длине) пакеты обрабатываю корректно.
Главное чтобы какой то супер умный шлюз или роутер не влепил туда 1460 (больше допустимых 1024) это приведет к проблемам. Хотя вроде не должны... (совсем уж безумных софтин мало).
Petr вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Android VS LwIP Petr Cетевые протоколы и технологии 96 29.12.2016 12:40
Снова вопрос по LwIP Petr Cетевые протоколы и технологии 49 05.04.2016 19:10
DHCP сервер под lwIP стек _WIL_ Cетевые протоколы и технологии 0 17.12.2015 11:07
LwIP 1.3.2 Настройка Pridnya Общетехнические вопросы 8 11.06.2015 15:17
lwIP Bengan Общетехнические вопросы 4 19.11.2007 08:29


Часовой пояс GMT +3, время: 15:29.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd. Перевод: zCarot