昨天解决了tcpcopy的一个小却很重要的bug.
tcpcopy的基础函数有个bug,流量比较大的时候,内核buffer满了。send系统调用发不完用户缓冲中的数据才会出现。然后加入了tcpcopy的QQ群,和作者稍稍讨论了一点时间。问了关于写论文和tc_session.c过于复杂的问题。 (wangb) 10:00:55 https://github.com//tcpcopy/pull/162 (wangb) 10:01:04 The bug arises when send system call returns with part of data transfered and part of data still need to be sent again. (wangb) 10:01:13 常见于压力比较大的场合 (wangb) 10:02:14 当然如果系统参数设置好的话,这样的情况不常见。这也是为啥我这边无法重现的原因所在 (wangb) 10:02:46 当然昨天在开发gryphon,貌似遇到过一次 (wangb) 10:03:06 gryphon给的压力,有时候真不是一般快和大 siu1ooooooo(16236914) 10:03:14 我在tcpcopy上作二次开发。碰到了个bug,最后追踪到了 tc_socket_send函数。 siu1ooooooo(16236914) 10:03:52 流量比较大的时候,内核buffer满了。send系统调用发不完用户缓冲中的数据才会出现。 siu1ooooooo(16236914) 10:05:21 希望能贡献更多代码的。。但是tc_session.c这个模拟tcp状态机的代码太难看懂了。 (wangb) 10:05:49 有些bug,程序员自身很难发现,往往需要依赖于用户的反馈,当然有上面的bug提出,就更好了 tc_session.c这个模拟tcp状态机,其实不仅模拟tcp状态机,而为复杂的是模拟上层应用交互 光模拟tcp状态机,是远远不够的 siu1ooooooo(16236914) 10:07:27 有个想法, 把TCP的11个标准状态加入到tc_session中。可不可以做的。. (wangb) 10:09:13 数据是死的,但测试服务器是活的。应该可以吧,但加入可能会更复杂。tc_session.c这个会进一步改进的,代码需简化和功能需独立,使其易懂 siu1ooooooo(16236914) 10:09:31 🙂 (wangb) 10:10:33 2010~2012.5月,初步探索阶段;2012.5~2014.5,为进一步探索阶段 2014.5~以后,进一步优化 因为tcpcopy刚开始,开发人员是无法知道复杂的互联网的各种应用的特性的,只有积累到一定程度,才能进一步优化。与其说是开发,不如说是探索 siu1ooooooo(16236914) 10:12:10 期待工程paper siu1ooooooo(16236914) 10:12:43 tcpcopy稳定到了一个版本。先别加功能了。写paper吧 siu1ooooooo(16236914) 10:13:01 投中EI应该问题不大。 siu1ooooooo(16236914) 10:13:55 中了paper,贡献者会迅速增多。 wangb() 10:15:43 其实写过sigcomm论文,但被拒,说应该投USENIX ATC wangb() 10:16:18 I don’t think that the research contribution of the paper is a good match for Sigcomm. Perhaps it would be a better match for a more practice-oriented conference like USENIX ATC. siu1ooooooo(16236914) 10:16:50 后来呢 wangb() 10:17:05 确实,tcpcopy是基于实践的,从实践中摸索爬行的。后来我就先不写论文了 siu1ooooooo(16236914) 10:17:22 嗯。这是个工程实践性很强的探索啊 wangb() 10:17:27 要写论文,必须要有条件 siu1ooooooo(16236914) 10:17:45 喔。 wangb() 10:18:06 从交换机或者其它设备。镜像过来,这样测试系统和在线系统就没有关联,这样的论文是能够中USENIX ATC 的 wangb() 10:19:13 tcpcopy最高端的应用,就是在交换机,利用分光镜或者其它镜像设备,利用高性能硬件,把用户的请求数据包复制给测试系统,可惜我没有这样的条件 wangb() 10:19:38 要是有这样的条件,我肯定要写论文了 siu1ooooooo(16236914) 10:19:55 呃。。没怎么看懂 siu1ooooooo(16236914) 10:21:49 是说复制的流量要非常非常大才能中论文么 siu1ooooooo(16236914) 10:21:59 而非常大的流量需求硬件支持 wangb() 10:22:02 twitter梦想的测试环境,其实完全可以用我们的tcpcopy来实现。交换机上面不是有来来往往的数据包吗?在那上面把请求数据包镜像到测试系统,测试系统搭一个跟在线类似的完整系统,这样测试系统跟在线系统承受类似的压力 wangb() 10:22:17 高端大气,才能中论文 wangb() 10:22:48 屌丝环境,写论文,还不被批啊 siu1ooooooo(16236914) 10:23:14 呃。是 。。。明白了。。想起以前学校的事情,懂了。 wangb() 10:24:38 总之,tcpcopy值得你去研究,期望有更多接班人把思想传承下去,代码可以推掉重来 wangb() 10:25:10 只要tcp协议还存在,这个思想,应该是最先进的,无法再先进了 siu1ooooooo(16236914) 10:26:11 需要好多的开发时间啊。..嗯。先上班了啊。多谢wangbin…. wangb() 10:27:16 慢慢来,这方面反正国外没有人做 ...