亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 3199 | 回復(fù): 7
打印 上一主題 下一主題

[內(nèi)核模塊] 請教netfilter抓混雜模式數(shù)據(jù)包 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2013-08-14 18:59 |只看該作者 |倒序瀏覽
目前在做用netfilter hook的方式抓包,想抓混雜模式下的數(shù)據(jù)包。查看內(nèi)核代碼在ip_input.c下面的ip_rcv函數(shù)里面
        if (skb->pkt_type == PACKET_OTHERHOST)
                goto drop;
注釋掉這兩句后,neitfilter可以抓到混雜模式下的數(shù)據(jù)包。但是在抓包時發(fā)現(xiàn)一個問題,cpu的軟中斷占用資源很高,達到85%si.導(dǎo)致用戶態(tài)和內(nèi)核其他模塊執(zhí)行時速度很慢,查了下資源說網(wǎng)卡要用napi的模式,不能用傳統(tǒng)的中斷模式,但具體怎么實現(xiàn)不是很清楚。各位大神有沒有碰到這種情況,有知道的給指點一下,兄弟在此感謝了!

論壇徽章:
36
IT運維版塊每日發(fā)帖之星
日期:2016-04-10 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-04-16 06:20:0015-16賽季CBA聯(lián)賽之廣東
日期:2016-04-16 19:59:32IT運維版塊每日發(fā)帖之星
日期:2016-04-18 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-04-19 06:20:00每日論壇發(fā)貼之星
日期:2016-04-19 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-04-25 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-05-06 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-05-08 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-05-13 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-05-28 06:20:00每日論壇發(fā)貼之星
日期:2016-05-28 06:20:00
2 [報告]
發(fā)表于 2013-08-15 13:10 |只看該作者
回復(fù) 1# zmhzcy
抓到之后,你做了什么處理

   

論壇徽章:
6
金牛座
日期:2013-10-08 10:19:10技術(shù)圖書徽章
日期:2013-10-14 16:24:09CU十二周年紀念徽章
日期:2013-10-24 15:41:34獅子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亞洲杯之阿聯(lián)酋
日期:2015-05-09 14:36:15
3 [報告]
發(fā)表于 2013-08-15 17:17 |只看該作者
回復(fù) 1# zmhzcy
目前在做用netfilter hook的方式抓包,想抓混雜模式下的數(shù)據(jù)包。查看內(nèi)核代碼在ip_input.c下面的ip_rcv函數(shù)里面
        if (skb->pkt_type == PACKET_OTHERHOST)
                goto drop;
注釋掉這兩句后,neitfilter可以抓到混雜模式下的數(shù)據(jù)包。但是在抓包時發(fā)現(xiàn)一個問題,cpu的軟中斷占用資源很高,達到85%si.導(dǎo)致用戶態(tài)和內(nèi)核其他模塊執(zhí)行時速度很慢,查了下資源說網(wǎng)卡要用napi的模式,不能用傳統(tǒng)的中斷模式,但具體怎么實現(xiàn)不是很清楚。各位大神有沒有碰到這種情況,有知道的給指點一下,兄弟在此感謝了!



估計你的內(nèi)核(網(wǎng)卡驅(qū)動)可能已經(jīng)工作在napi模式了,問題應(yīng)該出在你添加的處理邏輯上。建議說一下你添加的代碼都做了什么工作
   

論壇徽章:
0
4 [報告]
發(fā)表于 2013-08-18 13:54 |只看該作者
回復(fù) 2# Godbach
抓到后我拿到想要的一些數(shù)據(jù),就把這個數(shù)據(jù)包在netfilter模塊中 return NF_DROP;

   

論壇徽章:
0
5 [報告]
發(fā)表于 2013-08-18 14:47 |只看該作者
回復(fù) 3# 瀚海書香

