Giter Site home page Giter Site logo

multipath-tcp / mptcp Goto Github PK

View Code? Open in Web Editor NEW
887.0 887.0 334.0 2.03 GB

⚠️⚠️⚠️ Deprecated 🚫 Out-of-tree Linux Kernel implementation of MultiPath TCP. 👉 Use https://github.com/multipath-tcp/mptcp_net-next repo instead ⚠️⚠️⚠️

Home Page: https://github.com/multipath-tcp/mptcp_net-next

License: Other

C 98.05% Makefile 0.25% Assembly 1.16% Shell 0.22% Awk 0.01% Perl 0.12% Python 0.12% C++ 0.03% UnrealScript 0.01% Yacc 0.01% Lex 0.01% Gherkin 0.01% XS 0.01% Roff 0.02% Clojure 0.01% M4 0.01% sed 0.01% SmPL 0.02% Raku 0.01%

mptcp's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mptcp's Issues

Crash in mptcp_send_active_reset on 32-bit arch

Message from syslogddebian at Apr 14 01:32:33 ...kernel:[138647.861520] EIP:
[] mptcp_send_active_reset+0x49/0x11f SS:ESP 0068:f6ca7f18

This message is shown when the test 'so_linger_onoff-1_linger-0_rst.pkt' is run on debian-7.4.0-i386 with mptcp 0.88v. (test from 'examples/tests/sock_headers' folder)

Running the same test on ubuntu (13.10) x64 there is any problem.

IPv6 address not announced in case of uni-directional traffic

If a host has an IPv6 address next to its IPv4 address, the path-manager in new_session realizes that and correctly increments add_addr.

But, in new_session it does not announce the address, because it is not yet in established state.

What we might do is to provide to new_session the master_sk, and send an ack + address on this one.
On the server-side this should work fine. After all, we end up in new_session only after receiving the third ack.
But, on the client-side this is not ok, because we are in new_session upon reception of the SYN/ACK. If we then send a third ack with IPv6 addr before we could send the third ack + mp_capable, we effectively break syn-cookies for MPTCP...

WARNING: at /usr/src/mptcp/net/core/dst.c:276 dst_release

[ 8391.901082] ------------[ cut here ]------------
[ 8391.901098] WARNING: at /usr/src/mptcp/net/core/dst.c:276 dst_release+0x54/0x80()
[ 8391.901102] Hardware name: HP EliteBook 8540p (NU486AV)
[ 8391.901105] Modules linked in: snd_hrtimer dm_crypt pata_pcmcia snd_hda_codec_hdmi joydev hp_wmi sparse_keymap mxm_wmi sch_sfq uvcvideo videobuf2_vmalloc tpm_infineon videobuf2_memops videobuf2_core videodev pcmcia btusb coretemp kvm_intel dm_multipath kvm psmouse scsi_dh serio_raw intel_ips r852 sm_common snd_hda_codec_idt nand snd_seq_midi nand_ecc yenta_socket nand_bch snd_seq_midi_event bch snd_rawmidi r592 nand_ids memstick mtd pcmcia_rsrc pcmcia_core snd_hda_intel snd_hda_codec snd_hwdep snd_pcm lpc_ich snd_page_alloc tpm_tis hp_accel lis3lv02d input_polldev snd_seq wmi snd_seq_device snd_timer snd nvidia(POF) mac_hid parport_pc mei ppdev soundcore bnep rfcomm bluetooth lp parport binfmt_misc vesafb hid_logitech_dj usb_storage hid_generic usbhid hid ghash_clmulni_intel aesni_intel aes_x86_64 xts lrw gf128mul ablk_helper cryptd microcode video firewire_ohci sdhci_pci firewire_core sdhci crc_itu_t iwlwifi cfg80211 ahci e1000e libahci
[ 8391.901209] Pid: 4579, comm: kworker/u:0 Tainted: PF O 3.8.0-87-mptcp #4
[ 8391.901211] Call Trace:
[ 8391.901222] [] warn_slowpath_common+0x7f/0xc0
[ 8391.901228] [] warn_slowpath_null+0x1a/0x20
[ 8391.901234] [] dst_release+0x54/0x80
[ 8391.901241] [] inet_sock_destruct+0x145/0x1f0
[ 8391.901247] [] mptcp_sock_destruct+0x1c/0x170
[ 8391.901253] [] __sk_free+0x1f/0x140
[ 8391.901257] [] sk_free+0x21/0x30
[ 8391.901260] [] mptcp_sub_close_wq+0xac/0x100
[ 8391.901266] [] process_one_work+0x15c/0x4d0
[ 8391.901270] [] worker_thread+0x16e/0x480
[ 8391.901275] [] ? manage_workers+0x2a0/0x2a0
[ 8391.901279] [] kthread+0xc0/0xd0
[ 8391.901283] [] ? kthread_create_on_node+0x120/0x120
[ 8391.901289] [] ret_from_fork+0x7c/0xb0
[ 8391.901292] [] ? kthread_create_on_node+0x120/0x120
[ 8391.901295] ---[ end trace aaf11ea2c67a7698 ]---
christoph:~$ uname -a
Linux cpaasch-mac 3.8.0-87-mptcp #4 SMP Sun Aug 25 11:55:47 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

the bug looks like still not fixed.V0.88.8 kernel-3.11.10 BUG: unable to handle kernel NULL pointer dereference at 0000000000000014

