netmap配置

1.配置流程git

  環境:centos 7.2.1511,內核版本3.10.0-327.el7.x86_64github

  [1]下載內核源碼,https://buildlogs.cdn.centos.org/c7.1511.00/kernel/20151119220809/3.10.0-327.el7.x86_64/kernel-devel-3.10.0-327.el7.x86_64.rpmcentos

    1)cp kernel-devel-3.10.0-327.el7.x86_64.rpm /usr/local/src函數

    2)cd /usr/local/src/測試

    3)rpm -ivh kernel-devel-3.10.0-327.el7.x86_64.rpm    //此時內核源碼就安裝到了/usr/src/kernels/3.10.0-327.el7.x86_64ui

  [2]下載netmap源碼:https://github.com/luigirizzo/netmapspa

    1)cp netmap-master /usr/local/srccode

    2)cd /usr/local/src/netmap-master/LINUXcdn

    3)./configure --drivers=igb --kernel-sources=/usr/src/kernels/3.10.0-327.el7.x86_64    //表示只編譯igb驅動blog

    4)make

    5)make install      //此時在當前目錄會生成netmap.ko和igb/igb.ko

  [3]加載驅動(在當前LINUX目錄下執行)

    1)rmmod igb      //卸載當前的igb驅動

    2)insmod netmap.ko  //加載netmap.ko驅動

    3)insmod igb/igb.ko   //加載netmap的igb驅動,這個igb驅動和以前的igb驅動是不同的,另外若是當前管理口網卡用的就是igb驅動,執行第一步後會連不上設備,因此能夠把這三步寫到腳本里面執行。

2.測試代碼

  下面的代碼從網卡eth1收包:

#include <stdio.h>
#include <poll.h>
 
#define NETMAP_WITH_LIBS
#include <net/netmap_user.h>
 
unsigned long pps = 0;
 
static void receive_packets(struct netmap_ring *ring)
{
    int i;
    char *buf;
 
    while (!nm_ring_empty(ring)) {
        i   = ring->cur;
        buf = NETMAP_BUF(ring, ring->slot[i].buf_idx);
        pps++;

        ring->head = ring->cur = nm_ring_next(ring, i); 
    }
}
 
int main(void)
{
    struct nm_desc *d;
    struct pollfd fds;
    struct netmap_ring *ring;
    int i; 
 
    d = nm_open("netmap:eth1", NULL, 0, 0); 
  
    fds.fd     = d->fd;
    fds.events = POLLIN;
 
    while (1) {
        if (poll(&fds, 1, 1) < 0) {
            perror("poll()");
            exit(1);
        }
 
        for (i = d->first_rx_ring; i <= d->last_rx_ring; i++) {
            ring = NETMAP_RXRING(d->nifp, i);
            receive_packets(ring);
        }
    }

    return 0;
}

3.說明

  [1]安裝netmap的igb驅動後,全部當前使用igb的網卡都支持使用netmap處理報文。

   [2]若是不調用nm_open()函數,全部網卡仍是正常進內核處理。對一個網卡調用了nm_open()函數以後,這個網卡的全部包就不會進內核處理,因此此時須要在程序中處理這些報文。

相關文章
相關標籤/搜索