W5100 : Window size 감소

Wireshark로 패킷 검토중 Windows Size 가 감소하하고, 다시 초기 상태로 복귀하는것을 반복합니다.
원인과 해결방법? 문의드립니다
image

안녕하세요 위즈네트 입니다.
윈도우 사이즈는 수신버퍼입니다. 따라서 해당 디바이스가 데이터를 수신중이면 수신버퍼에 데이터가 저장되기 때문에 그만큼 윈도우 사이즈가 감소하는 것이 맞습니다.
사용자가 수신버퍼의 데이터를 수신하게되면 그만큼 다시 윈도우 사이즈는 증가합니다.
만약 윈도우 사이즈를 늘리기 원하시면 수신버퍼의 데이터를 RECV 명령어를 통해 버퍼를 비우시면 됩니다.
해당 동작은 정상동작이므로 상기의 내용을 검토하셔서 진행하시면 됩니다.
감사합니다.

감사합니다.

Windows Size가 수신때마다 12Byte씩 줄어듭니다. 지속적(버퍼 초기화될떄까지)으로 줄어듭니다.
전 이것이 자연적인 감소,증가가 아닌 것으로 보입니다.
수신버퍼를 늘리고, 수신버퍼를 비우면 되겠지만 , 증가하는 원인이 수신되는 데이터보다 부족해서인지, 동적활당과 해제가 문제인지등 원인을 확인하고자 합니다…
추가 확인을 부탁드립니다.

안녕하세요
추가설명 감사합니다. 처음에 wireshark를 캡쳐해서 보내주셨는데
TCP라면 SYN 부분부터 UDP 통신이라면 처음 데이터 통신부터 버퍼 초기화될때까지의 패킷을
.pcap 확장자로 저장해서 첨부해주시면 먼저 네트워크상의 패킷 내용을 확인해보고 추가적인
원인을 찾아보겠습니다.

window_Test.zip (6.9 KB)

감사합니다.

windows size : 11680~10228 (12Byte씩 감소하며, Cycle이 돌아갑니다.

확인 부탁드립니다.

보내주신 pcap 확인하였고 분석한 내용 공유드리겠습니다.

확인한 결과 PC(192.168.1.232) 에서 W5100 (192.168.1.190)으로 12Byte씩 데이터를 전송하는 것을 확인했습니다.
아래와 같이 TCP Payload 12 Byte가 확인됩니다.

W5100은 수신한 패킷의 데이터를 저장하여 window size가 12Byte 만큼 줄어들고 205Byte의 ACK 패킷을 전송하는 것으로 확인됩니다.

그리고 말씀하신대로 W5100이 1452 Byte를 수신한 뒤에 window size가 초기화되는 것으로 봐서 이때 MCU에서 RECV 커맨드를 수행한 것으로 보입니다.

펌웨어상에서 언제 RECV 커맨드를 수행하는지 동작확인을 요청드립니다.

마지막으로 확인이 필요한 부분은 초기연결과정에서 W5100의 Window size가 11680으로 설정된 부분입니다.
W5100의 RX Memory는 최대 8K 까지밖에 설정되지 않습니다. 하지만 여기서는 그 이상으로 설정되는 것으로 보입니다. 소켓의 메모리 할당 부분이 어떤값으로 설정되었는지 확인을 요청드립니다.

감사합니다.

  • RECV " windows 창 없데이터 하는 부분이 존재합니다.

  • A: windows Size는 test하면서 임의로 설정변경하였습니다. 2920으로 설정

  • Q: 12byte씩 Query의 Payload 가 존재한다고 (190)에서 window 가 줄어드는게 의문이 듭니다.