패킷사이즈에 따라서 패킷손실률이 다른가요?

jamongx의 이미지

한참 공부하고 있습니다. ^^;

어찌보면 좀 기초적인 문제 일수도 있는데 확신이 들지 않아서 질문을

올리게 되었습니다.

음성을 압축하는 Vocoder에 따라서 압축률이 다르고 따라서 패킷사이즈도

다양하다는 것인데요, 네트워크 상태가 좋지 않으면 bit rate가 낮은 vocoder를 사용해서 음질을 향상(끊기지 않음)을 꾀할수 있다고 합니다.

그런데 궁금한것이

패킷사이즈가 커지면 패킷손실이 생길수 있는 확률이 커진다고 하는데

왜 그럴까요? 이러저리 자료를 찾아보니

MTU 사이즈에 제한이 있기 때문에 손실이 생길수 있다.

커널 level에서 받아들있수 있는양 또한 제한이 있어서 손실이 생길수 있다.

수신쪽(라우터 etc...) 등에서 수신 큐가 꽉차는 바람에 패킷손실이 생길수 있다.

3가지 정도 이유를 찾을수 있었습니다.

사실 감이 잘 안오는데요 중요하지 않은 문제일 수도 있지만..

좀더 알고 계시면 조언 부탁드립니다.

주말 잘 보내시구요 그럼 안녕히~

agkrwyasym의 이미지

네트워크 상태 좋지 않다는 게 어떤것인지 잘 모르겠군여. 많은 변수가 있을수 있지만, 안좋은 상태를 10% 패킷 로스로 가정하겠습니다.

50 바이트짜리 icmp echo-request 30개의 10%는 3개입니다. 핑 30개중에 3개만 잃어버리죠. 하지만 한개의 1500 바이트짜리를 보낸다면 리트랜스밋을 해야할 겨우가 더 많을겁니다.

보통 테이터(웹/ftp)는 잘 느끼지 못하지만 voip 또는 게임같은경우, 표시가 쉽게나죠.

위에 예는 정확한 예는 아닙니다. 레이어 1/2를 공부하시면 이해가 쉬우실껍니다.

jinyeong의 이미지

위처럼 bit rate을 낮춰 Voice를 보내게 되면,

실제 원하는 내용을 보내는데 더 _작은_ 사이즈의 데이터만 보내면 되기 때문에,

network의 상황이 좋지 않는 곳에서 덜 끊어지겠지요.

당연히 보내는 데이터 자체가 작으니 loss가 적은 건 당연하다고 봅니다.

그러나 이는 packet size와는 관계가 적습니다.

bit rate을 줄이지 않고 packet size만 의식적으로 줄여서,
(TCP를 쓴다면 Nagle을 끈채로)

보낸다면 packet loss가 더 커지겠지요.

같은 데이터를 보내는데 packet 수 자체가 많아지니까요.

꼭 필요한 경우가 아니라면 packet은 최대한 MSS에 가깝게 보내는 것이

여러모로 유리합니다.

제가 VOIP를 잘 모르니, 정확한 답변이 아닐 수도 있겠군요. :wink:

I thought what I'd do was,
I'd pretend I was one of those deaf-mutes.. or should I?

jamongx의 이미지

정말 감사합니다

제가 좀 착각한 면이 있었네요 ^^;

공부 열심히 하겠습니다.

부끄~

용모수려 재색겸비

agkrwyasym의 이미지

Quote:
그러나 이는 packet size와는 관계가 적습니다.

패킷사이즈와 패킷로스는 관련이 많습니다.

패킷로스가 일어날수 있는 경우는 많지만 보통은 bandwidth가 꽉찬 경우, 트래픽 버스트 등등이 있습니다. 레이어 2이하에서 일어나죠.

레이어 3이상에 있는 프로토콜이 어떤값을 변경하던, 레이어2 프레임 사이즈와 리트랜스미션 등등은 tcp값과 관련이 없습니다.

jinyeong의 이미지

L2의 frame loss가 과연 얼마나 영향을 미칠지 의문입니다.

local network이 극악한 상황을 가정하시는 것인가요? :?:

