随笔分类 -  UDT协议源码分析

分析UDT协议源码 git:github.com/dorkbox/UDT
UDT源码剖析(十二)之ACKWindow
摘要:通过窗口记录发送时间以及ACK接收情况。 CACKWindow 初始化: 更新存储的序列号: 计算目前的带宽: 更新发送时间,发送时调用: 更新接收时间,接收时调用: 记录第一个探测分组到达的时间: 记录第二个探测分组到达的时间以及数据包之间的间隔: 阅读全文

posted @ 2018-06-16 18:33 ukernel 阅读(909) 评论(0) 推荐(0)

UDT源码剖析(十一)之SendQueue And RecvQueue
摘要:SendQueue与RecvQueue在代码中与UDP SOCKET相关。在用户将想要发送的数据提交给Buffer之后,由Buffer将数据打包,根据拥塞控制提供的时间计算,在合适的时间提交给SendQueue进行发送。在接收到数据包之后,通过事件驱动的模式通知用户从RecvQueue中拿去数据包。 阅读全文

posted @ 2018-06-16 18:32 ukernel 阅读(799) 评论(0) 推荐(0)

UDT源码剖析(九)之CCC
摘要:这是整个UDT的算法核心:拥塞控制。我也没太搞明白,不过还是打算列出来,理解的不争取的地方,还请多多指正哈~ CCC 初始化: 销毁: 发送用户定义的packets: 向CUDT实例填充统计信息: 设置系列函数: CCCFactory CUDTCC 初始化: 使用时初始化: 收到一个ACK时: vo 阅读全文

posted @ 2018-06-16 18:31 ukernel 阅读(1379) 评论(0) 推荐(0)

UDT源码剖析(十)之Channel
摘要:封装UDP SOCKET,使其成为UDT数据的发送通道,所有的UDT SOCKET都通过这种类型来进行数据发送。为了完整性,咱们接着分析哈~ CChannel 基础数据结构: 初始化: 打开通道: 关闭通道: 设置UDP选项: 获取与设置UDP信息: ,`int CChannel::getRcvBu 阅读全文

posted @ 2018-06-16 18:31 ukernel 阅读(1509) 评论(0) 推荐(0)

UDT源码剖析(八)之Cache
摘要:在UDT源代码中,作者使用了 和`std::list`组装了一个缓存系统,本来在纠结要不要列出来,没有啥技术含量,不过为了完整性,还是列出来吧... CCache 初始化: 销毁: 在HASH'中进行查找: 更新缓存: 清理所有缓存: 阅读全文

posted @ 2018-06-16 18:30 ukernel 阅读(462) 评论(0) 推荐(0)

UDT源码剖析(七)之Packet
摘要:CPacket 基础数据结构 初始化: CHandShake 获取握手包信息: int CHandShake::serialize(char buf, int& size) { if (size 阅读全文

posted @ 2018-06-16 18:29 ukernel 阅读(575) 评论(0) 推荐(0)

UDT源码剖析(六)之EPoll
摘要:常用的事件处理体系EPoll在UDT中有一种独特的用法,初见时觉得鸡肋,越到后来越是觉得妙趣横生。 EPoll 基础数据结构: 初始化: 创建真实的EPoll: 向EPoll中添加UDT SOCKET: 更新EPoll中的UDT SOCKET关注的事件: 获取UDT SOCKET关注的事件: 向EP 阅读全文

posted @ 2018-06-16 18:28 ukernel 阅读(686) 评论(0) 推荐(0)

UDT源码剖析(五)之Buffer
摘要:UDT源码的体系结构中存在两种Buffer,分别是RecvBuffer和SendBuffer。这两种Buffer分别用于UDT套接字的缓冲区,注意了是UDT SOCKET的数据缓冲,不是UDP SOCKET的数据缓冲。UDP SOCKET有自己的SendQueue和RecvQueue。我会挑选一些非 阅读全文

posted @ 2018-06-16 18:27 ukernel 阅读(717) 评论(0) 推荐(0)

UDT源码剖析(四)之Socket函数
摘要:UDTSOCKET socket(int af, int type, int protocol) UDT SOCKET的创建顺序: Order 0: :创建UDT SOCKET int bind(UDTSOCKET u, const struct sockaddr name, int namelen 阅读全文

posted @ 2018-06-16 18:25 ukernel 阅读(866) 评论(0) 推荐(0)

UDT源码剖析(三)之数据结构
摘要:本节介绍在UDT源代码中所有使用的数据结构 CUDTSocket:描述UDT SOCKET UDTSTATUS:描述UDT SOCKET状态 CUDTUnited:全局管理者,保存所有的UDT SOCKET CMultiplexer:资源复用器,他是所有资源的实际所有者,其他的都只是引用(目前我是这 阅读全文

posted @ 2018-06-16 18:24 ukernel 阅读(1277) 评论(0) 推荐(0)

UDT源码剖析(二)之启动与结束
摘要:UDT的启动例程 启动例程顺序: 对于一个完整的UDT SOCKET的清理六部曲: 将CUDT 的状态设置为BROKEN 调用CUDT中的close() 更新UDT SOCKET的关闭时间 将UDT SOCKET设置为Closed 在Closed Array中添加当前UDT SOCKET,在GC线程 阅读全文

posted @ 2018-05-04 23:27 ukernel 阅读(1249) 评论(2) 推荐(1)

UDT源码剖析(一)之总览
摘要:介绍 随着网络带宽延时产品的增加,常用的TCP协议开始变得低效。这是因为它的AIMD算法彻底的减少了拥塞窗口,但不能快速的恢复可用带宽。理论上的流量分析表明TCP在BDP增高的情况下比较容易受到包损失攻击。 另外,继承自TCP拥塞控制的不公平的RTT也成为在分布式数据密集程序中的严重问题。拥有不同R 阅读全文

posted @ 2018-05-01 18:19 ukernel 阅读(3480) 评论(1) 推荐(1)

导航