Skip to content

Commit 95482ac

Browse files
committed
c
1 parent d5c4c49 commit 95482ac

File tree

2 files changed

+174
-2
lines changed

2 files changed

+174
-2
lines changed

chapter_03_传输层/README.md

+46-2
Original file line numberDiff line numberDiff line change
@@ -339,10 +339,54 @@ ABR提供三种机制用于从交换机向接收方发送与拥塞相关的指
339339
+ CI和NI比特。发送方到接收方的RM cell占比是一个可调参数,默认32个数据cell中有一个RM cell。
340340
+ ER的设置。每个RM cell包含一个2byte的显式速率Explicit Rate, 一个拥塞的cell会降低经过的RM的ER。
341341

342-
## 3.7 TCP拥塞控制
342+
## 3.7 TCP拥塞控制 RFC5681
343343

344344
TCP所采用的方法,是让每一个发送方感知网络的拥塞程度,以调节发送速率,有三个问题:
345345
+ 如何控制发送速率
346346
+ 如何感知网络是否拥塞
347-
+
347+
+ 怎样调整发送速率
348+
349+
拥塞窗口congestion window cwnd, 有如下关系:LastByteSend - LastByteAcked <= min{rwnd, cwnd} , 其中rwnd为接收窗口。
350+
上述关系限制了发送方中未被确认的数据量。粗略地讲,发送方每次接收到ack后,可以发送cwnd个byte,那么传输速率是 cwnd/RTT byte/s
351+
352+
定义丢包事件:超时,或者收到来自接收方的三个冗余ack。
353+
354+
那么,如果ack以较慢的速度返回,那么cwnd以相当慢的速度增加;如果ack返回较快,那么cwnd增加也快。
355+
356+
怎样确定发送速率,不致过快或者过慢?
357+
+ 一个丢失的segment意味着拥塞,此时应该降低TCP发送速率
358+
+ 一个ack到达时,能够增加发送方的速率
359+
+ 带宽检测:ack到达时增加发送速率,直到出现丢包
360+
361+
TCP拥塞控制算法 TCP congestion control algorithm : 慢启动,拥塞避免,快速恢复
362+
363+
### 1 慢启动
364+
365+
一条TCP连接开始时,cwnd通常初始置为一个MSS的较小值,如果MSS是500byte,RTT是200ms,那么初始速度只有20kbps.
366+
367+
每接收到一个ack,cwnd增加一个MSS,那么每过一个RTT,发送速率都会翻倍。
368+
369+
检测到丢包时,设定一个cwnd,并且TCP转移到拥塞避免模式。
370+
371+
### 2 拥塞避免
372+
373+
cwnd的值为上次遇到拥塞时的一半。之后,每个RTT,cwnd的值只增加一个MSS。
374+
375+
### 3 快速恢复
376+
377+
结合ssthresh,阈值以下指数增长,以上线性增长。
378+
379+
没看明白在说啥。
380+
381+
382+
TCP拥塞控制,常被称为加性增,乘性减。AIMD。所以TCP发送速度曲线是一条锯齿。
383+
384+
有多种拥塞控制算法,比如Reno,Vegas,CUBIC等,Linux支持多种。
385+
386+
387+
388+
389+
390+
391+
348392

chapter_04_网络层/README.md

