W5500 접속끊김 문제


#1

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



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


#2

안녕하세요…

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:


#3

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

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


#4

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

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

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


#5

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