IPv6 网络数据包处理机制详解
1. IPv6 数据包转发机制
IPv6 数据包转发与 IPv4 有诸多相似之处,但也存在一些细微差异。例如,IPv6 在转发数据包时不计算校验和,因为 IPv6 报头中根本没有校验和字段。下面来详细分析 ip6_forward() 方法的实现。
int ip6_forward(struct sk_buff *skb)
{
struct dst_entry *dst = skb_dst(skb);
struct ipv6hdr *hdr = ipv6_hdr(skb);
struct inet6_skb_parm *opt = IP6CB(skb);
struct net *net = dev_net(dst->dev);
u32 mtu;
if (net->ipv6.devconf_all->forwarding == 0)
goto error;
if (skb_warn_if_lro(skb))
goto drop;
if (!xfrm6_policy_check(NULL, XFRM_POLICY_FWD, skb)) {
IP6_INC_STATS(net, ip6_dst_idev(dst), IPSTATS_MIB_INDISCARDS);
goto drop;
}
超级会员免费看
订阅专栏 解锁全文
4384

被折叠的 条评论
为什么被折叠?



