Summary
I am running an NDT server using the official docker image. During testing I consistently observe that download speeds match the expected bandwidth, but upload speeds are significantly lower.
I am trying to understand whether this behavior is expected due to network conditions, TCP tuning, or something related to the NDT server setup. Apart from the ecs setup, i also tried to deploy the same on a plain ec2 instance (c6in.large) but the result was same in that case as well.
Environment
Cloud Provider: AWS
Region: ap-south-2
Compute: EC2 instance running in an ECS cluster
Instance Type: c6in.large
OS: Amazon Linux 2023
Container Runtime: Docker
Orchestration: ECS (EC2 launch type)
Current Architecture
Client
↓
Network Load Balancer
↓
ECS Service
↓
ECS Task (Docker container running NDT server)
↓
EC2 instance
Key configuration details:
ECS network mode: host
Container image: custom build of the NDT server pushed to ECR
NLB forwards traffic directly to the ECS service
Target group type: instance
NDT server exposed on port 443
Network tuning configuration
The instance has the following TCP settings configured:
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
net.core.rmem_max = 268435456
net.core.wmem_max = 268435456
net.ipv4.tcp_rmem = 4096 87380 134217728
net.ipv4.tcp_wmem = 4096 65536 134217728
net.ipv4.tcp_no_metrics_save = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_mtu_probing = 1
net.ipv4.tcp_adv_win_scale = -2
net.ipv4.tcp_notsent_lowat = 131072
TCP congestion control is set to BBR.
Upload throughput is consistently lower than download throughput.
Goal
I am trying to achieve symmetric upload and download throughput when the client network supports it.
Any suggestions or best practices for running NDT servers in cloud environments would be greatly appreciated.
Summary
I am running an NDT server using the official docker image. During testing I consistently observe that download speeds match the expected bandwidth, but upload speeds are significantly lower.
I am trying to understand whether this behavior is expected due to network conditions, TCP tuning, or something related to the NDT server setup. Apart from the ecs setup, i also tried to deploy the same on a plain ec2 instance (c6in.large) but the result was same in that case as well.
Environment
Cloud Provider: AWS
Region: ap-south-2
Compute: EC2 instance running in an ECS cluster
Instance Type: c6in.large
OS: Amazon Linux 2023
Container Runtime: Docker
Orchestration: ECS (EC2 launch type)
Current Architecture
Client
↓
Network Load Balancer
↓
ECS Service
↓
ECS Task (Docker container running NDT server)
↓
EC2 instance
Key configuration details:
ECS network mode:
hostContainer image: custom build of the NDT server pushed to ECR
NLB forwards traffic directly to the ECS service
Target group type: instance
NDT server exposed on port
443Network tuning configuration
The instance has the following TCP settings configured:
TCP congestion control is set to BBR.
Upload throughput is consistently lower than download throughput.
Goal
I am trying to achieve symmetric upload and download throughput when the client network supports it.
Any suggestions or best practices for running NDT servers in cloud environments would be greatly appreciated.