自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zhangskd的专栏

鱼跃此时海,花开彼岸天

  • 博客(158)
  • 收藏
  • 关注

原创 TCP的核心系列 — ACK的处理(一)

TCP发送数据包后,会收到对端的ACK。通过处理ACK,TCP可以进行拥塞控制和流控制,所以ACK的处理是TCP的一个重要内容。tcp_ack()用于处理接收到的ACK。本文主要内容:TCP接收ACK处理,tcp_ack()的实现。

2013-08-12 15:58:01 16277 7

原创 setsockopt的TCP层实现剖析

应用层 NAME    setsockopt - set options on socketsSYNOPSIS    #include     #include     int setsockopt (int s, int level, int optname, const void *optval, socklen_t optlen);EXAMPLE    自

2013-05-07 10:39:58 6130

原创 sysctl使用方法的变化

内核版本:3.6Author:zhangskd @ csdn blogChange在v3.4中包含一个patch,提交者Eric W. Biederman描述如下:Rewrite of sysctl for speed and charity.Insert/remove/Lookup in sysctl are now O(NlogN) operations,

2013-04-21 14:36:32 5758

原创 Internet Delay Asymmetry

Background  Transmission Control Protocol (TCP) estimates the available bandwidth of the unidirectional route fromthe sender to the receiver using the round-trip time as an approximation. If the

2013-03-04 18:14:40 2059

原创 TCP拥塞控制算法 — CUBIC的补丁(七)

描述 以下是提交者Stephen Hemminger对这个patch的描述:limit delayed_ack ratio to prevent divide errorTCP Cubic keeps a metirc that estimates the amount of delayed acknowledgements to usein adjusting the win

2013-03-02 17:32:05 2634

原创 TCP拥塞控制算法 — CUBIC的补丁(六)

描述 以下是提交者Sangtae Ha对这个patch的描述:HyStart sets the initial exit point of slow start.Suppose that HyStart exits at 0.5BDP in a BDP network and no history exists.If the BDP of a network is large,

2013-03-02 17:31:54 2145 1

原创 TCP拥塞控制算法 — CUBIC的补丁(五)

描述 以下是提交者Sangtae Ha对这个patch的描述:make the delay threshold of HyStart less sensitiveMake HyStart less sensitive to abrupt delay variations due to buffer bloat. 代码 --- a/net/ipv4/tcp_cubic

2013-03-02 17:31:39 2864

原创 TCP拥塞控制算法 — CUBIC的补丁(四)

描述 以下是提交者Stephen Hemminger对这个patch的描述:enable high resolution ack time if neededThis is a refined version of an earlier patch by Lucas Nussbaum.Cubic needs RTT values in miliseconds. If HZ

2013-03-02 17:31:03 3277

原创 TCP拥塞控制算法 — CUBIC的补丁(三)

描述 以下是提交者Stephen Hemminger对这个patch的描述:fix clock dependencyThe hystart code was written with assumption that HZ=1000.Replace the use of jiffies with bictcp_clock as a millisecond real time cl

2013-03-02 17:30:35 2757

原创 TCP拥塞控制算法 — CUBIC的补丁(二)

描述 以下是提交者Stephen Hemminger对这个patch的描述:make ack train delta value a parameterMake the spacing between ACK's that indicates a train a tuneable value like other bystart values. 代码 --- a/n

2013-03-02 17:28:31 3067

原创 TCP拥塞控制算法 — CUBIC的补丁(一)

cubic从2.6.37到3.0之间有7个patch,从3.0到3.8(当前最新版本)中无patch。 描述 以下是提交者Stephen Hemminger对这个patch的描述:fix comparison of jiffiesJiffies wraps around therefore the correct way to compare is to use cast

2013-03-02 17:27:27 4560 2

原创 TCP接收窗口的调整算法(下)

本文内容:分析TCP接收窗口的调整算法,主要是接收窗口的调整算法和总结。内核版本:3.2.12作者:zhangskd @ csdn blog 接收窗口的调整算法 经过一系列的前奏,我们终于到了最关键的地方。接下来我们可以看到,接收窗口的大小主要取决于剩余的接收缓存,以及接收窗口当前阈值。 决定接收窗口大小的函数tcp_select_window()在tcp_tr

2013-02-22 17:28:06 11678

原创 TCP接收窗口的调整算法(中)

本文内容:分析TCP接收窗口的调整算法,主要是接收窗口当前阈值的调整算法。内核版本:3.2.12作者:zhangskd @ csdn blog 接收窗口当前阈值的调整算法 我们知道,在拥塞控制中,有个慢启动阈值,控制着拥塞窗口的增长。在流控制中,也有个接收窗口的当前阈值,控制着接收窗口的增长。可见TCP的拥塞控制和流控制,在某些地方有异曲同工之处。 接收窗口当前

2013-02-22 17:27:55 6939

原创 TCP接收窗口的调整算法(上)

