W5100 웹서버시 클라이언트에서 동시에 여러파일요구시


#1

W5100로 웹서버구동하고 있습니다.
클라이언트 웹브라우저에서 동시에 여러파일 요청시(REQUEST) 랜덤하게 한두개의 요청이 접수되지 않습니다.
순차적으로 시간차를 두어 요청하는것은 이상없습니다.
소켓을 4개까지 해봐도 마찬가지구요.
TCP 루프백테스트-AX1 은 100퍼센트 퍼펙트하구요.
ATMEGA128에 다이렉트모드에 인터럽트는 사용치 않고요.
제품 출시전에 이런걸 겪으니 황당하군요.


임베디드 웹서버 구축 문의
#2

Wireshark 프로그램으로 해당 상황을 캡처해서 보내주시면, 더욱더 면밀한 검토가 되겠습니다.


#3

jquery.js 70kbyte
jquery-ui 50kbyte
index.html 30k
xx.css 20k
jquery-ui.css 20k
*.png 10 여개 등

등등 무지하게 많은 캡쳐 데이터를 진정 보기 원하십니까?


#4

W5100의 경우 최대 동시 접속이 4channel 만 지원합니다.
여기서 착각하기 쉬운 것인 4channel이 동시 사용자 4명을 의미하지는 않습니다. 특히 Webserver 구현시 더더욱 그러합니다.
Web-Browser의 경우 한페이지에 여러 request URI가 있을 경우 동시에 Webserver에게 요구를 하기 때문에, 4개를 넘어 갈 경우 W5100에서 이를 처리하지 못합니다.
index를 포함한 여러 파일들이 수십Kbyte씩 되는 거는 걸로 보입니다. 이런 URI를 처리를 하기 위해선 생각보다 오랜 시간걸립니다. 게다가 여러 Web-Browser가 동시에 접속을 각 Client로 들어 오는 최대 4개의 index.html를 처리하는 것도 버거워 보입니다. 또한 다른 URI도 동시에 계속 요구되어지기에 특정 페이지의 특정 URI가 loss될수 있는 문제는 언제든지 발생가능합니다.

Embedded Webserver 개발시 최대한 GUI를 간단히 하시고 page를 간소할 필요가 있습니다. W5100보다는 W5300이 해당 Webserver 구현에 좀더 유리하지 않을까 생각이 듭니다.

감사합니다.


#5

한페이지에 여러 request URI가 있을 경우 동시에 Webserver에게 요구를 하기 때문에, 4개를 넘어 갈 경우 W5100에서 이를 처리하지 못합니다.
—> 4개가 넘어갈 경우 5100에서 요구를 처리하지 않고 대기 하다가 빈 채널이 생기면 처리하지않나요?
그렇게 알고 있습니다.
말씀하시기는 동시에 4채널 처리중에 추가 요청오는 것은 버려버리게 된다는 것으로 들립니다.


#6

말씀하신 것이 맞습니다. 하지만,
정확한 것은 아니지만, Web-Browser가 실패한 Request-URI를 얼마나 많이 얼마나 자주 요구하는지에 따라 다릅니다.
W5100의 모든 Server Port가 연결이 되어 있고, 또다른 접속 요구가 들어 올경우 Reset Packet이 전송됩니다. (이부분은 Wireshark를 통해 확인이 가능할 겁니다.)
해당 URI의 반복적 RST 수신은 Web-Browser에서 더이상 수신을 하지 않도록 만듭니다. 일반적으로 TCP 재전송인 경우 200ms, 400ms, 800ms , 1.6s ,… 7번 정도 재전송을 시도하지만, Web-browser가 어떻게 동작하지는 저도 정확히 알지 못합니다.


#7

wireshark 로 확인한바 모든 소켓이 사용중일때 브라우저에서 500ms 간격으로 3번 syn 요청하고
이에 rst 가 3번 응답후 더 이상은 요구하지 않고 에러로 처리합니다.
구글링 해보니깐 rst 응답은 요청패킷이 손상된때 rst 응답하는 걸로 되어있는것 같습니다
이런경우에는 차라리 rst 응답을 하지 않고 소켓이 사용가능할때 syn ack 를 보내는 방법이 정석일 것으로 생각되는데요
이런 방법은 없겠는지요?


#8

현재 W5100뿐만 아니라 현 WIZnet Chip set은 지원하지 않습니다.
standard TCP/IP stack 은 tcp syn 요구가 있을때 Listen 하고 있는 Port가 없는 경우 RST을 보내도록 되어있습니다. WIZ도 이를 따르고 있고, 모든 Stack 처리가 Hardwired logic으로 처리됨으로 이를 지원할 방법은 없습니다.

앞서 말씀드린대로, Page를 최대한 간단히 구성하시거나, 8채널을 지원하는 W5200/W5300/W5500을 추천드립니다.


#9

답변 감사드립니다.

pcb가 양산준비중이라 ㅉ
혹시 5100 과 핀투핀 호환 가능한 칩이 w5x00 시리즈 중 있는지요?


#10

W5100과 핀투핀으로 호환이 가능한 칩은 없습니다.
migration 문서를 이용하면 사용할 수 있습니다.
(W5100 -> W5200 : 첨부파일 참조)
이는 회로 자체가 변경되는 것이므로, pcb양산중이시니 다른 칩으로 변경하는것은 불가능 할 것 같습니다.
Migration_W5100_to_W5200.zip (608 KB)


#11

대충 빼고 삭제하고 해서 해결하였습니다.
많은 도움 감사합니다.


#12

SPI mode가 아닌 Direct Bus mode Interface를 사용하신다면, W5300을 추천합니다.
물론 W5100과 핀호환성은 없습니다.


#13

많은 도움 감사합니다.