Skip to content

doradd-rt/rpc-dpdk-client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RPC-DPDK-Client

This repository contains the implementation of a RPC client with DPDK networking stack. It generates requests based on an exponential Poisson inter-arrival distribution. We use it as the load generator for DORADD experiments.


Setup

Network configuration - MAC address and Port ID

Currently, before building the source code, one need to specify the MAC address and DPDK port ID. To find out the available DPDK port, you should use dpdk/usertools/devbind.py -s to check the port status and its DPDK port ID.

For instance, if the interface mac address is 1c:34:da:41:ca:bc, given we manually set the client IP address is <subnet>.3 (in src/config.h), you need to update the 3rd entry in src/arp-config.h as server mac address 1c:34:da:41:ca:bc , based our pre-set L2 forwarding rule. And you also need to update the DPDK PORT_ID accordingly here. Similarly, you need to update the client mac address accordingly in the arp entries. If the server IP is <subnet>.2 , then you should update the 2nd entry with the server mac address.

Build

git submodule update --init
make dpdk
cd scripts && sudo ./hugepages.sh
cd ../src && mkdir build && cd build
cmake .. -GNinja -DCMAKE_BUILD_TYPE=Release 
ninja

Run

  1. Prepare input logs

    DORADD experiments takes a workload log as input, thus we need to pre-generate logs to avoid on-path generation overhead. The scripts/gen-replay-log includes the code to generate YCSB workload.

    pushd scripts/gen-replay-log
    g++ -O3 generate_ycsb_zipf.cc
    ./a.out -d uniform -c no_cont
    popd
  2. Run

    sudo ./client -l 1-8 -- \ # cores
    -i 100 \ # inter-arrival
    -s ~/rpc-dpdk-client/scripts/gen-replay-log/ycsb_uniform_no_cont.txt \ # input logs
    -a ycsb \ # workload
    -t 192.168.1.2 \ # target destination IP
    -d 30 \ # duration
    -l /tmp/test.log # output log

About

A RPC client implementation with DPDK networking stack

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published