在ip_input.c文件的ip_rcv()函數(shù)中
int ip_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt, struct net_device *orig_dev)
{
        struct iphdr *iph;
        u32 len;

        /* When the interface is in promisc. mode, drop all the crap
         * that it receives, do not try to analyse it.
         */
        //if (skb->pkt_type == PACKET_OTHERHOST)
        //        goto drop;


        IP_UPD_PO_STATS_BH(dev_net(dev), IPSTATS_MIB_IN, skb->len);

        if ((skb = skb_share_check(skb, GFP_ATOMIC)) == NULL) {
                IP_INC_STATS_BH(dev_net(dev), IPSTATS_MIB_INDISCARDS);
                goto out;
        }

        if (!pskb_may_pull(skb, sizeof(struct iphdr)))
                goto inhdr_error;

        iph = ip_hdr(skb);

        /*
         *        RFC1122: 3.2.1.2 MUST silently discard any IP frame that fails the checksum.
         *
         *        Is the datagram acceptable?
         *
         *        1.        Length at least the size of an ip header
         *        2.        Version of 4
         *        3.        Checksums correctly. [Speed optimisation for later, skip loopback checksums]
         *        4.        Doesn't have a bogus length
         */

        if (iph->ihl < 5 || iph->version != 4)
                goto inhdr_error;

        if (!pskb_may_pull(skb, iph->ihl*4))
                goto inhdr_error;

        iph = ip_hdr(skb);

        if (unlikely(ip_fast_csum((u8 *)iph, iph->ihl)))
                goto inhdr_error;

        len = ntohs(iph->tot_len);
        if (skb->len < len) {
                IP_INC_STATS_BH(dev_net(dev), IPSTATS_MIB_INTRUNCATEDPKTS);
                goto drop;
        } else if (len < (iph->ihl*4))
                goto inhdr_error;

        /* Our transport medium may have padded the buffer out. Now we know it
         * is IP we can trim to the true length of the frame.
         * Note this now means skb->len holds ntohs(iph->tot_len).
         */
        if (pskb_trim_rcsum(skb, len)) {
                IP_INC_STATS_BH(dev_net(dev), IPSTATS_MIB_INDISCARDS);
                goto drop;
        }

        /* Remove any debris in the socket control block */
        memset(IPCB(skb), 0, sizeof(struct inet_skb_parm));

        /* Must drop socket now because of tproxy. */
        skb_orphan(skb);

        return NF_HOOK(NFPROTO_IPV4, NF_INET_PRE_ROUTING, skb, dev, NULL,
                       ip_rcv_finish);

inhdr_error:
        IP_INC_STATS_BH(dev_net(dev), IPSTATS_MIB_INHDRERRORS);
drop:
        kfree_skb(skb);
out:
        return NET_RX_DROP;
}

注釋掉            //if (skb->pkt_type == PACKET_OTHERHOST)
        //        goto drop;
保證混雜模式的數(shù)據(jù)包可以進入到netfilter的hook里面,在netfilter的hook里面,我拿到想要的數(shù)據(jù)包信息后,return NF_DROP,把數(shù)據(jù)給拋掉!邏輯很簡單,內(nèi)核接收數(shù)據(jù)包把這些包扔到hook里面,在hook里面拋掉

論壇徽章:
1
處女座
日期:2013-08-19 12:39:10
6 [報告]
發(fā)表于 2013-08-18 19:21 |只看該作者
你把全部包都收進來處理,當然占cpu了。

論壇徽章:
0
7 [報告]
發(fā)表于 2013-08-19 12:14 |只看該作者
回復(fù) 6# wsgtrsys
請問有沒有其他方式抓混雜模式數(shù)據(jù)包,數(shù)據(jù)包量很大,40Gb/s

   

論壇徽章:
1
處女座
日期:2013-08-19 12:39:10
8 [報告]
發(fā)表于 2013-08-19 13:07 |只看該作者
回復(fù) 7# zmhzcy


    用intel的dpdk試下
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP