Skip to content

Upload speed significantly lower than download speed when running NDT server on AWS ECS #427

Description

@kshitij-cyara

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.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions