[Lecture Notes] CMU 14-740 Fundamentals of Telecommunication Networks

Lec 1. Intro

Network Protocols: Define the format (of a message), order of messages sent and received among network entities, and actions taken on message transmission or receipt.

所有Internet的通信活动都由protocol管。

Reliable: 发送到的和接收到的数据一致,顺序一致。要reliable就会有overhead,需要trade-off.

  • circuit switching
    • 每一个connection都有一个channel, connection-oriented
    • 在没有connection/call/user使用的时候会导致资源浪费
    • 每一个信号都有time和frequency,同一时刻有不同频率的信号频段都可以传输。如何切分?
      • FDM (Frequency Division Multiplexing) 频分复用
      • TDM (Time Division Multiplexing) 时分复用
  • packet switching
    • Connectionless, 没有channel,用多个paths
    • 数据切分成小块,称为packets
    • 所有用户都可以使用完整的带宽,没有FDM、TDM等,statistical sharing
    • Store and forward model: 一条link上有好多个节点,节点必须接收到完整packet才会继续发送给下一个节点
    • 缺点是会有congestion,数据包太多会导致竞争

Lec 2. Architecture

packet switching: 每一个packet都能占用全部的bandwidth,需要queue

如果queue满了,新的packet会被drop(aka lost, 丢包)


4 Sources of packet delay

  • processing delay (nodal processing)
    • Router接收到packet时需要:①检查bit errors ②决定转发给谁
    • 与router的处理速度有关
  • queueing delay
    • router一次只能发一个packet,需要排队等待
    • 与router的congestion level (拥堵情况)、buffer size都有关
    • 范围可以从0到无穷(无穷代表丢包)
    • Traffic intensity ρ=L×λ/R\rho = L \times \lambda / R (=输入除以输出)
      • L = Packet Length (bits/pkt)
      • R = Link Speed / Data Rate (bps)
      • λ\lambda = Average Packet Arrival Rate (pkt/s)
  • transmission delay
    • TtT_t = L/RL/R = Packet Length / Link Bandwidth
  • propagation delay
    • 第一个bit发送需要的延迟时间。取决于光速(或物理介质速度)
    • Tp=d/sT_p = d / s = Length of physical link / Propagation speed in physical medium

Traceroute:发送给第i个node来回的时间


Layered Network Architecture

  • Layer的优点

    • 每个layer里面的protocol可以分开设计,互不干扰,简化设计、实现和测试流程
  • Layer的缺点

    • duplication:每个layer都做了一些reliability的设计,导致重复
    • 每层layer之间隐藏了信息,可能影响性能(完成某些操作可能需要底层layer的信息)
  • ISO OSI reference model / TCP/IP

    • 1970s的时候不同的网络架构互不兼容,无法互相通信,所以ISO搞出了OSI来实现 interoperability

    • ISO: International Standard Organization

    • OSI: Open Systems Interconnection

    • 然后 TCP/IP 把OSI protocol给取代了

    • OSI有7层layer,TCP/IP有5层layer。顶上两个是end-to-end,底下的是hop-by-hop.

Lec 3. Design Principles

Virtual connections

每层layer都有自己的header。

Encapsulation: Sending host, 从更高层layer获取信息,在payload前加一个自己的header

Decapsulation: Receiving host, 从更底层layer获取信息,从自己的header提取信息然后去掉

TCP/IP

  • Hourglass” design, IP 是最中间的glue,IP的上层和下层都有很多东西

    缺点:IP至关重要,并且改IP很困难,像IPv4到IPv6的迁移非常复杂。

  • No Strict layering: 应用程序也可以绕过layer直接用底层。

  • 协议需要 standardized.

    • Internet Engineering Task Force (IETF). 每个IETF标准都公开发布了Request for Comments (RFC).
    • 但不是所有RFC都成为了标准。RFC包含实验性的协议

Goals of TCP/IP design

Clark88论文

  • Fundamental goal: 把现有的网络给interconnect起来。使用 store-and-forward packet-switching 方法,用 gateways 连接起来.
  • Second level goals:
    • continue despite failures 失败了也要继续(失败了要重建连接)
      • 需要保存state(状态信息),这样连接中断了才能重新建立连接
      • state是存在intermediate nodes还是存在end-hosts? 存在end-hosts里。stateless nodes.
    • 支持多种服务
      • TCP: Connection-oriented; UDP: connectionless
      • 最初TCP的目标是connection-oriented and reliable。Reliability是主要的延迟来源。所以TCP和IP分离了,搞了个UDP。
    • 支持多种网络技术(有线网、无线电等)
    • distributed management 自己需要能管理自己的网络
      • networks can be administered separately
    • cost-effective 效率
    • account for resources used
      • 早期设计的时候没有人在意(现在很多人在意网速)。
    • 上述后两个目标并没有获得太多attention甚至完全没有被考虑过

