- Настройка параметра конфигурации сервера network packet size Configure the network packet size Server Configuration Option
- Перед началом Before You Begin
- Ограничения Limitations and Restrictions
- Рекомендации Recommendations
- безопасность Security
- Permissions Permissions
- Использование среды SQL Server Management Studio Using SQL Server Management Studio
- Настройка параметра network packet size To configure the network packet size option
- Использование Transact-SQL Using Transact-SQL
- Настройка параметра network packet size To configure the network packet size option
- Дальнейшие действия. После настройки параметра network packet size Follow Up: After you configure the network packet size option
- Описание функций Windows TCP
- Аннотация
- Размер окна TCP
- Параметры TCP теперь поддерживаются
- Масштабирование Windows
- Timestamps
- Защита от завернутой последовательности номеров (PAWS)
- Селективные подтверждения (SACKs)
- Поведение ретрансмиссии TCP и быстрая перетрансмиссия
- Ретрансмиссия TCP
- Быстрый перетрансмит
Настройка параметра конфигурации сервера network packet size Configure the network packet size Server Configuration Option
Применимо к: Applies to: SQL Server SQL Server (все поддерживаемые версии) SQL Server SQL Server (all supported versions) Применимо к: Applies to: SQL Server SQL Server (все поддерживаемые версии) SQL Server SQL Server (all supported versions)
В этом разделе описываются способы настройки параметра конфигурации сервера network packet size в SQL Server SQL Server с помощью SQL Server Management Studio SQL Server Management Studio или Transact-SQL Transact-SQL . This topic describes how to configure the network packet size server configuration option in SQL Server SQL Server by using SQL Server Management Studio SQL Server Management Studio or Transact-SQL Transact-SQL . Параметр network packet size используется для установки размера пакета (в байтах), применяемого во всей сети. The network packet size option sets the packet size (in bytes) that is used across the whole network. Пакеты — это фрагменты данных фиксированного размера, с помощью которых осуществляется передача запросов и ответов между клиентами и серверами. Packets are the fixed-size chunks of data that transfer requests and results between clients and servers. Размер пакетов по умолчанию составляет 4096 байт. The default packet size is 4,096 bytes.
Не изменяйте размер пакета, если нет уверенности в том, что это повысит производительность. Do not change the packet size unless you are certain that it will improve performance. Для большинства приложений оптимальным является размер пакета, установленный по умолчанию. For most applications, the default packet size is best.
В этом разделе In This Topic
Перед началом работы Before you begin:
Настройка параметра network packet size с помощью следующих средств: To configure the network packet size option, using:
Перед началом Before You Begin
Ограничения Limitations and Restrictions
- Максимальный размер сетевого пакета для шифрованных соединений составляет 16 383 байта. The maximum network packet size for encrypted connections is 16,383 bytes.
Если функция MARS включена, поставщик SMUX добавляет в пакет 16-байтовый заголовок перед шифрованием TLS, уменьшая максимальный размер сетевого пакета до 16 368 байт. If MARS is enabled, the SMUX provider will add a 16-byte header to the packet before TLS encryption, reducing the maximum network packet size to 16368 bytes.
Рекомендации Recommendations
Это расширенный параметр, и изменять его следует только опытным администраторам баз данных или сертифицированным по SQL Server SQL Server специалистам. This option is an advanced option and should be changed only by an experienced database administrator or certified SQL Server SQL Server professional.
Если приложение осуществляет массовое копирование или отправляет/получает большие объемы данных типа text или image, увеличение размера пакета может повысить эффективность работы системы за счет сокращения числа сетевых операций чтения и записи. If an application does bulk copy operations or sends or receives large amounts of text or image data, a packet size larger than the default might improve efficiency because it results in fewer network read-and-write operations. Если приложение отправляет и получает небольшие объемы информации, размер пакета можно уменьшить до 512 байт, чего в большинстве случаев достаточно. If an application sends and receives small amounts of information, the packet size can be set to 512 bytes, which is sufficient for most data transfers.
Если система работает с несколькими сетевыми протоколами, присвойте параметру network packet size значение, оптимальное для протокола, который используется чаще всего. On systems that are using different network protocols, set network packet size to the size for the most common protocol used. Параметр network packet size позволяет повысить производительность сети, если сетевые протоколы поддерживают более крупные пакеты. The network packet size option improves network performance when network protocols support larger packets. Это значение может быть переопределено в клиентских приложениях. Client applications can override this value.
Для запроса на изменение размера пакета также используются функции OLE DB, ODBC и DB-Library. You can also call OLE DB, Open Database Connectivity (ODBC), and DB-Library functions request a change the packet size. Если сервер не поддерживает запрошенный размер пакета, компонент Компонент Database Engine Database Engine отправляет клиенту предупреждающее сообщение. If the server cannot support the requested packet size, the Компонент Database Engine Database Engine will send a warning message to the client. В некоторых ситуациях изменение размера пакета может привести к ошибке в канале связи, например следующей: In some circumstances, changing the packet size might lead to a communication link failure, such as the following:
Native Error: 233, no process is on the other end of the pipe.
безопасность Security
Permissions Permissions
Разрешения на выполнение хранимой процедуры sp_configure без параметров или только с первым параметром по умолчанию предоставляются всем пользователям. Execute permissions on sp_configure with no parameters or with only the first parameter are granted to all users by default. Для выполнения процедуры sp_configure с обоими параметрами для изменения параметра конфигурации или запуска инструкции RECONFIGURE необходимо иметь разрешение ALTER SETTINGS на уровне сервера. To execute sp_configure with both parameters to change a configuration option or to run the RECONFIGURE statement, a user must be granted the ALTER SETTINGS server-level permission. Разрешение ALTER SETTINGS неявным образом предоставлено предопределенным ролям сервера sysadmin и serveradmin . The ALTER SETTINGS permission is implicitly held by the sysadmin and serveradmin fixed server roles.
Использование среды SQL Server Management Studio Using SQL Server Management Studio
Настройка параметра network packet size To configure the network packet size option
В обозревателе объектов щелкните правой кнопкой мыши сервер и выберите пункт Свойства. In Object Explorer, right-click a server and select Properties.
Щелкните узел Дополнительно . Click the Advanced node.
На вкладке Сеть выберите значение в поле Размер сетевого пакета . Under Network, select a value for the Network Packet Size box.
Использование Transact-SQL Using Transact-SQL
Настройка параметра network packet size To configure the network packet size option
Установите соединение с компонентом Компонент Database Engine Database Engine . Connect to the Компонент Database Engine Database Engine .
На панели «Стандартная» нажмите Создать запрос. From the Standard bar, click New Query.
Скопируйте следующий пример в окно запроса и нажмите кнопку Выполнить. Copy and paste the following example into the query window and click Execute. В этом примере описывается использование хранимой процедуры sp_configure для задания значения параметра network packet size равным 6500 байт. This example shows how to use sp_configure to set the value of the network packet size option to 6500 bytes.
Дальнейшие действия. После настройки параметра network packet size Follow Up: After you configure the network packet size option
Параметр вступает в силу немедленно, без перезапуска сервера. The setting takes effect immediately without restarting the server.
Описание функций Windows TCP
В этой статье описываются функции TCP в Windows.
Оригинальная версия продукта: Windows 10 — все выпуски, Windows Server 2012 R2
Исходный номер КБ: 224829
Аннотация
В этой статье описываются следующие функции TCP в Windows:
- Размер окна TCP
- Параметры TCP теперь поддерживаются
- Масштабирование Windows — RFC 1323
- Timestamp — RFC 1323
- Защита от завернутой последовательности номеров (PAWS)
- Селективные подтверждения (SACKS) — RFC 2018
- Поведение ретрансмиссии TCP и быстрая перетрансмиссия
Функции TCP можно изменить, изменив записи в реестре.
В следующих разделах, методах или задачах содержатся действия, которые содержат информацию о том, как изменить реестр. Однако неправильное изменение параметров реестра может привести к возникновению серьезных проблем. Поэтому следует в точности выполнять приведенные инструкции. Для дополнительной защиты создайте резервную копию реестра, прежде чем редактировать его. Так вы сможете восстановить реестр, если возникнет проблема. Дополнительные сведения о том, как создать и восстановить реестр, щелкните следующий номер статьи, чтобы просмотреть статью в базе знаний Майкрософт:
322756 Создание резервной копии и восстановление реестра Windows
Размер окна TCP
Размер окна получения TCP — это объем получаемой информации (в bytes), который можно буферить во время подключения. Отправитель может отправлять только такой объем данных, прежде чем ждать подтверждения и обновления окна от принимающего хоста. Стек Windows TCP/IP предназначен для самонастройки в большинстве сред и использует более крупные размеры окон по умолчанию, чем предыдущие версии.
Вместо использования жестко закодируемого по умолчанию размера окна TCP настраивается даже на приращения максимального размера сегмента (MSS). MsS обсуждается во время установки подключения. Настройка окна получения даже с увеличением msS увеличивает процент полноразмысных сегментов TCP, используемых при массовой передаче данных.
Размер окна получения определяется следующим образом:
- Первый запрос на подключение, отправленный удаленному хосту, рекламирует размер окна получения 16K (16 384 bytes).
- Когда подключение установлено, размер окна получения округление до даже приращения MSS.
- Размер окна регулируется в четыре раза больше, чем msS, до максимального размера 64 K, если не используется параметр масштабирования окна (RFC 1323).
См. раздел «Масштабирование Windows».
Для подключений Ethernet размер окна обычно устанавливается до 17 520 bytes (16K округляется до двенадцати сегментов 1460-byte). Размер окна может уменьшаться при подключении к компьютеру, поддерживаюшем расширенные параметры головы TCP, например селективные подтверждения (SACKS) и Timestamps. Эти два параметра увеличивают размер заготавлика TCP более чем до 20 bytes, что приводит к меньшему объему данных.
В предыдущих версиях Windows NT размер окна для подключения Ethernet был 8760 bytes, или шесть сегментов 1460-byte.
Чтобы установить размер окна получения к определенному значению, добавьте значение TcpWindowSize в подкойте реестра, определенное вашей версии Windows. Для этого выполните указанные ниже действия.
Выберите > запуск, Regedit введите, а затем выберите ОК.
Расширение подкоя реестра, определенного для вашей версии Windows:
Для Windows 2000 развяжите следующую подкою: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces
В Windows Server 2003 развяжите следующую подкою: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
В меню Редактирование указать значение New, а затем выберите значение DWORD.
Введите TcpWindowSize поле «Новое значение» и нажмите кнопку Ввод
Выберите Изменение в меню Изменить.
Введите нужный размер окна в поле данных Value.
Допустимый диапазон для размера окна — 0-0x3FFFC000 hexadecimal.
Это значение по умолчанию не присутствует. При добавлении значения TcpWindowSize оно переопределяет алгоритм размера окна по умолчанию, рассмотренный выше.
TcpWindowSize также можно добавить в ключ Параметры, чтобы глобально установить размер окна для всех интерфейсов.
Параметры TCP теперь поддерживаются
Ранее параметры TCP использовались в основном для ведения переговоров о максимальных размерах сегмента. В Windows параметры TCP используются для масштабирования окон, штампа времени и выборочного ACK.
Существует два типа параметров TCP:
- Один параметр TCP octet, который используется для указать определенный вид параметра.
- Параметр TCP с несколькими октетами, состоящий из вида параметра, длины параметра и ряда октетов параметра.
В следующем списке показаны вид, длина, имя и описание каждого варианта TCP.
Вид: 0
Длина: 1
Вариант: Конец списка опций
Описание. Используется при заполнении последнего параметра TCP.
Вид: 1
Длина: 1
Параметр: Без операции
Описание. Используется при необходимости заполнения, и в одном пакете следуют дополнительные параметры TCP.
Вид: 2
Длина: 4
Параметр: Максимальный размер сегмента
Описание. Указывает максимальный размер сегмента TCP, который можно отправить по сети.
Вид: 3
Длина: 3
Параметр: Параметр масштабирования окна
Описание. Определяет фактор масштабирования, который будет использоваться при использовании размеров окна больше 64k.
Вид: 8
Длина: 10
Параметр: Параметр «Печать времени»
Описание. Используется для вычисления времени круговой поездки (RTT) передаваемых пакетов.
Вид: 4
Длина: 2
Вариант: разрешенО TCP SACK
Описание. Информирует других хостов о том, что разрешены выборочные Acks.
Вид: 5
Длина: изменяется
Вариант: параметр TCP SACK
Описание. Используется хостами для определения того, были ли получены неупорядоченные пакеты.
Масштабирование Windows
Для более эффективного использования сетей с высокой пропускной способностью можно использовать больший размер окна TCP. Поле размеров окна TCP управляет потоком данных и ограничено 2-ми bytes или размером окна 65 535 bytes.
Так как поле размеров не может быть расширено, используется фактор масштабирования. Шкала окна TCP — это параметр, используемый для увеличения максимального размера окна с 65 535 бет до 1 гигабайта.
Параметр масштабирования окна используется только при трехшаговом рукопожатии TCP. Значение масштабирования окна представляет количество битов для переноса влево 16-битного поля размера окна. Значение масштабирования окна можно установить с 0 (без переноса) до 14.
Чтобы вычислить истинный размер окна, умножьте размер окна на 2^S, где S — это значение масштабирования.
Если размер окна 65 535 bytes с коэффициентом масштабирования окна 3.
True window size = 65535*2^3
Истинный размер окна = 524280
Следующий след сетевого монитора показывает, как используется параметр масштабирования окна:
Размер окна, используемый в фактическом трехшаговом рукопожатии, не является масштабным размером окна в разделе 2.2 RFC 1323:
«Поле Окно в syn (например, сегмент [SYN] или [SYN,ACK]) никогда не масштабируется».
Это означает, что первый пакет данных, отправленный после трехнаправного рукопожатия, является фактическим размером окна. Если есть фактор масштабирования, всегда используется начальный размер окна в 65 535 bytes. Затем размер окна умножается на коэффициент масштабирования, идентифицированный в трехшаговом рукопожатии. В таблице ниже представлены границы коэффициента масштабирования для различных размеров окна.
Фактор масштабирования | Масштабное значение | Начальное окно | Масштабировать окно |
---|---|---|---|
0 | 1 | 65535 или менее | 65535 или менее |
1 | 2 | 65535 | 131,070 |
2 | 4 | 65535 | 262,140 |
3 | 8 | 65535 | 524,280 |
4 | 16 | 65535 | 1,048,560 |
5 | 32 | 65535 | 2,097,120 |
6 | 64 | 65535 | 4,194,240 |
7 | 128 | 65535 | 8,388,480 |
8 | 256 | 65535 | 16,776,960 |
9 | 512 | 65535 | 33,553,920 |
10 | 1024 | 65535 | 67,107,840 |
11 | 2048 | 65535 | 134,215,680 |
12 | 4096 | 65535 | 268,431,360 |
13 | 8192 | 65535 | 536,862,720 |
14 | 16384 | 65535 | 1,073,725,440 |
Если размер окна в реестре вошел как 2690000000 (269M) в десятичной, то коэффициент масштабирования при трехстолевом рукопожатии составляет 13. Коэффициент масштабирования 12 позволяет только размер окна до 268 431 360 bytes (268M).
Начальный размер окна в этом примере будет вычисляться следующим образом:
65 535 bytes с коэффициентом масштабирования окна 13.
True window size = 65535*2^13
True window size = 536,862,720
Когда значение для размера окна добавляется в реестр и его размер превышает значение по умолчанию, Windows пытается использовать значение масштабирования, которое вмещает новый размер окна.
Значение Tcp1323Opts в следующем ключе реестра можно добавить для управления масштабированием окон и временем:
На панели инструментов выберите Запуск запуска и введите для > Regedit запуска редактора реестра.
В редакторе реестра выберите Изменить, указать на Новое, а затем выбрать значение DWORD.
В поле «Новое значение» введите кнопку ВВОД, а затем в Tcp1323Opts меню Изменить выберите Изменение.
Допустимый диапазон: 0, 1, 2 или 3, где:
0 (отключить параметры RFC 1323)
1 (только включена шкала окна)
2 (только включено время)
3 (включено оба варианта)
Эта запись реестра управляет 1323 разами RFC и параметрами масштабирования окон. Время и масштабирование окна включены по умолчанию, но ими можно управлять с помощью битов флага. Bit 0 управляет масштабированием окон. Bit 1 управляет временем.
Timestamps
Ранее в Стеке TCP/IP использовался один пример на окно данных, отправленных для вычисления времени в пути (RTT). При отправлении пакета был задат timer (retransmit timer) до тех пор, пока не будет получено подтверждение. Например, если размер окна в сети Ethernet составляет 64 240 bytes (44 полных сегмента), для пересчета времени в обратном пути использовался только один из 44 пакетов. С максимальным размером окна 65 535 bytes, этого коэффициента выборки было достаточно. С помощью масштабирования окна и максимального размера окна в 1 гигабайт этот показатель выборки RTT является недостаточным.
Теперь параметр TCP Timestamp можно использовать в сегментах (данные и ACK), которые считаются подходящими для стека, для операций, таких как:
С помощью этих данных RTT можно точно рассчитать с помощью больших размеров окна. RTT используется для вычисления интервалов ретрансмиссии. Для оптимальной пропускной способности необходимы точные перерывы в RTT и ретрансмиссии.
Когда в сеансе TCP используется штамп времени TCP, отправитель сеанса отправляет параметр в своем первом пакете трехсторонней рукопожатия TCP (пакет SYN). Затем любая сторона может использовать параметр TCP во время сеанса.
TCP Timestamps Option (TSopt):
Вид = 8 | Длина = 10 | TS Value (Tsval) | TS Echo Reply (Tsecr) |
---|---|---|---|
1 байт | 1 байт | 4 байта | 4 байта |
Поле параметра timestamp можно просмотреть в следе сетевого монитора, расширив поле параметров TCP, как показано ниже:
Защита от завернутой последовательности номеров (PAWS)
Поле номеров последовательности TCP ограничено 32 битами, что ограничивает количество доступных номеров последовательности. С высокой пропускной способностью сетей и большой передачи данных, можно обернуть номера последовательности, прежде чем пакет проходит по сети. Если отправлять данные по одной сети Giga-byte в секунду (Gbps), номера последовательности могут обертывание всего за 34 секунды. Если пакет задерживается, потенциально может существовать другой пакет с одинаковым номером последовательности. Чтобы избежать путаницы с дублирующими номерами последовательности, timestamp TCP используется в качестве расширения к номеру последовательности. Пакеты имеют текущие и прогрессивные отметки времени. Старый пакет имеет более старый штамп времени и удаляется.
Селективные подтверждения (SACKs)
Windows вводит поддержку функции производительности, известной как Селективное подтверждение или SACK. SACK особенно важен для подключений с большими размерами окна TCP. Перед SACK приемник мог подтвердить только последний номер последовательности полученного потока данных или «левый край» окна получения. С включенной поддержкой SACK приемник продолжает использовать номер ACK для подтверждения левого края окна получения, но он также может признавать другие блоки полученных данных по отдельности. SACK использует параметры загона TCP, как показано ниже.
SACK использует два типа TCP Options.
Параметр TCP Sack-Permitted используется только в пакете SYN (во время создания подключения TCP), чтобы указать, что он может делать выборочный ACK.
Второй параметр TCP — TCP Sack Option — содержит подтверждение для одного или нескольких блоков данных. Блоки данных идентифицированы с помощью номера последовательности в начале и в конце этого блока данных. Он также известен как левый и правый край блока данных.
Kind 4 — это параметр TCP Sack-Permitted. Вид 5 — это параметр TCP Sack. Длина — это длина в bytes этого параметра TCP.
Tcp SACK разрешено:
Вид = 4 | Длина = 2 |
---|---|
1 байт | 1 байт |
Параметр Tcp SACK:
Вид = 5 | Длина = переменная |
---|---|
1 байт | Левый край первого блока до правого края первого блока . Левый край блока Nth к правому краю блока Nth |
С включенной поддержкой SACK (по умолчанию) пакет или серия пакетов могут быть отброшены. Приемник сообщает отправителю, какие данные получены и где могут быть «дыры» в данных. Затем отправитель может выборочно перенаправить недостающие данные без повторной передачи уже успешно полученных блоков данных. SACK контролируется параметром реестра SackOpts.
Значение SackOpts в следующем ключе реестра можно изменить, чтобы контролировать использование селективных подтверждений:
- На панели инструментов выберите Запуск запуска и введите для >Regedit запуска редактора реестра.
- Найдите и выберите вышеуказанный ключ в редакторе реестра, а затем выберите Изменение в меню Редактирование.
- Введите нужное значение в поле данных Value.
Допустимо двоичное значение — 0 или 1, по умолчанию — 1. Этот параметр контролирует, включена ли поддержка селективного ACK (SACK — RFC 2018).
Следующий след сетевого монитора иллюстрирует хост, который подтверждает все данные до номера последовательности 54857341, а также данные из последовательности номер 54858789-54861685. Отсутствующие данные от 54857341 до 548587888.
Поведение ретрансмиссии TCP и быстрая перетрансмиссия
Ретрансмиссия TCP
В качестве обзора нормального поведения ретрансмиссии TCP запускает ретрансмиссию, когда каждый исходящие сегменты передаются в Протокол Интернета (IP). Если подтверждения данных в данном сегменте до истечения срока действия времени не получено, сегмент повторно передается.
Время перерасчета (RTO) непрерывно корректируется в соответствие с характеристиками подключения с помощью расчетов Сглаженное время в пути (SRTT), как описано в RFC 793. После каждой повторной передачи этого сегмента время от времени для данного сегмента удваивается. С помощью этого алгоритма TCP настраивает себя на нормальную задержку подключения.
Быстрый перетрансмит
TCP повторно передает данные до истечения срока действия времени ретрансмиссии при некоторых обстоятельствах. Наиболее распространенной причиной является функция, известная как быстрая перенаторка. Когда приемник, который поддерживает быстрый перетрансмит, получает данные с номером последовательности, превысят текущий ожидаемый, некоторые данные, скорее всего, будут отброшены. Чтобы сообщить отправительу об этом событии, приемник немедленно отправляет ACK с номером ACK на ожидаемом номере последовательности. Он будет продолжать делать это для каждого дополнительного сегмента TCP, который приходит. Когда отправитель начинает получать поток acKs с одним и тем же номером последовательности, сегмент может быть отброшен. Отправитель немедленно повторно отправляет сегмент, который ожидает приемник, не дожидаясь истечения срока действия времени ретрансмиссии. Эта оптимизация значительно повышает производительность при частом сбросе пакетов.
По умолчанию Windows повторно передает сегмент в следующих условиях:
- Он получает три acKs для одного номера последовательности: один ACK и два дубликата.
- Номер последовательности отстает от текущего.
Это поведение можно контролировать с помощью TcpMaxDupAcks параметра реестра.
Значение TcpMaxDupAcks в следующем ключе реестра можно изменить, чтобы контролировать количество acKs, необходимых для запуска быстрых переадтрансмитов:
- На панели инструментов выберите Запуск запуска и введите для >Regedit запуска редактора реестра.
- Найдите и выберите вышеуказанный ключ в редакторе реестра, а затем выберите Изменение в меню Редактирование.
- Введите нужное значение в поле данных Value.
Допустимый диапазон 1-3, значение по умолчанию — 2.
Этот параметр определяет количество дубликатов acKs, которые должны быть получены для того же количества отправленных данных последовательности, прежде чем запускается для повторного повторного запуска сегмента, который был отброшен fast retransmit в пути.