lvs nat模式 校验和问题
在版本1.2.0中在文件ip_vs_xmit.c :ip_vs_nat_xmit函数中将报文目的IP修改为真实服务器IP之后,显式将(448行左右)skb->ip_summed 赋值 CHECKSUM_NONE;请问各位大侠此处重新赋值,而并没有对报文中的校验做任何改动 的目的是什么?
在我们的应用中修改报文之后只对TCP报文做了部分校验)且skb->ip_summed = CHECKSUM_PARTIAL;我把此行重新赋值语句注释之后,无论是否开启我们应用测试负载均衡功能都正常,所以很是疑惑此处重新赋值CHECKSUM_NONE的目的,难道仅仅是为了报文送回pre_routing hook之后再次做校验以保证报文的正确性吗?请各位发表一下自己的看法
附此处部分代码,还望各位不吝赐教,不胜感激!
int
ip_vs_nat_xmit(struct sk_buff *skb, struct ip_vs_conn *cp,
struct ip_vs_protocol *pp)
{
...
...
/* Another hack: avoid icmp_send in ip_fragment */
skb->local_df = 1;
if (sysctl_ip_vs_snat) {
memset(IPCB(skb), 0, sizeof(struct inet_skb_parm));
skb->ip_summed = CHECKSUM_NONE; /* 此处重新赋值CHECKSUM_NONE的目的是什么? */
skb->_skb_dst = 0UL;
nf_conntrack_put(skb->nfct);
skb->nfct = NULL;
NF_HOOK_THRESH(PF_INET, NF_INET_PRE_ROUTING, skb, skb->dev, NULL,
ip_rcv_finish, INT_MIN+1);
} else
IP_VS_XMIT(PF_INET, skb, rt);
...
...
}
Anonymous (没有被验证)
周三, 2015-07-01 06:42
Permalink
当前共有 0
当前共有 0 位注册用户 和 94 位访客 在线。
新进会员
buy eso gold
buy swtor credits
cheap eso gold
buy GW2 gold
cheap tera gold
rs 2007 gold