[도와주세요!!] 혹시 패킷센더(packet sender)라는 프로그램 써보신 분 계신가요? TIME_WAIT과 함께 질문합니다.

wonjnlee의 이미지

안녕하세요. 네트워크 쪽에서 개발자로 일하고 있는 초급 개발자입니다.
회사에서 네트워크 패킷을 만들고 이것을 보내서 서버에서 테스트하는 작업을 하고 있는데요.
패킷을 만들어서 보내는 툴로 packet sender(https://packetsender.com)라는 프로그램을 사용하고 있습니다.

그런데 이 프로그램이 문제(?)라고 하기엔 그렇지만 특이한 방식을 갖고 있더라구요.
tcp의 경우 period를 입력해서 매초마다 만들라고 지시하면 tcp의 세션을 계속해서 만들고 있었습니다 (syn-syn/ack-ack->fin)
패킷을 보내고나면 세션도 종료하구요.
원래 다른 프로그램도 그러는지 잘 모르겠지만....

이 문제인지 모르겠습니다만.. tcp와 udp를 몇개씩 만들어서 패킷을 보내고 서버에서도 동일하게 pc로 보내다보면
어느순간 서버나 pc가 동작을 멈추더라구요.
이게 제가 서버나 pc에 만든 프로그램의 문제인지, 혹은 프로그램의 문제인지 잘 모르겠습니다.

제 의견은 tcp가 계속해서 세션을 끊고 맺는 과정에서 tcp 패킷이 엉키는 현상이 아닌가 싶어서요..
1개만 되더라도 중간에 멈추는 경우가 발생했습니다.
TIME_WAIT 현상과 연관된거 같은데.. 맞는지는 잘 모르겠습니다.

질문이 잘 이해가 안 되신다면, 답글로라도 한번만 더 여쭤봐주셨으면 감사하겠습니다.
몇주째 테스트하면서 고쳐지지 않는 문제인데, 이게 왜 그런지 잘 모르겠어서 여기에 도움을 청해봅니다.

감사합니다!!

ymir의 이미지

서버나 PC 가 동작을 멈춘다는게 어떤 의미인지 좀 더 정확한 묘사가 필요할 것 같네요.

아마도 TIME_WAIT 상태의 socket 들 때문에 fd 가 꽉차서 더 이상 새로운 socket 이 생성되지 못하고 있는 게 아닐까 싶은데..
netstat 으로 상태 체크해 보시고.. 맞다면 아래 게시물 참고해 보세요.

https://kldp.org/node/149106

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

wonjnlee의 이미지

제가 지금 pcap으로 패킷을 확인하고 있습니다.
근데 pcap에서 확인을 못하더라구요... 패킷센더 프로그램에서도 패킷이 더이상 전송된다고 나오지 않구요..

그래서 멈춘다는 말로 적었습니다. 이해가 어려웠다면 죄송합니다.
답변 주셔서 너무 감사해요.

yhsuk의 이미지

툴 받아서 실행해 보니 Persistent TCP 체크박스 체크하면 접속 유지되네요.

Signature :) - "여유를 갖고 행동하되 게을러지지 말자"

익명 사용자의 이미지

제가 알아본바로 TIME_WAIT은
다수의 tcp 세션이 계속해서 연결 및 해제를 반복할 때 남아있는 time_wait 상태에서 소켓을 보내지 못해서 정지현상이 일어난다고 보았는데요,

그럼 persistent로 하면 time_wait 멈춤현상을 제외하고 테스트해볼 수 있다는 말이 되는건가요?
또 하나 궁금한게, 지금 여러 패킷들을 복합적으로 보내서 부하테스트를 해보려고 패킷을 보내는건데..
혹시 좋은 툴 추천해주실 수 있으신가요?
패킷센더는 그러면 tcp 패킷을 하나씩만 보낼 수 있을 것 같아서...

부탁드리겠습니다!

yhsuk의 이미지

persistant로 한다면 TIME_WAIT 문제는 안생기겠죠. 이거는 한 번 실행해 보시면 되지 않을까 합니다.

접속을 유지하지 않더라도 제가 알기는 TIME_WAIT는 먼저 접속을 끊는 쪽에서만 생기구요.
정상적이라면 클라이언트가 접속을 끊고 클라이언트쪽에 TIME_WAIT가 생깁니다. 서버쪽은 아니구요.
로직이 비정상 패킷을 보냈다고 서버쪽에서 접속을 먼저 끊는 경우엔 서버쪽에 TIME_WAIT가 생깁니다.

웹서버 같은거야 apache ab도 있고 여러가지 있는데 특정 패킷이면 보통은 그냥 만들어 써서, 잘 모르겠네요.
자기가 만든 패킷이면 스트레스 테스트툴도 만드는 게 어렵지 않으니...

그냥 드는 생각은 복합적으로 보내시려는 패킷이 서로 독립적인거면, packet sender를 여러 개 띄워서 테스트 해도 될 것 같습니다

Signature :) - "여유를 갖고 행동하되 게을러지지 말자"

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.