I am setting up load test for SaaS platform. I want to benchmark 20 clients connect to SaaS Platform and push some data. Each client can send maximum of 2 MB and average of 200 Bytes data to SaaS endpoint. Which one testing is better setting up 20 Clients on single machine or setting up 20 Clients on 5 different machines? I want to know from TCP stack point of view? Now when we run 20 clients in a single machine, it will create connection to same destination address and destination port but 20 different Source Ports. However in background will it use same TCP connection to push data of 20 clients?
From "TCP stack" point of view one "client" == one "connection". If the server doesn't have any background logic to check source IP address in order to restrict requests rate - you can go for a single machine.
See Connection establishment for more information.
In general you need to mimic real life usage of the SaaS platform by end users (or upstream/downstream systems) as close as possible so carefully choose a load testing tool which can produce the same network footprint in terms of creating connection, re-using it and keeping it alive