计算机网络进阶
00:00
计算机网络进阶:TCP拥塞控制、路由算法、SDN、QoS与网络性能分析
1. TCP 拥塞控制
1.1 拥塞控制原理
发送方维护拥塞窗口(cwnd),实际发送窗口:
1.2 慢启动
- 初始 cwnd = 1 MSS(最大段大小)
- 每收到一个 ACK,cwnd 增加 1 MSS
- 指数增长:cwnd 经过 个 RTT 后为 MSS
- 到达慢启动阈值(ssthresh)后转为拥塞避免
1.3 拥塞避免
- 每个 RTT,cwnd 增加 1 MSS
- 线性增长:cwnd 每经过一个 RTT 加 1
1.4 快速重传与快速恢复
快速重传:收到 3 个重复 ACK,立即重传丢失段。
快速恢复:
- ssthresh = cwnd / 2
- cwnd = ssthresh + 3 MSS
- 每收到重复 ACK,cwnd 增加 1 MSS
- 收到新 ACK,cwnd = ssthresh,进入拥塞避免
1.5 TCP 拥塞控制状态机
慢启动 → ssthresh → 拥塞避免
↑ │
│ 超时:ssthresh=cwnd/2, cwnd=1
│ │
└─────────────────────┘
拥塞避免 → 3重复ACK → 快速恢复 → 新ACK → 拥塞避免
1.6 BBR 算法
Google 提出的基于模型的拥塞控制:
BBR 目标:将 cwnd 设为 BDP,而非基于丢包调整。
2. 路由算法
2.1 距离向量算法(DV)
Bellman-Ford 方程:
RIP 协议:
- 使用跳数作为度量
- 最大跳数 15(16 视为不可达)
- 每 30 秒广播路由表
- 问题:计数到无穷
毒性逆转:向邻居通告到其自身的距离为无穷大。
2.2 链路状态算法(LS)
Dijkstra 算法:
- 每个节点构建完整的网络拓扑图
- 从源节点运行 Dijkstra 最短路径算法
- 时间复杂度: 或 (优先队列)
OSPF 协议:
- 使用链路状态算法
- 支持区域划分
- 支持等价多路径(ECMP)
2.3 路径向量算法
BGP 协议:
- 自治系统间的路由协议
- 通告完整路径(AS 序列)
- 基于策略的路由选择
BGP 选路优先级:
- 最高本地优先级
- 最短 AS 路径
- 最低起源类型
- 最低 MED
- eBGP > iBGP
- 最低 IGP 度量
3. 软件定义网络(SDN)
3.1 SDN 架构
应用层(网络应用)
↕ 北向 API
控制层(SDN 控制器)
↕ 南向 API(OpenFlow)
基础设施层(交换机/路由器)
3.2 OpenFlow 协议
流表结构:
| 字段 | 说明 |
|---|---|
| 匹配字段 | 入端口、MAC、IP、TCP 端口等 |
| 优先级 | 匹配规则的优先级 |
| 计数器 | 匹配的包数、字节数 |
| 动作 | 转发、修改、丢弃、发送到控制器 |
3.3 SDN 优势
- 集中控制:全局视图优化
- 可编程:灵活部署网络服务
- 开放接口:设备解耦
4. 服务质量(QoS)
4.1 QoS 参数
| 参数 | 说明 |
|---|---|
| 带宽 | 单位时间传输的数据量 |
| 延迟 | 数据从源到目的的时间 |
| 抖动 | 延迟的变化量 |
| 丢包率 | 丢失数据包的比例 |
4.2 QoS 机制
流量整形:
- 令牌桶:以速率 生成令牌,桶容量
- 允许突发:最多发送 个包
- 长期平均速率不超过
- 漏桶:恒定速率输出,平滑突发
分类与标记:
- DSCP(DiffServ Code Point):IP 头中的 QoS 标记
- 802.1p:VLAN 标签中的优先级
队列调度:
| 算法 | 特点 |
|---|---|
| FIFO | 简单,无 QoS 保证 |
| 优先级队列 | 高优先级先发 |
| WFQ | 加权公平,按权重分配带宽 |
| CBQ | 基于类的队列 |
4.3 DiffServ 模型
- 边界路由器:分类、标记、整形
- 核心路由器:基于 DSCP 转发
每跳行为(PHB):
| PHB | DSCP | 说明 |
|---|---|---|
| EF | 101110 | 加速转发,低延迟 |
| AF1 | 001xx0 | 确保转发,低丢弃优先 |
| AF2 | 010xx0 | 确保转发,中丢弃优先 |
| AF3 | 011xx0 | 确保转发,高丢弃优先 |
| BE | 000000 | 尽力而为 |
5. 网络性能分析
5.1 排队论基础
M/M/1 队列:
- 到达率 ,服务率
- 利用率
- 平均队列长度:
- 平均等待时间:
Little 定律:
5.2 网络延迟分析
| 延迟类型 | 计算 | 说明 |
|---|---|---|
| 处理延迟 | 路由器处理 | |
| 排队延迟 | 缓冲区等待 | |
| 传输延迟 | =包长, =带宽 | |
| 传播延迟 | =距离, =光速 |
5.3 吞吐量分析
瓶颈链路决定端到端吞吐量。
5.4 网络可靠性
| 可用性 | 年停机 |
|---|---|
| 99% | 87.6 小时 |
| 99.9% | 8.76 小时 |
| 99.99% | 52.6 分钟 |
| 99.999% | 5.26 分钟 |