위의 질문에서는 router의 buffer가 꽉차서 packet loss가 일어나는 경우가 대부분이라고 봅니다.

저도 그 의도에 맞춰서 답변을 드린것이구요.

이때는 분명이 작은 size packet을 자주 보내게 되면 congestion을 유발하게 됩니다.

작은 걸 여러번 보내는 것보다 한번에 크게 보낼 수 있을 만큼 보내는 것이

정석입니다.

Quote:
레이어 3이상에 있는 프로토콜이 어떤값을 변경하던, 레이어2 프레임 사이즈와 리트랜스미션 등등은 tcp값과 관련이 없습니다.

이 말씀도 의문이군요. TCP는 L2의 MTU를 고려해서 보내도록 설계되어 있습니다. 실제로 Nagle Algorithm이 바로 그 예입니다. :?

I thought what I'd do was,
I'd pretend I was one of those deaf-mutes.. or should I?

agkrwyasym의 이미지

버퍼가 꽉차서 못보내는경우는 거의 없습니다. 하위사양의 라우터 또는 라우터 소프트웨어가 버그가 있는경우, 버퍼값 매뉴얼 조정은 빼구여.

그리고 라우터 버퍼값은 패킷 사이즈마다 버퍼가 다릅니다.

작은 패킷을 많이 보내는경우 라우터 시피유를 많이 먹고, 오버헤드가 조금 있다는것뿐...

크게 보내는게 정석이라고 하셨는데 정석이란건 없습니다. 이더넷같은경우 패킷사이즈가 작을경우 헤더사이즈량이 많이 커지지만, atm같은경우 똑같습니다.

Quote:
TCP는 L2의 MTU를 고려해서 보내도록 설계되어 있습니다. 실제로 Nagle Algorithm이 바로 그 예입니다

여러라우터, 그리고 다른종류의 L2를 지나갈 경우는 어떻게 되나요??? :(

jinyeong의 이미지

일반적인 경우 정석이 맞습니다. :)

서로 다른 두 네트웍 사이에서, 동일한 RTT를 가지고,

동일한 throughput으로 packet size만 달리 하셔서

packet loss rate를 살펴보시기를 바랍니다.

Quote:
여러라우터, 그리고 다른종류의 L2를 지나갈 경우는 어떻게 되나요???

다른 종류의 L2를 지나갈 때_만_ 문제가 되겠지요. :)

작은 사이즈가 유리할 경우가 있을 지도 모릅니다.

그리고 구현상 작은 사이즈로만 보내야할 필요가 있을지도 모릅니다.

제가 말씀드리는 것은 _일반적인_경우를 말하는 것입니다.

왜 Nagle이 TCP에 default로 setting 되어 있는지 고려해보시길 바랍니다.

thread가 약간은 소모적으로 흘러가는군요. :?

I thought what I'd do was,
I'd pretend I was one of those deaf-mutes.. or should I?

agkrwyasym의 이미지

bandwidth가 허용하는 내에서 패킷사이즈가 얼마던 상관 없습니다. 패킷로스 안일어납니다. 하지만 qos로 정해놓은 bandwidth 또는 회선의 capacity가 풀로 찼다면, tcp로 먼 Z-RAL을 하던 상관없습니다.

TCP값으로 레이어2 로스율은 못줄입니다.

dhunter의 이미지

예전에 Z-Modem 이라던가 하는 다이얼업 통신 기반 파일 교류 프로토콜들 보면 패킷로스가 일어나면 패킷 사이즈를 줄이는 시도를 하더군요. 그건 어떤 영향을 미칠까요?

from bzImage
It's blue paper

jinyeong의 이미지

순수하게 보낼 data가 1000byte가 있다고 가정합시다.

이를 1번에 1000byte를 보내는 경우와

100byte씩 나눠서 보내는 경우를 가정해봅시다.

1000 byte 에 ip header(20 byte) + tcp header(20 byte) 가 payload로 붙게됩니다.

100 에 역시 ip header(20 byte) + tcp header (20 byte)가 payload로 붙게 되겠지요.

