[W5300] 통신 불안정 문의

환경은 PC < ---- > 5300 보드 LAN 케이블로 다이렉트 연결나, HUB 환경 동일

  1. Dup Ack 발생


    시간은 특정은 못하겠지만 몇분에 가끔 뜰때도 있고, 한참 안뜰때도 있고 뜬금없이 저게 발생 됩니다.

  2. Tcp retranssmission
    이현상은 Wireshark 파일 첨부 하였습니다.
    Sn_MR (SOCKETn Mode Register) 레지스터에 no Delayed ACK가 설정되어, 패킷을 PC로 부터 받으면, 자동으로 ACK가 날라가야되는데, 간헐적으로 안날라가면서, 문제가 되는 것 같습니다.

실제로 제가 응답 주는시간은 300ms 까지나, 처리를 못하지 않습니다. 재전송이 날라오면서, 제가 주는 패킷이 두개가 연달아 날라갑니다.

그러면서 통신이 지연이 발생되는데, 이 부분을 어떻게 해결을 해야될지, 어떤 문제일지 잘 모르겠습니다.

WiresharkLog1.zip (5.2 MB)
발생 번호 : 53651, 62150 등.

이런 경우도 있습니다. 코드상에 send 를 완료 하였으나, 바로 전송되지 않고있다가, 자체 retranssmission
타임 설정 만큼 전송되지 않다가, retranssmission 패킷이 발생하면서, 동시에 send packet 과 retranssmisson packet이 같이 전송되는 경우가 있습니다.

답변이 늦어 죄송합니다.

포럼에 남기신 내용을 토대로만 말씀드리자면,
No delay를 설정하면 알고 계신것 처럼 상대방으로부터 데이터를 수신받으면, 즉시 Ack이 나가도록 되어있습니다.

#62150 시점에 retransmission 이 발생했습니다.

매번 발생하지 않고 간헐적으로 발생하고 있는걸로 예상되며, #62149의 패킷을 W5300이 받지 못하고 유실된것 같습니다.

재전송으로 인해 딜레이가 생겼다고 하셨는데, 해당 동작은 TCP통신의 전송 매커니즘으로 인해 보낸 데이터에 대해 ACK가 오지 않으면, 데이터를 재전송하게 되도록 되어있습니다. 패킷유실은 네트워크 불안정, 혼잡 등으로 발생할수 있는 문제입니다. 패킷 유실에 대해서는 저희도 확인할수 있는 부분은 없습니다.

또한, 패킷유실 후 상대방에 보낸 재전송패킷에 대해 W5300이 응답했기때문에 정상적인 동작으로 볼수 있습니다.

Non OS를 사용할경우 send 명령어가 내리면 데이터는 전송되어야하는 것이 맞습니다.

저희가 제공하고 있는 ioLibaray를 사용해서 작성하신걸까요?

아직까지는 말씀해주신 부분의 문의가 없었어서, 어떤 상황에서 발생하는지 자세한 설명 부탁드립니다.

간헐적이긴하지만, 패킷 유실이 빈번히 발생 될 수있는 부분인가요?? W5200 에서는 이런 증상은 없었거든요;;

현재 환경은 NON-OS 입니다,
제공 해주신 ioLibrary 기준으로 작성하였고, lowlevel 부분만 저희 보드에 맞도록 수정 하였습니다.

PC에서 전송하면, W5300에서 응답 올 동안 대기 상태로 있고, W5300 에서 응답이 오면, 다음 명령을 진행하도록 진행 됩니다. SEND 명령을 처리하고, 보드상에서는 명령이 끝났는데, Wireshark 에서 보면, 제가 보낸 시점에는 패킷이 발생 하고 있지않다가,
Retranssmission 패킷이 발행되면서 제가 이전에보낸 데이터가 같이 전송 되는 현상 입니다.
이 부분때문에, w5300 타임아웃을 얼마로 잡느냐에 따라 처리 시간이 많이 걸립니다.

안녕하세요

혹시 캡쳐하신 파일과 업로드한 파일의 IP가 다른데 증상이 있는 192.168.0.107로 캡쳐된 파일을 전달받을 수 있을까요?

그리고 socket을 no delay 설정하신 이유가 있으실까요?

PC 데이터를 수신후 곧바로 data를 전송하는 경우 ack 패킷이 data와 함께 전달되는 부분이라 중복동작되지 않을까 싶습니다.

그리고 w5300에서 사용하는 소켓의 재전송 설정 값 및 할당된 버퍼사이즈 확인이 가능할까요?

문의주신 내용중에 SEND를 완료한 경우는 SENDOK를 확인하셨다는 걸로 이해하면 될까요? 그리고 동시에 SEND packet과 재전송 packet이 전송된다는 것은 W5300이 두개의 동일한 패킷을 전송한다는 의미일까요?

감사합니다.