Lec 4. Internet ISP’s Architecture

The Internet is a Network of Networks.

ISP: Internet Service Provider

A backbone network ISP: 能够让所有customers连接到全球网络

  • 最早的时候只有一个backbone ISP叫做 NSFNET
  • 但是这样做不好,比如有两个中国电脑通信,仍然需要经过位于美国的全球唯一backbone
  • 所以出现了多个 commercial backbone ISP 互相interconnect来实现全球互联网连接

Transit & Peering

Transit interface: 一个backbone ISP将网络传输服务售卖给客户(“客户”指更小的ISP或别的大企业)

Peering interface: ISP之间互相直接访问

  • peering通常是免费的,互惠互利,数据直接传输,不经过transit provider
  • peering的关系通常是商业机密

Different types of ISP

Tier-1

  • Tier-1的定义已经被滥用,每个ISP都自称自己是Tier-1。通常Tier-1指的是:
    • ① 和一大堆customer有 transit link
    • ② 和一大堆别的Tier-1 backbone ISP有 peering (business) interconnections. (通常有 full-mesh architecture)
  • Tier-1网速快,延迟低,全球都有,与很多Tier-2 ISP相连(Tier-2 ISP是Tier-1 ISP的transit customers)
  • Tier-1不需要从别的ISP购买transit就可以访问到全球互联网
  • Tier-1 ISP通常有一种 restrictive peering policy
    • 不要轻易跟别的非Tier-1 ISP去peer,因为它们是潜在的客户,要向它们收钱

Tier-2:

  • 通常来说,不是 Tier-1 的ISP就叫做 Tier-2.
  • Tier-2需要从Tier-1 ISP购买transit access
  • Tier-2向更下层的客户提供付费transit服务
  • Tier-2和Tier-2之间也会peer。通常有一种 open-peering policy
    • Tier-2要和尽可能多的ISP去peer
    • 需要权衡一下成本:Peer会产生 management costmaintenance cost

这几年有个新东西进入了ISP体系结构:Content Providers (Large Enterprise Companies)

Content Providers

  • Do not sell transit.
  • 可分为以下两类
    • Category A: Focus on content creation
      • 不peering,不运作网络
    • Category B: Sophisticated, large-scale players
      • open peering policy

Lec 5. Application Layer & HTTP

Application Layer \neq User Application

Application Layer provides Services (e.g. SMTP, HTTP, FTP, SSH)

许多Application Layer Services需要先创建一个Transport Layer (TL) connection (channel).

HTTP

HTTP-messagerequestresponse 组成

Request或Response由 start line, header, empty linemessage body 组成

  • Start line: Request-lineStatus-line

    • Request-line = Method sp Request-URI sp HTTP-Version CRLF

      e.g. GET /images/logos.html HTTP/1.1

      Method包含 GET, POST, HEAD, PUT, DELETE

      Method中的GET:

      • conditional GET: If-Modified-Since, If-Match
      • partial GET: 只获取一个object的指定byte范围。header中包含RANGE field。

      Method中的 HEAD: 获取metadata(与GET相同,但不包含message body)

      Method中的 OPTIONS: 获取服务器或资源的能力,不获取资源本身

    • Status-line = HTTP-version sp Status-Code sp Reason-Phrase CRLF

      e.g. HTTP/1.1 200 OK\r\n Connection: close...

      Status code 是三位数字:

      • 1xx: informational: 请求已收到,正在处理
      • 2xx: success 成功
      • 3xx: redirection 重定向/完成请求需要更多操作
      • 4xx: client error 因为client的错误导致请求格式错误或无法满足请求
      • 5xx: server error 请求完全正确,但服务器原因导致无法满足请求 (e.g. 505 HTTP Version Not Supported)
  • 0个或多个headers (General, Request, or Entity headers)

    • e.g. User-agent: mozilla/5.0... \r\n Connection: close
    • Header包含HTTP request/response的 metadata
      • 日期,时间,Application或服务器信息,缓存控制,46个有定义的header
    • HTTP Request 需要 HOST 这一项(Response不需要)
  • 空行 (CRLF)

    空行是为了把header和body区分开

  • message body (optional)

