• Home
  • About
  •  

    SMB3 – These Questions Rock!

    Posted by John Kim

    Earlier this month, the SNIA Ethernet Storage Forum hosted a live webcast on Server Message Block (SMB), “Rockin’ and Rollin’ with SMB3.” Presenting was Ned Pyle, Microsoft SMB Program Manager. If you missed the live event, I encourage you to watch it on-demand. We had a lot of questions from the big audience this event drew, so as promised, here are answers to them all.

    Q. Other than that audit setup, is there a way to determine, via the OS, which SMB version is in use?

    A. No. Network captures alone will tell you, but Windows doesn’t track this explicitly other than SMB1 with auditing we added specifically for the task of identifying removal options

    Q. SMB 3.1.1 over Ethernet… can you discuss/compare with SMB 3.1.1 over Infiniband?

    A. If the question is ‘what’s better, Infiniband or Ethernet’, my answer is always: it depends. I really don’t want to get into a competitive conversation under the guides of SNIA. I simply recommend looking at the vendor stories and make an informed decision. Overall, Ethernet/TCP/IP versions like RoCE and iWARP configurations are generally less expensive than Infiniband ones. They all have tremendous performance. They all have their various ups and downs.

    Q. Do you have statistics regarding SMB-Direct adoption?

    A. It’s tricky, as our telemetry for Server usage is quite inaccurate due to firewall rules preventing servers from reaching the Internet. I can say indirectly that we know of thousands of customer deployments.

    Q. What’s the name of the IO application?

    A. DiskSPD

    Q. I don’t believe your I/O data tests, wouldn’t you need to trunk 17 10 Gigabit Network Cards to achieve 168 gigabit I/O capability?

    A. This was a misunderstanding, you thought I said 10Gb but it was 100Gb. We used 100Gb RDMA NICs in this demo with RoCEv2. The bottleneck was the storage at that point, the network had plenty of bandwidth left over. 

    Q. These are great, but how many of these new features will end up locking out FOSS/GPL implementations of SMB such as SAMBA?

    A. Absolutely not! We work with Samba team and Linux to ensure that SMB can be broadly deployed with all of its capabilities inside open source software.

    Q. NetApp supports CA shares (which uses transparent failover) in two use cases: SQL over SMB and Hyper-V over SMB3.

    A. This sounds likes someone from NetApp stating a fact, so I will simply say “good!” 🙂

    Q. Can you please post links to the tools mentioned in this presentation, and I/O tests? Is there a comparison using I/O Meter?

    A. Here you go:

    • https://gallery.technet.microsoft.com/DiskSpd-a-robust-storage-6cd2f223
    • https://github.com/Microsoft/diskspd
    • https://github.com/Microsoft/diskspd/tree/master/Frameworks/VMFleet

    Q. You are forced to use SMB1 because of the Windows 2003 issue?

    A. Windows Server 2003 and XP (and older, like Win2000) all use SMB1. If they are still around, you will need to leave SMB1 enabled on any machines talking to them.

    Q. When will Microsoft officially drop support for SMB1?

    A. Overall for the protocol, there is no timeline. It is deprecated however, so no further work will be done in SMB1 other than critical security patches. SMB1 will start being removed *by default* in a coming release of Windows Server and Windows 10 client. This doesn’t mean totally removed forever, but instead “missing by default”, where you must directly opt in to adding it back. It will be done on a per-SKU basis, so that enterprises are first likely to see it, since they are equipped better to understand it and less likely to need SMB1

    Q. Is there a way to change block size in SMB3 ?

    A. In SMB2_READ processing section 3.3.5.12 (https://msdn.microsoft.com/en-us/library/cc246729.aspx):

    The server SHOULD<296> fail the request with STATUS_INVALID_PARAMETER if the Length field is greater than Connection.MaxReadSize.

    If Connection.SupportsMultiCredit is TRUE the server MUST validate CreditCharge based on Length, as specified in section 3.3.5.2.5. If the validation fails, it MUST fail the read request with STATUS_INVALID_PARAMETER.

    There is similar text for SMB2_WRITE in 3.3.5.13 (https://msdn.microsoft.com/en-us/library/cc246730.aspx).

    Then, off to SMB2_NEGOTIATE  in 3.3.5.4 (https://msdn.microsoft.com/en-us/library/cc246768.aspx) to discover:

    • MaxReadSize is set to the maximum size, in bytes, of the Length in an SMB2 READ Request (section 2.2.19) that the server will accept on the transport that established this connection. This value SHOULD<231> be greater than or equal to 65536. MaxReadSize MUST be set to MaxReadSize.
    • MaxWriteSize is set to the maximum size, in bytes, of the Length in an SMB2 WRITE Request (section 2.2.21) that the server will accept on the transport that established this connection. This value SHOULD<232> be greater than or equal to 65536. MaxWriteSize MUST be set to MaxWriteSize.
    Windows version\Connection.Dialect 2.0.2 All other SMB2 dialects
    Windows Vista SP1\Windows Server 2008 65536 N/A
    Windows 7\Windows Server 2008 R2 65536 1048576
    Windows 8 without [MSKB-2934016]\Windows Server 2012 without [MSKB-2934016] 65536 1048576
    All other SMB2 servers 65536 8388608

    <232> Section 3.3.5.4: If the underlying transport is NETBIOS over TCP, Windows servers set MaxWriteSize to 65536. Otherwise, MaxWriteSize is set based on the following table.

    Windows version\Connection.Dialect 2.0.2 All other SMB2 dialects
    Windows Vista SP1\Windows Server 2008 65536 N/A
    Windows 7\Windows Server 2008 R2 65536 1048576
    Windows 8 without [MSKB-2934016]\Windows Server 2012 without [MSKB-2934016] 65536 1048576
    All other SMB2 servers 65536 8388608

    Update: If you missed the live event, it’s now available on-demand. You can also download the webcast slides.

    Leave a Reply

    Your email address will not be published. Required fields are marked *