NAT를 통한 로컬과 호스팅 서버간의 통신

unuseid의 이미지

오픈소스 사물인터넷 프로젝트인 leshan 과 wakaama를 이용해 테스트중 로컬에서는 문제가 없으나
호스팅 서버를 사용해 테스트하자 문제가 발생했습니다
(leshan = 오픈소스 사물인터넷 서버와 이를 조작할수 있는 웹페이지 제공 https://github.com/eclipse/leshan)
(wakaama = 오픈소스 사물인터넷 클라이언트 장비 https://github.com/eclipse/wakaama)

먼저 로컬내에서의 테스트환경입니다.

ubuntu(leshan server) <---> 실제 장비client, ubuntu(client)

그리고 호스팅 후의 테스트 환경입니다

ubuntu(client), 실제 장비 ---------공유기------------ hosting ubuntu(leshan)

모든 연결은 UDP로 연결 됐고 호스팅서버는 vm ubuntu이미지를 사용합니다.
공유기에는 테스트에 사용한 장비외에도 기타 많은 장비들이 붙어있습니다.
local의 ubuntu 는 vm이며 네트워크는 브릿지 모드를 사용했습니다.

위와같은 환경에서 테스트중 로컬에서는 발생하지않던 아래 문제가 호스팅서버를 이용해 테스트하자 나타납니다.

hosting 서버에서 내리는 명령(udp를 통해 장비까지 도달해야 할 명령) 이 수초 뒤에 도착하거나 도착하지 않습니다
빈도가 매우 자주 일어나며 한번 명령이 도착하지 않는 현상이 나타나면 수분~15분 정도 지속 됩니다.
client는 server에게 지속적으로 자신이 살아있음을 의미하는 update신호를 보내야 하는데(보내지 않으면 sever는 client목록에서 삭제)
위와같이 서버가 client에게 명령을 전달하지 못하는 현상 와중에도 update신호는 잘 받고 처리합니다.(client의 last updatetime이 갱신됨)

물론 빠른시간내에 정상적으로 작동할 때도 있습니다.

Necromancer의 이미지

udp 쏠때는 udp+ip+mac 헤더 포함해서 mtu 안 넘기는 크기로 나눠 쏘는게 좋습니다.
mtu 넘는길이로 쏘면 ip, mac 레벨 내려가면서 분할되서 날라가는데 분할된 패킷 여러개중 하나만 망가져도 전체가 없는것처럼 됩니다. 언제나 전송 한다는 보장도 없고
update같은 단순 신호는 얼마 안 필요하니 그닥 문제가 되지는 않겠지만.

Written By the Black Knight of Destruction

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.