Question

Winsock issue with MTU

Asked by: neotechnology

Hi,

We have a windows service using the winsock2 libraries. It uses the WSASend and TransmitFile functions to send data to another windows service of the same kind. This service has been working well for a few years.

This windows service is used to transfer files from a sub site to a head site and vice versa, the link between the sites has recently been encrypted using IPSEC over GRE, this has caused a reduction of the MTU on the link. However, some packets sent by this service have a Do not fragment flag set. This then causes the router to send an ICMP message (as part of Path MTU Discovery) to the server asking it to break down the size of the packet so that the router can send the smaller packets.

When looking at the traffic, the packets are never broken down and sent back to the router. This means that the service at the remote site never gets these packets. As far as the windows service is concerned, the WSASend and TransmitFile methods return success.

We want to avoid dropping the MTU of the server that the service runs on, as that will also affect communications on the local network.

Is it the responsibility of the windows service to deal with the ICMP message, or can we setup the server it runs on to handle the ICMP message? Either way, how do we make it so that it works?

Thanks in advance.

This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.

Subscribe now for full access to Experts Exchange and get

Instant Access to this Solution

  • Plus...
  • 30 Day FREE access, no risk, no obligation
  • Collaborate with the world's top tech experts
  • Unlimited access to our exclusive solution database
  • Never be left without tech help again

Subscribe Now

Asked On
2009-07-02 at 17:24:43ID24541327
Tags

winsock2

,

C++ service

,

network programming

Topics

C Programming Language

,

Winsock

,

Miscellaneous Networking

Participating Experts
2
Points
250
Comments
10

Trusted by hundreds of thousands everyday for fast, accurate and reliable tech support.

  • "The time we save is the biggest benefit of Experts Exchange to Warner Bros. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange." Mike Kapnisakis, Warner Bros.
  • "Our team likes having a resource that is more secure than just using Google and most experts using this service really know their stuff. It's nice to look here first versus using Google." Dayna Sellner, Lockheed Martin
  • "Anytime that I've been stumped with a problem, 9 out of 10 times Experts Exchange has either the accepted solution or an open discussion of the potential solution to the problem." Kenny Red, eBay Inc.

See what Experts Exchange can do for you.

Got a question?

We've got the answer.

Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.

Screenshot of Experts Exchange Knowledgebase

Need individual assistance?

Our experts are ready to help.

If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.

Screenshot of Experts Exchange Knowledgebase

Want to learn from the best?

Read articles from industry experts.

Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.

Screenshot of an Article

Working on a long term project?

Store your work and research.

Save solutions to your questions, answers you’ve discovered through searching plus helpful articles in your personal knowledgebase for easy future access.

Screenshot of Experts Exchange Knowledgebase

Access the answers to your technology questions today.

Subscribe Now

30-day free trial. Register in 60 seconds.

What Makes Experts Exchange Unique?

Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Trusted by the world's most respected brands.

image of each brand's logo

Faithfully serving IT professionals since 1996.

Experts Exchange Logo

Try it out and discover for yourself.

Subscribe Now

30-day free trial. Register in 60 seconds.

Related Solutions

  1. Cisco router path MTU discovery RFC 1191
    How can I check if a cisco router supports path MTU discovery (RFC 1191)?
  2. MTU
    I ping a host and it return MTU = 1472, may I know why the MTU size is 1472 but not other size?
  3. MTU SETTING
    Right now our MTU on the pix is 1500 on inside and outside. The cisco vpn client sets up at 1300 by default. What will it effect by changing it from 1500 to 1300 to match the vpn client default? We use sbs echange and remote web workplace internally. I figured its easi...
  4. MTU network?
    Guys I have had this question come up regarding the network but have not idea what it could be, is MTU a setting on the ADSL router or is it some we need to change on the PIX firewall. Not got a clue what this is. As discussed, pMTU (Maximum Transmission Unit) is required ...
  5. Setting MTU on Cisco ISR
    I have replaced a Cisco PIX firewall with an 871 ISR with the firewall feature set. The original PIX had an MTU of 1448 on the outside interface. If I leave the new ISR in it's default config with an MTU of 1500 I have issues with certain types of connection through the VPN...

