Tcp out of order

Tcp out of order

I am sending HTTP requests from IP_ADDR1 to IP_ADDR2. I observed that HTTP requests are not reaching to application level. When I take wireshark logs I noticed some issue at TCP level. What are these issue? when this occurs ? How to get rid of this? Attaching the Wireshark snapshot here.

1 Answer 1

‘TCP post number reused’ means that it saw a successful connection handshake, then the client sent another SYN packet with the same port numbers. If the client hadn’t already acknowledged the SYN-ACK, this would have been reported as a retransmission. But since it did acknowlege the SYN-ACK, it shouldn’t need to retransmit the SYN. This could mean that something on your network is duplicating packets.

‘TCP out-of-order’ means that the packets aren’t being received in the order that their sequence numbers indicate. It might be a side effect of the duplicate packet that’s causing the reused port number error — that may be resetting the sequence numbers back to the beginning of the connection. Because otherwise it looks like the packet is in order; an HTTP command should be the next thing after the connection handshake.

Наиболее частая ошибка, которую видит любой ИТ-специалист, установивший Wireshark и захвативший трафик, это повторная передача TCP пакета (TCP Retransmission). Даже в самой быстрой и правильно настроенной сети происходят потери пакетов и как следствие неполучение подтверждений доставки пакетов от получателя отправителю или обратно.

Это нормально и алгоритмы протокола TCP позволяют отрулить данные ошибки. Поэтому важно понимать, что TCP Retransmission – это симптом, а не причина болезни. Причины могут быть в ошибках на интерфейсах, перегрузке процессоров на сервере или пользовательском ПК, проблемы в пропускной способности каналов связи или фрагментирование пакетов и работа с этим на пути следования пакетов. Внимание надо уделить тому, как много повторных передач и часто они возникают, а не их наличию в принципе.

Читайте также:  6500 Кельвинов какой свет

Анализатор протоколов Wireshark в зависимости от поведения определяет несколько типов повторных передач:

  • TCP Retransmission – классический тип повторной передачи пакетов. Анализируя трафик Wireshark видит два пакета с одинаковым порядковым номером (sequence number) и данными с разницей по времени. Отправитель пакета, не получив подтверждения получения от адресата по истечении таймера retransmission timer, отправляет пакет повторно автоматически, предполагая, что он потерян по пути следования. Значение таймера подстраивается гибко и зависит от кругового времени передачи по сети для конкретного канал связи. Как он рассчитывается можно узнать в RFC6298 Computing TCP’s Retransmission Timer.
  • TCP Fast Retransmission – отправитель отправляет повторно данные немедленно после предположения, что отправленные пакеты потеряны, не дожидаясь истечения времени по таймеру (ransmission timer). Обычно триггером для этого является получение нескольких подряд (обычно три) дублированных подтверждений получения с одним и тем же порядковым номером. Например, отправитель передал пакет с порядковым номером 1 и получил подтверждение – порядковый номер плюс 1, т.е. 2. Отправитель понимает, что от него ждут следующий пакет с номером два. Предположим, что следующие два пакета потерялись и получатель получает данные с порядковым номером 4. Получатель повторно отправляет подтверждение с номером 2. Получив пакет с номером 5, отправитель все равно отправляет подтверждение с номером 2. Отправитель видит три дублированных подтверждения, предполагает, что пакеты 2, 3 были потеряны и шлет их заново, не дожидаясь таймера.

  • TCP Spurious Retransmission – этот тип повторной передачи появился в версии 1.12 сниффера Wireshark и означает, что отправитель повторно отправляет пакеты, на которые получатель уже отправил подтверждение.

Быстрая идентификация повторных передач (TCP Retransmissions) с помощью Wireshark

Первая возможность – это воспользоваться фильтром: tcp.analysis.retransmission:

На экране будут отображены все повторные передачи и указан их тип.

Вторая возможность – это графический анализ повторных передач, когда на графике мы можем выводить несколько графиков и сравнивать их во времени. Также можно сравнить два разных получателя трафика и сделать вывод, в каком сегменте сети происходят больше всего повторных передач вследствие перегрузки сети или оборудования.

Читайте также:  Fcpga988 и pga988 в чем разница

Заходим в раздел Statistics – I/O Graph:

На экране откроется окно с графиком, на котором будет отображаться общее количество передач во времени с момента начала захвата трафика. Единица измерения PPS – количество пакетов в секунду.

Далее в окошке под графиком можно добавлять дополнительные графики в зависимости от введенного фильтра и менять стиль вывода информации – график, гисторгамма и т.д. Тут добавлен знакомый нам фильтр: tcp.analysis.retransmission

Далее мы можем провести сравнительный анализ проблем с повторными передачами в сети в целом и между разными пользователями, указав фильтр: ip.src == xxx.xxx.xxx.xxx && tcp.analysis.retransmission

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

Напоследок ещё раз напомним – повторные передачи это нормально до тех пор, пока их количество не начинает зашкаливать!

Hi, I would like to know the meaning of out-of-order TCP segments in wireshark with the following question

  1. What would make wireshark mark a segment as out-of-order?
  2. IP layer should re-order IP packets correctly and then give them to TCP, why could out-of-order occur?
  3. Does out-of-order always mean bad things?
  4. What should we do when we see out-of-order TCP segments, especially when there are lots of them.

asked 02 Dec ’13, 07:29

SteveZhou
191 ● 27 ● 30 ● 34
accept rate: 0%

  1. The SEQ number is not what Wireshark would have expected as next SEQ number (see below)
  2. Different devices on the way my handle IP packets differently, and thus forwarding one frame earlier/later than another. Or different IP frames take different routes (rather seldom).
  3. No, if it’s not too many of them
  4. Figure out what causes them. Capture at the sender and the receiver side and compare the capture files. If that does not help, move along the path and take captures at different places (if possible — obviously a problem if the data path ‘crosses’ the internet). Make sure, the ‘out-of-order’ frames aren’t just duplicated frames, by checking the IP ID (try to find duplicate IP IDs).
Читайте также:  Триколор пишет смарт карта извлечена

BTW: See also other questions with the tag: out-of-order

Basically the same explanation as I gave above, just different (real world) examples ;-))

answered 02 Dec ’13, 07:42

Kurt Knochner ♦
24.8k ● 10 ● 39 ● 237
accept rate: 15%

So IP doesn’t have the responsibility to put the packets in a right order, does it? It is TCP’s job, what if the application layer protocol doesn’t use TCP? Who will put the packets in a right order? Application layer protocol?

So IP doesn’t have the responsibility to put the packets in a right order

No. The job of IP is just to route/transport the frames to the destination, regardless of packet order or the way/path it chooses.

For TCP: Yes, it’s TCP that will deliver data in the right order to the application, which will/can cause delays if you have a lot of out-of-order packets, as TCP must wait until all required segments have arrived.

Who will put the packets in a right order? Application layer protocol?

the application itself or the ‘application protocol’, if that is implemented ‘outside’ of the application — for whatever reason.

Ссылка на основную публикацию
Adblock
detector