国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

DPDK系列之四十二DPDK應(yīng)用網(wǎng)絡(luò)編程

這篇具有很好參考價值的文章主要介紹了DPDK系列之四十二DPDK應(yīng)用網(wǎng)絡(luò)編程。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、網(wǎng)絡(luò)編程

DPDK的源碼分析的很多了,也應(yīng)該讓他發(fā)揮一些作用了。前面的分析可以知道,DPDK的優(yōu)勢在于網(wǎng)絡(luò)通信,那么它可不可以替代傳統(tǒng)的Socket網(wǎng)絡(luò)通信的底層協(xié)議棧呢?答案是肯定的。
一個框架最重要的意義就在能為上層所應(yīng)用并且達到一個新的性能上的高度,DPDK正是如此。網(wǎng)絡(luò)編程中常用的是TCP編程和UDP編程,本篇就用DPDK模擬實現(xiàn)網(wǎng)絡(luò)通信的一個簡單框架流程的分析說明。為下一步的TCP/UDP等網(wǎng)絡(luò)編程進行一個基礎(chǔ)的準備。

二、實現(xiàn)方式

利用DPDK實現(xiàn)網(wǎng)絡(luò)編程,主要需要實現(xiàn)通過DPDK的相關(guān)接口來模擬實現(xiàn)與網(wǎng)卡的網(wǎng)絡(luò)通信Socket編程。包括相關(guān)的設(shè)備初始化、通過DPDK與網(wǎng)卡進行數(shù)據(jù)交互、應(yīng)用層的模擬通信接口和上層應(yīng)用的數(shù)據(jù)收發(fā)處理。

三、源碼分析

下面看一下主體框架的代碼:

void init()
{
  int ret;
  ret = rte_eal_init(argc,argv);
  // create devices
  struct rte_eth_conf port_conf;
  memset(&port_conf, 0, sizeof(struct rte_eth_conf));
  //set config
  ......
  // get port
  uint16_t port;
  port = rte_eth_find_next_owned_by(0, RTE_ETH_DEV_NO_OWNER);
  //init port
  ret = rte_eth_dev_configure(port, 1, 1, &port_conf);
  //start port
  rte_eth_macaddr_get(port,&server_port->mac_addr);
  ......
}

void createSocket()
{
......
  listenFd_ = socket(AF_INET, SOCK_STREAM | SOCK_NONBLOCK | SOCK_CLOEXEC, IPPROTO_TCP);

  //set pars
  ......
  bind(listenFd_, (struct sockaddr*)&serv_addr,sizeof(serv_addr));
  listen(listenFd_, 3);
}
void accept()
{
  while(!bStop) {
      ......
      int connfd = accept(listenFd_, (struct sockaddr *)&clientaddr, &len, SOCK_NONBLOCK | SOCK_CLOEXEC);
      if(connfd >= 0) {
          rte_eth_rx_burst(portid, 0, pkts_burst, BURST_SIZE); // recv package
          pthread_create(&tid,NULL,&recv,connfd);
          pthread_detach(tid);
      }
  }
}

void recv()
{
    while(!bStop){
        ......
        rx = rte_eth_rx_burst(portid, 0, mbuf, BURST_SIZE);
        for(int i=0;i<rx;i++){
            char * pdata = rte_pktmbuf_mtod(mbuf[i], char * );
            int len = rte_pktmbuf_data_len(mbuf[i]);
            cb(pdata,len);//callback data
            rte_pktmbuf_free(mbuf[i]);
        }
        ......
    }
}

上面只是一個基本的使用DPDK的網(wǎng)絡(luò)通信框架,具體的實現(xiàn)都沒有完成,但基本上整體的流程都清晰了。細一看,和前面分析的fwd的代碼基本沒有什么大差別。但真正的差別就在實現(xiàn)的細節(jié)里,這些放到下一篇再分析。

四、總結(jié)

DPDK的應(yīng)用還是有些復(fù)雜,不過從費效比看還是相當不錯的。特別是在某些大型網(wǎng)絡(luò)通信應(yīng)用中,使用DPDK的優(yōu)勢還是很明顯的。至于普通的網(wǎng)絡(luò)編程還是老實的使用系統(tǒng)自帶的Socket會更簡單方便。在后面會對網(wǎng)絡(luò)通信中使用DPDK進行具體的TCP/UDP應(yīng)用分別分析說明。
要善于利用技術(shù)而不是讓技術(shù)成為一種思想上的拖累。文章來源地址http://www.zghlxwxcb.cn/news/detail-841078.html

到了這里,關(guān)于DPDK系列之四十二DPDK應(yīng)用網(wǎng)絡(luò)編程的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Linux 網(wǎng)絡(luò)編程學習筆記——十二、高性能 I/O 框架庫 Libevent

    Linux 網(wǎng)絡(luò)編程學習筆記——十二、高性能 I/O 框架庫 Libevent

    在處理 I/O 事件、信號和定時事件時,需要考慮如下三個問題: 統(tǒng)一事件源:很明顯,統(tǒng)一處理這三類事件既能使代碼簡單易懂,又能避免一些潛在的邏輯錯誤。 可移植性:不同的操作系統(tǒng)具有不同的 I/O 復(fù)用方式,比如 Solaris 的 dev/poll 文件,F(xiàn)reeBSD 的 kqueue 機制,Linux 的

    2023年04月08日
    瀏覽(35)
  • 【網(wǎng)絡(luò)編程系列】網(wǎng)絡(luò)編程實戰(zhàn)

    【網(wǎng)絡(luò)編程系列】網(wǎng)絡(luò)編程實戰(zhàn)

    ??????歡迎來到我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內(nèi)容和知識,也可以暢所欲言、分享您的想法和見解。 推薦:kuan 的首頁,持續(xù)學習,不斷總結(jié),共同進步,活到老學到老 導(dǎo)航 檀越劍指大廠系列:全面總

    2024年02月10日
    瀏覽(24)
  • 網(wǎng)絡(luò)編程(JavaEE初階系列10)

    網(wǎng)絡(luò)編程(JavaEE初階系列10)

    目錄 前言: 1.網(wǎng)絡(luò)編程的基礎(chǔ) 1.1為什么需要網(wǎng)絡(luò)編程 1.2什么是網(wǎng)絡(luò)編程 1.3網(wǎng)絡(luò)編程中的基本概念 1.3.1發(fā)送端和接收端 1.3.2請求和響應(yīng) 1.3.3客戶端和服務(wù)端 2.Socket套接字 2.1概念 2.2分類 3.UDP數(shù)據(jù)報套接字編程 3.1DataGramSocket?API 3.2DatagramPacket?API 3.3基于UDP的回顯服務(wù)器(echo?s

    2024年02月13日
    瀏覽(21)
  • Linux網(wǎng)絡(luò)編程系列之UDP組播

    Linux網(wǎng)絡(luò)編程系列之UDP組播

    ? ? ? ? 1、 Linux網(wǎng)絡(luò)編程系列之網(wǎng)絡(luò)編程基礎(chǔ) ? ? ? ? 2、 Linux網(wǎng)絡(luò)編程系列之TCP協(xié)議編程 ? ? ? ? 3、 Linux網(wǎng)絡(luò)編程系列之UDP協(xié)議編程 ? ? ? ? 4、 Linux網(wǎng)絡(luò)編程系列之UDP廣播 ? ? ? ? 5、 Linux網(wǎng)絡(luò)編程系列之UDP組播 ? ? ? ? 6、 Linux網(wǎng)絡(luò)編程系列之服務(wù)器編程——阻塞IO模型

    2024年02月04日
    瀏覽(23)
  • Linux網(wǎng)絡(luò)編程系列之UDP廣播

    Linux網(wǎng)絡(luò)編程系列之UDP廣播

    ? ? ? ? 1、 Linux網(wǎng)絡(luò)編程系列之網(wǎng)絡(luò)編程基礎(chǔ) ? ? ? ? 2、 Linux網(wǎng)絡(luò)編程系列之TCP協(xié)議編程 ? ? ? ? 3、 Linux網(wǎng)絡(luò)編程系列之UDP協(xié)議編程 ? ? ? ? 4、 Linux網(wǎng)絡(luò)編程系列之UDP廣播 ? ? ? ? 5、 Linux網(wǎng)絡(luò)編程系列之UDP組播 ? ? ? ? 6、 Linux網(wǎng)絡(luò)編程系列之服務(wù)器編程——阻塞IO模型

    2024年02月04日
    瀏覽(17)
  • C++中的網(wǎng)絡(luò)編程和安全性:實現(xiàn)安全的Web應(yīng)用程序和網(wǎng)絡(luò)應(yīng)用程序

    作者:禪與計算機程序設(shè)計藝術(shù) 《67. C++中的網(wǎng)絡(luò)編程和安全性:實現(xiàn)安全的Web應(yīng)用程序和網(wǎng)絡(luò)應(yīng)用程序》 1.1. 背景介紹 隨著互聯(lián)網(wǎng)的快速發(fā)展,網(wǎng)絡(luò)應(yīng)用程序在人們的生活和工作中扮演著越來越重要的角色,網(wǎng)絡(luò)編程和安全性也成為了現(xiàn)代應(yīng)用程序的重要組成部分。在網(wǎng)絡(luò)

    2024年02月16日
    瀏覽(25)
  • 高并發(fā)應(yīng)用:TCP網(wǎng)絡(luò)編程

    高并發(fā)應(yīng)用:TCP網(wǎng)絡(luò)編程

    Socket 很多系統(tǒng)都提供Socket作為TCP網(wǎng)絡(luò)連接的抽象 Linux- internet domain socket - SOCK_STREAM Linux中Socket以“文件描述符”FD作為標識。 IO模型 IO模型指的是同時操作Socket的方案。 阻塞 非阻塞 多路復(fù)用 阻塞IO 同步讀寫Socket時,線程陷入內(nèi)核態(tài)。 當讀寫成功后,切換回用戶態(tài),繼續(xù)執(zhí)行

    2024年03月14日
    瀏覽(23)
  • 第四十二回:DateRangePickerDialog Widget

    我們在上一章回中介紹了DatePickerDialog Widget相關(guān)的內(nèi)容,本章回中將介紹 DateRangePickerDialog Widget .閑話休提,讓我們一起Talk Flutter吧。 我們在這里說的 DateRangePickerDialog 是一種彈出窗口,只不過窗口的內(nèi)容固定顯示為日期,它和DatePickerDialog類似,也是用來讓用戶選擇日期,選擇

    2024年02月07日
    瀏覽(87)
  • Mariadb高可用MHA (四十二)

    Mariadb高可用MHA (四十二)

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 目錄 前言 一、概述?? ? 1.1 概念 ?1.2 組成 ? 1.3? 特點 ? 1.4? 工作原理 二、構(gòu)建MHA 2.1 ssh免密登錄 2.2 主從復(fù)制 2.3 MHA安裝? 2.3.1所有節(jié)點安裝perl環(huán)境 2.3..2 node 2.3.3 manager?(只在mgt上裝) 2.3.4 測試 2.

    2024年02月12日
    瀏覽(25)
  • OpenCV(四十二):Harris角點檢測

    OpenCV(四十二):Harris角點檢測

    1.Harris角點介紹 什么是角點? 角點指的是兩條邊的交點,圖中紅色圈起來的點就是角點。 Harris角點檢測原理:首先定義一個矩形區(qū)域,然后將這個矩形區(qū)域放置在我的圖像中,求取這個區(qū)域內(nèi)所有的像素值之和,之后沿著多個方向移動我這個區(qū)域,再次計算新區(qū)域的像素值

    2024年02月07日
    瀏覽(93)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包