물론 L2의 header도 붙게 되겠지만, 일단 저 정도만으로 봅시다.

전자의 경우 1000byte의 packet을 보내기 위해 1040 byte만 보내면 되지만,

후자의 경우 1000byte의 packet을 보내기 위해 1400byte 를 보내야 합니다.

말씀하신대로 이 경우 bandwidth를 잡아먹는 결과가 되겠지요?

많은 다른 network program 들이 작은 패킷으로 나눠서 보낼 경우

과연 packet loss가 없을까요?

위에 질문하신 분의 의도는 바로 이것으로 보이는데요?

Quote:

하지만 qos로 정해놓은 bandwidth 또는 회선의 capacity가 풀로 찼다면, tcp로 먼 Z-RAL을 하던 상관없습니다.

TCP값으로 레이어2 로스율은 못줄입니다.

그리고 TCP는 바보가 아닙니다. :? congestion이 일어난 상황을 체크하고,
이 상황에서 보내는 data를 줄이는 매커니즘을 가지고 있습니다.

대부분의 network packet이 TCP일텐데.. TCP가 network L2의 loss rate에 충분히 영향을 줄 수 있다고 생각합니다. _간접적_인 방법이지만요.

I thought what I'd do was,
I'd pretend I was one of those deaf-mutes.. or should I?

bluelight의 이미지

절대 일어날수 없다.
TCP통신일 경우 데이타를 전송하지 못할 뿐이지.. 중간에 사라지지 않는다.

아무리 큰사이즈의 패킷을 보내도 받는쪽에 서 완벽이 받기만한다면 .. 중간에 데이타가 절대 사라지는 일이 없다.

jinyeong의 이미지

Quote:

절대 일어날수 없다.
TCP통신일 경우 데이타를 전송하지 못할 뿐이지.. 중간에 사라지지 않는다.

아무리 큰사이즈의 패킷을 보내도 받는쪽에 서 완벽이 받기만한다면 .. 중간에 데이타가 절대 사라지는 일이 없다.

음.. 이 thread는 TCP segment의 loss가 아니라,

그 하위 layer의 packet loss에 대해 말하고 있는 것 같습니다. :)

I thought what I'd do was,
I'd pretend I was one of those deaf-mutes.. or should I?

코퍼스의 이미지

패킷 사이즈가 크다.(이 크다는 말 또한 애매하지만 512이상인 경우만 생각해도) 실제 해당 패킷에 대해 QoS나 TOS 를 하느냐..
그냥 라우팅시키느냐에 따라..
또한, 얼마나 많은 홉의 장비를 거치느냐..
각 홉에 대응하는 장비들이 어떤 종류의 장비인가에 따라 틀립니다.
(같은 L3 router/switch라도 시스코, 쥬니퍼, 리버스톤, 다산, 코아세스 다 특성이 틀리니 패킷 사이즈에 따른 차이가 발생할 수 있습니다.)

많은 분들이 로컬 네트워크에서의 경우만 얘기하시는 경우가 있는데. 이 경우에도 해당 컴퓨터의 OS 종류, 버전 차이도 있고, 그 로컬 네트워크를 유지하는 L2 스위치가 어떤 것이냐에도 차이가 있습니다.
(한마디로 스위치 허브의 스위칭 칩의 특성이나 결함에 의한 영향도 있으니까요)

또한 막말로 많은 장비나 OS가 네트워크 관련 RFC나 IEEE 중 '...'는 지원한다고 하지만 이 스펙을 100% 완벽하게 지원하는 os나 장비는 없습니다.
그러니, 어떤 TCP/IP 스펙이나 자료를 가지고 계산하거나 예측하는 것은 한계가 있지요.

일례로 리눅스의 네트워크 코드를 거의 대부분 구현한 알란콕스의 리눅스 코드에도 버그는 있으니까요..(생각보다 많더군요 ^^, 그래도 그 사람이 천재과라는 건 변함없지만..-_-;)

따라서, 이 질문은 어떤 상황에 그러하느냐?로 좀 더 명확히 해야 논의가 가능하지요.

A few Good Man

댓글 달기

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