Huge packet loss while performing l2 forwarding using packet gen - virtual-machine

Am facing severe packet loss while performing Packet forwarding using Packet gen DPDK. Any packets equal to 500 and above that results in huge packet loss. I have learnt about DPDK architecutre from its main site. I have changed MBUF values and also cahce size, but still no luck. Any help would be much apprecitated. I am uploading every single image to get an idea on what I am doing.
Packet Gen DPDK VM Settings
L2FWD VM

Related

WebRTC probing drops down transfer bit rate

I am currently using Webrtc to stream a game. It's a custom WebRTC implementation inside the game engine.
Both the client and the server easily support 100+ Mbps upload speed. Currently, i have locked the max bitrate to 80 Mbps, which is supported.
The issue happens when the webrtc probes for the connection speed, it drops down to 7-8 mbps then it slowly goes back up to 80mbps.
Which drops again when a webrtc-probing happens.
I have linked a video below of the issue.
https://drive.google.com/file/d/1coI3rrGVf4OAFnt2oeSCx0zFJznvfyQv/view?usp=sharing
What could the issue be and is there any solution to fix it?

Size of a collectd packet

Can anyone help me find the size of collectd packets?
For example, I have the following plugins activated:
df
load
network
ping
swap
memory
I have an interval of ten seconds. I would like to find out the size of the collectd packets sent to the host system after every ten seconds.

Slower data transfer with parallel TCP connections

I used the TCP AsyncSocket to transfer a large file from one machine to another using local connection (using host as local IP address).
First, I did the setup for single TCP socket connection and felt data transfer rate is slow. Its around 1mb/sec.
To make it faster I created 10 TCP sockets (Connecting on separate ports on separate threads) and started reading the partitions of file simultaneously. But It didn't make any difference. Transfer rate is almost same as that of single TCP socket connection (Or even slower).
Any idea ? Why multiple TCP sockets is not transferring data in parallel ? Any ways or suggestions to transfer file fast over TCP ?
Parallelizing an I/O operation only helps if the I/O channel isn't saturated and the task is single-core bound.
Quite likely, adding additional I/O channels will actually slow things down as you now have multiple clients competing for a scarce resource.
What you need to figure out is where is your bottleneck? Only once you've quantified the actual cause of your performance issue will you be able to fix it.

Detecting Connection Speed / Bandwidth in .net/WCF

I'm writing both client and server code using WCF, where I need to know the "perceived" bandwidth of traffic between the client and server. I could use ping statistics to gather this information separately, but I wonder if there is a way to configure the channel stack in WCF so that the same statistics can be gathered simultaneously while performing my web service invocations. This would be particularly useful in cases where ICMP is disabled (e.g. ping won't work).
In short, while making my regular business-related web service calls (REST calls to be precise), is there a way to collect connection speed data implicitly?
Certainly I could time the web service round trip, compared to the size of data used in the round-trip, to give me an idea of throughput - but I won't know how much of that perceived bandwidth was network related, or simply due to server-processing latency. I could perhaps solve that by having the server send back a time delta, representing server latency, so that the client can compute the actual network traffic time. If a more sophisticated approach is not available, that might be my answer...
The ICMP was not created with the intention of trying those connection speed statistics, but rather if a valid connection was made between two hosts.
My best guess is that the amount of data sent in those REST calls or ICMP traffic is not enough to calculate a perceived connection speed / bandwidth.
If you calculate by these metrics, you will get very big bandwidth statistics or very low, use as an example the copy box in windows XP. You need a constant and substantial amount of data to be sent in order to calculate valid throughput statistics.

Do ping requests put a load on a server?

I have a lot of clients (around 4000).
Each client pings my server every 2 seconds.
Can these ping requests put a load on the server and slow it down?
How can I monitor this load?
Now the server response slowly but the processor is almost idle and the free memory is ok.
I'm running Apache on Ubuntu.
Assuming you mean a UDP/ICMP ping just to see if the host is alive, 4000 hosts probably isn't much load and is fairly easy to calculate. CPU and memory wise, ping is handled by you're kernel, and should be optimized to not take much resources. So, you need to look at network resources. The most critical point will be if you have a half-duplex link, because all of you're hosts are chatty, you'll cause alot of collisions and retransmissions (and dropped pings). If the links are all full duplex, let's calculate the actual amount of bandwidth required at the server.
4000 client #2 seconds
Each ping is 72 bytes on the wire (32 bytes data + 8 bytes ICMP header + 20 bytes IP header + 14 bytes Ethernet). * You might have some additional overhead if you use vlan tagging, or UDP based pings
If we can assume the pings are randomly distributed, we would have 2000 pings per second # 72 bytes = 144000 bytes
Multiple by 8 to get Bps = 1,152,000 bps or about 1.1Mbps.
On a 100Mbps Lan, this would be about 1.1% utilization just for the pings.
If this is a lan environment, I'd say this is basically no load at all, if it's going across a T1 then it's an immense amount of load. So you should basically run the same calculation on which network links may also be a bottle neck.
Lastly, if you're not using ICMP pings to check the host, but have an application level ping, you will have all the overhead of what protocol you are using, and the ping will need to go all the way up the protocol stack, and you're application needs to respond. Again, this could be a very minimal load, or it could be immense, depending on the implementation details and the network speed. If the host is idle, I doubt this is a problem for you.
Yes, they can. A ping request does not put much CPU load on, but it certainly takes up bandwidth and a nominal amount of CPU.
If you want to monitor this, you might use either tcpdump or wireshark, or perhaps set up a firewall rule and monitor the number of packets it matches.
The other problem apart from bandwidth is the CPU. If a ping is directed up to the CPU for processing, thousands of these can cause a load on any CPU. It's worth monitoring - but as you said yours is almost idle so it's probably going to be able to cope. Worth keeping in mind though.
Depending on the clients, ping packets can be different sizes - their payload could be just "aaaaaaaaa" but some may be "thequickbrownfoxjumpedoverthelazydog" - which is obviously further bandwidth requirements again.