摘要:一、模块加载方法1、在配置文件或者启动参数里面通过指令加载2、Redis启动后,通过指令加载,另外可以查询当前所有已加载模块。可以卸载已经加载的模块,注意name为模块的注册名字,不一定和模块文件名相同。二、介绍Redis模块是一种动态库,可以用与Redis内核相似的运行速度和特性来扩展Redis内核的功能。作者认为lua脚本只是组合Redis内核的现有功能,但是Redis模块则可以扩展Redis... 阅读全文
posted @ 2016-12-19 17:30 lshs 阅读 (1928) 评论 (0) 编辑
摘要:Redis4.0版本相比原来3.x版本,增加了很多新特性,如模块化、PSYN2.0、非阻塞DEL和FLUSHALL/FLUSHDB、RDB-AOF混合持久化等功能。尤其是模块化功能,作者从七年前的redis1.0版本就开始谋划,终于在4.0版本发布了,所以版本号也就从3.x直接迭代到了4.0以表示版本变化之大。简单看了一下新版的PSYN2.0,虽然很多细节没搞清楚,但是大概流程倒是搞明白了。一、主... 阅读全文
posted @ 2016-12-18 19:09 lshs 阅读 (2431) 评论 (3) 编辑
摘要:具体每种重传类型的wireshark示例解说参考前文 来自为知笔记(Wiz) 阅读全文
posted @ 2016-11-07 14:54 lshs 阅读 (983) 评论 (0) 编辑
摘要:目前已经有了英文版第二版的TCPIP详解,中文版暂时还没有,但是英文版还是有好几处错误,作者和官方竟然没有维护一个勘误表。 个人阅读过程中针对TCP部分可能有问题的地方简单勘误一下 P596:示意图中最后一条TCP消息,Seq=K+1,作者写成了Seq=K。 P600:TCP同关示意图中最后一条TC 阅读全文
posted @ 2016-11-07 14:52 lshs 阅读 (790) 评论 (0) 编辑
摘要:一、epoll_create & epoll_create1SYSCALL_DEFINE1(epoll_create, int, size)sys_epoll_create->sys_epoll_create1SYSCALL_DEFINE1(epoll_create1, int, flags)sys_epoll_create1(入参检测等)->ep_alloc(分配eventpoll,并初始化锁、... 阅读全文
posted @ 2016-11-07 14:50 lshs 阅读 (1110) 评论 (0) 编辑
摘要:前面我们演示分析了100+个wireshark TCP实例,拥塞控制部分也介绍常见的拥塞处理场景以及4种拥塞撤销机制,但是我们一直使用的都是reno拥塞控制算法。实际上拥塞控制发展到今天已经有了各种各样的拥塞控制算法,而且普遍认为单纯基于丢包的reno拥塞控制算法已经不适应当前internet网络了,最近谷歌又折腾出了一个BBR拥塞控制算法,对比国内,还没有一个在TCP领域有突出贡献的公司,谷歌在... 阅读全文
posted @ 2016-11-07 14:40 lshs 阅读 (2237) 评论 (0) 编辑
摘要:一、概述 ECN的相关内容是在RFC3168中定义的,这里我简单描述一下RFC3168涉及的主要内容。 1、AQM和RED 目前TCP中多数的拥塞控制算法都是通过缓慢增加拥塞窗口直到检测到丢包来进行慢启动的,这就会导致数据包在路由器缓存队列堆积,当路由器没有复杂的调度和缓存管理策略的时候,路由器一般 阅读全文
posted @ 2016-11-07 14:40 lshs 阅读 (3242) 评论 (0) 编辑
摘要:一、概述我们之前介绍过rtt、ssthresh等变量,这些变量一般在TCP连接建立的时候有个初始值,然后随着TCP的数据交互逐渐调整到适应对应的网络状态的值。但是如果每次TCP建立连接都依靠默认初始值逐渐调整,那么可能需要一段时间才能调整到合适值,这显然会降低TCP性能,对于这种场景一种优化方案就是destination metrics。RFC2140中描述,如果新建立的连接从已经关闭的连接缓存的... 阅读全文
posted @ 2016-11-07 14:37 lshs 阅读 (1042) 评论 (0) 编辑
摘要:一、概述这里主要简单分析一个丢包重传并恢复的场景,通过不同的设置让这个相同的场景分别触发RACK重传和前向重传,通过对比说明以下问题:Forward Retransmit可以产生只有重传标记的数据包,也可以产生同时具有重传标记和SACK标记的数据包,注意这里说的这些数据包是没有Lost标记的,这是前向重传与之前介绍的快速重传及其变种的差异,进而会对in_flight的统计产生影响。Recovery... 阅读全文
posted @ 2016-11-07 14:36 lshs 阅读 (1061) 评论 (0) 编辑
摘要:利用crash工具,我们可以很方便的查看正在运行内核的一些全局变量的数据结构,如TCP的ehash、bhash哈希桶,全局变量的查看比较简单。Crash工具还允许我们查看调用堆栈内部的局部变量,下面示例查看一个进程的listen sock结构(实际上从file->private_data中查看更为方 阅读全文
posted @ 2016-11-07 14:36 lshs 阅读 (772) 评论 (0) 编辑