Persistent & Non-persistent Connections

HTTP用TCP作为Transport Layer Protocol

(TCP在Transport层,HTTP在Application层)

建立一个HTTP连接需要先建立TCP连接

Round Trip Time (RTT): 发送一条消息并得到回复的所需时间

  • Non-persistent HTTP

    需要1个RTT建立TCP连接,1个RTT建立HTTP连接,然后传数据,最后1个RTT关闭连接

    Total Transmission Time = 2RTT + file transmit time

    Total Time (包括关闭连接) = 3RTT + file transmit time

  • Persistent HTTP

    • Reuse existing TCP connection

      传数据之后不要关闭TCP connection,省去下一次建立TCP连接的时间

    • Pipelining at the Application Layer level

      不等到上一个(HTTP)请求收到回复,就发送下一个request。服务器按照顺序发送数据包。这样所有object最少只需要占用1个RTT

      HTTP/1.1默认使用这样的 Persistent HTTP + Pipelining

    • Server Push in HTTP 2.0

      服务器提前把client会用到的objects主动发过来,不需要client去请求

Caching

  • Web Proxy Caching

    建立一个中转代理 Local Cache (aka Local Web Proxy)

  • File Validation in HTTP Caching

    HTTP会想办法确保cache是否valid(cache的文件有没有过期)

    有两种 Cache Expiration Model

    • Origin Server-specified expiration

      服务器使用 Expiresmax-age header 直接告诉文件多久后过期

    • Heuristic expiration

      服务器不给定过期时间,client请求资源时用 If-modified-since header,问服务器“我手里的资源是否fresh有没有过期?”

      如果资源过期则发送,资源没过期则用 304 Not Modified 避免重新传输。

Lec 6. DNS

DNS services (DNS作用)

  • DomainIP address 的转换
  • Host aliasing (alias 和 canonical domain names 的转换)
  • Mail Server aliasing (MX - Mail Exchange)
  • Load distribution across Name Servers (一个域名轮换指向多个服务器)

DNS Protocol

Query and Reply (和HTTP类似)

  • query和reply用同样的消息格式:Resource Record (RR)
  • 每个**Resource Record (RR)**由五部分组成:(Name, Value, Type, Class, TTL)
  • Name: 由RR中的Type决定
  • Value: e.g. 对于A解析,value是IP地址;对于CNAME解析,value是另一个域名
  • Type: e.g. A, CNAME
    • A: Address 指向IPv4地址,AAAA 指向IPv6地址
    • NS: Nameserver: 指向Authoritative (organization) Name Server,例如cmu有自己的DNS,Name=cmu.edu, Value=dns.cmu.edu
    • CNAME: Canonical Name
    • MX: Mail Exchange 指向邮件服务器的hostname
  • Class: 通常全都是 IN 意为Internet
  • TTL: Time to live 代表这一条RR能被缓存多久,0代表不能缓存

DNS queries 在53号端口上用UDP运行

  • Exception:在①Zone transfer②大于512字节的response 时会使用TCP
  • 为什么用UDP?因为TCP的overhead通常比整个DNS query都要大

Client可能需要问多个Name Servers (NS)

每个Name Server返回指向下一个NS的指针(不止返回NS record,也另外返回一个指向另一个NS的A record)

  • Non-recursive (右上图片) 有时也叫 Iterative
  • Recursive (右下图片)

DNS caching

  • Name Server (NS) 会缓存DNS mapping
  • 由TTL决定cache多久
  • Local Name Servers (Resolves) 通常缓存Top Level Domain (TLD) servers的IP地址

DNS Name Server Hierarchy

  • 1 Root (root name servers)

  • 2 Top-Level Domain (TLD Name servers)

  • 3 Authoritative (e.g. cmu name servers)

  • delegated administrative structure:

    • delegated指域名是反着来的 e.g. library.cmu.edu

    • administrative authority 不一定和 namespace hierarchy相符

      e.g. cs.cmu.edu有自己的name server, drama.cmu.edu没有

  • Zones

    • namespace hierarchy被分成一个一个zones

    • 每一个zone有一个name server

    • zone owner必须:maintain zone data; run redundant name servers (for backup)

    • Root Name Server 知道所有TLD nameserver和它们的地址

      • 一共只有13个root server,标记为a到m
    • TLD (e.g. .com, .org, .net)

      • 由 IANA (Internet Assigned Number Authority) 管理
      • TLD NS知道它自己所有域名的所有authoritative (or intermediate) name server的地址
    • Authoritative NS

    • Local Name Server (DNS Resolver) 也叫 Default Name Server or Resolver

      • 并不严格属于DNS结构
      • 每个organization(公司、学校等)都有一个
      • Act as a proxy