Free Tech Articles

  1. WARNING: 5 Reasons why you should NEVER fix a computer for free.
    It is in our nature to love the puzzle. We are obsessed. The lot of us. We love puzzles. We love the challenge. We thrive on finding the answer. We hate disarray. It bothers us deep in our soul. W...
  2. SCCM OSD Basic troubleshooting
    SCCM 2007 OSD is a fantastic way to deploy operating systems, however, like most things SCCM issues can sometimes be difficult to resolve due to the sheer volume of logs to sift through and the dispe...
  3. Migrate Small Business Server 2003 to Exchange 2010 and Windows 2008 R2
    This guide is intended to provide step by step instructions on how to migrate from Small Business Server 2003 to Windows 2008 R2 with Exchange 2010. For this migration to work you will need the fo...
  4. Create a Win7 Gadget
    This article shows you how to create a simple "Gadget" -- a sort of mini-application supported by Windows 7 and Vista. Gadgets can be dropped anywhere on the desktop to provide instant information, ...
  5. Outlook continually prompting for username and password
    There have been a lot of questions recently regarding Outlook prompting for a username and password whilst using Exchange 2007. There are a few reasons why this would happen and I will try to cover t...
  6. Backup Exchange 2010 Information Store using Windows Backup
    There seems to be quite a lot of confusion around the ability to backup Exchange 2010 using the built in Windows Backup feature. This stems from the omission of this feature prior to Exchange 2007 s...

Cloud Class Webinars

  1. Avoiding Bugs in Microsoft Access
    Alison Balter takes and in-depth look at avoiding bugs in Access. In this webinar you will learn about using the immediate window to debug your applications, invoking the debugger, using breakpoints to troubleshoot, stepping through code, setting the next statement to execute, ...
  2. Top 10 Best New Features in Visio 2010
    Scott Helmers gives live demonstrations of the top 10 new features in Visio 2010. This webinar will teach you how to create compelling diagrams by adding shapes to the page with a single click, linking the shapes in a diagram to data in Excel (or SQL Server, or SharePoint), ...
  3. IT Consultant Business Secrets Revealed
    Michael Munger, Experts Exchange tech pro and IT consultant, pulls back the curtain on his very successful businesses and answers question on every IT consultant and business owner should know about. He shares secrets on what he did to solve the 5 most common problems in IT, ...
  4. Disaster Recovery and Business Continuity
    Quest CTO, Mike Billon, gives an overview of the steps involved in building a dunamic disaster recovery plan. Through case studies and an examination of software/hardware tooles for monitoring and testing, you'll gain a better understandin of where you are, where you want ...
  5. Organize Your Visio Diagrams with Containers and Lists
    Scott Helmers uses cross functional flowcharts, wireframe diagrams, data graphic legends and seating charts to teach you: how to ustilize all three new structured diagram components in Visio 2010, the best practices for organizeing shapes in previous version of Visio, how to organize ...
  6. How to Us Objects, Properties, Events and Methods in Microsoft Access
    Alison Dalter gives an in-depbth look at objects, properties, events and methods in Microsoft Access. In this webinar you will learn about using the object browser, referring to objects, working with properties and methods, working with object variables, understanding the ...

Join the Community

Give a Little. Get a Lot.

Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.

Join the Community

Answers

 

by: Infinity08Posted on 2009-07-03 at 06:56:36ID: 24772358

If you can reduce the MTU on one of the peers, the advertized MSS will also reduce the packet size sent by the other peer. So, if you can do that for one of each pair of peers, it would be an "easy fix" (really a workaround).

I'll assume you can't do that either though for the rest of this post ...

You say that changing the MTU would impact the local network, but that's only the case if the problematic traffic is sent using the same network device that is connected to the local network. The MTU can be set separately per network device, so if you use a different one for the local network, it will not be impacted by a change of the MTU on the other device.

