Go to file
Souvik Dey 4ec2424a61 net/virtio: set MTU
Virtio interfaces do not currently allow the user to specify a particular
Maximum Transmission Unit (MTU). Consequently, the MTU of Virtio interfaces
is typically set to the Ethernet default value of 1500.
This is problematic in the case of cloud deployments, in which a specific
(and potentially non-standard) MTU needs to be set by a DHCP server, which
needs to be honored by all interfaces across the traffic path.To acheive
this Virtio interfaces should support setting of MTU.
In case when GRE/VXLAN tunneling is used for internal communication, there
will be an overhead added by the infrastructure in the packet over and
above the ETHER MTU of 1518. So to take care of this overhead in these
cases the DHCP server corrects the L3 MTU to 1454. But since virtio
interfaces was not having the MTU set functionality that MTU sent by the
DHCP server was ignored and the instance will still send packets with 1500
MTU which after encapsulation will become more than 1518 and eventually
gets dropped in the infrastructure.
By adding an additional 'set_mtu' function to the Virtio driver, we can
honor the MTU sent by the DHCP server. The dhcp server/controller can
then leverage this 'set_mtu' functionality to resolve the above
mentioned issue of packets getting dropped due to incorrect size.

Signed-off-by: Souvik Dey <sodey@sonusnet.com>
Reviewed-by: Mark Kavanagh <mark.b.kavanagh@intel.com>
Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
2016-10-11 10:28:13 +02:00
app app/testpmd: support 25G and 50G speeds 2016-10-13 18:09:27 +02:00
buildtools pmdinfogen: fix clang build 2016-10-04 11:50:56 +02:00
config crypto/libcrypto: add driver for OpenSSL library 2016-10-08 17:54:37 +02:00
doc doc: fix typo in pdump guide 2016-10-13 18:18:37 +02:00
drivers net/virtio: set MTU 2016-10-11 10:28:13 +02:00
examples examples/tep_term: fix inner L4 checksum 2016-10-13 14:37:48 +02:00
lib app/test: fix vdev names 2016-10-13 15:55:42 +02:00
mk mk: use -march option with recent Intel processors names 2016-10-12 18:40:47 +02:00
pkg version: 16.07.0 2016-07-28 20:48:41 +02:00
scripts app/testpmd: use consistent vdev names 2016-10-13 15:55:51 +02:00
tools tools: bind crypto devices 2016-10-04 20:41:09 +02:00
.gitignore doc: generate NIC overview table from ini files 2016-08-03 18:42:17 +02:00
GNUmakefile pmdinfogen: add buildtools and pmdinfogen utility 2016-07-06 22:34:39 +02:00
LICENSE.GPL doc: GPL/LGPL licenses 2013-07-25 14:43:06 +02:00
LICENSE.LGPL doc: fix file format (dos to unix) 2013-09-06 11:43:07 +02:00
MAINTAINERS net: introduce net library 2016-10-11 18:16:22 +02:00
Makefile remove trailing whitespaces 2014-06-11 00:29:34 +02:00
README doc: add readme file 2015-12-13 22:06:58 +01:00

DPDK is a set of libraries and drivers for fast packet processing.
It supports many processor architectures and both FreeBSD and Linux.

The DPDK uses the Open Source BSD license for the core libraries and
drivers. The kernel components are GPLv2 licensed.

Please check the doc directory for release notes,
API documentation, and sample application information.

For questions and usage discussions, subscribe to: users@dpdk.org
Report bugs and issues to the development mailing list: dev@dpdk.org