SMB Large_readx관련하여 질문 드립니다.

saya0x의 이미지

SMB프로토콜을 사용해 리눅스 서버와 윈도우 클라이언트간 공유시 Large_readx 관련하여 몇일째 삽질중입니다.

여기저기 많은 자료를 찾아 해결하려 했지만 많은 어려움을 겪고 있습니다.(영어 울렁증이 가장 크네요..ㅜㅜ)

테스트 환경은 아래와 같습니다.
Server OS : RHEL5.2(Kernel 2.6.18-92)
Client OS : Window XP professional
Samba Version : samba-3.2.4
SMB Dialect : NT LM 0.12

SMB프로토콜을 이용하여 데이터 전송시 Server에서는 Client에서 요청한 파일 size만큼만 데이터를 전송하고 있는데,
제가 테스트 중인 Client에서는 Large_readx를 지원하지 않아 매 요청시 64KByte를 limit로 데이터를 요청합니다.
(현재 Client에서 SMB_COM_READ_ANDX(0x2e)시 max_count_low의 parameter값만 사용합니다. max_count_high Parameter를 사용하여 64KByte이상의 데이터를 보낼수 있다고 알고 있는데.. Window Client에서 Large_readx를 지원하지 않아서 인지 max_count_high parameter를 사용하지 않고 있습니다.)

이로 인해 Server에서는 데이터 전송시, 세션 생성후 Client가 요청한 size만큼의 데이터 앞에 SMB Header를 붙여 약 60KByte정도의 size로 데이터를 전송합니다. 한 예로 1MByte size의 데이터를 전송시 약 16번의 Client의 요청이 있어야 서버에서 데이터 전송을 완료할 수 있습니다.

위 내용의 문제를 개선하기위한 한가지 방법은 Client에서 한번의 요청에 서버에서 보내는 데이터의 Size를 늘리면 된다는게 제 짧은 소견입니다. 이를 위해 아래의 궁금사항에 고수님들의 한마디 조언을 부탁드립니다.

1. Client에서 SMB_Header에 명시된 Max Count High필드를 이용하여 64KByte이상의 데이터를 요청할 수 있도록 하려면 어떤 방법이 있는지?

2. 현 samba서버와 WindowXP Client 사이에서는 NT LM 0.12의 SMB Dialect를 사용하는고 있습니다. 제가 테스트한 WindowXP SMB Client에서는 Large_readX, Large_writeX, Lagre_file을 지원하지 않는데, 어떻게 지원 가능하도록 설정하는지?

Ethereal을 사용하여 SMB통신시 Packet캡쳐한 내용 및 간단한 분석을 첨부파일로 올려드립니다.

짧은 한마디 조언에 목말라 있습니다. 부탁드립니다.

File attachments: 
첨부파일 크기
Microsoft Office document icon SMB문제점.doc81 KB
bushi의 이미지

samba-tng 에서 win32 용 smbclinet 를 받아서 -b 옵션을 테스트해보고,
원하는게 그 기능이라면 smbclient 소스를 보면 되겠습니다.

OTL

saya0x의 이미지

답변 정말 감사드립니다.
bushi님께서 말씀한신대로 smbclient로 -b옵션을 줘서 테스트를 해보았습니다.
-b옵션은 send buffer사이즈를 달리하면서 보낼시 쓰는 옵션인데요.
-b옵션으로 buffer를 설정시 SMB_COM_READ_ANDX요청시 MaxCountHigh필드를 사용하여 size를 늘리지는 않고,
여러개의 SMB_COM_READ_ANDX SMB요청 메세지를 한프레임으로 만들어 한번에 서버로 보냅니다.
(-b옵션으로 buffer size를 160k로 설정할시 16k데이터 SMB요청메세지10개를 한 프레임으로 만들어 서버로 보냅니다.)
이러면 패킷의 오버헤드는 상당량 줄일수 있을듯 하네요. 문제는 이런 기능을 WindowXP client에 어찌 적용을 시키나요.
smbclient를 따로 제공 하는 수 밖에는 없나요? 아직까지 MaxCountHigh필드의 미련을 못 버리겠어요...ㅜㅜ
다시 한번 답변에 진심으로 감사드립니다.

더이상 삽으로 팔 곳이 없는 그날을...

댓글 달기

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