W5500 접속끊김 문제

안녕하세요. W5500을 이용해서 오디오 스트림 리시버를 제작중에 있습니다.
원래 W5100으로 개발을 해서 시연을 완료하였고,
W5500으로 변경해서 재개발하고 있습니다.
문제는 서버에 접속해서 socket established상태에서
계속해서 오디오 스트림만 전송받아서 재생하면 되는데,
접속후에 몇 십분 정도 후에 갑자기 접속이 끊깁니다.
서버쪽 문제인가 해서 서버쪽에서 WireShark 돌려보았는데,
remote host 즉 W5500측에서 RST 신호를 보내서 connection close가
되는 것입니다.



이런 경우에 W5500 쪽에 디버깅포트 연결해서 확인을 하는데,
소켓 스테이터스는 0x17 즉 socket established에서 변함이 없습니다.
분명히 접속이 끊겼는데 알수가 없으니 어떻게 해결이 안되네요.
원인에 대한 조언을 좀 부탁드립니다.

안녕하세요…

Sn_IR/Sn_CR 값 확인을 부탁드립니다.

  1. 현 상태에서 Sn_IR(RECV or SENDOK)와 Sn_IR(TIMEOUT)가 어떤 값을 가지고있는지?
  2. Sn_CR에 명령을 내린후 Clear되었는지?
    => Sn_CR의 경우 W5500이 command를 인식하면 자동 Clear되어 설계가 되어있으며,
    Clear이 되었다 하더라고 처리중일 수 있습니다.
  3. 제공하는 Driver를 사용하신것인지?

thanks :slight_smile:

Sn_IR이나 IR은 0x00 그대로입니다.
인터럽트 방식을 쓰기 때문에, 인터럽트가 걸리면 바로 처리하고 클리어합니다.
Sn_CR은 설명드렸다시피, 최초 서버 로그인 이후에는 스트림만 받기 때문에,
딱히 명령내릴일이 없습니다.
끊길 때도 딱히 명령을 주거나 하지는 않습니다.
즉 TCP Connection 이후에는 서버로그인외에는 서버쪽으로 데이터를 주는 경우는
없습니다.
제공하는 드라이버는 사용하고 있습니다.
다만 예제 코드가 없어서, w5100에서 사용했던 예제코드를 좀 수정해서 사용하고
있습니다.

그리고 가장 큰 의문사항이 W5500이 tcp socket을 통해서 RST 패킷을 보내고,
socket established 상태로 유지되는 것이 가능한 일인가 하는것입니다.
어떤 이유건 정상적으로 RST 패킷을 보냈다면 close상태가 되는것이 맞는게 아닌가 해서요.

W5500의 Logic상 TCP establish상태에서 RST packet을 송신하는 경우는 수신한 패킷에 대한 Socket이 존재하지 않을 경우입니다.

  • 보내주신 패킷 Capture는 jpg형태라 *.pcap 타입으로 support@wiznet.co.kr로 보내주시면 더욱 도움이 되겠습니다. (메일 제목은 W5500 접속끊김 문제으로 보내주시면 됩니다.)

  • Logic구현 및 검증시 거친 테스트 이지만, TCP Client Mode로 수신전용과 같은 상태를 만들어 테스트 하여 알려드리도록 하겠습니다.
    감사합니다.

원인을 찾은 듯 합니다.
전혀 예상치 못했던 문제네요… -_-;;
회사 내 로컬 아이피 (유동 아이피는 아닙니다.)를 사용중인데,
아이피 충돌이 있었던 듯 싶습니다.
IP conflict error를 검출하게 해 놨는데, 안나오길래 그건 생각지 못했네요.
스위치를 거쳐서 외부 서버로 나가다 보니, ARP상에서 IP 충돌을 감지하지
못한것 같네요…
동작을 잘 하다가 갑자기 그러니 좀 황당했습니다.
답변 감사합니다.