All Projects → alandtsang → mydpdkdns

alandtsang / mydpdkdns

Licence: Apache-2.0 license
dns server with high performance, based on dpdk.

Programming Languages

C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to mydpdkdns

sriov-cni
DPDK & SR-IOV CNI plugin
Stars: ✭ 209 (+409.76%)
Mutual labels:  dpdk, high-performance
BeLibnids
It is a platform to use multiprocess to combine dpdk and libnids together to support analyse packets in 10G port.
Stars: ✭ 36 (-12.2%)
Mutual labels:  dpdk, high-performance
yastack
YAStack: User-space network-stack based on DPDK, FreeBSD TCP/IP Stack, EnvoyProxy
Stars: ✭ 90 (+119.51%)
Mutual labels:  dpdk, high-performance
Jupiter
Jupiter is a high-performance 4-layer network load balance service based on DPDK.
Stars: ✭ 292 (+612.2%)
Mutual labels:  dpdk, high-performance
Capsule
A framework for network function development. Written in Rust, inspired by NetBricks and built on DPDK.
Stars: ✭ 217 (+429.27%)
Mutual labels:  dpdk
Natasha
Natasha is a fast and scalable, DPDK powered, stateless NAT44 packet processor
Stars: ✭ 111 (+170.73%)
Mutual labels:  dpdk
Pcapplusplus
PcapPlusPlus is a multiplatform C++ library for capturing, parsing and crafting of network packets. It is designed to be efficient, powerful and easy to use. It provides C++ wrappers for the most popular packet processing engines such as libpcap, WinPcap, DPDK and PF_RING.
Stars: ✭ 1,322 (+3124.39%)
Mutual labels:  dpdk
Fastdns
fastDNS is an authoritative only, high performance, simple and open source name server based on DPDK and NSD server
Stars: ✭ 12 (-70.73%)
Mutual labels:  dpdk
SmartGW
Domain based VPN Gateway/Proxy for all devices
Stars: ✭ 49 (+19.51%)
Mutual labels:  dns-server
PyGLM
Fast OpenGL Mathematics (GLM) for Python
Stars: ✭ 167 (+307.32%)
Mutual labels:  high-performance
Opennetvm
A high performance container-based NFV platform from GW and UCR.
Stars: ✭ 177 (+331.71%)
Mutual labels:  dpdk
The router
TheRouter is a software packet router based on DPDK an NPF libraries.
Stars: ✭ 123 (+200%)
Mutual labels:  dpdk
Libmoon
libmoon is a library for fast and flexible packet processing with DPDK and LuaJIT.
Stars: ✭ 250 (+509.76%)
Mutual labels:  dpdk
Fastclick
FastClick - A faster version the Click Modular Router featuring batching, advanced multi-processing and improved Netmap and DPDK support (ANCS'15). Check the metron branch for Metron specificities (NSDI'18).
Stars: ✭ 100 (+143.9%)
Mutual labels:  dpdk
dpdk doc
dpdk中文资料及会议文档ppt
Stars: ✭ 151 (+268.29%)
Mutual labels:  dpdk
Nff Go
NFF-Go -Network Function Framework for GO (former YANFF)
Stars: ✭ 1,036 (+2426.83%)
Mutual labels:  dpdk
Npf
NPF: packet filter with stateful inspection, NAT, IP sets, etc.
Stars: ✭ 160 (+290.24%)
Mutual labels:  dpdk
vpic
Vector Particle-In-Cell (VPIC) Project
Stars: ✭ 124 (+202.44%)
Mutual labels:  high-performance
Dpvs
DPVS is a high performance Layer-4 load balancer based on DPDK.
Stars: ✭ 2,168 (+5187.8%)
Mutual labels:  dpdk
Ruru
Real-time TCP latency monitoring using DPDK backend and a 3D React frontend
Stars: ✭ 155 (+278.05%)
Mutual labels:  dpdk

mydpdkdns

License

dns server with high performance, based on dpdk.

Documentation

Please refer to http://dpdk.org/doc.

