네트워크 속도 측정 방법?

삽질토비의 이미지

기가 비트 이더넷 디바이스를 올려서 잘 쓰고 있습니다.
속도를 측정해 보려고,
PC 2대에 기가 비트 이더넷 지원되는 네트워크 카드 꽂아 놓고,
일반 UTP는 노이즈가 많이 낀다고 해서 기가 비트 이더넷용 케이블까지 구매해서 크로스로 연결했습니다.
PC_A에 ftp 서버를 실행시키고, PC_B에서 접속해서 다운로드해보았습니다.
다운로드 속도가 약 40 MByte/sec (320M bps) 정도 나옵니다.
물론 100M 랜카드에 비하면 빠른 속도 지만, 이론적인 속도 1G bps 에는 한참 못미칩니다.
ftp 전송은 패킷에 더미 비트를 많이 포함한다고 하더군요.

그래서 소켓 프로그램을 생각해보았습니다.
PC_A에 소켓 서버를, PC_B에 클라이언트를 구현해서 측정해보았습니다.
소켓 클라이언트는 계속해서 한 프레임당 1024 byte 만큼의 데이터를 스트리밍으로 보내주고,
소켓 서버쪽에서는 클라이언트와 연결이 되서 첫 프레임이 들어온 시간을 시작으로 1초동안 받아낸 데이터 수를 찍어보았습니다.
같은 프로그램을 실행시켜서, 측정한 결과,
100Mbps 이더넷을 사용할 때는 약 5MByte/sec (40Mbps) 정도로 나오고,
1Gbps 이더넷을 사용할 때는 약 12MByte/sec (96Mbps) 정도 나옵니다.
ftp 테스트 보다 훨씬 못미치는 테스트였습니다.

테스트 할 만한 방법이 있으면 부탁드립니다.

참고로 100Mbps 속도 테스트는 두 대의 PC 모두 100M 이더넷 디바이스에 물려서 한 것이고,
1Gbps 속도 테스느는 두 대의 PC 모두 1G 이더넷 디바이스에 물려서 한 것입니다.

yschoi의 이미지

하드웨어나 소프트웨어 상에 병목구간이 없더라도 TCP상의 한계로 인해 속도를 내지 못할 수 있습니다.

FAST TCP, HSTCP, BITCP(혹은 BIC)로 검색하시면 리눅스용 패치를 구하실수 있을껍니다.

아.. FAST TCP는 공개(?)버전인지는 잘 모르겠습니다.

http://www-iepm.slac.stanford.edu/bw/tcp-eval/ 이곳도 한번 참고해보세요.

pung96의 이미지

일반 pci 에 1G 이더넷 디바이스 물리면 pci 한계가 있어 최대 550Mbps 정도 밖에 안나옵니다.

뿌직의 이미지

만약 커널 버전이 2.4대라면,
최신 커널(2.4.30이후 또는 2.6)로 업 하시면 많은 속도 향상을 실감하실 수 있으실 겁니다. 2.6대는 기본적으로 BIC-TCP를 지원하고, 2.4는 아주 후반대 커널에서 지원하는 것으로 알고 있습니다.
그리고 /etc/sysctl.conf를 적당히 손봐서 각종 버퍼값을 수정하시면 또한 어느정도 성능향상이 있습니다. 이 파일 수정하는 것은 구글신께 여쭤보시면 아마 친절이 가르쳐드릴 겁니다.(저도 어떻게 수정했는지 잊어버려서요^^;;; )

마지막으로,
혹시 모르실까봐, 네트워크 성능 측정 프로그램이 있습니다.
iperf라고 이것 또한 구글신께 여쭤보면 근방 찾으실 수 있으실 겁니다.

--------------------------
`0-
-0`

mach의 이미지

