Bug 732 - tcp-mss, outgoing-tcp-mss option
tcp-mss, outgoing-tcp-mss option
Status: RESOLVED FIXED
Product: NSD
Classification: Unclassified
Component: NSD Code
4.1.x
Other All
: P5 enhancement
Assigned To: NSD team
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2015-12-19 20:21 CET by Daisuke HIGASHI
Modified: 2016-01-05 11:40 CET (History)
1 user (show)

See Also:


Attachments
nsd-4.1.7-tcp-mss.diff (10.26 KB, application/octet-stream)
2015-12-19 20:21 CET, Daisuke HIGASHI
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Daisuke HIGASHI 2015-12-19 20:21:45 CET
Created attachment 312 [details]
nsd-4.1.7-tcp-mss.diff

Hi,

   I have created a patch to add two options, tcp-mss and outgoing-tcp-mss to set TCP MSS via setsockopt(TCP_MAXSEG). When PMTUD doesn't work correctly, setting TCP MSS to value lower than common MSS on ethernet would help.

   tcp-mss: <number>
              Maximum  segment  size  (MSS)  of TCP socket on which the server
              responds to queries.

    outgoing-tcp-mss: <number>
              Maximum segment size  (MSS)  of  TCP  socket  for  outgoing  XFR
              request to other namesevers.

  PMTUD doesn't work under  ECMP server load-balancing or anycast deployment in some cases[1][2]. Reducing TCP MSS is easy and suitable method for DNS servers to address this issue.
  I have tested this patch on Ubuntu12, CentOS7, and FreeBSD10. But on FreeBSD setsockopt(TCP_MAXSEG) is implemented but it doesn't work [3].

[1]https://blog.cloudflare.com/path-mtu-discovery-in-practice/
[2]https://tools.ietf.org/html/draft-v6ops-pmtud-ecmp-problem-00
[3]https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=144000
Comment 1 Daisuke HIGASHI 2015-12-19 20:22:51 CET
I submitted same patch for Unbound
https://www.nlnetlabs.nl/bugs-script/show_bug.cgi?id=731
Comment 2 Wouter Wijngaards 2016-01-05 11:40:07 CET
Hi Daisuke,

Thank you for your patch.  I have applied it to the code repository.

Best regards, Wouter