[73727.941121] BUG: unable to handle kernel NULL pointer dereference at 0000000000000014
[73727.941157] IP: [] mptcp_reqsk_find_tk+0x1c/0x27
[73727.941186] PGD 0
[73727.941199] Oops: 0000 [#1] SMP
[73727.941218] Modules linked in: ipt_MASQUERADE iptable_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipv4 nf_nat nf_conntrack xt_TCPMSS xt_tcpudp iptable_mangle ip_tables x_tables autofs4 ipmi_devintf ipmi_si ipmi_msghandler cpufreq_ondemand be2iscsi iscsi_boot_sysfs ib_iser rdma_cm ib_cm iw_cm ib_sa ib_mad ib_core ib_addr iscsi_tcp bnx2i cnic uio cxgb3i libcxgbi cxgb3 mdio libiscsi_tcp libiscsi scsi_transport_iscsi ext3 jbd dm_mirror dm_multipath scsi_dh video sbs sbshc battery ac mptcp_fullmesh tcp_cubic parport_pc lp parport sg pcspkr igb i2c_algo_bit i2c_core tpm_tis tpm button serio_raw i7core_edac edac_core rtc_cmos ehci_pci tpm_bios acpi_cpufreq freq_table mperf dm_region_hash dm_log dm_mod ahci libahci libata cciss shpchp hpsa sd_mod scsi_mod ext4 jbd2 crc16 uhci_hcd ohci_hcd ehci_hcd [last unloaded: microcode]
[73727.941771]
[73727.941781] CPU: 6 PID: 0 Comm: swapper/6 Tainted: P 3.11.10 #5
[73727.941799] Hardware name: HP ProLiant DL160 G6 , BIOS O33 02/01/2012
[73727.941820] task: ffff8806270f3100 ti: ffff880627116000 task.ti: ffff880627116000
[73727.941842] RIP: 0010:[] [] mptcp_reqsk_find_tk+0x1c/0x27
[73727.942203] RSP: 0018:ffff880c3fc43908 EFLAGS: 00010246
[73727.942548] RAX: 0000000000000000 RBX: ffff880c260ce2c0 RCX: 000000000f73bce0
[73727.942896] RDX: ffff880c3fc438d4 RSI: 000000009ca4075b RDI: 000000005f7e57cc
[73727.943245] RBP: ffff880c22ce4680 R08: 000000009e936aa5 R09: 00000000eef528dc
[73727.943592] R10: 0000000088f45c03 R11: 00000000390cb7b3 R12: ffff880c3fc43950
[73727.943942] R13: ffff880c22ce4680 R14: ffff8806254067c0 R15: 0000000000000000
[73727.944295] FS: 0000000000000000(0000) GS:ffff880c3fc40000(0000) knlGS:0000000000000000
[73727.944648] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
[73727.944993] CR2: 0000000000000014 CR3: 000000000180b000 CR4: 00000000000007e0
[73727.945346] Stack:
[73727.945683] ffffffff813ac5cb ffff880c3fc439d0 ffff880c3fc43950 ffff880c260ce2c0
[73727.946050] ffffffff8134a1d6 ffff880c20e06958 00ff880cdfe4e47a ffff880c22ce46a8
[73727.946416] ffffffff8106054a 0000000000000001 ffff880c3fc528c0 000000013fc528c0
[73727.946781] Call Trace:
[73727.947118]
[73727.947124]
[73727.947465] [] ? mptcp_reqsk_new_mptcp+0x85/0xf1
[73727.947816] [] ? tcp_v4_conn_request+0x391/0xb4c
[73727.948164] [] ? enqueue_task_fair+0x883/0x959
[73727.948510] [] ? ttwu_activate+0x11/0x34
[73727.948857] [] ? check_preempt_curr+0x27/0x66
[73727.949206] [] ? ttwu_do_wakeup+0xf/0xa9
[73727.949556] [] ? try_to_wake_up+0x213/0x224
[73727.949906] [] ? tcp_v6_conn_request+0x3a/0x60e
[73727.950261] [] ? nf_nat_used_tuple+0x20/0x28 [nf_nat]
[73727.950617] [] ? _raw_spin_lock_bh+0x10/0x2e
[73727.950970] [] ? nf_nat_setup_info+0x657/0x70e [nf_nat]
[73727.951325] [] ? ipt_do_table+0x42e/0x453 [ip_tables]
[73727.951670] [] ? tcp_rcv_state_process+0x6c/0xd32
[73727.952020] [] ? internal_add_timer+0x11/0x2d
[73727.952364] [] ? inet_csk_search_req+0x33/0x90
[73727.952706] [] ? tcp_v4_hnd_req+0xb1/0x144
[73727.953048] [] ? tcp_v4_do_rcv+0x202/0x264
[73727.953388] [] ? tcp_v4_rcv+0x47a/0x807
[73727.953737] [] ? ip_local_deliver+0x76/0x76
[73727.954088] [] ? nf_hook_slow+0x71/0x105
[73727.954437] [] ? ip_local_deliver+0x76/0x76
[73727.954788] [] ? ip_local_deliver_finish+0x128/0x1d2
[73727.955143] [] ? __netif_receive_skb_core+0x61c/0x654
[73727.955496] [] ? netif_receive_skb+0x71/0x77
[73727.955846] [] ? napi_gro_receive+0x3a/0x75
[73727.956202] [] ? igb_poll+0xae4/0xdc2 [igb]
[73727.956552] [] ? net_rx_action+0xa7/0x191
[73727.956894] [] ? cpuidle_enter_state+0x3c/0x9f
[73727.957241] [] ? __do_softirq+0xe5/0x1df
[73727.957585] [] ? call_softirq+0x1c/0x30
[73727.957932] [] ? do_softirq+0x31/0x63
[73727.958275] [] ? irq_exit+0x40/0x4d
[73727.958623] [] ? do_IRQ+0x98/0xae
[73727.958971] [] ? common_interrupt+0x6a/0x6a
[73727.959320]
[73727.959326]
[73727.959666] [] ? __schedule+0x79b/0x7d0
[73727.960014] [] ? cpuidle_enter_state+0x3c/0x9f
[73727.960361] [] ? cpuidle_enter_state+0x35/0x9f
[73727.960711] [] ? cpuidle_idle_call+0xfd/0x181
[73727.961054] [] ? arch_cpu_idle+0x9/0x1d
[73727.961398] [] ? cpu_startup_entry+0x115/0x17a
[73727.961745] [] ? start_secondary+0x222/0x227
[73727.962089] [] ? smp_store_cpu_info+0x45/0x45
[73727.962434] Code: d8 5b 5d 41 5c 41 5d 41 5e 41 5f c3 90 90 90 48 89 f8 25 ff 03 00 00 48 8b 04 c5 e0 1f a8 81 eb 03 48 8b 00 a8 01 74 03 31 c0 c3 <3b> 78 14 75 f1 b8 01 00 00 00 c3 81 e6 ff 03 00 00 48 8d 8f 78
[73727.963718] RIP [] mptcp_reqsk_find_tk+0x1c/0x27
[73727.964075] RSP
[73727.964417] CR2: 0000000000000014

Handle IP_RECVERR correctly

IP_RECVERR forces TCP to report any kind of error to the app (e.g., receiving an ICMP Dest-unreach). sk_error_report is called in tcp_v4_err.

With MPTCP, this will trigger the sending of a subflow-FIN (the socket has not been tcp_done'd). This is incorrect behavior.

We probably should not even close the subflow, and only report an error to the app if all subflows are in an error-state.

Reported-by: Laurent Deru <[email protected]>

https://listes-2.sipr.ucl.ac.be/sympa/arc/mptcp-dev/2014-06/msg00090.html

MPTCP stall when receiver announces sub-MTU window

MPTCP v0.88.10

+0      socket(..., SOCK_STREAM, IPPROTO_TCP) = 3
+0      setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
+0      bind(3, ..., ...) = 0
+0      listen(3, 1) = 0

+0      < S 0:0(0) win 32792 <mss 1460,mp_capable a> sock(3)
+0      > S. 0:0(0) ack 1 win 28800 <mss 1460,mp_capable b> sock(3)
+0      < . 1:1(0) ack 1 win 29200 <mp_capable a b> sock(3)

+0      accept(3, ..., ...) = 4

/* Client send 1000 bytes */
+0      write(4, ..., 1000) = 1000
+0      > P. 1:1001(1000) ack 1 <dss dack4 dsn4> sock(4)
+0      < . 1:1(0) ack 1001 win 500 <dss dack4> sock(4)

/* Client send 1000 bytes */
+0.5    write(4, ..., 1000) = 1000
+0      > P. 1001:1501(500) ack 1 <dss dack4 dsn4> sock(4)
+0      < . 1:1(0) ack 2001 win 500 <dss dack4> sock(4)
+0      > P. 1001:1501(500) ack 1 <dss dack4 dsn4> sock(4)
+0      < . 1:1(0) ack 2001 win 500 <dss dack4> sock(4)

Correctly set map_data_seq when fallen back

In mptcp_detect_mapping, we have the following code:

    if (mpcb->infinite_mapping_rcv) {
            tp->mptcp->map_data_seq = mptcp_get_rcv_nxt_64(meta_tp);
            tp->mptcp->map_subseq = tcb->seq;
            tp->mptcp->map_data_len = skb->len;
            tp->mptcp->map_data_fin = tcp_hdr(skb)->fin;
            tp->mptcp->mapping_present = 1;
            return 0;
    }

However, if (before the fallback), dseq 1000 has already been received. Then, 1000 trigers the fallback and the peer sends an infinite mapping starting from dseq 100. Then, packets 100 to 1000 will be delivered twice to the application, with an incorrect sequence number (from 1000 to 1900)...

Reported-by: Krishna Khanal [email protected]

Correctly trigger 64-bit DSS's

Draft-mptcp 06, p. 25

"An implementation MUST send the full 64 bit Data Sequence Number if it is
transmitting at a sufficiently high rate..."

Cannot from the repo on Ubuntu 12.10 Quantal

I followed your install guide and added the repo, however I cannot get it to install. It fails with this error:

root@leviathan:~# apt-get install linux-mptcp
Reading package lists... Done
Building dependency tree
Reading state information... Done
linux-mptcp is already the newest version.
The following packages were automatically installed and are no longer required:
  indicator-application libappindicator1 libappindicator3-1 libdbusmenu-glib4 libdbusmenu-gtk3-4 libdbusmenu-gtk4 libindicator3-7 libindicator7 python-appindicator python-gi python-gobject
Use 'apt-get autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
2 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Do you want to continue [Y/n]? Y
Setting up linux-image-3.5.0-89-mptcp (3.5.0-89.7) ...
Running depmod.
update-initramfs: deferring update (hook will be called later)
The link /initrd.img is a dangling linkto /boot/initrd.img-3.5.0-89-mptcp
Examining /etc/kernel/postinst.d.
run-parts: executing /etc/kernel/postinst.d/apt-auto-removal 3.5.0-89-mptcp /boot/vmlinuz-3.5.0-89-mptcp
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 3.5.0-89-mptcp /boot/vmlinuz-3.5.0-89-mptcp
update-initramfs: Generating /boot/initrd.img-3.5.0-89-mptcp
E: /usr/share/initramfs-tools/hooks/fixrtc failed with return 1.
update-initramfs: failed for /boot/initrd.img-3.5.0-89-mptcp with 1.
run-parts: /etc/kernel/postinst.d/initramfs-tools exited with return code 1
Failed to process /etc/kernel/postinst.d at /var/lib/dpkg/info/linux-image-3.5.0-89-mptcp.postinst line 1010.
dpkg: error processing linux-image-3.5.0-89-mptcp (--configure):
 subprocess installed post-installation script returned error exit status 2
dpkg: dependency problems prevent configuration of linux-mptcp:
 linux-mptcp depends on linux-image-3.5.0-89-mptcp; however:
  Package linux-image-3.5.0-89-mptcp is not configured yet.

dpkg: error processing linux-mptcp (--configure):
 dependency problems - leaving unconfigured
Errors were encountered while processing:
 linux-image-3.5.0-89-mptcp
 linux-mptcp
E: Sub-process /usr/bin/dpkg returned an error code (1) 

Any help is appreciated.

BUG: unable to handle kernel NULL pointer dereference at IP: [<c13db901>] mptcp_data_ready+0x1431/0x1710

See on multipath-tcp.org:

[2159307.591700] BUG: unable to handle kernel NULL pointer dereference at 00000030
[2159307.591718] IP: [c13db901] mptcp_data_ready+0x1431/0x1710
[2159307.591732] *pdpt = 000000002b9cc001 *pde = 0000000000000000
[2159307.591741] Oops: 0000 [#1] SMP
[2159307.591748] Modules linked in: ip6table_filter ip6_tables evdev coretemp kvm_intel snd_pcm kvm snd_timer snd soundcore snd_page_alloc pcspkr microcode ext3 jbd mbcache xen_netfront xen_blkfront
[2159307.591781] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 3.11.10 #23
[2159307.591788] task: c1522760 ti: eb812000 task.ti: c1516000
[2159307.591795] EIP: 0061:[] EFLAGS: 00010206 CPU: 0
[2159307.591803] EIP is at mptcp_data_ready+0x1431/0x1710
[2159307.591809] EAX: 0000ffff EBX: eb206300 ECX: 00000000 EDX: 00000000
[2159307.591815] ESI: 00000000 EDI: 00000000 EBP: eb20634c ESP: eb813cf0
[2159307.591822] DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0069
[2159307.591830] CR0: 8005003b CR2: 00000030 CR3: 2b9c8000 CR4: 00002660
[2159307.591838] DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000
[2159307.591844] DR6: ffff0ff0 DR7: 00000000
[2159307.591849] Stack:
[2159307.591852] c13d5e1c c1da3a80 202bf5ce eb0be000 00000000 00000000 00000000 00000000
[2159307.591866] 01000000 00000000 df67d200 c1da1040 00000000 00000000 eb0bf200 eb206880
[2159307.591879] 00000000 c6be3c61 fab7b596 eba70c01 00000020 c1da1040 00000000 00000000
[2159307.591893] Call Trace:
[2159307.591899] [] ? get_available_subflow+0xcc/0x300
[2159307.591910] [] ? tcp_data_queue+0x732/0xd10
[2159307.591917] [] ? tcp_rcv_established+0x15c/0x590
[2159307.591926] [] ? tcp_v4_do_rcv+0x156/0x250
[2159307.591932] [] ? tcp_v4_rcv+0x6dc/0x760
[2159307.591940] [] ? ip_rcv+0x3b0/0x3b0
[2159307.591947] [] ? nf_hook_slow+0x6c/0x120
[2159307.591954] [] ? ip_rcv+0x3b0/0x3b0
[2159307.591961] [] ? ip_local_deliver_finish+0x55/0x1e0
[2159307.591969] [] ? ip_rcv_finish+0xfb/0x310
[2159307.591978] [] ? free_pages_prepare+0xcb/0x130
[2159307.591986] [] ? __netif_receive_skb_core+0x429/0x5e0
[2159307.591993] [] ? netif_receive_skb+0x1f/0x70
[2159307.592002] [] ? xennet_poll+0x8e8/0xc10 [xen_netfront]
[2159307.592011] [] ? load_balance+0xa4/0x620
[2159307.592019] [] ? _raw_spin_unlock_irqrestore+0xb/0x10
[2159307.592027] [] ? migrate_task_rq_fair+0x60/0x130
[2159307.592035] [] ? net_rx_action+0x98/0x1c0
[2159307.592042] [] ? __do_softirq+0xbb/0x200
[2159307.592049] [] ? local_bh_enable+0x80/0x80
[2159307.592055]
[2159307.592058] [] ? irq_exit+0x95/0xa0
[2159307.592070] [] ? xen_evtchn_do_upcall+0x1d/0x30
[2159307.592078] [] ? xen_do_upcall+0x7/0xc
[2159307.592085] [] ? request_percpu_irq+0x2b/0xc0
[2159307.592093] [] ? xen_hypercall_sched_op+0x7/0x20
[2159307.592101] [] ? xen_safe_halt+0xf/0x20
[2159307.592109] [] ? default_idle+0x18/0xa0
[2159307.592116] [] ? arch_cpu_idle+0x16/0x20
[2159307.592123] [] ? cpu_startup_entry+0xa2/0x230
[2159307.592130] [] ? start_kernel+0x3ab/0x3b0
[2159307.592137] [] ? repair_env_string+0x57/0x57
[2159307.592145] [] ? xen_start_kernel+0x6e5/0x6ef
[2159307.592151] Code: d0 15 ff ff 00 00 f7 d0 c1 e8 10 85 c0 0f 84 b6 ef ff ff 8b 4c 24 5c 8b 54 24 70 8b 7c 24 58 89 4c 24 18 89 54 24 10 89 7c 24 14 <8b> 56 30 89 44 24 08 c7 44 24 04 cf f9 43 c1 c7 04 24 e8 39 4e
[2159307.592218] EIP: [] mptcp_data_ready+0x1431/0x1710 SS:ESP 0069:eb813cf0
[2159307.592229] CR2: 0000000000000030
[2159307.592245] ---[ end trace 5132e274146f8cec ]---
[2159307.592250] Kernel panic - not syncing: Fatal exception in interrupt

BUG: unable to handle kernel paging request at ffffffffffffffd0(__inet_lookup_established)

I have two PCs with mptcp kernel in vlan,and use siege for flow measurement .use the follow script:
"
while [ 1 ]
do
siege -c 50 -r 100 ip/755k;
done
"
after about 16 hours, the server's kernel crash:

[ 8310.139661] BUG: unable to handle kernel paging request at ffffffffffffffd0
[ 8310.139890] IP: [<ffffffff8135554b>] __inet_lookup_established+0x161/0x237
[ 8310.140118] PGD 1a0c067 PUD 1a0e067 PMD 0
[ 8310.140189] Oops: 0000 [#1] SMP
[ 8310.140242] Modules linked in: autofs4 hidp rfcomm bluetooth rfkill crc16 lockd sunrpc ip_tables ip6_tables x_tables be2iscsi iscsi_boot_sysfs ib_iser rdma_cm ib_cm iw_cm ib_sa ib_mad ib_core ib_addr iscsi_tcp bnx2i cnic uio cxgb3i libcxgbi cxgb3 mdio libiscsi_tcp libiscsi scsi_transport_iscsi dm_mirror dm_multipath scsi_dh video sbs sbshc battery lp sg pcspkr ac button serio_raw e1000 parport_pc tpm_tis i2c_piix4 shpchp tpm i2c_core tpm_bios ide_cd_mod parport floppy cdrom dm_region_hash(F) dm_log(F) dm_mod(F) ata_piix(F) libata(F) mptspi(F) mptscsih(F) mptbase(F) scsi_transport_spi(F) sd_mod(F) scsi_mod(F) ext3(F) jbd(F) uhci_hcd(F) ohci_hcd(F) ehci_hcd(F) [last unloaded: freq_table]
[ 8310.142577] CPU: 0 PID: 0 Comm: swapper/0 Tainted: PF            3.11.10 #68
[ 8310.142689] Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 09/21/2011
[ 8310.142873] task: ffffffff81a10420 ti: ffffffff81a00000 task.ti: ffffffff81a00000
[ 8310.143057] RIP: 0010:[<ffffffff8135554b>]  [<ffffffff8135554b>] __inet_lookup_established+0x161/0x237
[ 8310.143222] RSP: 0018:ffff88013fc03a40  EFLAGS: 00010246
[ 8310.143552] RAX: 0000000000000000 RBX: ffff88011f317440 RCX: 0000000000000002
[ 8310.143708] RDX: 0000000000502874 RSI: 0000000000000000 RDI: ffffffff81a35700
[ 8310.143861] RBP: ffff88013fc03a80 R08: 0000000000000001 R09: 0000000000000000
[ 8310.144134] R10: ffffffff81673660 R11: 000000000000ade5 R12: 00000000ca5bedd5
[ 8310.144288] R13: 950010ac3e0010ac R14: ffffc900106eed50 R15: ffffffff81a7ba80
[ 8310.144598] FS:  0000000000000000(0000) GS:ffff88013fc00000(0000) knlGS:0000000000000000
[ 8310.144832] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 8310.146985] CR2: ffffffffffffffd0 CR3: 000000013278f000 CR4: 00000000000407f0
[ 8310.147220] Stack:
[ 8310.147280]  ffffffff813553ea 0000000000006dd5 0050287481a9c420 ffff8801338fadc0
[ 8310.147630]  ffff88011f028ace ffff88011f028ace ffffffff81a9c420 ffff880135076000
[ 8310.147801]  ffff88013fc03ab0 ffffffff8136b920 0000000000000002 0000000000000000
[ 8310.148088] Call Trace:
[ 8310.148153]  <IRQ>
[ 8310.148170]
[ 8310.148260]  [<ffffffff813553ea>] ? inet_hash_connect+0x3b/0x3b
[ 8310.148687]  [<ffffffff8136b920>] tcp_v4_early_demux+0xc1/0x128
[ 8310.148831]  [<ffffffff8134ca71>] ip_rcv_finish+0x91/0x48b
[ 8310.148965]  [<ffffffff8134c925>] ip_rcv+0x28c/0x2cc
[ 8310.149086]  [<ffffffff81315968>] __netif_receive_skb_core+0x665/0x6c3
[ 8310.149230]  [<ffffffff81315439>] ? __netif_receive_skb_core+0x136/0x6c3
[ 8310.149903]  [<ffffffff81315a22>] __netif_receive_skb+0x5c/0x65
[ 8310.151717]  [<ffffffff813178a6>] netif_receive_skb+0xcd/0xd8
[ 8310.151856]  [<ffffffff81317eb8>] napi_gro_receive+0x3b/0x78
[ 8310.152077]  [<ffffffffa02172af>] e1000_receive_skb+0x5a/0x63 [e1000]
[ 8310.152227]  [<ffffffffa021bcb7>] e1000_clean_rx_irq+0x322/0x3e8 [e1000]
[ 8310.152724]  [<ffffffffa0219e83>] e1000_clean+0xa71/0xc0f [e1000]
[ 8310.152882]  [<ffffffff8109b505>] ? note_gp_changes+0x34/0x5f
[ 8310.153052]  [<ffffffff8131a9b1>] net_rx_action+0xb2/0x1b1
[ 8310.153188]  [<ffffffff8103c971>] __do_softirq+0xf0/0x1ef
[ 8310.153322]  [<ffffffff81407b9c>] call_softirq+0x1c/0x30
[ 8310.153691]  [<ffffffff81003df5>] do_softirq+0x33/0x6a
[ 8310.153811]  [<ffffffff8103cc86>] irq_exit+0x40/0x4e
[ 8310.153939]  [<ffffffff81003269>] do_IRQ+0x9b/0xb2
[ 8310.154053]  [<ffffffff813ffa6a>] common_interrupt+0x6a/0x6a
[ 8310.154263]  <EOI>
[ 8310.154282]
[ 8310.154615]  [<ffffffff81009178>] ? default_idle+0x4a/0x8e
[ 8310.154797]  [<ffffffff8100955b>] arch_cpu_idle+0x13/0x18
[ 8310.154934]  [<ffffffff810718f5>] cpu_startup_entry+0x122/0x189
[ 8310.155131]  [<ffffffff813f4513>] rest_init+0xb7/0xbb
[ 8310.155248]  [<ffffffff813f445c>] ? csum_partial_copy_generic+0x16c/0x16c
[ 8310.155666]  [<ffffffff81ab5e96>] start_kernel+0x34f/0x35c
[ 8310.155793]  [<ffffffff81ab5766>] ? repair_env_string+0x62/0x62
[ 8310.155989]  [<ffffffff81ab54bd>] x86_64_start_reservations+0x2e/0x30
[ 8310.156136]  [<ffffffff81ab55ae>] x86_64_start_kernel+0xef/0xf6
[ 8310.156266] Code: 3b 45 10 75 0a 4c 39 7b 30 0f 84 c8 00 00 00 f0 ff 4b 4c 0f 94 c0 84 c0 74 8e 48 89 df e8 a2 37 fb ff eb 84 48 8b 00 a8 01 75 0f <44> 39 60 d0 48 8d 58 c8 75 ef e9 73 ff ff ff 48 d1 e8 48 3b 45
[ 8310.157263] RIP  [<ffffffff8135554b>] __inet_lookup_established+0x161/0x237
[ 8310.157611]  RSP <ffff88013fc03a40>
[ 8310.157696] CR2: ffffffffffffffd0”

Disable MPTCP if we receive a SYN without MP_CAPABLE

The RFC specifies that as soon as we send/receive a SYN without MP_CAPABLE we
should fallback to regular TCP, to ensure that both hosts are in-sync.

This is not supported currently, as in tcp_check_req, we do not unset the
saw_mpc-flag.

V0.88 kernel-3.11.3 BUG: unable to handle kernel NULL pointer dereference at 0000000000000014

[ 2465.647829] TCP: mptcp_fallback_infinite 0x462ef097 will fallback - pi 1, src 122.228.228.223 dst 220.181.112.207 from tcp_rcv_established+0x439/0x543
[ 5342.803548] perf samples too long (5007 > 5000), lowering kernel.perf_event_max_sample_rate to 25000
[ 8588.902154] device eth0 entered promiscuous mode
[ 8593.551460] device eth0 left promiscuous mode
[ 8605.082309] device eth1 entered promiscuous mode
[ 8606.025251] device eth1 left promiscuous mode
[ 8655.332253] device eth0 entered promiscuous mode
[ 8656.104308] device eth0 left promiscuous mode
[22277.587875] BUG: unable to handle kernel NULL pointer dereference at 0000000000000014
[22277.588588] IP: [] mptcp_reqsk_find_tk+0x73/0x83
[22277.588960] PGD 0
[22277.589310] Oops: 0000 [#1] SMP
[22277.589667] Modules linked in: xt_TCPMSS xt_tcpudp iptable_mangle ip_tables x_tables autofs4 ipmi_devintf ipmi_si ipmi_msghandler cpufreq_ondemand be2iscsi iscsi_boot_sysfs ib_iser rdma_cm ib_cm iw_cm ib_sa ib_mad ib_core ib_addr iscsi_tcp bnx2i cnic uio cxgb3i libcxgbi cxgb3 mdio libiscsi_tcp libiscsi scsi_transport_iscsi ext3 jbd dm_mirror dm_multipath scsi_dh video sbs sbshc battery ac mptcp_fullmesh tcp_cubic parport_pc lp parport sg pcspkr igb i2c_algo_bit i2c_core serio_raw button tpm_tis tpm tpm_bios rtc_cmos i7core_edac ehci_pci edac_core acpi_cpufreq freq_table mperf dm_region_hash dm_log dm_mod ahci libahci libata cciss shpchp hpsa sd_mod scsi_mod ext4 jbd2 crc16 uhci_hcd ohci_hcd ehci_hcd [last unloaded: microcode]
[22277.593543] CPU: 6 PID: 0 Comm: swapper/6 Tainted: P 3.11.3 #25
[22277.593902] Hardware name: HP ProLiant DL160 G6 , BIOS O33 02/01/2012
[22277.594262] task: ffff880625926440 ti: ffff880625928000 task.ti: ffff880625928000
[22277.594949] RIP: 0010:[] [] mptcp_reqsk_find_tk+0x73/0x83
[22277.595631] RSP: 0018:ffff880c3e6037a8 EFLAGS: 00010246
[22277.595982] RAX: 0000000000000000 RBX: 0000000000000000 RCX: 00000000110bb7ac
[22277.596333] RDX: ffff880c3e60377c RSI: 00000000f77447d7 RDI: 00000000383f1ffe
[22277.596687] RBP: ffff880c3e6037b8 R08: 000000009fac8640 R09: 0000000052583c62
[22277.597042] R10: 0000000071b68f3c R11: 00000000ab7c7690 R12: 00000000383f1ffe
[22277.597403] R13: ffff880c3e603828 R14: 0000000000000000 R15: ffff880c16e590c0
[22277.597764] FS: 0000000000000000(0000) GS:ffff880c3e600000(0000) knlGS:0000000000000000
[22277.598448] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
[22277.598803] CR2: 0000000000000014 CR3: 00000006080dd000 CR4: 00000000000007e0
[22277.599156] Stack:
[22277.607685] ffff880c22c3ff00 ffff880c16e590c0 ffff880c3e6037e8 ffffffff81456ef8
[22277.608394] ffffffff81456df5 ffff880c16e590e8 ffff880c3e603828 ffff880c22c3ff00
[22277.609103] ffff880c3e603938 ffffffff813d5c74 ffff880c250b38a0 ffff880c20740040
[22277.609813] Call Trace:
[22277.610156]
[22277.610169]
[22277.610518] [] mptcp_reqsk_new_mptcp+0x103/0x1db
[22277.610874] [] ? mptcp_reqsk_destructor+0x1af/0x1af
[22277.611236] [] tcp_v4_conn_request+0x3b2/0xbec
[22277.611588] [] ? _raw_spin_lock+0x6c/0x75
[22277.611945] [] ? trace_hardirqs_on+0xd/0xf
[22277.612304] [] ? local_bh_enable+0xb2/0xba
[22277.612659] [] ? dev_queue_xmit+0x6fe/0x76f
[22277.613008] [] ? dev_add_pack+0x56/0x56
[22277.613356] [] ? ip_finish_output+0x5da/0x659
[22277.613703] [] ? ip_finish_output+0x2b9/0x659
[22277.614061] [] tcp_v6_conn_request+0x48/0x66d
[22277.614414] [] ? check_leaf+0x98/0x22b
[22277.614769] [] ? fib_table_lookup+0x460/0x480
[22277.615129] [] tcp_rcv_state_process+0x80/0xe26
[22277.615485] [] ? __inet_lookup_established+0x37a/0x39b
[22277.615844] [] ? __inet_check_established+0x29e/0x29e
[22277.616206] [] ? tcp_v4_hnd_req+0x101/0x194
[22277.616564] [] ? tcp_v4_rcv+0x55b/0xaa2
[22277.616916] [] tcp_v4_do_rcv+0x59e/0x610
[22277.617266] [] ? _raw_spin_lock_nested+0x6a/0x73
[22277.617614] [] tcp_v4_rcv+0x583/0xaa2
[22277.617962] [] ? ip_local_deliver_finish+0x3e/0x3c1
[22277.618316] [] ip_local_deliver_finish+0x258/0x3c1
[22277.618664] [] ? ip_local_deliver_finish+0x3e/0x3c1
[22277.619019] [] ip_local_deliver+0x73/0x7b
[22277.619374] [] ip_rcv_finish+0x58f/0x5a7
[22277.619726] [] ip_rcv+0x28c/0x2cc
[22277.620082] [] __netif_receive_skb_core+0x988/0xa53
[22277.620436] [] ? __netif_receive_skb_core+0x25e/0xa53
[22277.620784] [] __netif_receive_skb+0x5c/0x65
[22277.621129] [] netif_receive_skb+0x1a8/0x1b3
[22277.621474] [] napi_gro_receive+0x3b/0x78
[22277.621828] [] igb_poll+0xae3/0xdab [igb]
[22277.622180] [] net_rx_action+0xbe/0x280
[22277.622532] [] __do_softirq+0x180/0x359
[22277.622887] [] irq_exit+0x54/0x62
[22277.623246] [] do_IRQ+0x9b/0xb2
[22277.623603] [] common_interrupt+0x6f/0x6f
[22277.623957]
[22277.623970]
[22277.624316] [] ? cpuidle_enter_state+0x43/0xb0
[22277.624671] [] ? cpuidle_enter_state+0x47/0xb0
[22277.625029] [] ? cpuidle_enter_state+0x43/0xb0
[22277.625388] [] cpuidle_idle_call+0x190/0x2e5
[22277.625748] [] arch_cpu_idle+0x9/0x1d
[22277.626098] [] cpu_startup_entry+0x225/0x2d8
[22277.626447] [] start_secondary+0x1c0/0x1c5
[22277.626792] Code: 74 1e e8 b0 4f c6 ff 85 c0 75 15 e8 db 4f c6 ff 84 c0 74 0c 48 c7 c7 80 64 a3 81 e8 ac 3f c3 ff 48 89 d8 a8 01 74 04 31 c0 eb 0b <44> 3b 63 14 75 b3 b8 01 00 00 00 5b 41 5c c9 c3 55 48 8b 97 90
[22277.628158] RIP [] mptcp_reqsk_find_tk+0x73/0x83
[22277.628517] RSP
[22277.628863] CR2: 0000000000000014
crash>

Null-pointer dereference in mptcp_reqsk_new_mptcp

Happened on multipath-tcp.org, which is running a v0.87.4

[84466.012677] BUG: unable to handle kernel NULL pointer dereference at 0000000c
[84466.012686] IP: [] mptcp_reqsk_new_mptcp+0x78/0x120
[84466.012697] *pdpt = 0000000001db5001 *pde = 0000000000000000
[84466.012706] Oops: 0000 [#1] SMP
[84466.012712] Modules linked in: ip6table_filter ip6_tables coretemp kvm_intel kvm evdev snd_pcm snd_timer snd soundcore snd_page_alloc pcspkr microcode ext3 jbd mbcache xen_netfront xen_blkfront
[84466.012742] CPU: 0 PID: 2507 Comm: squid Not tainted 3.10.17 #12
[84466.012749] task: c1dc0440 ti: eb812000 task.ti: eba58000
[84466.012755] EIP: 0061:[] EFLAGS: 00010246 CPU: 0
[84466.012762] EIP is at mptcp_reqsk_new_mptcp+0x78/0x120
[84466.012768] EAX: 00000000 EBX: ebb80600 ECX: 00000000 EDX: d0cb0b45
[84466.012774] ESI: eba4d000 EDI: ebb8066c EBP: 0000eca8 ESP: eb813cec
[84466.012781] DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0069
[84466.012787] CR0: 8005003b CR2: 0000000c CR3: 01f0f000 CR4: 00002660
[84466.012795] DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000
[84466.012801] DR6: ffff0ff0 DR7: 00000000
[84466.012806] Stack:
[84466.012809] 00000000 eb813d68 eba4d000 c1e2d400 ebb80600 eb813d68 c134c0b0 eba4d000
[84466.016260] eb813dbf 0000011e eba4d018 c1480209 00000000 00000000 2de66882 00d20000
[84466.016260] eb813d78 c1324af0 c13df695 00000000 ffffffff 00000000 00000000 ecceed00
[84466.016260] Call Trace:
[84466.016260] [] ? tcp_v4_conn_request+0x5e0/0xae0
[84466.016260] [] ? ip6t_log_packet+0x2c0/0x2c0
[84466.016260] [] ? printk+0x37/0x3b
[84466.016260] [] ? log_tg+0x9c/0xf0
[84466.016260] [] ? pte_pfn_to_mfn+0x2b/0xd0
[84466.016260] [] ? local_bh_enable+0x16/0x80
[84466.016260] [] ? ipt_do_table+0x21c/0x3b0
[84466.016260] [] ? tcp_rcv_state_process+0x14b/0x630
[84466.016260] [] ? tcp_v4_do_rcv+0xb7/0x240
[84466.016260] [] ? tcp_v4_rcv+0x697/0x720
[84466.016260] [] ? nf_hook_slow+0x6c/0x120
[84466.016260] [] ? ip_rcv+0x3a0/0x3a0
[84466.016260] [] ? ip_local_deliver_finish+0x45/0x1d0
[84466.016260] [] ? ip_rcv_finish+0xeb/0x2f0
[84466.016260] [] ? free_pages_prepare+0xcb/0x130
[84466.016260] [] ? __netif_receive_skb_core+0x419/0x5c0
[84466.016260] [] ? netif_receive_skb+0x1f/0x70
[84466.016260] [] ? xennet_poll+0x8cb/0xc00 [xen_netfront]
[84466.016260] [] ? __do_proc_doulongvec_minmax+0x290/0x320
[84466.016260] [] ? net_rx_action+0x98/0x1c0
[84466.016260] [] ? __do_softirq+0xbb/0x200
[84466.016260] [] ? local_bh_enable+0x80/0x80
[84466.016260]
[84466.016260] [] ? irq_exit+0x95/0xa0
[84466.016260] [] ? xen_evtchn_do_upcall+0x1d/0x30
[84466.016260] [] ? xen_do_upcall+0x7/0xc
[84466.016260] [] ? __d_lookup_rcu+0x68/0x160
[84466.016260] [] ? lookup_fast+0x3a/0x280
[84466.016260] [] ? link_path_walk+0x169/0x740
[84466.016260] [] ? get_empty_filp+0x96/0x1e0
[84466.016260] [] ? path_init+0x1a2/0x310
[84466.016260] [] ? handle_pte_fault+0x6b5/0xb40
[84466.016260] [] ? path_openat+0x79/0x3d0
[84466.016260] [] ? do_filp_open+0x34/0x90
[84466.016260] [] ? __alloc_fd+0xa2/0x100
[84466.016260] [] ? do_sys_open+0xf2/0x1d0
[84466.016260] [] ? SyS_open+0x1d/0x30
[84466.016260] [] ? syscall_call+0x7/0xb
[84466.016260] [] ? __mutex_lock_killable_slowpath+0x30/0x210
[84466.016260] Code: 00 00 89 43 70 89 53 74 89 f9 c7 04 24 00 00 00 00 e8 dd bc ff ff 8b 53 6c 89 d0 25 ff 03 00 00 8b 04 85 e0 2e 65 c1 a8 01 75 0b <3b> 50 0c 74 ab 8b 00 a8 01 74 f5 8b 53 6c 89 d0 25 ff 03 00 00
[84466.016260] EIP: [] mptcp_reqsk_new_mptcp+0x78/0x120 SS:ESP 0069:eb813cec
[84466.016260] CR2: 000000000000000c
[84466.208241] ---[ end trace e5c100bda36e9ca8 ]---

Window scale is not respected when the RCVBUF is specified before listen

If you try out regular TCP, then after setting the recv-buffer to 40KB, the socket will behave different when sending the SYN/ACK.

With regular TCP, the SYN/ACK will have a window-scale of 0 (because the window-field of the TCP header can announce the fixed 40KB).
Actually, MPTCP is failing there. It announces a window-scale of 7 although it should not.
Found with on
https://github.com/ArnaudSchils/packetdrill_mptcp/blob/master/packetdrill/gtests/net/packetdrill/examples/tests/sock_headers/so_rcvbuf-sndbuf_set_before_listen.pkt (line 22)

referenced from aschils/packetdrill_mptcp#5

FIN flag within DSS option crashes the kernel in user-context

When we send a packet with DSS and FIN flag to a mptcp v0.88 kernel then it crashes.

// Receive a segment with a FIN flag. Problem here
//0.300 < PF. 1001:2002(1000) ack 1 win 257 'nop,nop,TS val 700 ecr 100, dss dack4 dsn4 FIN'
// This one is ok
0.300 < PF. 1001:2001(1000) ack 1 win 257 'nop,nop,TS val 700 ecr 100, dss dack4 dsn4'
0.300 > . 1:1(0) ack 2002 win 488 'nop,nop,TS val 175 ecr 700, dss dack4 '

Test was done on Linux x64 (Ubuntu 13.10) and x32 (Debian wheezy), the entire file of test is: https://github.com/ArnaudSchils/packetdrill_mptcp/blob/master/packetdrill/gtests/net/packetdrill/examples/tests/ioctl/ioctl-siocinq-client.pkt

This actually occurs when a FIN flag is set but the DLL is not incremented by 1 ( DLL +1 for the FIN flag)

limit non-mapping packets in subflow to 64KB

It may be possible, that all DSS-mappings are stripped from the packets. We
have to limit the storage of these packets up to 64KB of payload (because the
DSS-mapping length is on 16bit).
Upon reception of 64KB of non-mapped, in-order data on the subflow we may
fallback on this subflow. As there is really an issue on this subflow.

Implement mptcp experient and find a bug

Hi,
I am Jianqing chen.In recently,I have implement mptcp experient and find a strange bug.I am not able to fix out,please help me.

The Bug phenomenon: the screen is black and no log. The keyboard and mouse have no reaction. The server is on hook state.After I reboot the server ,and look up the /var/log/message,there is no valid message .

Dec 19 19:46:00 12007860 kernel: net/mptcp/mptcp_ctrl.c: mptcp_close: Close of meta_sk with tok 0xa1eb92c4
Dec 19 19:46:00 12007860 kernel: net/mptcp/mptcp_ctrl.c: mptcp_sock_destruct destroying meta-sk
Dec 19 19:46:05 12007860 kernel: net/mptcp/mptcp_ctrl.c: mptcp_alloc_mpcb: created mpcb with token 0xa6d58b76
Dec 19 19:46:05 12007860 kernel: net/mptcp/mptcp_ctrl.c: mptcp_select_ack_sock pi 1 state 3 last_dseq 0
Dec 19 19:46:05 12007860 kernel: net/mptcp/mptcp_ctrl.c: mptcp_select_ack_sock pi 1 state 3 last_dseq 0
Dec 19 19:46:06 12007860 kernel: net/mptcp/mptcp_ctrl.c: mptcp_add_sock: token 0xa6d58b76 pi 2, src_addr:172.16.0.93:80 dst_addr:172.16.0.219:37469, cnt_subflows now 2
Dec 19 19:46:06 12007860 kernel: net/mptcp/mptcp_ctrl.c: mptcp_add_sock: token 0xa6d58b76 pi 3, src_addr:172.16.0.232:80 dst_addr:172.16.0.226:44161, cnt_subflows now 3
Dec 19 19:46:06 12007860 kernel: net/mptcp/mptcp_ctrl.c: mptcp_add_sock: token 0xa6d58b76 pi 4, src_addr:172.16.0.232:80 dst_addr:172.16.0.219:51016, cnt_subflows now 4
Dec 19 19:46:06 12007860 kernel: net/mptcp/mptcp_ctrl.c: mptcp_add_sock: token 0xa6d58b76 pi 5, src_addr:172.16.0.233:80 dst_addr:172.16.0.226:33406, cnt_subflows now 5
Dec 19 19:46:06 12007860 kernel: net/mptcp/mptcp_ctrl.c: mptcp_add_sock: token 0xa6d58b76 pi 6, src_addr:172.16.0.233:80 dst_addr:172.16.0.219:57595, cnt_subflows now 6
Dec 19 19:46:06 12007860 kernel: net/mptcp/mptcp_ctrl.c: mptcp_add_sock: token 0xa6d58b76 pi 7, src_addr:172.16.0.234:80 dst_addr:172.16.0.226:59579, cnt_subflows now 7
Dec 19 19:46:06 12007860 kernel: net/mptcp/mptcp_ctrl.c: mptcp_add_sock: token 0xa6d58b76 pi 8, src_addr:172.16.0.234:80 dst_addr:172.16.0.219:52350, cnt_subflows now 8
Dec 19 21:48:21 12007860 syslogd 1.4.1: restart.
Dec 19 21:48:21 12007860 kernel: klogd 1.4.1, log source = /proc/kmsg started.
Dec 19 21:48:21 12007860 kernel: Linux version 3.11.3-002 ([email protected]) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-1) (GCC) ) #21 SMP Wed Dec 18 11:12:50 CST 2013
Dec 19 21:48:21 12007860 kernel: Command line: ro root=LABEL=/ crashkernel=128M@32M

Dec 19 21:48:21 12007860 kernel: e820: BIOS-provided physical RAM map:

I set up the environment in LAN and the client have the dual cards, server have the four cards.There is establlishing eight flow.It no behind NAT.

Apache is built on the server, and the client continuously to download the data from Apache.But the above phenomenon is appear in normal running a day.

The route table of server is
[root@12007860 crash]# ip route show
default via 172.16.0.254 dev eth0
169.254.0.0/16 dev eth3 scope link
172.16.0.0/24 dev eth0 proto kernel scope link src 172.16.0.93
172.16.0.0/24 dev eth1 proto kernel scope link src 172.16.0.232
172.16.0.0/24 dev eth2 proto kernel scope link src 172.16.0.233
172.16.0.0/24 dev eth3 proto kernel scope link src 172.16.0.234

[root@12007860 crash]# ifconfig
eth0 Link encap:Ethernet HWaddr BC:30:5B:F6:0A:A4
inet addr:172.16.0.93 Bcast:172.16.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:23605 errors:0 dropped:330 overruns:0 frame:0
TX packets:3275 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1845627 (1.7 MiB) TX bytes:343220 (335.1 KiB)
Memory:dcb00000-dcc00000

eth1 Link encap:Ethernet HWaddr BC:30:5B:F6:0A:A5
inet addr:172.16.0.232 Bcast:172.16.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1460 Metric:1
RX packets:19768 errors:0 dropped:324 overruns:0 frame:0
TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1529734 (1.4 MiB) TX bytes:84 (84.0 b)
Memory:dcc00000-dcd00000

eth2 Link encap:Ethernet HWaddr BC:30:5B:F6:0A:A6
inet addr:172.16.0.233 Bcast:172.16.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:19943 errors:0 dropped:327 overruns:0 frame:0
TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1542151 (1.4 MiB) TX bytes:84 (84.0 b)
Memory:dcd00000-dce00000

eth3 Link encap:Ethernet HWaddr BC:30:5B:F6:0A:A7
inet addr:172.16.0.234 Bcast:172.16.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:19908 errors:0 dropped:326 overruns:0 frame:0
TX packets:3 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1538760 (1.4 MiB) TX bytes:126 (126.0 b)
Memory:dce00000-dcf00000

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

[root@12007860 crash]# uname -a
Linux 12007860 3.11.3-002 #21 SMP Wed Dec 18 11:12:50 CST 2013 x86_64 x86_64 x86_64 GNU/Linux

[root@12007860 crash]# sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 0
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_max_tw_buckets = 4000
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_local_port_range = 10000 61000
net.mptcp.mptcp_enabled = 1
net.mptcp.mptcp_checksum = 0
net.mptcp.mptcp_path_manager = fullmesh
net.mptcp.mptcp_debug = 1


the route table of the client is
[root@localhost ~]# ip route show
default via 172.16.0.254 dev eth0
169.254.0.0/16 dev eth1 scope link
172.16.0.0/24 dev eth0 proto kernel scope link src 172.16.0.226
172.16.0.0/24 dev eth1 proto kernel scope link src 172.16.0.219

[root@localhost ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 78:2B:CB:04:79:D2
inet addr:172.16.0.226 Bcast:172.16.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:4737499049 errors:51 dropped:83200 overruns:0 frame:51
TX packets:1066331153 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:7112109118772 (6.4 TiB) TX bytes:72871035067 (67.8 GiB)

eth1 Link encap:Ethernet HWaddr 78:2B:CB:04:79:D3
inet addr:172.16.0.219 Bcast:172.16.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:4104173 errors:0 dropped:83227 overruns:0 frame:0
TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:591296406 (563.9 MiB) TX bytes:128 (128.0 b)

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:4474 errors:0 dropped:0 overruns:0 frame:0
TX packets:4474 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:443414 (433.0 KiB) TX bytes:443414 (433.0 KiB)

[root@localhost ~]# uname -a
Linux localhost.localdomain 3.11.3-001 #17 SMP Fri Nov 29 17:13:42 CST 2013 x86_64 x86_64 x86_64 GNU/Linux

net.mptcp.mptcp_enabled = 1
net.mptcp.mptcp_checksum = 0
net.mptcp.mptcp_path_manager = fullmesh

net.mptcp.mptcp_debug = 1

The version of multipath is v0.88.There is no useful information, I installed hung_task and start kdump on the server, but it does not have any panic information, just a black screen, keyboard and mouse have no reaction. The I had to manually restart.

Please help to find the problem, and then to guide me.Thanks!

Best Regards

Do not announce the initial subflow's IP in an add_addr

It may be that we have an MPTCP-connection right after initializing an IP-address.

In this case, the address-worker of the fullmesh path-manager may not yet have been executed (we have the 500ms delay to allow ifconfig to finish its work).

It then may happen that the host announces the address of the initial subflow:

20:43:24.149908 IP 192.0.2.1.41958 > 192.168.0.1.8080: Flags [S], seq 0, win 32792, options [mss 1460,sackOK,nop,nop,nop,wscale 7,mptcp capable csum {0xe7d0d831f2c4620b}], length 0
20:43:24.149988 IP 192.168.0.1.8080 > 192.0.2.1.41958: Flags [S.], seq 2029182451, ack 1, win 28800, options [mss 1460,nop,nop,sackOK,nop,wscale 7,mptcp capable csum {0xce667e15c1bd6344}], length 0
20:43:24.351335 IP 192.0.2.1.41958 > 192.168.0.1.8080: Flags [.], ack 1, win 257, options [mptcp capable csum {0xe7d0d831f2c4620b,0xce667e15c1bd6344},mptcp dss ack 153074637], length 0
20:43:24.353113 IP 192.168.0.1.8080 > 192.0.2.1.41958: Flags [P.], seq 1:1001, ack 1, win 225, options [mptcp dss ack 486545147 seq 153074637 subseq 1 len 1000 csum 0x4879], length 1000
20:43:24.433420 IP 192.168.0.1.8080 > 192.0.2.1.41958: Flags [.], ack 1, win 225, options [mptcp add-addr id 1 192.168.0.1,mptcp dss ack 486545147], length 0

Errors while installing MPTCP on debian wheeze 32 bit machine

Hi

Got the below Errors while installing MPTCP on debian wheeze 32 bit machine

"Error! Bad return status for module build on kernel: 3.10.9.wheezymptcp (i686)"

Can you please help me to resolve this issue

Thanks
Kannappan

Entire Console dump:

root@debian:# vi /etc/apt/sources.list.d/mptcp.list
root@debian:
# apt-get update
Ign cdrom://[Debian GNU/Linux 7.0.0 Wheezy - Official Snapshot i386 LIVE/INSTALL Binary 20130505-15:44] wheezy Release.gpg
Ign cdrom://[Debian GNU/Linux 7.0.0 Wheezy - Official Snapshot i386 LIVE/INSTALL Binary 20130505-15:44] wheezy Release
Ign cdrom://[Debian GNU/Linux 7.0.0 Wheezy - Official Snapshot i386 LIVE/INSTALL Binary 20130505-15:44] wheezy/main i386 Packages/DiffIndex
Ign cdrom://[Debian GNU/Linux 7.0.0 Wheezy - Official Snapshot i386 LIVE/INSTALL Binary 20130505-15:44] wheezy/main Translation-en_US
Ign cdrom://[Debian GNU/Linux 7.0.0 Wheezy - Official Snapshot i386 LIVE/INSTALL Binary 20130505-15:44] wheezy/main Translation-en
Get:1 http://multipath-tcp.org wheezy Release.gpg [490 B]
Get:2 http://multipath-tcp.org wheezy Release [1,642 B]
Get:3 http://multipath-tcp.org wheezy/main i386 Packages [3,172 B]
Ign http://multipath-tcp.org wheezy/main Translation-en_US
Ign http://multipath-tcp.org wheezy/main Translation-en
Fetched 5,304 B in 2s (2,015 B/s)
Reading package lists... Done
root@debian:~# apt-get install linux-mptcp
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
linux-headers-3.10.9.wheezymptcp linux-image-3.10.9.wheezymptcp
Suggested packages:
fdutils linux-doc-3.10.9.wheezymptcp linux-source-3.10.9.wheezymptcp ksymoops linux-image-3.10.9.wheezymptcp-dbg
The following NEW packages will be installed:
linux-headers-3.10.9.wheezymptcp linux-image-3.10.9.wheezymptcp linux-mptcp
0 upgraded, 3 newly installed, 0 to remove and 2 not upgraded.
Need to get 42.8 MB of archives.
After this operation, 137 MB of additional disk space will be used.
Do you want to continue [Y/n]? y
Get:1 http://multipath-tcp.org/repos/apt/debian/ wheezy/main linux-image-3.10.9.wheezymptcp i386 201308300116 [33.9 MB]
Get:2 http://multipath-tcp.org/repos/apt/debian/ wheezy/main linux-headers-3.10.9.wheezymptcp i386 201308300116 [8,864 kB]
Get:3 http://multipath-tcp.org/repos/apt/debian/ wheezy/main linux-mptcp all 201308300116 [1,570 B]
Fetched 42.8 MB in 54s (787 kB/s)
Preconfiguring packages ...
Selecting previously unselected package linux-image-3.10.9.wheezymptcp.
(Reading database ... 118529 files and directories currently installed.)
Unpacking linux-image-3.10.9.wheezymptcp (from .../linux-image-3.10.9.wheezymptcp_201308300116_i386.deb) ...
Done.
Selecting previously unselected package linux-headers-3.10.9.wheezymptcp.
Unpacking linux-headers-3.10.9.wheezymptcp (from .../linux-headers-3.10.9.wheezymptcp_201308300116_i386.deb) ...
Selecting previously unselected package linux-mptcp.
Unpacking linux-mptcp (from .../linux-mptcp_201308300116_all.deb) ...
Setting up linux-image-3.10.9.wheezymptcp (201308300116) ...

Hmm. There is a symbolic link /lib/modules/3.10.9.wheezymptcp/build
However, I can not read it: No such file or directory
Therefore, I am deleting /lib/modules/3.10.9.wheezymptcp/build

Hmm. The package shipped with a symbolic link /lib/modules/3.10.9.wheezymptcp/source
However, I can not read the target: No such file or directory
Therefore, I am deleting /lib/modules/3.10.9.wheezymptcp/source

Running depmod.
Examining /etc/kernel/postinst.d.
run-parts: executing /etc/kernel/postinst.d/dkms 3.10.9.wheezymptcp /boot/vmlinuz-3.10.9.wheezymptcp
Error! Bad return status for module build on kernel: 3.10.9.wheezymptcp (i686)
Consult /var/lib/dkms/virtualbox-guest/4.1.18/build/make.log for more information.
Error! Build of vmblock.ko failed for: 3.10.9.wheezymptcp (i686)
Consult the make.log in the build directory
/var/lib/dkms/open-vm-tools/2012.05.21/build/ for more information.
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 3.10.9.wheezymptcp /boot/vmlinuz-3.10.9.wheezymptcp
update-initramfs: Generating /boot/initrd.img-3.10.9.wheezymptcp
W: Possible missing firmware /lib/firmware/bnx2/bnx2-mips-09-6.2.1b.fw for module bnx2
W: Possible missing firmware /lib/firmware/bnx2/bnx2-mips-06-6.2.3.fw for module bnx2
run-parts: executing /etc/kernel/postinst.d/pm-utils 3.10.9.wheezymptcp /boot/vmlinuz-3.10.9.wheezymptcp
run-parts: executing /etc/kernel/postinst.d/zz-update-grub 3.10.9.wheezymptcp /boot/vmlinuz-3.10.9.wheezymptcp
Generating grub.cfg ...
Found background image: /usr/share/images/desktop-base/desktop-grub.png
Found linux image: /boot/vmlinuz-3.10.9.wheezymptcp
Found initrd image: /boot/initrd.img-3.10.9.wheezymptcp
Found linux image: /boot/vmlinuz-3.2.0-4-686-pae
Found initrd image: /boot/initrd.img-3.2.0-4-686-pae
Found linux image: /boot/vmlinuz-3.2.0-4-486
Found initrd image: /boot/initrd.img-3.2.0-4-486
done
Setting up linux-headers-3.10.9.wheezymptcp (201308300116) ...
Examining /etc/kernel/header_postinst.d.
run-parts: executing /etc/kernel/header_postinst.d/dkms 3.10.9.wheezymptcp /boot/vmlinuz-3.10.9.wheezymptcp
Error! Bad return status for module build on kernel: 3.10.9.wheezymptcp (i686)
Consult /var/lib/dkms/virtualbox-guest/4.1.18/build/make.log for more information.
Error! Build of vmblock.ko failed for: 3.10.9.wheezymptcp (i686)
Consult the make.log in the build directory
/var/lib/dkms/open-vm-tools/2012.05.21/build/ for more information.
Setting up linux-mptcp (201308300116) ...
root@debian:# sysctl -w net.mptcp.mptcp_enabled 1
sysctl: "net.mptcp.mptcp_enabled" must be of the form name=value
sysctl: "1" must be of the form name=value
root@debian:
# sysctl -w net.mptcp.mptcp_enabled=1
sysctl: cannot stat /proc/sys/net/mptcp/mptcp_enabled: No such file or directory
root@debian:# sysctl -w net.mptcp.[mptcp_enabled]=[1]
sysctl: cannot stat /proc/sys/net/mptcp/[mptcp_enabled]: No such file or directory
root@debian:
# sysctl -w net.mptcp.mptcp_enabled
sysctl: "net.mptcp.mptcp_enabled" must be of the form name=value
root@debian:# sysctl -w net.mptcp.mptcp_enabled=1
sysctl: cannot stat /proc/sys/net/mptcp/mptcp_enabled: No such file or directory
root@debian:
# ip rule show
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
root@debian:# ip route
default via 10.104.59.1 dev eth2 proto static
10.104.59.0/24 dev eth2 proto kernel scope link src 10.104.59.30
169.254.0.0/16 dev eth2 scope link metric 1000
root@debian:
# ip route show table 1
root@debian:# uname -a
Linux debian 3.2.0-4-686-pae #1 SMP Debian 3.2.41-2 i686 GNU/Linux
root@debian:
# file /usr/bin/file
/usr/bin/file: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.26, BuildID[sha1]=0x48e9cd9bbec26154bf29f4464dfe016f770316de, stripped
root@debian:~#

mptcp-trunk: net/ipv4/tcp_input.c wrong paste?

This piece code look really suspicious. In mptcp_v0.88 it look OK.
if (!sock_flag(sk, SOCK_DEAD)) {
/* Wake up lingering close() */
sk->sk_state_change(sk);
break;
case TCP_CLOSE:
if (tp->mp_killed)
goto discard;
}

How can I start debuging?

I port mptcp to Android phone, but it not work. The data flow is mainly on WIFI interface(99.9%), nearly not go through via mobile interface.
ip route:
default via 192.168.0.1 dev wlan0
default via 10.69.75.166 dev rmnet0
10.69.75.164/30 dev rmnet0 proto kernel scope link src 10.69.75.165
10.69.75.166 dev rmnet0 scope link
74.125.235.197 via 10.69.75.166 dev rmnet0
192.168.0.0/24 dev wlan0 scope link
192.168.0.0/24 dev wlan0 proto kernel scope link src 192.168.0.9 metric 321
192.168.0.1 dev wlan0 scope link
210.21.196.6 via 10.69.75.166 dev rmnet0 src 10.69.75.165
221.5.88.88 via 10.69.75.166 dev rmnet0 src 10.69.75.165

suspicious RCU usage

The below stack-trace happens, because we don't hold a lock when dereferencing
the dst from the socket. E.g., __sk_dst_get does the rcu_dereference_check.

We should probably change the locking architecture yet again...

Note: Enable all RCU-debugging for this bug to trigger.

[ 245.540896] ===============================
[ 245.590913] [ INFO: suspicious RCU usage. ]
[ 245.640920] -------------------------------
[ 245.690923]
/home/christoph/workspace/linux/mtcp_2.6.36/include/net/sock.h:1332 suspicious
rcu_dereference_check() usage!
[ 245.821999]
[ 245.822000] other info that might help us debug this:
[ 245.822000]
[ 245.917950]
[ 245.917951] rcu_scheduler_active = 1, debug_locks = 0
[ 245.996120] no locks held by iperf/2224.
[ 246.043004]
[ 246.043004] stack backtrace:
[ 246.095192] Pid: 2224, comm: iperf Not tainted 3.2.0-mptcp+ #802
[ 246.167021] Call Trace:
[ 246.196240] [] lockdep_rcu_suspicious+0xbc/0xc5
[ 246.270155] [] tcp_valid_rtt_meas+0x13a/0x2b4
[ 246.341988] [] tcp_ack+0x793/0x1c6b
[ 246.403426] [] ? tcp_validate_incoming+0x264/0x415
[ 246.480454] [] tcp_rcv_established+0x4d8/0x5d0
[ 246.553324] [] tcp_v4_do_rcv+0x138/0x3c7
[ 246.619964] [] mptcp_backlog_rcv+0x14/0x1d
[ 246.688676] [] release_sock+0xe7/0x178
[ 246.753228] [] tcp_sendmsg+0xbcc/0xd18
[ 246.817784] [] inet_sendmsg+0x114/0x123
[ 246.883377] [] ? inet_autobind+0x5a/0x5a
[ 246.950011] [] sock_aio_write+0x100/0x110
[ 247.017683] [] do_sync_write+0xbd/0xfd
[ 247.082238] [] vfs_write+0xb0/0x119
[ 247.143675] [] sys_write+0x45/0x6c
[ 247.204072] [] system_call_fastpath+0x16/0x1b

Kernel 3.11 + MPTCP - infinite loop

20131005_002
It stop working only if is ethernet cable connected at boot time. When is disconnected and connected afterwards, its ok.
Patch is from here: https://bugs.gentoo.org/show_bug.cgi?id=477786

Testing it with 3.10.4 and it look fixed. So, maybe it was 3.10 bug. Anyway, I didnt yet find any piece of code from .4 which could affect mptcp. So, for now it seems good. Can be closed.

Correctly initialize collide_tuple of mptcp-request sock

It is initialized quite late, after potential goto drop.
Thus, the dropping calls reqsk_free, ending up in mptcp_reqsk_destructor. There, mptcp_hash_request_remove() we check if collide_tuple is in a list. As it has not yet been initialized, collide_tuple is garbage and strange stuff will happen.

tcp_fast_parse_options must be changed for MPTCP

If th->doff == ((sizeof(*th) + TCPOLEN_TSTAMP_ALIGNED) / 4) although only an MPTCP-option is present, we will interpret the incoming MPTCP-option as a timestamp. Then we are screwed completly. We have to fix this. Probably must do an additional check if tp->mpc is set.

divide error RIP: 0010:[<ffffffff8162155e>] [<ffffffff8162155e>] mptcp_ccc_recalc_alpha+0x9e/0x1c0

[652832.509558] divide error: 0000 [#1] SMP
[652832.510425] Modules linked in: ppdev psmouse i2c_piix4 serio_raw parport_pc mac_hid lp parport floppy
[652832.510425] CPU: 7 PID: 0 Comm: swapper/7 Not tainted 3.11.10.mptcp+ #25
[652832.510425] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2007
[652832.510425] task: ffff880117b29700 ti: ffff880117b24000 task.ti: ffff880117b24000
[652832.510425] RIP: 0010:[] [] mptcp_ccc_recalc_alpha+0x9e/0x1c0
[652832.510425] RSP: 0018:ffff88011cdc3a50 EFLAGS: 00010216
[652832.510425] RAX: 000007aa00000000 RBX: 0000000000000293 RCX: ffff880115f5bf00
[652832.510425] RDX: 0000000000000000 RSI: ffff8800d8cbb2c0 RDI: 0000000000000000
[652832.510425] RBP: ffff88011cdc3a90 R08: 0000000000010000 R09: 0000000000000102
[652832.510425] R10: 00000000000007aa R11: 0000000000000002 R12: ffff8800da4df700
[652832.510425] R13: ffff880113f1d080 R14: 00000000000002a5 R15: 000000000000fc6e
[652832.510425] FS: 00007f62b6fc9700(0000) GS:ffff88011cdc0000(0000) knlGS:0000000000000000
[652832.510425] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
[652832.510425] CR2: 00007fa807e22b78 CR3: 0000000116d2a000 CR4: 00000000000006e0
[652832.510425] Stack:
[652832.510425] ffff880115ec8f00 02ff8800da4df700 ffff8800da309dc0 ffff8800da4df700
[652832.510425] ffff880113f1d080 0000000000000004 0000000000000006 ffff8800da4df700
[652832.510425] ffff88011cdc3ab0 ffffffff816217d0 000000000000c506 000000000000079e
[652832.510425] Call Trace:
[652832.510425]
[652832.510425] [] mptcp_ccc_cong_avoid+0x130/0x140
[652832.510425] [] tcp_ack+0x815/0xed0
[652832.510425] [] tcp_rcv_established+0xf2/0x640
[652832.510425] [] ? do_output+0x2e/0x50
[652832.510425] [] ? netdev_send+0x4c/0xc0
[652832.510425] [] tcp_v4_do_rcv+0x190/0x270
[652832.510425] [] tcp_v4_rcv+0x5cd/0x750
[652832.510425] [] ? netdev_create+0x120/0x120
[652832.510425] [] ? ovs_execute_actions+0x2b/0x30
[652832.510425] [] ? ovs_dp_process_received_packet+0x8a/0x100
[652832.510425] [] ip_local_deliver_finish+0x66/0x100
[652832.510425] [] ip_local_deliver+0x48/0x80
[652832.510425] [] ip_rcv_finish+0x7d/0x2f0
[652832.510425] [] ip_rcv+0x23e/0x380
[652832.510425] [] ? netdev_frame_hook+0xc5/0x120
[652832.510425] [] __netif_receive_skb_core+0x522/0x700
[652832.510425] [] __netif_receive_skb+0x21/0x70
[652832.510425] [] process_backlog+0xa4/0x180
[652832.510425] [] net_rx_action+0xab/0x1a0
[652832.510425] [] __do_softirq+0xe7/0x220
[652832.510425] [] call_softirq+0x1c/0x30
[652832.510425] [] do_softirq+0x55/0x90
[652832.510425] [] irq_exit+0x95/0xa0
[652832.510425] [] smp_apic_timer_interrupt+0x4a/0x60
[652832.510425] [] apic_timer_interrupt+0x6a/0x70
[652832.510425]
[652832.510425] [] ? default_idle+0x1c/0xb0
[652832.510425] [] arch_cpu_idle+0x1e/0x30
[652832.510425] [] cpu_startup_entry+0x9a/0x220
[652832.510425] [] start_secondary+0x189/0x1e0
[652832.510425] Code: 7f 00 78 39 44 8b 80 1c 05 00 00 45 85 c0 74 2d 44 8b 90 6c 05 00 00 44 89 c7 31 d2 41 0f af f8 41 83 c3 01 4c 89 d0 48 c1 e0 20 <48> f7 f7 4c 39 f0 72 0a 44 89 d3 4d 63 f8 49 89 c6 90 48 8b 06
[652832.510425] RIP [] mptcp_ccc_recalc_alpha+0x9e/0x1c0
[652832.510425] RSP
[652832.510425] ---[ end trace 9466933f07d336db ]---

sound/Kconfig:83: can't open file "sound/arm/Kconfig" when make *config on mptcp 0.87

OS: Ubuntu 13.04 x86_64

Console output

Vdragon@SSD-Vubuntu:~/Software_building/mptcp-mptcp_v0.87$ make gconfig
  HOSTCC  scripts/basic/fixdep
  HOSTCC  scripts/kconfig/conf.o
  HOSTCC  scripts/kconfig/gconf.o
In file included from /usr/include/gtk-2.0/gtk/gtk.h:236:0,
                 from /usr/include/libglade-2.0/glade/glade-xml.h:26,
                 from /usr/include/libglade-2.0/glade/glade.h:28,
                 from scripts/kconfig/gconf.c:17:
/usr/include/gtk-2.0/gtk/gtkitemfactory.h:47:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
In file included from scripts/kconfig/gconf.c:15:0:
scripts/kconfig/images.c:6:20: warning: ‘xpm_load’ defined but not used [-Wunused-variable]
scripts/kconfig/images.c:36:20: warning: ‘xpm_save’ defined but not used [-Wunused-variable]
scripts/kconfig/images.c:66:20: warning: ‘xpm_back’ defined but not used [-Wunused-variable]
scripts/kconfig/images.c:175:20: warning: ‘xpm_symbol_no’ defined but not used [-Wunused-variable]
scripts/kconfig/images.c:192:20: warning: ‘xpm_symbol_mod’ defined but not used [-Wunused-variable]
scripts/kconfig/images.c:209:20: warning: ‘xpm_symbol_yes’ defined but not used [-Wunused-variable]
scripts/kconfig/images.c:226:20: warning: ‘xpm_choice_no’ defined but not used [-Wunused-variable]
scripts/kconfig/images.c:243:20: warning: ‘xpm_choice_yes’ defined but not used [-Wunused-variable]
scripts/kconfig/images.c:277:20: warning: ‘xpm_menu_inv’ defined but not used [-Wunused-variable]
scripts/kconfig/images.c:294:20: warning: ‘xpm_menuback’ defined but not used [-Wunused-variable]
  SHIPPED scripts/kconfig/zconf.tab.c
  SHIPPED scripts/kconfig/zconf.lex.c
  SHIPPED scripts/kconfig/zconf.hash.c
  HOSTCC  scripts/kconfig/zconf.tab.o
  HOSTLD  scripts/kconfig/gconf
scripts/kconfig/gconf Kconfig
sound/Kconfig:83: can't open file "sound/arm/Kconfig"
make[1]: *** [gconfig] Error 1
make: *** [gconfig] Error 2
Vdragon@SSD-Vubuntu:~/Software_building/mptcp-mptcp_v0.87$

BUG: unable to handle kernel NULL pointer dereference at 0000000000000014 IP: [] mptcp_reqsk_find_tk+0x73/0x83

[142616.780272] mptcp_prevalidate_skb 0x113fc23a will fallback - pi 1 from tcp_data_queue+0x4bd/0xa66, seq 2819385326
[142616.796019] mptcp_prevalidate_skb 0x6db2fd5c will fallback - pi 1 from tcp_data_queue+0x4bd/0xa66, seq 4230248484
[149817.939080] mptcp_prevalidate_skb 0xd2c56678 will fallback - pi 1 from tcp_data_queue+0x4bd/0xa66, seq 2904339486
[157019.534593] mptcp_prevalidate_skb 0xf7589488 will fallback - pi 1 from tcp_data_queue+0x4bd/0xa66, seq 3830394875
[164220.944959] mptcp_prevalidate_skb 0x32badc08 will fallback - pi 1 from tcp_data_queue+0x4bd/0xa66, seq 1138325030
[167821.745929] mptcp_prevalidate_skb 0xadc0cb78 will fallback - pi 1 from tcp_data_queue+0x4bd/0xa66, seq 3926188210
[175066.765309] BUG: unable to handle kernel NULL pointer dereference at 0000000000000014
[175066.765814] IP: [] mptcp_reqsk_find_tk+0x1c/0x27
[175066.766314] PGD 615d05067 PUD 0
[175066.766801] Oops: 0000 [#1] SMP
[175066.767290] Modules linked in: autofs4 ipmi_devintf ipmi_si ipmi_msghandler be2iscsi iscsi_boot_sysfs ib_iser rdma_cm ib_cm iw_cm ib_sa ib_mad ib_core ib_addr iscsi_tcp bnx2i cnic uio cxgb3i libcxgbi cxgb3 mdio libiscsi_tcp libiscsi scsi_transport_iscsi ext3 jbd dm_mirror dm_multipath scsi_dh video sbs sbshc battery ac mptcp_fullmesh parport_pc lp parport joydev sg dcdbas pcspkr igb wmi button i2c_algo_bit i2c_core rtc_cmos tpm_tis tpm tpm_bios ehci_pci dm_region_hash dm_log dm_mod ahci libahci libata shpchp megaraid_sas sd_mod scsi_mod ext4 jbd2 crc16 uhci_hcd ohci_hcd ehci_hcd [last unloaded: freq_table]
[175066.771568] CPU: 7 PID: 25468 Comm: java Tainted: P 3.11.10 #1
[175066.772053] Hardware name: Dell Inc. PowerEdge R620/036FVD, BIOS 1.3.6 09/11/2012
[175066.772536] task: ffff880c023b4810 ti: ffff880c12fa6000 task.ti: ffff880c12fa6000
[175066.773021] RIP: 0010:[] [] mptcp_reqsk_find_tk+0x1c/0x27
[175066.773982] RSP: 0018:ffff880c12fa7c50 EFLAGS: 00010246
[175066.774461] RAX: 0000000000000000 RBX: ffff880c12f4a7c0 RCX: 00000000faae94b8
[175066.774946] RDX: ffff880c12fa7c1c RSI: 00000000a26e5043 RDI: 000000003ba8928c
[175066.775431] RBP: ffff880c0c2d1f00 R08: 00000000fdaa6d00 R09: 00000000664b73cd
[175066.775913] R10: 000000006cae7cdc R11: 00000000856d2b7b R12: ffff880c0c2d1f00
[175066.776396] R13: 000000000c2d1f00 R14: 0000000000000000 R15: 00000000dfe4e47a
[175066.776880] FS: 0000000041dd7940(0063) GS:ffff880c2fc60000(0000) knlGS:0000000000000000
[175066.777366] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[175066.777846] CR2: 0000000000000014 CR3: 0000000615efa000 CR4: 00000000000407e0
[175066.778328] Stack:
[175066.778796] ffffffff813ac6b5 ffff880c12f4a7c0 ffffffff81344c08 ffff880c00000000
[175066.779391] ffff880c12f4a7c0 000000009c9ea266 000000000000901f 07000000dfe4e47a
[175066.779894] ffff880c12f4a7c0 ffff880c12f4a7c0 ffffffff813455b5 00000000530a365b
[175066.780401] Call Trace:
[175066.780878] [] ? mptcp_connect_init+0x6d/0x9b
[175066.781364] [] ? tcp_connect_init+0x2da/0x310
[175066.781848] [] ? tcp_connect+0x16/0x4d8
[175066.782335] [] ? seq_scale+0x8/0x11
[175066.782816] [] ? secure_tcp_sequence_number+0x52/0x5d
[175066.783303] [] ? tcp_v4_connect+0x35b/0x3a7
[175066.783784] [] ? tcp_v6_connect+0x1b8/0x4a9
[175066.784270] [] ? emulate_vsyscall+0x1f8/0x2ba
[175066.784753] [] ? __inet_stream_connect+0x80/0x276
[175066.785238] [] ? tcp_delack_timer+0x91/0x91
[175066.785721] [] ? inet_csk_init_xmit_timers+0x69/0x8e
[175066.786206] [] ? inet_stream_connect+0x33/0x4c
[175066.786690] [] ? SyS_connect+0x77/0xa7
[175066.787173] [] ? sock_alloc_file+0xd4/0x11f
[175066.787661] [] ? system_call_fastpath+0x16/0x1b
[175066.788143] Code: d8 5b 5d 41 5c 41 5d 41 5e 41 5f c3 90 90 90 48 89 f8 25 ff 03 00 00 48 8b 04 c5 e0 1f a8 81 eb 03 48 8b 00 a8 01 74 03 31 c0 c3 <3b> 78 14 75 f1 b8 01 00 00 00 c3 81 e6 ff 03 00 00 48 8d 8f 78
[175066.789955] RIP [] mptcp_reqsk_find_tk+0x1c/0x27
[175066.790445] RSP
[175066.790919] CR2: 0000000000000014
crash>

Classes of Interfaces, Price of Interface, Maximum parralel Streams ...

There must be the possibility to classify the Interfaces. MPTCP than musts only transport the interfaces of the same class to the opposite side. Why is this essential? In case of VPN you dont want to leave the Private Area in case of MPTCP over VPN. In case of VPN over MPTCP you want to avoid putting Data of the VPN in the VPN which creates double escapes and increased latency.

Also i prefer a value like Maximum TCP channels in the /proc/sys/net/mpctcp
Assuming your client have n IPv6 ans your Server m IPv6, the Kernel Creates n*m full Mesch .... this consumes a lot of Storage.

A great Deal may be the possibility to configure to prefer some Interfaces, because of the option to make a combination of Expansive Flat Rate and Cheep Volume ISP in redundant VPN Networks

CCC - default-choice

CCC: Make usable a default-choice when no tcp is used and another-one when
mptcp is in use.
To avoid the current fallback to RENO in case of regular TCP. But this will
make some major changes to the Kconfig-structure

Discard ADD_ADDR with known address-id

draft v06, page 36:

"When receiving an ADD_ADDR message with an Address ID already in use for a
live subflow withsin the connection, the receiver SHOULD,..."

Basically, we have two scenarios:

  1. Natted host, and the address has been "changed" due to an mp_join from
    behind the nat. The later add_addr with the same addr-id but the private
    IP-address should be ignored.
  2. Mobility and the remove-addr has been lost. The host may select the same
    addr-id for a new address later on. Now, we SHOULD update the address, because
    otherwise we are stuck with the old address.

In scenario 1: don't update, in scenario 2: do update!!!

INFO: task kworker/u4:0:3416 blocked for more than 120 seconds

Seen on http://multipath-tcp.org

[624960.204059] INFO: task kworker/u4:0:3416 blocked for more than 120 seconds.
[624960.204075] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[624960.204084] kworker/u4:0 D ffffffff 0 3416 2 0x00000000
[624960.204100] Workqueue: mptcp_wq mptcp_sub_close_wq
[624960.204106] dcc36ec0 00000246 ed3dcf28 ffffffff dcc36ef4 93accfa5 00023842 00000000
[624960.204120] eb04c440 ed3dcee0 c15e9ee0 c15e9ee0 c15e9ee0 eb04c440 c15e9ee0 c107c0e2
[624960.204133] 93accfa5 00000125 00000000 00000000 93accfa5 ffffffff ed3dd430 001500e0
[624960.204146] Call Trace:
[624960.204157] [] ? sched_clock_local+0xb2/0x190
[624960.204165] [] ? check_preempt_wakeup+0x104/0x220
[624960.204173] [] ? schedule_preempt_disabled+0x5/0x10
[624960.204181] [] ? __mutex_lock_slowpath+0x14f/0x1d0
[624960.204189] [] ? mutex_lock+0x1d/0x40
[624960.204196] [] ? mptcp_sub_close_wq+0x1b/0xe0
[624960.204203] [] ? process_one_work+0x112/0x3b0
[624960.204211] [] ? xen_hypercall_xen_version+0x7/0x20
[624960.204219] [] ? xen_force_evtchn_callback+0x17/0x30
[624960.204227] [] ? worker_thread+0xfa/0x3b0
[624960.204234] [] ? manage_workers+0x290/0x290
[624960.204241] [] ? kthread+0xa3/0xb0
[624960.204248] [] ? ret_from_kernel_thread+0x1b/0x28
[624960.204256] [] ? kthread_freezable_should_stop+0x50/0x50
[624960.204263] sending NMI to all CPUs:
[624970.159791] Kernel panic - not syncing: hung_task: blocked tasks
[624970.159808] CPU: 1 PID: 28 Comm: khungtaskd Not tainted 3.11.10 #20
[624970.159815] 00007faf c13ed698 eb04c440 c13ed486 c14a1c64 c1603680 eb04c440 eb04c440
[624970.159830] eb04c448 00007faf c10bdb0b c14aa1ab eb04c660 00000d58 00000078 000003ae
[624970.159843] 00000078 eb04c534 eb849ed0 00000000 00000000 c10bd910 c106cbb3 00000000
[624970.159856] Call Trace:
[624970.159867] [] ? dump_stack+0x3e/0x4e
[624970.159875] [] ? panic+0x87/0x188
[624970.159883] [] ? watchdog+0x1fb/0x200
[624970.159890] [] ? hung_task_panic+0x10/0x10
[624970.159898] [] ? kthread+0xa3/0xb0
[624970.159905] [] ? ret_from_kernel_thread+0x1b/0x28
[624970.159913] [] ? kthread_freezable_should_stop+0x50/0x50

BUG_ON in mptcp_sock_destruct

I run mptcp in ndiffports mode(with 3 ports configured), and got an kernel crash as follow:
bd(F) uhci_hcd(F) ohci_hcd(F) ehci_hcd(F) [last unloaded: freq_table]
[ 4141.118859] CPU: 0 PID: 5835 Comm: httpd Tainted: PF 3.11.10 #42
[ 4141.118969] Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 09/21/2011
[ 4141.119151] task: ffff880119f3c0c0 ti: ffff880119560000 task.ti: ffff880119560000
[ 4141.119271] RIP: 0010:[] [] mptcp_sock_destruct+0x24/0x140
[ 4141.119535] RSP: 0018:ffff88013fc03e88 EFLAGS: 00010293
[ 4141.119847] RAX: ffff880134b378c8 RBX: ffff880134a27480 RCX: ffff88011a435290
[ 4141.119963] RDX: ffffffff813614a5 RSI: ffff880134b378c0 RDI: ffff8801360858c0
[ 4141.120130] RBP: ffff88013fc03ea8 R08: ffff880134b378c8 R09: ffff88013fc03ec8
[ 4141.120283] R10: 0000000051564b2e R11: 0000000000000000 R12: ffff880134b40b80
[ 4141.120521] R13: ffff88013fc03ef8 R14: 0000000000000101 R15: 0000000000402140
[ 4141.120685] FS: 00007f861de8b760(0000) GS:ffff88013fc00000(0000) knlGS:0000000000000000
[ 4141.120961] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 4141.121091] CR2: ffffffffff600000 CR3: 0000000119c9f000 CR4: 00000000000407f0
[ 4141.121309] Stack:
[ 4141.121368] 0000000000000000 0000000000000246 ffff880134a27480 ffff880134b40b80
[ 4141.121633] ffff88013fc03ed8 ffffffff81308bf3 0000000000000101 ffff880134a27480
[ 4141.121854] ffff880134b40b80 ffff88013fc03ef8 ffff88013fc03ee8 ffffffff81308ceb
[ 4141.122026] Call Trace:
[ 4141.122089]
[ 4141.122106]
[ 4141.122173] [] __sk_free+0x1e/0xff
[ 4141.122290] [] sk_free+0x17/0x19
[ 4141.122423] [] tcp_tasklet_func+0x108/0x12a
[ 4141.122629] [] tasklet_action+0x6a/0xab
[ 4141.122757] [] __do_softirq+0xf0/0x1ef
[ 4141.123013] [] call_softirq+0x1c/0x30
[ 4141.123135]
[ 4141.123217]
[ 4141.123317] [] do_softirq+0x33/0x6a
[ 4141.123585] [] local_bh_enable_ip+0x75/0x86
[ 4141.123761] [] _raw_spin_unlock_bh+0x2f/0x33
[ 4141.123901] [] release_sock+0x1a1/0x1aa
[ 4141.124028] [] tcp_sendpage+0x626/0x660
[ 4141.124155] [] ? tcp_sendpage+0x128/0x660
[ 4141.124291] [] inet_sendpage+0xd9/0x108
[ 4141.124494] [] ? inet_sendmsg+0xd3/0xd3
[ 4141.124709] [] ? splice_from_pipe_feed+0x112/0x112
[ 4141.124856] [] kernel_sendpage+0x16/0x1f
[ 4141.124984] [] sock_sendpage+0x2b/0x2f
[ 4141.125109] [] pipe_to_sendpage+0x75/0x77
[ 4141.125239] [] splice_from_pipe_feed+0x76/0x112
[ 4141.125380] [] ? splice_from_pipe_feed+0x112/0x112
[ 4141.125610] [] __splice_from_pipe+0x3f/0x66
[ 4141.125748] [] ? splice_from_pipe_feed+0x112/0x112
[ 4141.125894] [] splice_from_pipe+0x52/0x69
[ 4141.126025] [] generic_splice_sendpage+0x10/0x12
[ 4141.126168] [] do_splice_from+0x22/0x24
[ 4141.126299] [] direct_splice_actor+0x1b/0x1d
[ 4141.126454] [] splice_direct_to_actor+0xd7/0x194
[ 4141.126600] [] ? do_splice_from+0x24/0x24
[ 4141.126728] [] do_splice_direct+0x80/0x9b
[ 4141.126864] [] do_sendfile+0x18b/0x309
[ 4141.126988] [] SyS_sendfile64+0x4f/0x8c
[ 4141.127112] [] system_call_fastpath+0x16/0x1b
[ 4141.127241] Code: 5b 41 5c 41 5d c9 c3 55 48 89 e5 41 54 53 48 89 fb 48 83 ec 10 e8 d3 4b fa ff 48 8b b3 10 09 00 00 48 8d 46 08 48 39 46 08 74 04 <0f> 0b eb fe 48 8b 3d bc 91 6c 00 e8 e0 7f d2 ff 8b 83 48 02 00
[ 4141.127932] RIP [] mptcp_sock_destruct+0x24/0x140
[ 4141.128076] RSP

Check this stack,it was crash at "BUG_ON(!list_empty(&tp->mptcp->cb_list));"

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.