Compiling MTCP kernel for ns-3-dce
This page describes the changes which should be made to the MTCP kernel
and to ns-3-linux
to successfully compile ns-3-dce with support
Back to Home
- Download Linux kernel version 2.6.36
and the corresponding MTCP patch.
- In the ns-3-linux folder, extract the Linux kernel to the folder net-next-2.6.
- Now to tell ns-3-linux that we have downloaded the kernel separately, do touch .download.ts.
- Patching the kernel:
- Patch it to work with ns-3-linux:
The process will fail, as not all the patches are applicable to the present kernel. The
change to dmaengine.h has already been made in the kernel. Make sure to say
when a reversed patch is detected when you do:
to indicate that we have patched the kernel and we do not need
other patches. After that, rerun
so that it completes the other tasks (making a soft-link for the
- The MTCP patch: To apply the patch (assuming that it has been
copied to the same folder which contains net-next-2.6) do the
This should succeed without errors.
- cd net-next-2.6
- patch -p1 < ../patch_mptcp_2.6.36_06
- Configuring the kernel:
- Add at bottom of the Makefile (for ns-3-linux,
not the Kernel) the following:
make ARCH=sim gconfig
This allows us to edit the configuration of the kernel to enable MTCP
functionality with some more ease.
- Add the following to the bottom of the file sim/Kconfig:
The EXPERIMENTAL option needs to be set to y for the
MTCP options to be visible.
- Run make defconfig to prepare the initial configuration.
- Run make gconfig to
Note that the steps here are a subset of the steps shown at the link
because some of the options are turned off by default for the
- disable syn cookies Networking support->Networking options->TCP/IP networking->IP: TCP syncookie support (SYN_COOKIES)
- enable MTCP protocol Networking support->Networking options->TCP/IP networking->MTCP protocol (MTCP)
- enable the built-in MPTCP path manager (MTCP_PM)
- enable coupled congestion control Networking support->Networking options->TCP: advanced congestion control->MPTCP COUPLED CONGESTION CONTROL.
- select it as the Default TCP congestion control
- disable IPv6 (this causes problems in running the examples from dce) Networking support->Networking options->TCP/IP networking->The IPv6 protocol
- Overwrite the default configuration:
- cp net-next-2.6/.config config
- Finally, compile the kernel:
This should make a file libnet-next-2.6.so. This is the file which is used with the
examples with ns-3-dce-old.