• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 666
  • Last Modified:

MTU: max send and max receive?

On linux (rhes4) I am testing different MTU settings.  I am finding my best results when sending packets (acorss wans,etc) when I lower the MTU (to say 1400); however the lower MTU setting on the lan causes problems communicating with devices on the lan that run a default mtu (1500).
Is there a way to specify (max receive) and (max send) seperately? In the ppp world this seemed to be seperated as MTU/MRU ...?  
  • 3
  • 2
  • 2
1 Solution
You should be able to achieve that goal by creating alias for your network card:
one address for communicating with nodes on your intranet (LAN) and other one
for Internet cloud.

Linux creating or adding new network alias to a network card (NIC):
Then configure MTU separately for either IP addresses:

the other work around the throughput /baandwith problem would be port bonding:
nedvis: impossible with this way, I just tested.
Virtual network alias shares the same MTU as physical NIC.

 medent: probably you will have no luck with your proble. I thought of some kind of internal  'tunnel' but it doesn't solve your problem...
Artyom, you're right MTU set to the physical NIC  is the value shared between eth0 as real/physical device and etho:0 as virtual device ( alias).
Whatever is the value for mtu size set with
ip link set eth0:0 mtu xyzw
it does apply to eth0 too.
I was wrong.
Sorry , medent,
sincerely nedvis
Build your data science skills into a career

Are you ready to take your data science career to the next step, or break into data science? With Springboard’s Data Science Career Track, you’ll master data science topics, have personalized career guidance, weekly calls with a data science expert, and a job guarantee.

medent, I found one workaround, that may help you:
iptables --insert OUTPUT --jump TCPMSS --protocol tcp --set-mss 1360

1360 is for 'MRU' 1400. Use MSS=MRU-40.
Read here: http://www.wlug.org.nz/MSS

You may test slightly different iptables with condition for 'SYN' packet only with "--tcp-flags SYN".
OUTPUT chain works only for locally generated packets going out. With SYN set you will restrict receiving side to use supplied MSS for the entire TCP session.

It doesn't work for UDP and ICMP however...
medentAuthor Commented:
We dont have iptables running on the servers in question and I would need ICMP to work fully as well.  I do understand why I cannot easily configure a seperate maximum for receive. I would like to be able to receive 1500 and send 1400.  Thank You
> We dont have iptables running on the servers in question and I would need ICMP to work fully as well.
1) iptables doesn't stop ICMP itself.
2) In very rare case ICMP packets exceed 100 bytes, and they are not affected by MTU 1400 or 1500

> I do understand why I cannot easily configure a separate maximum for receive.
You mean you don't understand? Because ethernet is not a point-to-point protocol and you have no means to tell all ethernet neighbors how much MRU do you have. Common bus topology has only MTU=MRU

> I would like to be able to receive 1500 and send 1400.
My workaround is a kind of solution where you can have different send and receive packet size only for TCP sessions.
medentAuthor Commented:
This works and also appears to be the best solution... Thank You.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

The 14th Annual Expert Award Winners

The results are in! Meet the top members of our 2017 Expert Awards. Congratulations to all who qualified!

  • 3
  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now