107 IP 에 대한 로그를 삭제해서, 해당 증상과 동일한 DUP ACK 로그를 첨부 하였습니다.
DUP ACK.zip (1.8 MB)

  1. Socket No Delay 설정 이유
    → 대용량으로 받아야 되는 데이터가 있으므로, 성능 향상의 목적입니다.
    → 실제로 끄고 테스트를 해봤을때, 성능 차이 많이 났습니다.
    → 중간에 껏다 켯다 할 수가없어서, 켜놓고 쓰기로 결정 하였습니다.

  2. 소켓 재전송 설정 값
    → RCR : 3, RTR 1000
    → RTR 의 경우 5000 이었으나, 송수신 응답 속도 문제로 1000으로 수정.

  3. 소켓 메모리 버퍼 사이즈
    → uint8_t txsize[MAX_SOCK_NUM] = {63,1,0,0,0,0,0,0};
    uint8_t rxsize[MAX_SOCK_NUM] = {63,1,0,0,0,0,0,0};
    → socket 은 0번만 사용 함.

  4. Send 완료 경우는 Sendok 가 맞습니다.
    → TimeOut 시간이 짧아서 그런가 싶어서 3초로 늘렸을때, 3초 정도 응답이 가지않다가 3초 타임아웃 발생시, 제가 보낸 패킷정보가 먼저 송신됨과 동시에 Retranssmission 발생 되었습니다. Retranssmission 발생 되는 현상도 첨부 하였습니다. 해당 로그는 RTR 값이 1000일때 발생 된 로그 입니다.
    Retranssmission.zip (1.8 MB)

  5. H/W 의 문제 가능성이 있습니까?

안녕하세요

보내주신 내용토대로 패킷확인을 진행하겠습니다.

만약 W5300 칩으로 별도 하드웨어 디자인을 하셨다면, 저희쪽에서 디자인 검토를 해드릴 수 있을 것 같습니다.

하드웨어 설계하신 거버파일이나 전체 공개가 어려우시면 W5300 및 이더넷 설계관련해서 PCB 검토가 가능한 회로를 캡쳐해서 보내주시면 하드웨어 엔지니어분 통해서 확인해보겠습니다.

감사합니다.

파일 받으실 메일 주소 알려 주실수 있으신가요?

alan@wiznet.io 메일로 부탁드립니다.

안녕하세요

wireshark를 통해서 검토하였으나 보내주신 자료에서는 말씀하신 증상이 없었습니다.

혹시 해당 증상이 확인된 부분을 캡쳐로 전달주실 수 있으실까요?

보내주신 파일을 검토하였으나 아래처럼 패킷이 깨끗한것으로 확인됩니다.

만약 wireshark 필터링후 문제되는 패킷이 삭제되는거라면 전체를 보내주시면 제가 ip addr로 필터링해서 확인해보겠습니다.

DUP ACK 파일

retransmission 파일

제가 올려드린 파일을 다시 받아서 확인 해봤는데, 에러가 존재 합니다.
DUP ACK 파일은 NO.6978
Retransmission 파일은 NO.54911
재확인 부탁 드립니다.
저는 tcp.analysis.duplicate_ack || tcp.analysis.retransmission 필터를 사용 했습니다.

안녕하세요
회신주신대로 wireshark에 해당 옵션 적용하니 문제되는 패킷이 나와서 확인했습니다.
다만, 정확한 원인파악이 어려운 부분이있어서 현재 동일하게 소켓을 No_delayack TCP로 오픈하고 PC와 loopback 테스트를 진행중에 있습니다.
아직까지는 문제되는 패킷은 확인되지 않아서 조금도 상황을 지켜보도록 하겠습니다.
혹시 네트워크는 어떻게 구성하셨는지도 알 수 있을까요?

장비측과 PC와 1:1로 랜케이블 연결 되어있는 상황입니다. 반복적으로 테스트하고 있습니다.
재현 테스트 중에, 문제가 없으시다면, 알려주신 H/W 부분 수정하여 다시 테스트 하도록 하겠습니다

혹시 증상 재현이 되셨을까요?

죄송합니다, 답변이 늦었습니다.
어제까지 동작시키던 테스트가 멈추는바람에 부득이 금일동안 테스트를 진행을 했습니다.
현재까지 로그로봐서는 증상이 동일하게 재현되지는 않는것같습니다.
소켓을 no deley tcp server로 설정하고 pc와 1:1연결 후 loopback 으로 데이터를 주고받고 있는데
추가적인 설정사항이나 펌웨상의 변경점이 있을까요?

w5300_nodelay_loopback_test.zip (5.1 MB)

추가 설정이나 펌웨어상 변경점은 없습니다.

우선 테스트 하신 로그를 보니, Send / Receive 후 50ms 정도 딜레이가 있는 듯 합니다.

이 시간을 줄여서 테스트 해 주실 수 있을까요??

왜냐하면, 현재 저희 조건에서, 해당 증상을 재현하기 위해서,

시간을 특정 할 수 없으나, 1시간 ~ 3시간 정도 돌려야 증상을 볼 수 있습니다.

추가적으로, 회로 검토 요청 드립니다.
알려 주신 메일로 가이드 해주신 부분 수정하여 Artwork 파일 송부 드렸습니다.