If that doesn't help either, then we should try to find out the actual problem. I don't know the inner workings of Winsock specifically, so I don't know how it handles the ICMP "Destination Unreachable - fragmentation needed and DF set" message, but let's first make sure that the ICMP message actually arrives at the server (ie. that it isn't filtered out somewhere along the way). Can you verify that with a packet sniffer on the server ? If the ICMP packet doesn't arrive, then make sure it's not filtered out on the network, and it might just start working again ...

Assuming it does arrive ... we'll have to dive into WinSock heh. But I would first check the other options I mentioned ...

 

by: itsmeandnobodyelsePosted on 2009-07-03 at 07:12:38ID: 24772464

>>>> However, some packets sent by this service have a Do not fragment flag set.
It would recommend to either removing that flag or send smaller packages.

Handling the ICMP message is hardly a solution cause if the packet couldn't be fragmented how should a handler do it anyway?

 

by: Infinity08Posted on 2009-07-03 at 07:19:11ID: 24772511

WinSock can't change the packet size (due to the DF flag), but the server application apparently doesn't receive an error either (since WSASend and TransmitFile return succesfully).

This makes me think that either :

(a) the ICMP message hasn't arrived at the server
(b) WinSock doesn't know how to handle it
(c) WinSock knows how to handle it, but discards it for some reason
(d) WinSock handles it correctly, and there is a way to get the information in the application - but I don't know WinSock sufficiently to know how ...

 

by: neotechnologyPosted on 2009-07-05 at 19:49:43ID: 24782227

We have run a packet sniffer in a test environment, and the results show that the router connected to the local area network sends a Path MTU Discovery ICMP message back to our sending server service, but the server never splits that packet and resends it. In the test environment the server is directly attached to the router sending the ICMP packet, and windows firewall has been enabled.
We already have a workaround in place by adjusting the MTU of all packets passing through the Cisco router. What we want to know is path MTU discovery handled naturally in the winsock or is it supposed to be handled within our code (or not at all...).

 

by: itsmeandnobodyelsePosted on 2009-07-06 at 01:36:56ID: 24783434

>>>> What we want to know is path MTU discovery handled naturally in the winsock or is it supposed to be handled within our code (or not at all...).

Neither the receiving server nor the sending server where the ICMP message was sent to, can handle the issue due to the DF flag. The router has the problem that ICMP messages were not allowed to generate additional messages. So, the only way to handle it would be to let fail the initial call what seems impossible to me as the sending action already was terminated and the ICMP messages were on a quite different layer.

From all that, I would assume (not really know) that the ICMP has not the purpose to get directly handled but only is a protocol message, which could be evaluated by other systems. I am thinking of mails with a wrong receiver address. The original mail goes out without error but you finally got a return mail which tells that the mail could not be delivered.  Following that thought, the sending service should generate some kind of error request passed to the sending client (which would need to open an interface for that) as response of the ICMP message. Then, the client could split the failed message and send it again. Or, maybe easier, you only write the ICMP to some kind of error log, and would need to change your sending process so that those issues couldn't occur in future.

 

by: Infinity08Posted on 2009-07-06 at 01:49:32ID: 24783473

>> and the results show that the router connected to the local area network sends a Path MTU Discovery ICMP message back to our sending server service

But is it also received ?
Is it blocked by the firewall ?
Or does it get discarded somewhere on the network ? (in a different router)


>> but the server never splits that packet and resends it.

The thing is that the packet was marked as unsplittable (the DF flag was set - I assume you did that using IP_DONTFRAGMENT), so there's not much that WinSock can do ... It is not allowed to split the packet, because you told it not to :)

So, this pretty much has to be handled by your code ... Only, to be able to do that, you should get some kind of indication when the ICMP "Destination Unreachable - fragmentation needed and DF set" message is received (assuming it is received - see above). I'll see if I can find something on how WinSock handles that.

 

by: Infinity08Posted on 2009-07-06 at 01:51:04ID: 24783479

Oops, seems Alex already covered the second part of my post :)

 

by: itsmeandnobodyelsePosted on 2009-07-06 at 02:19:34ID: 24783585

>>>> Oops, seems Alex already covered the second part of my post :)
Not so good, that a different view on it would be redundant.

What I don't know is whether the original send call already has returned (in that case the Winsock has no chance to handle it) or whether the ICMP message was still within the process of sending the original message (but only was ignored til now).

Maybe neotechnology could answer that from their protocols.

 

by: Infinity08Posted on 2009-07-06 at 02:20:06ID: 24783590

This MSDN topic claims that WinSock DOES support PMTUD (even though I assumed before that it didn't, based on your observations) :

        http://msdn.microsoft.com/en-us/library/ms817967.aspx

It needs the registry key HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters to have a value EnablePMTUDiscovery that is set to 1.

I didn't find any information about when this support was added, and I don't know which version of WinSock (or Windows for that matter) you have. So, you might want to find out whether your specific WinSock version supports it.


My first bet would still be that WinSock doesn't actually receive the "Destination Unreachable - fragmentation needed and DF set" message though.

20120131-EE-VQP-002

3 Ways to Join

30-Day Free Trial

The Experts

98% positive feedback on 31,087 answers since March 2000. angeliii is a Microsoft Most Valuable Professional for his work with MS SQL Server & Develoment.

He has also proven his knowledge of Visual Basic Programming, PHP Scripting and Oracle Databases.

The Experts

97% positive feedback on 10,752 answers since July 2000. lrmoore has more than 18 years experience in the networking industry.

The six-time Mircosoft MVPs specialties include firewalls, virtual private networking, and network management.

Testimonials

"...and excellent source for support... Kind of like having your very own IT dept." Electriciansnet

Testimonials

"I was apprehensive at signing up at first. However... it has already made my life as an IT administrator much easier." JaCrews

Testimonials

"WOW! You guys have great, active, and knowledgeable people on here." moore50

Business Clients

Business Clients

In the Press

"If you’ve got a question... Experts Exchange can supply an answer.”

In the Press

"...an invaluable aid for both IT professionals and those who require tech support."

In the Press

"where IT professionals provide quick answers on just about any topic"

Business Account Plans

Loading Advertisement...