+128
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
## 4.1 概述
2+
3+
### 4.1.1 转发和路由选择
4+
5+
网络层的作用,将packet从一台发送主机,移动到一台接收主机,为此,需要两种重要的网络层功能:
6+
+ 转发forwarding:当一个packet到达路由器的一条输入链路时,路由器必须将该packet移动到适当的输出链路。
7+
+ 路由选择routing:当packet从发送方流向接收方时,网络层必须决定这些packet所采用的路由或者路径。计算这些路径的算法被称为路由选择算法routing algorithm
8+
+ 建立连接 connection setup : 网络层体系结构,如ATM,帧中继,MPLS,要求从源到目的地沿着所选择的路径彼此握手。。。
9+
10+
转发是指将packet从一个输入链路接口移动到适当的输出链路接口的路由器本地动作。路由选择是指网络范围的过程,以决定packet从源到目的地所采取的端到端的路径。
11+
12+
每台路由器有一张转发表forwarding table, 路由器通过检查到达packet的首部字段的值来转发packet,然后使用该值在该路由器的转发表中索引查询。
13+
14+
路由选择算法决定了插入路由器的转发表中的值。路由选择算法可以是集中式的,也可以是分布式的。路由器接收路由选择协议报文,该信息被用于配置其转发表。
15+
16+
分组交换机:一台通用交换设备,它根据分组首部字段的值,从输入链路接口到输出链路接口转移packet。
17+
+ 链路层交换机 link-layer switches:基于链路层中的值做转发决定
18+
+ 路由器 router:基于网络层字段的值做转发决定
19+
20+
### 4.1.2 网络服务模型 network service model
21+
22+
定义了packet在发送与接收端系统之间的端到端运输特性。
23+
24+
网络体系结构|服务模型|带宽保证|无丢包保证|有序|定时|拥塞指示
25+
---|---|---|---|---|---|---
26+
因特网|尽力而为|无|无|任何可能的顺序|不维护|无
27+
ATM|CBR|保证恒定速率|是|有序|维护|不出现拥塞
28+
ATM|ABR|保证最小速率|无|有序|不维护|提供拥塞指示
29+
30+
ATM Asynchronous Transfer Mode 异步传输模式,信元中继。
31+
32+
+ CBR Constant Bit Rate ATM网络服务
33+
+ ABR Available Bit Rate ATM网络服务 与因特网不同的是,cell不会被重新排序
34+
35+
## 4.2 虚电路和数据报网络
36+
37+
网络层与传输层类似,也提供无连接服务和连接服务。两层的主要差异如下:
38+
+ 网络层向传输层提供主机到主机的服务,而在传输层中,这些服务是向应用层提供的进程到进程的服务
39+
+ 特定的计算机网络(因特网、ATM、帧中继)不能同时提供无连接服务和连接服务
40+
+ 仅在网络层提供连接服务的计算机网络称为虚电路Virtual-Circuit网络
41+
+ 仅在网络层提供无连接服务的计算机网络称为数据报网络 datagram network
42+
+ 在传输层实现的面向连接的服务与在网络层实现的连接服务是根本不同的。网络层的连接服务不仅在端系统中实现,也在网络核心的路由器中实现。
43+
44+
### 4.2.1 虚电路网络
45+
46+
一条虚电路,就是某些网络在网络层的连接,组成如下
47+
+ 源和目的主机之间的一条路径,即一系列链路和路由器
48+
+ VC号,沿着该路径的每段链路的一个号码
49+
+ 沿着该链路的每台路由器中的转发表表项
50+
51+
无论何时跨越一台路由器创建一条新的虚电路,转发表就增加一个新表项。
52+
53+
虚电路有三个阶段
54+
+ 虚电路建立:传输层与网络层联系,制定接收方地址,等待网络建立虚电路。
55+
+ 网络层决定发送方与接收方之间的路径
56+
+ 为沿着该路径的而所有链路确定一个VC号码。
57+
+ 网络层在沿着路径的每台路由器的转发表中增加一个表项
58+
+ 预留虚电路路径上的资源
59+
+ 数据传送
60+
+ 虚电路拆除:发送方通知网络层终止虚电路。更新路径上每一台路由器的转发表。
61+
62+
启动与终止虚电路的报文称为信令报文signaling message, 用来交换这些报文的协议称为信令协议signaling protocol.
63+
64+
### 4.2.2 数据报网络
65+
66+
每当一个packet到达路由器时,会根据该路由器的转发表匹配目的地址的前缀,根据最大前缀匹配原则将该packet送往匹配的输出链路。
67+
68+
### 4.2.3 虚电路和数据报网络的由来
69+
70+
+ 虚电路的概念来自电话界,采用了真正的电路。
71+
+ 因特网连接的端系统比较复杂,所以使网络层服务模型尽可能简单,另外的功能在更高的层次实现
72+
73+
这么设计导致了很有趣的结果
74+
+ 因特网网络模型保证最少,导致可以使用各种不同的链路层技术:卫星,光纤,无线等
75+
+ 新增网络服务,只需要在网络中接入一个主机提供服务即可
76+
77+
78+
## 4.3 路由器工作原理
79+
80+
![路由器体系结构](http://o9hjg7h8u.bkt.clouddn.com/%E8%B7%AF%E7%94%B1%E5%99%A8%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84.png)
81+
82+
+ 输入端口:物理链路与路由器相连的物理层功能;链路层功能;通过查询路由选择处理器决定输出端口
83+
+ 交换结构:将输入实处端口相连,这种交换结构完全包含在路由器中,它是一个网络路由器中的网络。
84+
+ 输出端口:存储从交换结构接收的packet,并执行必要的链路层和物理层功能
85+
+ 路由选择处理器:执行路由选择协议,维护路由表和连接的链路状态信息,并未路由器计算转发表。并且执行网络管理功能。
86+
87+
路由器转发平面 router forwarding plane 一台路由器的输入端口,输出端口,和交换结构共同实现了转发功能,并且总是用硬件实现,以ns尺度运行(远快过硬件实现的速率)。
88+
89+
路由器控制平面 router control plane 在毫秒或秒尺度上运行,通常用软件实现,并在路由选择处理器上执行。
90+
91+
### 4.3.1 输入端口
92+
93+
![输入端口处理](http://o9hjg7h8u.bkt.clouddn.com/4-7%E8%BE%93%E5%85%A5%E7%AB%AF%E5%8F%A3%E5%A4%84%E7%90%86.png)
94+
95+
转发表由路由选择处理器计算并更新,而且会复制到每个端口中(上上图虚线),这样每次转发时,不需要调用处理器。
96+
97+
由于转发速度限制,查找必须在纳秒级执行,因此,不仅必须要用硬件进行查找,而且需要对大型转发表使用超出简单线性搜索的技术;
98+
同时必须给于内存访问时间以特别关注,这导致用嵌入式片上DRAM和更快的SRAM内存来设计。
99+
三态可寻址存储器 Tenary Content Address Memory 也经常被用于查找。
100+
101+
通过查找确认某packet的输出端口后,packet即可进入交换结构。
102+
103+
输入端口的其他动作:
104+
+ 物理层和链路层处理
105+
+ 检查packet的版本号,校验和以及寿命字段,并且重写后两个字段
106+
+ 更新用于网络管理的计数器
107+
108+
### 4.3.2 交换结构
109+
110+
![三种交换技术](http://o9hjg7h8u.bkt.clouddn.com/4-8.%E4%B8%89%E7%A7%8D%E4%BA%A4%E6%8D%A2%E6%8A%80%E6%9C%AF.png)
111+
112+
#### 1 经内存交换
113+
114+
最简单,最早的路由器是传统计算机。交换是在CPU控制下完成的。
115+
116+
#### 2 经总线交换
117+
118+
119+
120+
121+
122+
123+
124+
125+
126+
127+
128+

0 commit comments

Comments
 (0)