- MPTCP Enabled (v0.94) AMI: ami-06b93cd6edfe1ee9f (perfd-cellular-stage-5, us-west-1)
- MPTCP Disabled AMI: ami-0849b21b423a6baaa (perfd-cellular-mptcp_disabled, us-west-1)
These AMI include mobile applications (more to be added in the long run) with datasets and scripts to start benchmarking, described in what follows.
- Network benchmarks: iperf/iperf3, wrk
- Video streaming (RTMP, HLS): nginx-rtmp-module, ffmpeg
- Multimedia communication (e.g. SIP, RTP): PJSIP
- Web: mitmproxy
Pre-built docker image silveryfu/celleval:app (to be used with the tunnel setup, see /ho_proxy) includes the application benchmarks (same as the AMIs) and can be used at both the client- and server-side.
TBD run application benchmarks on VM
Applications are located in the /home directory of the container image:
root@bee1ebeb501a:/# ls /home
iperf sip video web
- Refer to man iperf3
- Note: use iperf3 -R from the UE side to let the server to send traffic; current MPTCP implementation has a "server_side" flag that prohibits non TCP initiator to start subflow.
- Note: for all benchmarks remember to configure the EC2 security groups to allow traffic of the particular protocols and ports.
- cd /home/web
- Server-side: make web
- Client-side: make client (run make test first to check if the server is running)
- The client side will generate a web request every second and reports the completion time
On server:
- Mount video clips from the host/VM to the container, i.e., -v /mnt/clips:/mnt/clips
- Start nginx: run make video under /home/video
- Start streaming: run FILE=../clips/[videofile] make stream-an under /mnt/hls/
On client (hls.js):
- Start nginx: make web under /home/web
- Start firefox: firefox; use the private mode to avoid cache
- Open player: localhost/demo/
On client (ffplay):
- Start player: run make play under /home/video
Recommended clips:
Sample clips on VM:
- 480p clip: /mnt/clips/bun480p.mp4 (33s; default, played in a loop by make stream!)
- 1080p clip: /mnt/clips/greenland.mp4 (159s)
- Mount audio clips from the host/VM to the container, i.e., -v /mnt/audio:/mnt/audio
- cd /home/sip
- At server: make recv
- At client: make call
Calling known SIP account:
- Register a SIP account (e.g., onsip.com, optional)
- Run pjproject/pjsip-apps/bin/[binary] with --null-audio option
- [WIP]
Server:
docker run -v /mnt/clips:/mnt/clips -v /mnt/audio:/mnt/audio --name=uec -itd --privileged silveryfu/celleval:app
Client:
docker run -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY --device /dev/snd --privileged --name=uec -itd silveryfu/celleval:app
And include any other options required for ho_proxy setup (see ./ho_proxy).