Skip to content

A key-value load balancer for Memcached with two layers of hot key cache, using lossy counting. Max throughput reached 7M. Based on OpenNetVM.

Notifications You must be signed in to change notification settings

RoyZhang7/kv-loadbalancer-nfv

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

A NFV-based KV load balancer for Memcached

Description

This project is abandoned as I am pursuing Ph.D. in another field

This is a network function virtuliazation(NFV) research project, based on OpenNetVM as NFV platform, at GWU with Professor Timothy Wood.

I currently co-op with memebers in GW NFV group on another big project, which was inspired by this repo a lot. It is a L7 stateless load balancer in L4 level--handling Redis load based on TCP-splicing, along with a Redis "NFVlized" solution and a availability solution during Redis migration using NFV.

Before my graduation from master's degree, I firstly implemented a key-value load balancer as a virtualizaed network function with hot key cache and lossy counting pre-cache. Lossy counting was used for hotkey detection(with frequency threshold 0.2 and error rate 0.02, see this paper). Main idea is inspired by NetKV. Later, I prposed a new balancer design with skip list as the second layer cache and implemented set action mechanism. The max throughput of set action reached 7M/sec.

The testing and development enviorment on CloudLab, to which we specially want to say THANK YOU!

Milestone

  1. Current packet-level stateless L7 LB

    on going.

  2. Old project

    • Implemented load balancing for Memcached set&get action. Balancing mechamism is based on hot-keys detected using lossy counting algothrim.
    • Implemented two layers of caching--one hotkey hash table, another "half-always on" skip list.
    • Max throughput for single key reaches 7M.

Features of old KVLB

  • Using DPDK api to create UDP packet
  • Testing & using ONVM api to create UDP packet
  • Handling Memcached Set action //data consistency
  • Two layers of caching
  • Managing repliction with DHT

Potential Direction (low priority)

  • Self-adaptive lossy counting
  • Basic fault tolerance without affecting performance
  • TCP-based transmisson
  • Propose weighted lossy counting
  • Impelementing a pressure testing tool for Memcached

Usage

May not available for public usage in a long time.

I will provide intruction if this research get published someday.

Project structure

Mode     Name
----     ----
d-----   benchmark
d-----   kvlb_nf
d-----   LC-experiments
d-----   udp-test-client
  • benchmark: the tool we implemented for stress testing.
  • kvlb_nf: the implementation of our key-value load balancer.
  • LC-experiments: serval experiments on lossy counting.
  • udp-test-client: a demo used to test ONVM working enviorment.

Code is not up to date. I will publish a paper related to this project within this year, however, thie part of code may not be released since we have a brand new repo.

About

A key-value load balancer for Memcached with two layers of hot key cache, using lossy counting. Max throughput reached 7M. Based on OpenNetVM.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published