네트워크 카드 2개 사용해서 전송하기

jiny92의 이미지

네트워크 카드 2개를 이용해 udp 패킷을 송/수신 하려고 합니다.
Channel bonding 인터페이스를 소프트웨어 상에서 구현하는 거죠..

송/수신 시스템에서 한 개의 네트워크 카드를 사용한다고 가정하면 전체 대역폭은 2Gbps 가량 됩니다.

송신측에서는 Thread 사용없이 순차적으로 패킷을 전송합니다.
예를 들어, 1000 개의 연속된 패킷을 네트워크 카드 1번으로 보낸 후,
다음 1000개는 네트워크 카드 2번으로 전송합니다(sendto()). 같은 방식으로 카드 1과 카드 2를 번갈아
가면서 전송하게 됩니다.

수신측에서는 select()를 이용해 네트워크 인터페이스를 구분하고 버퍼링하게 됩니다.
(수신측도 2개의 네트워크 인터페이스를 이용합니다)

지금 부터 질문 들어가겠습니다.
select()를 통해 얻은 소켓 정보를 가지고 수신측에서 패킷을 recvfrom()하는데
out-of-order된 패킷이 다량 발견됩니다. RTP 패킷을 사용하므로 out-of-order를 체크할 수 있습니다.
송/수신 시스템이 스위치를 거치지 않고 직접 연결되어 있는 상황입니다.

일단, 제 경우에 생각할 수 있는 out-of-order 패킷의 발생원인과 해결 방법에 대해서 알고 싶습니다.
out-of-order 패킷을 buffering 한 후에, re-ordering을 하지 않는다는 조건이 있습니다.

조금 더 구체적으로
1. 송신측에서 패킷이 송신되는 순서가 바뀔 수 있는지, 그렇다면 해결 방법은 무엇인지?
2. 수신측에서 out-of-order가 발생했다면, 어디에서 문제가 되는지, 어떻게 해결할 수 있는지 알고 싶습니다.

Rica의 이미지

인터페이스1에서 패킷 1000개의 전송이 완료되기 전에 인터페이스2의 패킷 전송이 시작되는 것이 아닐까요?
send()가 링크 레이어에서 전부 보낸 다음에 리턴하는 것이 아니고, 커널 버퍼나 랜카드 버퍼에 일단 채워넣었으면 바로 리턴할 테니 말입니다. 인터페이스1을 위한 버퍼에 패킷들이 남아 있는 상태에서 인터페이스2의 전송을 시작하면 순서가 뒤집힌 패킷들이 생기겠죠.

댓글 달기

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