Lec 7. P2P

P2P: Peer-to-peer

Napster (Centralized P2P)

Napster曾经是第一个p2p music-sharing应用

  • Centralized: clients存储文件, 中央server只存储peer信息: <file name, ip address, port number>

  • 虽然传文件是decentralized,但是定位文件是highly centralized

  • ==> 导致的问题: 中央服务器稳定性、中央服务器性能瓶颈

Gnutella (Distributed P2P)

  • Fully decentralized (distributed)

    不需要中心的服务器,用户们自己安排自己

  • Not scalable

    • fully distributed \neq scalable
  • Bootstraping

    Find peers的方法:每个节点relay ping/pong messages

    这样每个节点都能得到所有bootstrap nodes的列表

  • Locate content: query flooding

    • 节点从现有的TCP连接发出Query消息,相连的Node会relay

    • QueryHit 消息会沿着反向路径发出

    • 为什么reverse path发送而不是直接发?

      因为requester只和它的direct peers有TCP connection,和目标节点可能没有connection

      但是会带来更高的延迟

    • QueryHit 之后使用HTTP传输文件。

    • Not scalable (因为find peer / find content所需的工作量指数级增长)

    • Limited scope query flooding: 在query message中添加 peer-count 属性,每经过一个hop减小1,从而限制hop的次数。

    • 但是仍然会有peer数量太多的问题,并且不能保证一定能找到目标 (no guarantee)

KaZaA (Hybrid/Hierarchical P2P)

KaZaA使用 Hierarchical (Hybrid) Design

每个节点是 Super Node (SN) 或 Ordinary Node (ON)

  • SN是leader,ON和SN有TCP连接,部分SN和SN之间有TCP连接
  • SN存储了children的信息
  • 某一个ON要找文件时,会询问它的parent (SN) 有没有,如果SN和SN的children都找不到所需信息,会问别的SN (SN-to-SN connections)
  • 优点: 与Gnutella相比能够支持明显更多的peers,且没有scalability问题
  • KaZaA query: client发送query,SN返回 meta data, hash, IP address (of the peer)
  • KaZaA实现细节不公开,有人做Reverse engineering
  • ON-SN, SN-SN的连接很短,因为node会不断寻找其余workload更小的节点

Lec 8. Transport Layer UDP

Transport Layer

Mission: Offers Peer-to-peer and end-to-end (virtual or logical) connections between two processes (applications) running on remote hosts.

Network Layer provides Internet Protocol (IP)

  • IP - packet switching 不提供reliability

    (第一节课内容:circuit switching: connection-oriented, FDM/TDM; packet switching: connectionless)

Transport Layer protocols 主要有TCP和UDP

Transport Layer 主要功能

  • Multiplex & De-multiplex: process的信息在发送方TL multiplex,接收方TL de-multiplex

    • 有multiplex一定需要addressing, Transport Layer用port numbers来addressing
    • Port Assignment: 端口一共有三种类型:well-known (0-1023), registered (1024-49151), dynamic or ephemeral (49152-65535)
    • Port numbers are bound to an application
  • Breaking data into segments and reassemble at receiver

    • 发送方的Application Layer提供任意长度的信息,Transport Layer会将其切成segments,一个一个发送

      • TL会往每个segments前添加header

      • 后续会被封装成packets(aka datagrams),然后封装成frames

    • 接收方的Transport Layer接收到segments,重新组装,传给Application layer

  • connection setup, state management, connection teardown (if necessary)

  • TCP: reliability guarantees.

UDP

缺点:segments可能丢失,可能顺序乱

优点:

  • connectionless (不需要handshake/agreement,不需要预先建立连接)
  • simple: no state to maintain
  • UDP header is smaller
  • No congestion or flow control (less processing overhead)
  • reliability可以在Application Layer添加,开销更低

UDP常用于

  • loss tolerant & rate sensitive (timeliness): 多媒体应用,例如直播
  • big overhead compared to transmitted data: payload很小的应用,例如DNS

UDP segment format:

UDP的header一共8bytes/64bits

source port, destination port, length, checksum各占16bits

