[완료] 패킷 크기에 따라 성능에 영향을 주는 이유?

mdh2322의 이미지

현재 작업중인 네트워크 보드 성능 시험중에
64, 128, 256, 512, 1024, 1518byte(CRC포함)를 쏘면
64바이트 패킷의 경우 1518바이트 패킷과 비교했을때 월등히 떨어지더군요..(성능은 바이트 크기에 비례한듯...)

IPG(Inter Packet Gap)그런게 연관이 있는건가요?
주변에 물어보니 원래 그렇다고 하던데..ㅎ 무슨 이유인지 아시는분 가르침 부탁드립니다.. _ _

park7275의 이미지

원하시는 답변인지는 모르겠지만.

패킷 rate 가 100% 기준이라고하면

64byte 짜리가 1518 byte 보다

같은 총량의 패킷을 보낸다면 헤더가 훨씬 많아지고..

네트워크 스택에서 처리해야 하는 양이 많이 늘어나서

그렇다고 보이네요.

일반적으로도 어플래케이션 수신율/송신율 계산에서 사용되는 수치가

패킷 size와 패킷 rate가 되는 편이고..

[KILL] 죽을각오로.........

[KILL] 죽을각오로.........

silverjh2의 이미지

성능 실험을 하신 대상이 네트워크 보드라고 말씀하셨지만, 저는 네트워크 장비를 예로 들어서 먼저 설명할게요.

스마트 비트나 아발란체와 같은 테스트 장비를 이용하면 "이 네트워크 장비(이하, 타겟 장비)는 이 정도 트래픽까지 처리할 수 있다."라는 것을 조사할

수 있습니다. 테스트 장비에서는 점차 속도를 높여가면서 타겟 장비에게 패킷을 뿌려준 뒤, packet loss가 어느 정도 대역폭에서 발생하는지를

체크(물론 내부적으로는 확률과 같은 수학적인 이론이 반영되어 있을 것 같습니다만...)하는 방식이죠. 이때, 타겟 장비에서 packet loss가

발생하는 경우는 대부분 장비의 CPU에 부하가 걸리는 경우입니다.

예를 들어 (계산하기 편하게) 테스트 장비에서 타겟 장비로 500bit짜리 패킷을 빠르게 보냈더니 초당 10개의 패킷을 처리할 수 있었다고 가정해 봅시다.

이때, 타겟 장비의 입장에서는 패킷 하나가 들어올 때마다 분석하여 기록하거나 뭔가 액션을 취하는 등의 작업을 할 겁니다. 방금 예로 든 경우에는

10번의 작업을 하고 나니 더는 CPU에 여유가 없었다는 말이 되죠.

이번에는 50bit짜리 패킷으로 테스트해 봅니다. 역시 CPU의 한계로 인하여 10번의 작업만 할 수 있습니다. 이러면 결론이 나옵니다. 패킷 사이즈가 500bit

인 경우는 500*10 해서 5000bps의 성능이 나옵니다. 하지만, 패킷 사이즈가 50bit 짜리는 50*10 해서 500bps의 성능밖에 나오지를 않습니다.

이 현상은 네트워크 보드에서도 동일하게 발생할 거 같습니다. 무슨 역할을 하는 보드인지는 모르겠지만, 패킷이 들어오면 보드 내의 MPU에서 패킷

단위로 작업할 것이고, 이 경우(네트워크 장비에서와 같은 이유로) 패킷 사이즈가 작을수록 처리량은 줄어들겠죠.

만약 보드가 이더넷카드처럼 단순한 작업을 한다면, 분명히 IPG도 영향이 있을 것입니다. 하지만, 더 복잡한 역할을 수행할수록 IPG보다는

CPU 혹은 MPU의 파워에 영향을 더 많이 받을 것으로 생각됩니다.

poplinux의 이미지

TCP 라면.. 핸드 쉐이크 과정 때문에 한번에 허용할수 있는 최대 크기로 전송하는게 빠릅니다.

========================
조직 : E.L.D(Embedded Linux Developer/Designer)
블로그 : poplinux@tistory.com
카페 : cafe.naver.com/poplinux

임베디드 리눅스 관련 프리렌서 지향

웃는 남자의 이미지

네트워크 성능을 평가하는 단위로는 시간당 패킷수 PPS (packet per second) 가 있습니다.
같은 대역폭에 같은 양의 데이터가 전송되더라도 패킷의 크기가 작을수록 PPS가 증가하고 네트워크 성능이 저하됩니다.
IP 프로토콜은 2계층에서 올라오는 frame을 받아서 IP fragmentaion 수행하는데
이게 패킷이 작을수록 처리해야 될 양이 많아지니 더 성능을 필요로 하게 됩니다.

비슷한 의미에서 datalink 계층에서 jumbo frame 이라고 frame 을 9000byte까지 올려서 네트워크 성능을 올리는 방법도 있습니다.

Nothing left after Nirvana.

----------------------------------------
Nothing left after Nirvana.

mdh2322의 이미지

네 답변들 감사드립니다~

현재 네트워크 장비를 스마트 비트로 성능 시험중입니다..
silverjh2님의 답변을 보고나니 궁금증이 확 풀렸네요. 저희가 사용하는 NPU가 패킷 단위로 패킷 헤더 파싱, L2/L3체킹을 수행을 기본적으로 수행을 해주어서
패킷 별 성능에 영향을 주는것이었군요.
감사합니다.

그러나 이제 때는 왔다

댓글 달기

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