[Цитировать]

    Viktor_Kisel
  • 2625
  • Стаж: 8 лет 10 месяцев
  • Сообщений: 632
  • Репутация:46

    [+] [-]
В процессе создания лаунчеров по оптимизации TCP/IP, нашел новые полезные вещи: MTU
Есть ли возможность в батнике как-то автоматизировать этот процесс:
echo Выполнить ping с флагом -f запрещающим фрагментацию пакета с размером пакета 1372 байт
echo Увеличиваем размер пакета до появления сообщения о требовании фрагментации пакета!
ping -f -l 1372 google.com
если нету сообщения о требовании фрагментации пакета увеличить размер на единичку:
ping -f -l 1373 google.com
и т.д. пока не появится сообщение: Требуется фрагментация пакета, тогда остановиться

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 10 месяцев
  • Сообщений: 3839
  • Репутация:127

    [+] [-]
Viktor_Kisel, aa
Чисто для посмотреть можно так:
@echo off
>nul chcp 437
for /l %%i in (1400,1,2000) do (
<nul set /p "=Try packet size: %%i byte... "
ping -n 1 -f -l %%i google.com| >nul find "fragmented"&& (echo done!& goto :eof)
echo passed.
)
У меня фраг начался с размера пакета 1473, поэтому начинаю перебор с 1400.

[Цитировать]

    Viktor_Kisel
  • 2625
  • Стаж: 8 лет 10 месяцев
  • Сообщений: 632
  • Репутация:46

    [+] [-]
Ander_73
Спасибо, работает ay
Вопросик, как отключить автозакрытие батника? pause - не помогает.

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 10 месяцев
  • Сообщений: 3839
  • Репутация:127

    [+] [-]
Viktor_Kisel, я сделал чисто демонстрашку. Ты скажи, чего именно надо ab-добавь сюда:
(echo done!& goto :eof)
чтобы так:
(echo done!& pause& goto :eof)

[Цитировать]

    Viktor_Kisel
  • 2625
  • Стаж: 8 лет 10 месяцев
  • Сообщений: 632
  • Репутация:46

    [+] [-]
Ander_73
Логика такая:
1) Запускаем Ping_google_MTU.cmd - определяем максимальный размером пакета без фрагментации + вычисляем вручную размер MTU
Чтобы было понятнее, просьба на последней цифре добавить надпись, можно на английском:
"Package fragmentation is required, but the deny flag is set"
2) Запускаем MTU_Size.cmd - определяем имя интерфейса основного подключения (и текущий размер MTU)
и по известному имени и размеру MTU запускаем свой батник, типа:
netsh int ipv4 set interface "Ethernet" mtu=1400 store=persistent
http://file.sampo.ru/9fjk4s/


Последний раз редактировалось: Viktor_Kisel (2021-05-31 11:28), всего редактировалось 4 раз(а)

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 10 месяцев
  • Сообщений: 3839
  • Репутация:127

    [+] [-]
Viktor_Kisel, сумбур какой-то.
Вот я получил размер пакета, для которого уже требуется фрагментация.
Что с этой цифрой делать? Как получить из неё параметр MTU (чтобы сразу и засунуть в netsh)?

[Цитировать]

    Viktor_Kisel
  • 2625
  • Стаж: 8 лет 10 месяцев
  • Сообщений: 632
  • Репутация:46

    [+] [-]
Ander_73
Мелкософт постарался, действительно сумбур, потому и хочется по максимуму добиться автоматизма.
В батнике есть пример: оптимальное значение параметра MTU=1372+28=1400 байт
То есть, предпоследняя цифра 1372 + 28 = 1400 - этот и есть наш MTU (у каждого свой конечно)!
Может в батнике это можно реализовать, чтобы автоматом добавляло цифру 28 и получали готовый MTU?
Или проще сделать, чтобы автоматом добавляло к последней цифре но уже на единицу меньше - 27?

Но еще нужно узнать имя нашего интерфейса основного подключения с помощью другого батника, например "Ethernet" или "Подключение по локальной сети" или... имя тоже в каждой винде будет отличаться от експишки до десятки.


