---
title: "w5100 keepalive 문의"
url: "https://maker.wiznet.io/forum/14173"
markdown_url: "https://maker.wiznet.io/forum/14173/md"
type: "Forum topic"
category: "Ethernet Chips"
author: "kss0522"
created: "2021-03-02T04:35:20+09:00"
last_activity: "2021-03-02T21:47:53+09:00"
language: "ko"
views: 731
replies: 3
source: "WIZnet Makers forum (https://maker.wiznet.io/forum/)"
---

# w5100 keepalive 문의

## Question

Asked by kss0522 on 2021-03-02 in Ethernet Chips.

w5100 TCP 통신을 사용 하고 있습니다.

W5100에 PC 2대가 연결 되어있는 상태에서 강제로 PC 1대의 LAN선을 제거시

SOCK_ESTABLISHED 상태로 유지 되고있습니다.

그래서 keepalive를 사용해 통신 안될 시 TIMEOUT을 사용 하고 있는데요.

RTR 2200(220mS) RCR(8) 설정 후 IINCHIP_WRITE(Sn_CR(s),Sn_CR_SEND_KEEP) 1회 전송 후

재전송 타임을 체크해 보니 1회당 keepalive 타임이 220mS가 나와야 하는데 2초~4초로 랜덤하게

나오고 있습니다. 220mS * 8 = 약 1.8초 가 나와야 하는거 같은데 랜덤하게 나와서 8회 전송 완료

타임이 약 20초 가량 나오고 있습니다. W5100에서 RTR 타임마다 RCR 카운트 만큼 알아서 처리해

주는거 같은데 위같은 증상이 나오는 이유가 무엇입니까? 해결 방안이 있습니까?

## Replies

### Reply 1 by irina, 2021-03-02

![](https://avatars.discourse-cdn.com/v4/letter/k/e99b99/48.png) kss0522:

> 220mS * 8 = 약 1.8초 가 나와야 하는거 같은데 랜덤하게 나와서 8회 전송 완료
>
> 타임이 약 20초 가량 나오고 있습니다

wireshark tool을 이용하여 해당 패킷을 확인하고 계신건가요?
만약 그렇다면, 동작하는 패킷을 첨부해주시면 확인해보도록하겠습니다.

또한 RTR와 RTR 값을 설정한 부분도 첨부해주세요.

### Reply 2 by kss0522, 2021-03-02 (in reply to reply 1)

[![tcp](https://maker.wiznet.io/forum_uploads/wiznet/original/2X/a/a535957529caa818f80c7af6786fe69881c9a1db.gif) tcp1218×818 192 KB](https://maker.wiznet.io/forum_uploads/wiznet/original/2X/a/a535957529caa818f80c7af6786fe69881c9a1db.gif)

setRTR(2200);
setRCR(8);
셋팅은 초기 INIT 할 때 한번 셋팅 합니다.
void setRTR(uint16 timeout)
{
IINCHIP_WRITE(RTR0,(uint8)((timeout & 0xff00) >> 8));
IINCHIP_WRITE((RTR0 + 1),(uint8)(timeout & 0x00ff));
}
void setRCR(uint8 retry)
{
IINCHIP_WRITE(RCR,retry);
}

### Reply 3 by becky, 2021-03-02

안녕하세요

W5100S 문서에서 해당관련 내용을 캡쳐해드립니다.
W5100과 원리는 같습니다.

[![image](https://maker.wiznet.io/forum_uploads/wiznet/original/2X/9/9d53c1b7881e3558863e7f838e917e9ea63a292f.png) image618×815 69.9 KB](https://maker.wiznet.io/forum_uploads/wiznet/original/2X/9/9d53c1b7881e3558863e7f838e917e9ea63a292f.png)

위의 내용처럼 Retransmission time은 배수로 증가하여 아래와 같이 계산됩니다.
220ms + 220ms*2 + 220ms *4 + 220ms * 8 + 220ms * 16 …

올려주신 와이어 샤크를 보면 초기 재전송 값이 220ms가 아닌 440ms 로 보이는 점이 의문이지만 그이후 값은 위의 내용과 일치하는 것으로 보입니다.

---

Source: https://maker.wiznet.io/forum/14173
