[W5300] 통신 불안정 문의
Ethernet Chips
No replies yet. Be the first to reply.
Join the discussion.
Ethernet Chips
No replies yet. Be the first to reply.
Join the discussion.
Share projects and connect with makers.
Joined before the site update? first.
New to WIZnet Makers?
We sent a verification link to your address. Open it to activate your account, then log in.
Accounts from this email provider are reviewed by an administrator after verification. Approval usually takes one business day.
Already have an account?
Enter your email address. If it belongs to an account, we'll send a link to set a new password. Members who joined before the site update use this to set their password.
If an account uses that address, we sent a link to set a new password. The link works once and expires in 30 minutes.
Know your password?
Need an account?
RE: [W5300] 통신 불안정 문의
by MG O ·
이런 경우도 있습니다. 코드상에 send 를 완료 하였으나, 바로 전송되지 않고있다가, 자체 retranssmission
타임 설정 만큼 전송되지 않다가, retranssmission 패킷이 발생하면서, 동시에 send packet 과 retranssmisson packet이 같이 전송되는 경우가 있습니다.
RE: RE: [W5300] 통신 불안정 문의
by irina WIZnet ·
답변이 늦어 죄송합니다.
포럼에 남기신 내용을 토대로만 말씀드리자면,
No delay를 설정하면 알고 계신것 처럼 상대방으로부터 데이터를 수신받으면, 즉시 Ack이 나가도록 되어있습니다.
#62150 시점에 retransmission 이 발생했습니다.
매번 발생하지 않고 간헐적으로 발생하고 있는걸로 예상되며, #62149의 패킷을 W5300이 받지 못하고 유실된것 같습니다.
재전송으로 인해 딜레이가 생겼다고 하셨는데, 해당 동작은 TCP통신의 전송 매커니즘으로 인해 보낸 데이터에 대해 ACK가 오지 않으면, 데이터를 재전송하게 되도록 되어있습니다. 패킷유실은 네트워크 불안정, 혼잡 등으로 발생할수 있는 문제입니다. 패킷 유실에 대해서는 저희도 확인할수 있는 부분은 없습니다.
또한, 패킷유실 후 상대방에 보낸 재전송패킷에 대해 W5300이 응답했기때문에 정상적인 동작으로 볼수 있습니다.
RE: RE: [W5300] 통신 불안정 문의
by irina WIZnet ·
Non OS를 사용할경우 send 명령어가 내리면 데이터는 전송되어야하는 것이 맞습니다.
저희가 제공하고 있는 ioLibaray를 사용해서 작성하신걸까요?
아직까지는 말씀해주신 부분의 문의가 없었어서, 어떤 상황에서 발생하는지 자세한 설명 부탁드립니다.
RE: [W5300] 통신 불안정 문의
by MG O ·
간헐적이긴하지만, 패킷 유실이 빈번히 발생 될 수있는 부분인가요?? W5200 에서는 이런 증상은 없었거든요;;
RE: [W5300] 통신 불안정 문의
by MG O ·
현재 환경은 NON-OS 입니다,
제공 해주신 ioLibrary 기준으로 작성하였고, lowlevel 부분만 저희 보드에 맞도록 수정 하였습니다.
PC에서 전송하면, W5300에서 응답 올 동안 대기 상태로 있고, W5300 에서 응답이 오면, 다음 명령을 진행하도록 진행 됩니다. SEND 명령을 처리하고, 보드상에서는 명령이 끝났는데, Wireshark 에서 보면, 제가 보낸 시점에는 패킷이 발생 하고 있지않다가,
Retranssmission 패킷이 발행되면서 제가 이전에보낸 데이터가 같이 전송 되는 현상 입니다.
이 부분때문에, w5300 타임아웃을 얼마로 잡느냐에 따라 처리 시간이 많이 걸립니다.
RE: [W5300] 통신 불안정 문의
by lawrence WIZnet ·
안녕하세요
혹시 캡쳐하신 파일과 업로드한 파일의 IP가 다른데 증상이 있는 192.168.0.107로 캡쳐된 파일을 전달받을 수 있을까요?
그리고 socket을 no delay 설정하신 이유가 있으실까요?
PC 데이터를 수신후 곧바로 data를 전송하는 경우 ack 패킷이 data와 함께 전달되는 부분이라 중복동작되지 않을까 싶습니다.
그리고 w5300에서 사용하는 소켓의 재전송 설정 값 및 할당된 버퍼사이즈 확인이 가능할까요?
문의주신 내용중에 SEND를 완료한 경우는 SENDOK를 확인하셨다는 걸로 이해하면 될까요? 그리고 동시에 SEND packet과 재전송 packet이 전송된다는 것은 W5300이 두개의 동일한 패킷을 전송한다는 의미일까요?
감사합니다.
RE: [W5300] 통신 불안정 문의
by MG O ·
107 IP 에 대한 로그를 삭제해서, 해당 증상과 동일한 DUP ACK 로그를 첨부 하였습니다.
DUP ACK.zip (1.8 MB)
Socket No Delay 설정 이유
→ 대용량으로 받아야 되는 데이터가 있으므로, 성능 향상의 목적입니다.
→ 실제로 끄고 테스트를 해봤을때, 성능 차이 많이 났습니다.
→ 중간에 껏다 켯다 할 수가없어서, 켜놓고 쓰기로 결정 하였습니다.
소켓 재전송 설정 값
→ RCR : 3, RTR 1000
→ RTR 의 경우 5000 이었으나, 송수신 응답 속도 문제로 1000으로 수정.
소켓 메모리 버퍼 사이즈
→ 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번만 사용 함.
Send 완료 경우는 Sendok 가 맞습니다.
→ TimeOut 시간이 짧아서 그런가 싶어서 3초로 늘렸을때, 3초 정도 응답이 가지않다가 3초 타임아웃 발생시, 제가 보낸 패킷정보가 먼저 송신됨과 동시에 Retranssmission 발생 되었습니다. Retranssmission 발생 되는 현상도 첨부 하였습니다. 해당 로그는 RTR 값이 1000일때 발생 된 로그 입니다.
Retranssmission.zip (1.8 MB)
H/W 의 문제 가능성이 있습니까?
RE: [W5300] 통신 불안정 문의
by lawrence WIZnet ·
안녕하세요
보내주신 내용토대로 패킷확인을 진행하겠습니다.
만약 W5300 칩으로 별도 하드웨어 디자인을 하셨다면, 저희쪽에서 디자인 검토를 해드릴 수 있을 것 같습니다.
하드웨어 설계하신 거버파일이나 전체 공개가 어려우시면 W5300 및 이더넷 설계관련해서 PCB 검토가 가능한 회로를 캡쳐해서 보내주시면 하드웨어 엔지니어분 통해서 확인해보겠습니다.
감사합니다.
RE: [W5300] 통신 불안정 문의
by MG O ·
파일 받으실 메일 주소 알려 주실수 있으신가요?
RE: [W5300] 통신 불안정 문의
by lawrence WIZnet ·
alan@wiznet.io 메일로 부탁드립니다.
RE: [W5300] 통신 불안정 문의
by lawrence WIZnet ·
안녕하세요
wireshark를 통해서 검토하였으나 보내주신 자료에서는 말씀하신 증상이 없었습니다.
혹시 해당 증상이 확인된 부분을 캡쳐로 전달주실 수 있으실까요?
보내주신 파일을 검토하였으나 아래처럼 패킷이 깨끗한것으로 확인됩니다.
만약 wireshark 필터링후 문제되는 패킷이 삭제되는거라면 전체를 보내주시면 제가 ip addr로 필터링해서 확인해보겠습니다.
DUP ACK 파일
retransmission 파일
RE: [W5300] 통신 불안정 문의
by MG O ·
제가 올려드린 파일을 다시 받아서 확인 해봤는데, 에러가 존재 합니다.
DUP ACK 파일은 NO.6978
Retransmission 파일은 NO.54911
재확인 부탁 드립니다.
저는 tcp.analysis.duplicate_ack || tcp.analysis.retransmission 필터를 사용 했습니다.