Notes:

  • length是整个segment包含header的长度,单位为bytes
  • 为什么需要包含source port number?因为另一边回复时需要用到(需要反转source port#和dest port#)
  • checksum: end-to-end detection
    • 发送方:把segments中的所有16-bit words加起来,如果加法过程中产生进位1,则给结果加上进位1。最后反转所有bit。
    • 接收方:把所有segment连带着checksum一起加起来,同样如果产生进位则加上进位。结果必须全1.
    • 如果UDP发现有错误,则会丢弃,如果没错误则上传给application layer

Quiz 1

Lec 9. Reliable Data Transport (RDT)

RDT: Error-free + Bits received in the same order

Network Layer may have faults (bit errors, missing segments, out-of-order of segments)

==> guarantee RDT at Transport Layer (因为Network Layer可能出错,所以在Transport Layer中保证reliability)

RDT Tools

  • ACK: positive acknowledgement, NAK: negative acknowledgement
  • checksum
  • Time expiration
  • Retransmission
  • Sequence number

Stop-and-wait RDT protocol

每次只发送一个segment

S&W version 1: Checksum, ACK, NAK

  • 发送一个segment和checksum之后,等待收到ACK/NAK回复,再发送下一个

S&W version 2: Checksum, ACK, NAK, 1-bit sequence number

  • sequence number 是0或1,下一个segment的sequence number是上一个的比特反转

  • 能解决duplicate

S&W version 3: Checksum, ACK, NAK, 1-bit sequence number, timers

  • 解决超时一直收不到ACK/NAK回复,发送方会一直等待的问题

  • sequence number可以解决premature timeout(过早超时)导致的duplicate

Sliding Window Protocols

上面的Stop-and-wait Utilization很低,可以使用pipeline提高利用率

Sender and Receiver agrees on N (N = size of the sliding window)

GBN和SR

  • Go-Back-N (GBN)
    • Sender维护一个滑动窗口 (只有发送方维护窗口,接收方没有窗口,只能顺序接收)
    • ACK(n)代表所有<=n sequence number的segment都已经收到,大于n的可能未收到
    • e.g. 如果发送1,2,3…10,第6个未收到,则6,7,8,9,10都需要重传
    • Receiver没有buffering, 不支持接收out-of-order的segment,如果接收到的segment未按照顺序则会被丢弃
    • minimal state at the ends, especially receiver end: Receiver只需要维护last Seq# ACKed
    • 但是一个segment error可能导致很多segment需要重发,因为乱序发送的packet即使正确也已经被丢弃
  • Selective Repeat (SR)
    • 两个window,发送方和接收方各一个
    • 每一个segment各需要一个ACK,ACK不一定连续,可以out-of-order
    • 发送方对每个segment设置timeout,如果超时则重新发送这个segment
    • 发送方收到ACK(n)后,如果n是尚未收到ACK的最小元素,则可以向右移动窗口(移动send_base指针)
    • 接收方接收到Seg(n)会发送ACK(n),如果乱序则buffer/store,如果顺序正确则移动窗口 (deliver all buffered, in-order segments and advance window to not-yet-received segment)
    • SR的问题: 发送方和接收方对window的看法不同
    • Solution: 避免接收方的最大Seq #和发送方最小Seq #产生overlap
    • Seq # space至少要有两倍window size

Lec 10. TCP

Overview

TCP: Transmission Control Protocol

  • Point-to-point: 点对点,一个发送者一个接收者
  • Reliable (RDT): 数据顺序正确,没有segment loss或duplicates。使用pipeline和滑动窗口。
  • Full duplex data transfer: client和server可以双向传输
  • Connection-oriented: 在发送任何数据之前需要handshake建立连接

TCP用两种方法限制同时能发送的segment数量

  • Flow control: 至于接收方的资源(window size N)有关,发送方要确保不要发太多了让接收方吃不消
  • Congestion control: 与网络有关,发送方要尽量不让network产生congestion阻塞

TCP Segment

TCP Header 包含至少5个 32-bit words,如果有header中有options则长度会大于5x32-bit.

  • Source Port #, Destination Port # 各占 16-bit

  • Sequence # 和 Acknowledgement # 各占 32-bit,以 Bytes of Data 编号,而不是按 segment 数量编号

    Seq #: number of the first byte in the segment to be sent

    Ack #: number of the next expected byte by the receiver. (隐性告诉发送方所有之前的bytes都已成功收到)

  • In TCP, ACKs are cumulative

  • hdr len: 共4-bit,代表header的长度,以32-bit为单位,通常值为5,如果有options则大于5

  • Flags:

    • ACK: 确认收到,与ACK #有关
    • SYN:
  • Receive window: 单位为bytes,代表接收方期望每次能接收到多少数据不用发送ACK,由接收方的window size决定。会被用作TCP Flow Control

  • checksum: 纠错

  • Options包括 Maximum Segment Size (MSS): 同一个TCP segment最大能够包含的application layer data大小

TCP Connection Management

TCP 三次握手

  • Step 1: Client发送SYN (包含SYN的TCP segment),指定Client使用的最初的Seq # (client_isn)
  • Step 2: Server SYN, ACK, 创建buffer space,指定Server使用的最初的 Seq # (server_isn), 并acknowledge client_isn+1 (代表已经收到截止client_isn字节的segments,期望下次接收到client_isn+1字节)
  • Step 3: Client回复 ACK, 并 acknowledge server_isn+1

TCP 关闭连接

  • Step 1: Client发送 FIN

  • Step 2: Server回复ACK,并发送FIN

  • Step 3: Client收到FIN,并回复ACK,进入 timed wait state

    • 为什么client已经收到Server的FIN还需要timed wait才会关闭连接?

      因为client回复的ACK可能未成功发送给Server,Server因为无法收到回复会重新发送FIN。如果下次client在相同的端口重新开启连接会收到server重发的FIN,导致刚建立连接就被关闭

      Timed wait state lets TCP resend the final ACK in case this ACK is lost. Any segment that arrives during this time is discarded.

  • Step 4: Server收到ACK

TODO: Lec 10 remaining…

Lec 11. TCP Flow & Congestion Control

TCP用两种方法限制同时能发送的segment数量

Flow control 取决于接收方,Congestion control 取决于network

Flow Control

Receiver allocates a Receive buffer of size RcvBuffer, and a Receive Window of size RcvWindow.

RcvWindow 会告诉sender(在TCP segment header里)

RcvWindow = RcvBuffer - | LastByteReceived - LastByteRead |

Congestion Control

Network Congestion (Definition): Too many sources (nodes) sending too much data too fast for a network (e.g. intermediate routers) to handle.

想要: large throughput AND small delay.

Two options for feedback: network assisted, end-to-end

  • network assisted 中, routers会把congestion情况的feedback给sender,告知sender explicit max send rate
  • end-to-end中,只从终端获取losses和delays
  • TCP选择end-to-end

TCP Congestion Control

CongWin (发送方维护的一个变量)

LastByteSend - LastByteAcked <= CongWin

Roughly, TCP Send rate = CongWin/RTT

End-to-end loss segment events

  • Segment timeout
  • Three duplicate ACKs

发现loss segment event时江都send rate (CongWin),未发现时增加send rate

TCP is self-clocking (does not receive explicit feedback from other nodes)

有多个TCP Congestion Control的算法,今天讲 TCP TahoeTCP Reno (most widely used)

TCP Congestion Control Phases/States

  1. slow start

    • 开始时,CongWin = 1MSS (Max Segment Size)
    • exponentially fast 每次乘2,指数级增长
    • 直到发生loss event,或超过 ssthresh (ssthresh = Slow Start Threshold)
  2. congestion avoidance

    • Additive Increase, Multiplicative Decrease (AIMD)
    • Additive Increase: 每次RTT 加1MSS直到发生loss event
    • Multiplicative Decrease: CongWin减半
    • Tahoe不区分timeout和3 dup ack,直接降低到CongWin=1 然后slow start
    • Reno 对于timeout同上,对于3 dup ack让CongWin减半然后线性增长
  3. RTT estimation

    • timeout的值需要准确设定: 不是常数(与网络拥堵情况有关); 必须比RTT长

      如果timeout太长:slow reaction to segment loss

      如果timeout太短:premature timeout, unnecessary retransmissions 过早超时

    • 取多个Sample RTT取平均。

    • 必须忽略retransmissions(retransmitted segments的回复不计入RTT,因为无法分清是原包回复还是重发包回复)

    • Exponential Weighted Moving Average (EWMA):

      EstimatedRTT_t = (1-alpha) * EstimatedRTT_t-1 + alpha * SampleRTT

    • Timeout = EstimatedRTT + safety margin

      safety margin也会变,与SampleRTT的方差有关


[Lecture Notes] CMU 14-740 Fundamentals of Telecommunication Networks
https://www.billhu.us/2025/056_cmu_14740/
Author
Bill Hu
Posted on
January 16, 2025
Licensed under