分类: LINUX
2015-06-04 17:16:24
点击(此处)折叠或打开
点击(此处)折叠或打开
点击(此处)折叠或打开
humjb_19832015-07-14 10:02:18
littlenewer:我也正好在看这一块,遇到两个问题想请教:
1. UFO本身是软件能力,为什么要求硬件支持且打开UFO才能执行UFO
2. ip_ufo_append_data最后调用return skb_append_datato_frags(sk, skb, getfrag, from,(length - transhdrlen))。从udp_sendmsg可知length为原始数据长度加上UDP头的长度。对于queue中的第一个报文来说,transhdrlen是UDP头的长度,所以相减后就是from中源数据的长度。这点没问题。但是对于非第一个报文来说,transhdrlen长度为0(见ip_append_data),这样想减后的值要比from中的数据多出一个UDP头,那后面拷贝数据时岂不是要出问题
1.UFO不是软件能力吧,应该是硬件能力,需要软件配合实现。这个您再确认下~
2.这里是UFO的流程,UDP分段的流程在UFO流程之后,也就是说进入UFO流程时,该UDP报文肯定是没有分段的,即这里没有非第一个报文的说法,应该都是有UDP头的。
littlenewer2015-07-09 20:36:57
我也正好在看这一块,遇到两个问题想请教:
1. UFO本身是软件能力,为什么要求硬件支持且打开UFO才能执行UFO
2. ip_ufo_append_data最后调用return skb_append_datato_frags(sk, skb, getfrag, from,(length - transhdrlen))。从udp_sendmsg可知length为原始数据长度加上UDP头的长度。对于queue中的第一个报文来说,transhdrlen是UDP头的长度,所以相减后就是from中源数据的长度。这点没问题。但是对于非第一个报文来说,transhdrlen长度为0(见ip_append_data),这样想减后的值要比from中的数据多出一个UDP头,那后面拷贝数据时岂不是要出问题