I’m looking for help with what I’m sure is an age old question. I’ve found myself in a situation of yearning to understand network throughput more clearly, but I can’t seem to find information that makes it “click”
We have a few servers distributed geographically, running various versions of Windows. Assuming we always use one host (a desktop) as the source, when copying data from that host to other servers across the country, we see a high variance in speed. In some cases, we can copy data at 12MB/s consistently, in others, we’re seeing 0.8 MB/s. It should be noted, after testing 8 destinations, we always seem to be at either 0.6-0.8MB/s or 11-12 MB/s. In the building we’re primarily concerned with, we have an OC-3 connection to our ISP.
I know there are a lot of variables at play, but I guess I was hoping the experts here could help answer a few basic questions to help bolster my understanding.
1.) For older machines, running Windows XP, server 2003, etc, with a 100Mbps Ethernet card and 72 ms typical latency, does 0.8 MB/s sound at all reasonable? Or do you think that slow enough to indicate a problem?
2.) The classic “mathematical fastest speed” of “throughput = TCP window / latency,” is, in our case, calculated to 0.8 MB/s (64Kb / 72 ms). My understanding is that is an upper bounds; that you would never expect to reach (due to overhead) let alone surpass that speed. In some cases though, we’re seeing speeds of 12.3 MB/s. There are Steelhead accelerators scattered around the network, could those account for such a higher transfer rate?
3.) It’s been suggested that the use SMB vs. SMB2 could explain the differences in speed. Indeed, as expected, packet captures show both being used depending on the OS versions in play, as we would expect. I understand what determines SMB2 being used or not, but I’m curious to know what kind of performance gain you can expect with SMB2.
My problem simply seems to be a lack of experience, and more importantly, perspective, in terms of what are and are not reasonable network speeds. Could anyone help impart come context/perspective?
A lot of comments and users have offered great advice here. Some of them hit pretty close to what I was looking for, but I was also fortunate enough to meet with a Network veteran from our company that’s helped clarify things. I thought I would post my findings/understandings here for the benefit of others. Please feel free to correct me if any of this seems off:
1.) The maximum throughput of a single TCP session with 72ms latency and a 64K window is right around 0.8 MB/s, making that speed reasonable for single thread, single session copies, like the ones we performed with robocopy.
2.) This speed difference appears to come down to the effectiveness of the transfer method. In our case, we were using Robocopy and Repliweb. I discovered robocopy uses a single TCP session, whereas Repliweb can open multiple sessions to send data through.
3.) Research from Microsoft’s website does show SMB2 as having a considerable performance gain over SMB1. There have, however, been problems in some cases in how the OS negotiates which protocol to use, so one should be aware of both a.) which cases SMB2 may be used, and b.) whether or not SMB2 is actually being utilized based on network captures.
Currently, it looks like Wire-shark can determine the use of the SMB2 protocol.
I hope this helps. Again, my understanding is fairly rudimentary here, feel free to expand.
No related posts.