Последний раз редактировалось: Viktor_Kisel (2021-05-31 11:48), всего редактировалось 1 раз

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 10 месяцев
  • Сообщений: 3839
  • Репутация:127

    [+] [-]
Viktor_Kisel,
@echo off
>nul chcp 437
for /l %%i in (1300,1,3000) do (
<nul set /p "=Try packet size: %%i byte... "
ping -n 1 -f -l %%i google.com| >nul find "fragmented"&& (set /a sz=%%i-1& goto next)
echo passed.
)
:next
echo done!
echo/
echo Last solid packet size is %sz% byte.
set /a sz+=28
echo/
echo Recommended MTU size is %sz%
echo/
pause

[Цитировать]

    Viktor_Kisel
  • 2625
  • Стаж: 8 лет 10 месяцев
  • Сообщений: 632
  • Репутация:46

    [+] [-]
Ander_73
Вот, то чо нужно, красота, благодарю ay
Уже в таком моменте важном добавили полный автоматизм!
(1300,1,3000) - это лишнее, максимум вроде 1500-28=1472, а вот минимум, наверное поставить 1370, не знаю бывает ли меньше? Думаю оптимально: (1370,1,1472) или так можно (1370,1,1500) потолок не мешает больший.
Мыслей в инете много, реализовать все нужно время. Как сваяю выложу в этой теме постепенно.


Последний раз редактировалось: Viktor_Kisel (2021-05-31 12:03), всего редактировалось 1 раз

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 10 месяцев
  • Сообщений: 3839
  • Репутация:127

    [+] [-]
Viktor_Kisel, в ХР не работает ac
Там надо пускать именно английский Ping.exe
Или морочиться разбором языков (что в корне неверно, имхо)
Или придумать что-то...
Можно отслеживать errorlevel, но тогда можно случайно попасть на обычный пропуск пакета. Тоже не очень...

[Цитировать]

    Viktor_Kisel
  • 2625
  • Стаж: 8 лет 10 месяцев
  • Сообщений: 632
  • Репутация:46

    [+] [-]
Ander_73
Во дела, щас в семерке временно сижу, сейчас проверю в експишке.

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 10 месяцев
  • Сообщений: 3839
  • Репутация:127

    [+] [-]
Viktor_Kisel, вот, например, крохотный английский пинг из NT 4.0 Server
Скачать

[Цитировать]

    Viktor_Kisel
  • 2625
  • Стаж: 8 лет 10 месяцев
  • Сообщений: 632
  • Репутация:46

    [+] [-]
Ander_73
Спасибо, с этим ping.exe в експишке работает.
etsh int ip show interface - слишком много информации показывает, но тут видимо без варинтов
netsh int ipv4 set interface "Ethernet" mtu=1420 store=persistent - не работает под експишкой:
https://superuser.com/questions/37686/how-to-tell-w...ed-in-windows-xp
TCPOptimizer - здесь выручит.

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 10 месяцев
  • Сообщений: 3839
  • Репутация:127

    [+] [-]
85964с этим ping.exe в експишке работает.
У меня и в 10-ке он работает ab

[Цитировать]

    Viktor_Kisel
  • 2625
  • Стаж: 8 лет 10 месяцев
  • Сообщений: 632
  • Репутация:46

    [+] [-]
Ander_73
Вот нашел на https://zen.yandex.ru/media/id/5ba20e2da679a400aac6...fe7b2900aa92e96c
Анализатор: https://www.speedguide.net/analyzer.php
Рекомендует мне для експишки (и для семерки тоже, но там этот параметр не в реестре):
RWIN=65280 (up to 2 Mbit lines, depending on latency. MSS * 48)
и т.д.
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"TcpWindowSize"=dword:0000ff00
"GlobalMaxTcpWindowSize"=dword:0000ff00

Страница 1 из 2


Показать сообщения:    

Текущее время: 11-Дек 18:48

Часовой пояс: UTC + 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы можете скачивать файлы