WIZnet Developer Forum

Keep Alive 관련 문의

안녕하세요.

W5300을 TCP Server로 사용하는 장비를 개발하고 있습니다.
interrupt방식을 사용하고 있고요.
네트워크는 사설망이 아닌 전용IP로 구성이 되어 있는 것 같습니다.
(10.10.xxx.xxx 로 구성되어 있음)

하루에 20건 가량 접속이 끊겼다가 수십ms 내 다시 붙는 현상이 있습니다.
traffic에 의한 끊김 현상으로 큰 문제가 아니라고 판단하는데요,
문제는 간헐적으로(몇 일 또는 몇 주, 비주기적으로) client에서 접속 끊김을 인식하고 재접속을 하는데,
server 쪽에서 접속을 거부한다고 합니다.
그 때 황색 LED가 점멸하지 않고 점등상태로 계속되어 있고요.

Server 쪽에서는 Keep Alive 기능을 구현하여 Time out 체크하여 socket 처리를 하고 있습니다.
Sn_KPALVTR = 1로 하여 5sec 마타 KA Packet을 보냅니다.
실제로 Lan Cable을 제거하여 비정상 종료했을 경우 5sec 후 Time Out interrupt가 걸립니다.

Client는 PC에서 C#으로 구현되어 있는데요,
마찬가지로 Keep Alive 기능이 구현되어 있으며,
Keep Alive Time = 1000ms, Keep Alive Interval = 10ms 로 설정이 되어 있습니다.
(Keep Aliver Time, Keep Aliver Interval 이란 개념을 잘 모릅니다만, 10ms 주기로 계속 Packet을 보내는건 아닌지 추측합니다)

이해를 돕기 위해 내용을 길게 서술하였는데요,
궁금한점은 client에서 KA Packet을 수십ms 간격으로 송수신 한다면,
그걸 받아들이는 W5300 Chip에서 과부하로 인해 뻗어버리지 않은가 해서 문의를 드립니다.

여건상 디버깅이 어려워 당시 Socket 상태가 어떤지 확인이 불가능하여 추측만 하고 있습니다.

혹시나 위 증상이 발생할 수 있는 다른 요인이 있을까요?

안녕하세요

먼저 10.10.xxx.xxx는 사설 IP입니다.
일반적으로 10.0.0.0 - 10.255.255.255 / 172.16.0.0 - 172.31.255.255 / 192.168.0.0 - 192.168.255.255 의 대역을 사설 IP라고 부릅니다.

해당 문제에 대한 이유는 Server가 TCP 접속을 유지하고 있기 때문에 Client의 접속을 거부하는 것 같습니다.
해당 Server가 몇 초 동안 거부를 하나요? Client가 재접속하는 시간이 접속을 유지하는 시간보다 짧다면 timeout하는 시간을 좀더 빠르게 설정하시면 문제를 해결 가능합니다.

timeout 시간을 설정하시는 방법은 Sn_KPALVTR 레지스터를 이용하는 방법과 SEND_KEEP 명령을 이용하는 방법이있습니다.

그리고 keep alive interval에 대해서는 잘 모르겠네요. keep alive time간의 간격을 말하는건지 잘모르겠습니다.

감사합니다 :slight_smile:

Copyright © 2017 WIZnet Co., Ltd. All Rights Reserved.