美文网首页程序员
OpenFastPath 学习6 (default_event_

OpenFastPath 学习6 (default_event_

作者: forxyz | 来源:发表于2018-11-30 21:32 被阅读2次

    在我的udpecho中,并未指定CPU核,gdb时发现有thread 6~11均在运行 default_event_dispatcher。该线程由用户编写,如下:

    主要工作线程

    该线程为数据平面线程,会分别绑定不同的CPU核。线程函数为default_event_dispatcher,顾名思义:默认的收包分发处理线程(其实还有发包)。该函数不停的收包,然后调用ofp_packet_input函数,再调用pkt_func,pkt_func即是上图中的ofp_eth_vlan_processing。

    ofp_eth_vlan_processing中对于不同的协议(IP/IPV4/ARP)处理如下:

    协议分类处理

    数据包会根据协议内容不同进行不同的处理。

    default_event_dispatcher在收包处理完后,每次循环还会调用ofp_send_pending_pkt,将未发出去的包进行发送。上层协议比如IP层在发送数据时,会调用send_pkt_out,其实是把数据包放在一个数组,此时,如果数组中数据包数量达到一个阈值(tx_burst = global_param->pkt_tx_burst_size)会直接进行发送,否则不会发送。为了保证数据立即能发出去,因此,default_event_dispatcher线程会调用ofp_send_pending_pkt进行发包。

    相关文章

      网友评论

        本文标题:OpenFastPath 学习6 (default_event_

        本文链接:https://www.haomeiwen.com/subject/hfykcqtx.html