我们知道TCP首部中有一个16位的接收窗口字段,它可以告诉对端:我现在能接收多少数据。TCP的流控制主要就是通过调整接收窗口的大小来进行的。本文内容:分析TCP接收窗口的调整算法,包括一些相关知识和初始接收窗口的取值。内核版本:3.2.12作者:zhangskd @ csdn blog 数据结构 以下是涉及到的数据结构。struct tcp_sock {

2013-02-22 17:27:37 24521 6

原创 getsockopt的TCP层实现剖析

应用层 NAME    getsockopt - get options on socketsSYNOPSIS    #include     #include     int getsockopt (int s, int level, int optname, void *optval, socklen_t *optlen); 调用关系  函数的调用关

2013-02-18 11:18:30 18087 1

原创 TCP retransmission statistics from Google

Abstract This article is an abstract from a paper which analyses TCP data from Google Web and vedio servers andpresent key statistics on the nature of retransmissions. Statistics (1)TCP

2013-01-17 10:06:10 2857

原创 Cannot set device tcp segmentation offload settings: Invalid argument

错误描述 ethtool -K eth0 tso onCannot set device tcp segmentation offload settings: Invalid argumentTSO选项开启失败。 网卡驱动 显示网卡驱动ethtool -i | --driver ethX 例:ethtool -i eth0driver: tg3v

2013-01-17 10:05:46 5185

原创 Google对TCP快速重传算法的改进

内容:本文主要分析Google对TCP快速重传算法的改进,即TCP early retransmit。内核版本:3.6作者:zhangskd @ csdn blogpatch series:(1) tcp: early retransmit: tcp_enter_recovery()(2) tcp: early retransmit(3) tcp: early re

2013-01-04 15:35:20 9709 1

原创 Google对TCP快速恢复算法的改进

内容:本文主要分析Google对TCP快速恢复算法的改进,即Proportional Rate Reduction for TCP。内核版本:3.2.12作者:zhangskd @ csdn blog patch:Proportional Rate Reduction for TCP. 这个patch包含在3.2之后的版本中。 patch描述 以下是提交者Nan

2013-01-04 14:52:50 6729

原创 TCP拥塞状态机的实现(下)

内容:本文主要分析TCP拥塞状态机的实现中,各个拥塞状态的进入、处理和退出的详细过程。内核版本:2.6.37作者:zhangskd @ csdn 各状态的退出 state E各状态的退出时机:tp->snd_una >= tp->high_seq (1) Open因为Open态是正常态,所以无所谓退出,保持原样。 (2)Loss icsk->ic

2012-12-14 17:47:34 6844 1

原创 TCP拥塞状态机的实现(中)

内容:本文主要分析TCP拥塞状态机的实现中,虚假SACK的处理、标志丢失数据包的详细过程。内核版本:2.6.37作者:zhangskd @ csdn 虚假SACK state B如果接收的ACK指向已记录的SACK,这说明记录的SACK并没有反应接收方的真实的状态,也就是说接收方现在已经处于严重拥塞的状态或者在处理上有bug,所以接下来就按照超时重传的方式去处理

2012-12-14 17:47:06 5370

原创 TCP拥塞状态机的实现(上)

内容:本文主要分析TCP拥塞状态机的实现中,主体函数tcp_fastretrans_alert()的实现。接下来的文章会对其中重要的            部分进行更具体的分析。内核版本:2.6.37作者:zhangskd @ csdn 原理 先来看一下涉及到的知识。 拥塞状态:(1)Open:Normal state, no dubious events,

2012-12-14 17:46:21 8266 1

原创 输入方向的流量控制

概述 Linux中的QoS分为入口(Ingress)部分和出口(Egress)部分,入口部分主要用于进行入口流量限速(policing),出口部分主要用于队列调度(queuing scheduling)。大多数排队规则(qdisc)都是用于输出方向的,输入方向只有一个排队规则,即ingress qdisc。ingress qdisc本身的功能很有限,但可用于重定向incomin

2012-12-04 10:57:55 16130

原创 程序员的绘图利器 — Graphviz

概述 官网:http://www.graphviz.org/Graphviz (Graph Visualization Software) 是一个由AT&T实验室启动的开源工具包。DOT是一种图形描述语言,非常简单的,Graphviz就是用来处理这种语言的工具。只需要简单了解一下DOT语言,就可以用Graphviz绘图了,它对程序员特别有用。So in short, if yo

2012-12-04 10:57:30 29608 4

转载 patch的制作和使用

diff find differences between two filesdiff [option] from-file to-file patch apply a diff file to an originalpatch [option] originalfile patchfilebut usually justpatch -pnum  普

2012-11-30 17:04:34 2365

原创 上传压死下载 & 常见TCP选项

上传压死下载 下载文件的速度非常低。抓取数据包分析,发现:服务器 —> 客户端 的包,经历时间 客户端 —> 服务器 的包,经历几十至几百ms后,对方才有反应。一个文件中的第一个SYN请求还超时,3s后重传。服务器 —> 客户端 的包,至少都重传了一遍,不论是在建立连接时,还是在传送数据时。可能的原因:客户端 —> 服务器的链路拥塞,丢包率高,客户端的ACK丢失了,服务

2012-11-29 15:19:28 4045

原创 TCP接收缓存大小的动态调整

引言  TCP中有拥塞控制,也有流控制,它们各自有什么作用呢?拥塞控制(Congestion Control) — A mechanism to prevent a TCP sender from overwhelming the network.流控制(Flow Control) — A mechanism to prevent a TCP sender from overwhe

2012-11-22 11:37:41 36016 2

原创 TCP的TSO处理

概述 In computer networking, large segment offload (LSO) is a technique for increasing outboundthroughput of high-bandwidth network connections by reducing CPU overhead. It works by queuingup la

2012-10-15 16:52:53 13793

原创 TCP Nagle剖析

本文内容:TCP Nalge的原理、内核实现以及应用。作者:zhangskd @ csdn 概述 Nagle's algorithm, named after John Nagle, is a means of improving the efficiency of TCP/IP networksby reducing the number of packets that

2012-10-12 15:31:53 4539

原创 强力卸载内核模块

概述 内核为2.6.32。卸载模块target时,不管是否为强制卸载,都输出:ERROR:Module target is in use.用lsmod查看target,发现Used by计数为1,而据我所知,没有其它模块依赖target。编写模块检查target的module结构,发现:target->state == 0 // 模块存活module_refcoun

2012-09-09 16:38:41 16101 3

原创 Buffer size of router

Data buffer Buffers are typically used when there is a difference between the rate at which data is received and therate at which it can be processed, or in the case that these rates are variabl

2012-08-15 11:06:13 3908

原创 RTT distribution of Internet

概述 Each end-to-end path is characterized by its own minimum possible RTT, given by the sum of linkpropagation latencies and transmssion and processing delays on all nodes in the forward and reve

2012-07-27 11:15:10 2359

原创 Subversion版本控制 — 分支和合并(三)

概要 一种项目开发流程:(1)各开发成员建立自己的分支,并在此分支上开发。(2)各开发成员把分支合并到主干上,形成较为稳定的版本。(3)各个成员重新从主干上建立新的分支,回到第一步。(4)循环,直到工程结束。 分支 (一)分支(branch)的定义 A line of development that exists independently of an

2012-07-17 18:05:41 8125

原创 Subversion版本控制 — 冲突处理(二)

引言 对于一个文件,两个用户分别做了修改,如果他们的修改集changeset是有重叠的且不相同,那么就会产生冲突。假设有一文件:AB两个用户分别修改:C                 AA        和      BB                  D他们不会产生冲突,因为他们的修改没有交集。如果做如下修改:A

2012-07-17 18:04:31 5605

原创 Subversion版本控制 — 安装(一)

Subversion简介 Subversion是一个自由,开源的版本控制系统。在Subversion管理下,文件和目录可以超越时空。Subversion将文件存放在中心版本库里。这个版本库很像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改情况。这样就可以藉此将数据恢复到以前的版本,并可以查看数据的更改细节。正因为如此,许多人将版本控制系统当作一种神奇的“时间机

2012-07-17 18:00:55 5654

原创 TCP中RTT的测量和RTO的计算

内核版本:3.2.12本文主要剖析:RTT的测量、RTO的计算作者:zhangskd @ csdn 概述 RTO(Retransmission TimeOut)即重传超时时间。TCP超时与重传中一个很最重要的部分是对一个给定连接的往返时间(RTT)的测量。由于网络流量的变化,这个时间会相应地发生改变,TCP需要跟踪这些变化并动态调整超时时间RTO。RFC2988

2012-06-11 10:27:22 114589 12

原创 TCP拥塞控制窗口有效性验证机制

内核版本:3.2.12作者:zhangskd @ csdn内容:TCP congestion window validation mechanism 概述 问题1:当发送方长时间受到应用程序的限制,不能发送数据时,会使拥塞窗口无效。TCP是根据拥塞窗口来动态地估计网络带宽的。发送方受到应用程序的限制后,没有数据可以发送。那么此时的拥塞窗口就不能准确的反应网络状况,因

2012-06-05 17:39:31 6504

原创 TCP的初始cwnd和ssthresh

概述 linux 3.0以前,内核默认的initcwnd比较小,MSS为1460时,初始的拥塞控制窗口为3。linux3.0以后,采取了Google的建议,把初始拥塞控制窗口调到了10。Google's advice :《An Argument for Increasing TCP's Initial Congestion Window》The recommended valu

2012-05-29 11:27:29 27479 8

原创 man page

1 :用户在shell环境下可以操作的命令或者可执行文件 (shell环境)2:系统内核可调用的函数与工具 (内核环境)3:一些常用的函数与函数库,大部分为C的函数库 (应用程序环境)4:设备文件的说明,通常在/dev下的文件5:配置文件或者是某些文件的格式6:游戏7:惯例与协议,如Linux文件系统、网络协议、ASCII code说明8:系统管理员可用的管理命令9

2012-05-25 17:31:47 1961

原创 FRTO—虚假超时剖析

F-RTO:Forward RTO-Recovery,for a TCP sender to recover after a retransmission timeout.F-RTO的主要目的:The main motivation of the algorithm is to recover efficiently from a spuriousRTO. F-RTO的基本思想

2012-05-25 10:49:21 17745 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除