niksu / pax

Framework for prototyping network elements
Apache License 2.0
4 stars 1 forks source link

Problem with large packets #15

Open TMVector opened 8 years ago

TMVector commented 8 years ago

When testing TCP throughput with iperf, I came across a SharpPcap error resulting from large packets.

SharpPcap.PcapException: Can't send packet: send: Message too long

The size of packets sent by iperf can be controlled with the -M option. E.g. iperf -c <ip> -M 700 The actual size of the packets seems to be related to the value specified with -M, M, by 2M+42. So using a value of 736 should yield a packet size of 1514B, which works. Using a value of 737 breaks it.

Sometimes a large packet is still received, but I couldn't create steps to reproduce it.

Steps to reproduce:

Run the Pax NAT implementation on the middle node On the 'server': iperf -s On the 'client': iperf -c <IP_OF_SERVER>

niksu commented 8 years ago

Thanks for flagging this up, it's really useful to track such things and their reproducibility. Could you also indicate which version of iperf you're using please, and what it's running on (Linux distro and kernel version), and the version of SharpPcap and what it's running on (Mono runtime version). I wonder if SharpPcap is raising this exception itself, or if it's raising it on behalf of libpcap, over which it wraps.

On 2016-07-19 18:32, TMVector wrote:

When testing TCP throughput with iperf, I came across a SharpPcap error resulting from large packets.

SharpPcap.PcapException: Can't send packet: send: Message too long

The size of packets sent by iperf can be controlled with the -M option. E.g. iperf -c -M 700 The actual size of the packets seems to be related to the value specified with -M, M, by 2M+42. So using a value of 736 should yield a packet size of 1514B, which works. Using a value of 737 breaks it.

Sometimes a large packet is still received, but I couldn't create steps to reproduce it.

STEPS TO REPRODUCE:

Run the Pax NAT implementation on the middle node On the 'server': iperf -s On the 'client': iperf -c

You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub [1], or mute the thread [2].

*

Links:

[1] https://github.com/niksu/pax/issues/15 [2] https://github.com/notifications/unsubscribe-auth/ABDTTmprqhaHnpdeBWTpcklzOp3Y6j5-ks5qXQo-gaJpZM4JP-OL

TMVector commented 8 years ago

Version info:

iperf version 2.0.5 (08 Jul 2010) pthreads

Ubuntu 14.04.4 LTS 3.13.0-91-generic x86_64 GNU/Linux

Mono JIT compiler version 4.4.1 (Nightly 4.4.1.0/4747417 Wed Jun 22 11:14:49 UTC 2016) Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com TLS: __thread SIGSEGV: altstack Notifications: epoll Architecture: amd64 Disabled: none Misc: softdebug LLVM: supported, not enabled. GC: sgen

Using @niksu's build_error branch of SharpPcap, at commit 8699a7e. This version should be exactly the same as 4.2.0.

tcpdump version 4.5.1 libpcap version 1.5.3

I see the latest version of libpcap is 1.7.4.