Install dpdk

tar xf dpdk-17.02.1.tar.xz -C /root
cd /root
mv dpdk-17.02.1 dpdk
cd dpdk

make config T=x86_64-native-linuxapp-gcc
make
make install T=x86_64-native-linuxapp-gcc

Set environment

edit .profile or .bashrc, add the following:

export RTE_SDK=/root/dpdk
export RTE_TARGET=x86_64-native-linuxapp-gcc

Usage

# git clone https://github.com/alandtsang/mydpdkdns.git
# cd mydpdkdns/tools

record eth info

# ./recordeth.sh eth0

It will record the eth0 information to ethinfo file.

If recordeth.sh fails to execute, you need to manually create ethinfo.

e.g.

DEV=eth0
IPADDR=192.168.44.129
NETMADK=255.255.255.0
MAC=08:00:27:cf:bb:76
GATEWAY=192.168.44.2

insert modules and mount hugetlbfs

# ./preparedpdk.sh eth0

It will bind eth0 to DPDK.

start program

# ./start.sh
/root/mydpdkdns
-- RTE_SDK path:/root/dpdk
-- RTE_TARGET path:x86_64-native-linuxapp-gcc
-- RTE_SDK include path:/root/dpdk/include
-- RTE_SDK include path:/root/dpdk/lib
-- Configuring done
-- Generating done
-- Build files have been written to: /home/mydpdkdns/build
Scanning dependencies of target dserver
[100%] Built target dserver
EAL: Detected 4 lcore(s)
EAL: No free hugepages reported in hugepages-1048576kB
EAL: Probing VFIO support...
EAL: PCI device 0000:02:01.0 on NUMA socket -1
EAL:   probe driver: 8086:100f net_e1000_em
EAL: PCI device 0000:02:06.0 on NUMA socket -1
EAL:   probe driver: 8086:100f net_e1000_em
EAL: PCI device 0000:02:07.0 on NUMA socket -1
EAL:   probe driver: 8086:100f net_e1000_em
before Initialise each port
APP: Initialising port 0 ...
KNI: pci: 02:06:00 	 8086:100f
after Initialise each port

Checking link status
done
Port 0 Link Up - speed 1000 Mbps - full-duplex
APP: Lcore 1 is writing to port 0
APP: Lcore 2 is working to port 0
APP: Lcore 3 is sending to port 0
APP: Lcore 0 is reading from port 0

configure IP and MAC addresses

upeth.sh will read the nic information in the ethinfo, and then configure IP and MAC address for vEth0.

# ./upeth.sh
APP: Configure network interface of 0 up

Now, you can test the dns server.

stop program

# ./stop.sh

unbind dpdk

# ./unbind.sh

traffic monitoring

# ./monitor.sh
port:0  rx:399910 p/s  31994168 bytes/s  tx:397452 p/s  36577360 bytes/s  dropped:0
port:0  rx:400474 p/s  32039324 bytes/s  tx:400478 p/s  36843976 bytes/s  dropped:0
port:0  rx:396535 p/s  31724162 bytes/s  tx:396478 p/s  36475976 bytes/s  dropped:0
port:0  rx:401855 p/s  32149828 bytes/s  tx:399069 p/s  36729068 bytes/s  dropped:0

Support edns

dig @192.168.44.129 www.baidu.com +subnet=1.2.3.4

; <<>> DiG 9.11.1-P3 <<>> @192.168.44.129 www.baidu.com +subnet=1.2.3.4
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28688
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
; CLIENT-SUBNET: 1.2.3.4/32/0
;; QUESTION SECTION:
;www.baidu.com.	IN	A

;; ANSWER SECTION:
www.baidu.com. 0	IN	A	153.37.234.35

;; Query time: 0 msec
;; SERVER: 192.168.44.129#53(192.168.44.129)
;; WHEN: Tue Jul 18 17:02:16 CST 2017
;; MSG SIZE  rcvd: 82

Get Help

The fastest way to get response is to send email to my mail:

License

Please refer to LICENSE file.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].