Projet

Général

Profil

AtelierPPS2012 » Historique » Version 79

« Précédent - Version 79/81 (diff) - Suivant » - Version actuelle
Mehdi Abaakouk, 28/04/2014 12:39


AtelierPPS2012

Une attaque sur le réseau gitoyen a eu lieu le 18 juin et une sur tetaneutral.net le 29 juin, ces deux attaques etaient en "paquet par seconde" (PPS) avec de petits paquets de 50-60 byte qui saturent les CPU des routeurs logiciels.

L'idée est d'étudier via des recherches sur le web et des laboratoires/ateliers le comportement des routeurs logiciels dans ce cas la : limites atteintes en fonction du paramétrage et du matériel (carte réseau, CPU et fréquence).

Liens

100 Mbit/s = 195312 frames de 64 byte/s
1000 Mbit/s = 1953125 frames de 64 byte/s

Personnes interessées

  1. Laurent GUERBY
  2. Obinou (qui a déjà utilisé PF-RING et NTOP)

A priori il suffit de deux machines pour pouvoir commencer chez soi.

Tests

e1000e D2500CC (squeeze) et core i5 DQ67SW (squeeze + kernel 3.2bpo)
iperf plafonne a 120-130k pps

Note sileht dpdk:

Extract from: http://www.intel.com/content/dam/www/public/us/en/documents/guides/intel-dpdk-getting-started-guide.pdf

configuration hugepages:

  • 2M (1024*2k): hugepages=1024 (at runtime: echo 1024 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages)
  • 4G (4x1G): default_hugepagesz=1G hugepagesz=1G hugepages=4 (only works at boot time via grub)
mkdir /mnt/huge
mount -t hugetlbfs nodev /mnt/huge

Compile and load modules:

Note: source tools/setup.sh is a helper tools for this but works only with IGB driver not e1000e

# make T=x86_64-default-linuxapp-gcc
..
Build complete

# modprobe uio  (I think this is not useful)
# insmod build/kmod/rte_kni.ko (I think this is not useful)
# insmod build/kmod/igb_uio.ko (I think this is not useful)
# ./tools/pci_unbind.py --status

Network devices using IGB_UIO driver
====================================
<none>

Network devices using kernel driver
===================================
0000:00:19.0 'Ethernet Connection I217-LM' if=eth1 drv=e1000e unused=<none> *Active*
0000:04:00.0 'RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller' if=eth0 drv=r8169 unused=<none> 

Other network devices
=====================
<none>

# ip link set eth1 down
# lspci|grep -i 'Ethernet.*Intel'
00:19.0 Ethernet controller: Intel Corporation Ethernet Connection I217-LM (rev 05)
# ./tools/pci_unbind.py --bind=e1000e 00:19.0

Prepare examples programs:

# export RTE_SDK=/root/sileht/dpdk-1.6.0r1
# export RTE_TARGET=build
# cd /root/sileht/
# cp -r $RTE_SDK/examples/helloworld my_rte_app
# cd my_rte_app
# make

Tests