* 위에서 말씀하신대로 TCP/IP자체의 오버헤드가 있습니다.
소위 프로토콜 오버헤드로 일단 정상적인 응용(ftp등)으로 테스트하면, 해당 속도(기가)가 나올 수는 없습니다.
* 커널파라메터를 (특히, 소켓송수신버퍼크기등)튜닝을 해서 일반 PC의 특정 응용프로그램의 통신속도를 향상시켜 볼 수 있습니다.
* iperf는 위에서 말씀하셨고, 저도 수차례 언급한바 있지만, 성능측정시 사용할 수 있는 좋은 도구입니다. 첫페이지만 보고도 테스트가 가능할 정도로 간단명료하게 설명되어 있습니다.
http://dast.nlanr.net/Projects/Iperf/
아울러, http://dast.nlanr.net/NPMT/ (동일 사이트) 를 잘 살펴보시면 다양한 정보를 얻으시리라고 믿습니다.
* smartbit라는 장비를 이용하면 게이트웨이 형태의(ips, f/w등) 성능을 측정할 수 있습니다. 고가이므로 구매는 어려우실테고, 한국정보보호진흥원(KISA)에 의뢰하여 테스트시간을 배정받을 수 있을것입니다.
* 토마호크(tomahawk)라는 오픈소스는 poor man's smartbit라고 할 수 있을지도 모릅니다(개인적인 생각) 기가스위치에 트래픽 제너레이터(pc)를 다수개 연동하여 기가트래픽을 생성가능할 수 있습니다. 티핑포인트(3com으로 M&A)라는 외산 IPS개발사의 SE가 만들어서 공개한 것입니다. 저도 한번 해본적이 있기는 합니다. 좀 오래되서....자세히는 말씀드리지 못하겠군요. 문서보고 따라하시면 별 무리없으시리라 봅니다. 소스에 인터페이스(eth0,eth...?? 가물가물하군요)명이 하드코딩되어 있어서 다소 패치가 (인터페이스명만 적절히) 필요했던 것으로 기억됩니다.
http://tomahawk.sourceforge.net/
* 그리고,... 64비트 기가이더넷과 PCI-X 64bit/133MHz bus "이상"의 보드를 채택하셔야 기가성능에 근접하는데 유리합니다.
------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.

------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.

삽질토비의 이미지

감사합니다.
iperf 를 사용하니까 쉽게 테스트가 되더군요.
패킷 사이즈나 패킷 갯수, udp 사용 등등의 필요한 option 들이 다 들어있더군요.
덕분에 소스코드 고칠 필요도 없이 옵션 메뉴얼만으로도 원하는 테스트 결과를 얻었습니다.
생각보다 빠르진 않네요.
100Mbps 랜으로 연결해서 테스트 해보니까, 98Mbps 정도 나오고,
1Gbps 랜으로 연결해서 테스트 해보니까, 350Mbps 정도 나옵니다.
기가비트 이더넷이 붙어있는 PC 두대를 테스트 한것이 아니라,
power pc (mpc8560)과 pentium PC를 연결해서 테스트 했는데,
PC두대를 테스트 한다면 더 빠른 속도를 보이지 않을까 생각합니다.

아뭏든, 고수님들 덕분에 좋은 util 하나 챙겨갑니다.

컴파일러는 절대 거짓말을 하지 않는다.
믿지 못하겠다고, 두번! 세번! 컴파일 하지 마라.
목에 핏대 세우고, 암만 눈 부라려봐야 항상 너의 참패로 끝나는 싸움이다.
굴복하고 컴파일러가 시키는대로 해라.

sangwoo의 이미지

64bit PCI 슬롯이 있는 경우는 Netpipe로 테스트하면 거의 1000Mbps에 가까운 값들이 나옵니다. 800~900Mbps정도. 아마 PCI express도 비슷한 결과가 나오겠죠.
커널 2.6.9의 CentOS 4.2 이구요. TCP/IP의 오버헤드 자체는 별로 느끼지 못하겠더군요.

----
Let's shut up and code.

----
Let's shut up and code.

mach의 이미지

기가이더넷카드가 NAPI를 지원하고, 커널 디바이스 드라이버가 그렇게 컴파일되어 활성화되었다면 더욱 나은 성능을 보이겠습니다.
결국, application logic이 역시나 네트워크 응용의 성능을 좌우하게되는 주 변수가 된다는......
------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.

------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.

jika의 이미지

throughput 테스트를 하신것 같은데 패킷사이즈가 명시되지 않아서 아쉽습니다.

패킷사이즈가 쓰루풋에 미치는 영향이 크기 때문에 패킷사이즈와 페킷로스가 명시가 되지 않은 결과물은 의미가 없을듯 합니다.

재 경험상 iperf는 단일 pc에서 512byte패킷으로 6~700Mbps 이상의 패킷을 만들어 내지 못하더군요.

두대에서 만들어서 쏘고 한대가 받는식으로 테스트를 해보긴 했는데 결과값이 이상하더군요..
한쪽에서 오는건 거의 다 받고 다른쪽에서 오는건 50%정도씩 로스가 나더라구요..

스마트빗이 쓸때없이 비싼 장비라고 생각했었는데...

토마호크라는것을 한번 써봐야겠네요..

댓글 달기

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