netif_receive_skb函数会根据包的协议,假如是udp包,会将包依次送到ip_rcv(),udp_rcv()协议处理函数中进行处理。 //file: net/core/dev.c int netif_receive_skb(struct sk_buff *skb) { //RPS处理逻辑,先忽略 ... return __netif_receive_skb(skb); } static int __netif_receive_skb(struct sk_b...
int ip_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt, struct net_device *orig_dev) { struct net *net = dev_net(dev); skb = ip_rcv_core(skb, net); if (skb == NULL) return NET_RX_DROP; return NF_HOOK(NFPROTO_IPV4, NF_INET_PRE_ROUTING, net, NUL...
skb = ip_rcv_core(skb, net); if (skb == NULL) return NET_RX_DROP; return NF_HOOK(NFPROTO_IPV4, NF_INET_PRE_ROUTING, net, NULL, skb, dev, NULL, ip_rcv_finish); } ip_rcv_finish函数如下所示: static int ip_rcv_finish(struct net *net, struct sock *sk, struct sk_buff *skb)...
netif_receive_skb函数会根据包的协议,假如是udp包,会将包依次送到ip_rcv(),udp_rcv()协议处理函数中进行处理。 网络协议栈处理如下: //file: net/core/dev.cintnetif_receive_skb(structsk_buff *skb) {//RPS处理逻辑,先忽略...return__netif_receive_skb(skb); }staticint__netif_receive_skb(structsk...
在上面的网络包的接收过程中,会取出 TCP 协议对应的处理函数 tcp_protocol,然后调用 handler 函数,也即 tcp_v4_rcv 函数。 接收网络包的上半部分,分以下几个层次。 硬件网卡接收到网络包之后,通过 DMA 技术,将网络包放入 Ring Buffer。 硬件网卡通过中断通知 CPU 新的网络包的到来。
在上面的网络包的接收过程中,会取出 TCP 协议对应的处理函数 tcp_protocol,然后调用 handler 函数,也即 tcp_v4_rcv 函数。 接收网络包的上半部分,分以下几个层次。 硬件网卡接收到网络包之后,通过 DMA 技术,将网络包放入 Ring Buffer。 硬件网卡通过中断通知 CPU 新的网络包的到来。
ip_rcv_finish 函数会调用 ip_router_input 函数,进入路由处理环节。它首先会调用 ip_route_input 来更新路由,然后查找 route,决定该 package 将会被发到本机还是会被转发还是丢弃: 如果是发到本机的话,调用 ip_local_deliver 函数,可能会做 de-fragment(合并多个 IP packet),然后调用 ip_local_deliver 函数...
<HUAWEI> system-view [~HUAWEI] diagnose [~HUAWEI-diagnose] debugging multicast ipv6 component history component-type pimcore mainType 1 number 10 debugging multicast ipv6 component message 命令功能 debugging multicast ipv6 component message命令用来打开特定级别或特定服务类别的消息记录开关。 undo debugging...
<HUAWEI> system-view [~HUAWEI] diagnose [~HUAWEI-diagnose] debugging multicast ipv6 component history component-type pimcore mainType 1 number 10 debugging multicast ipv6 component message 命令功能 debugging multicast ipv6 component message命令用来打开特定级别或特定服务类别的消息记录开关。 undo debugging...
...IPIP的接收 我们之前说到过,对应从网卡收上来的报文,过完链路层后就会到ip_rcv()中,大概是这样的路线: ip_rcv()->ip_rcv_finish()->ip_local_deliver 7.8K01 扫码 添加站长 进交流群 领取专属10元无门槛券 手把手带您无忧上云 相关资讯