网络层
网络功能
网络层是网络体系结构中的核心层次,主要实现异构网络互联、路由选择与分组转发、拥塞控制等功能,为上层提供端到端的通信服务。
异构网络互联
异构网络互联是指将两个或两个以上不同的计算机网络通过一定的方法连接起来,构成一个更大的网络系统。这些网络可能使用不同的通信协议、传输介质和接入技术。
互联需求
- 协议转换:不同网络使用不同协议,需要协议转换机制
- 地址映射:不同网络的地址格式和寻址方式不同
- 数据格式转换:不同网络的数据帧格式可能不同
- 速率适配:不同网络的传输速率可能不同
互联设备
- 路由器:连接不同网络的专用设备,具有协议转换和路由选择功能
- 网关:连接异构网络的设备,实现协议转换
- 网桥:连接两个或多个局域网段,工作在数据链路层
互联方式
- 直接互联:通过路由器直接连接两个网络
- 间接互联:通过中间网络连接两个或多个网络
- 虚拟互联:通过隧道技术实现网络互联
路由与转发
路由与转发是网络层的两个核心功能,共同实现数据包在网络中的正确传输。
路由选择
路由选择是指确定数据包从源到目的地的最佳路径的过程。
- 静态路由:由网络管理员手动配置的路由表项
- 优点:简单、安全、可预测
- 缺点:不能适应网络变化,配置复杂
- 动态路由:通过路由协议自动学习和维护路由表
- 优点:自动适应网络变化,配置简单
- 缺点:占用网络资源,安全性较低
分组转发
分组转发是指当路由器收到数据包时,根据路由表决定如何处理该数据包的过程。
- 直接交付:目的主机与发送方在同一网络
- 间接交付:目的主机与发送方不在同一网络,需要通过路由器转发
转发过程
- 检查数据包的目的IP地址
- 查找路由表,确定下一跳地址
- 将数据包转发到下一跳路由器或目的主机
- 更新数据包的TTL(生存时间)值
SDN基本概念
SDN(Software Defined Networking,软件定义网络)是一种新型网络架构,通过将网络控制平面与数据平面分离,实现网络的可编程化和集中控制。
SDN架构
SDN架构分为三个平面:
- 应用平面:包含各种网络应用和服务
- 控制平面:负责网络逻辑控制和决策,由SDN控制器实现
- 数据平面:负责数据包的转发和处理,由交换机实现
SDN特点
- 控制与转发分离:网络控制功能从网络设备中分离出来
- 集中控制:通过SDN控制器集中管理整个网络
- 可编程接口:提供API接口,使网络可编程
- 开放接口:标准化南向和北向接口,实现多厂商设备互通
SDN接口
- 北向接口:连接应用平面和控制平面,为上层应用提供服务
- 南向接口:连接控制平面和数据平面,控制网络设备
- 东西向接口:连接多个SDN控制器,实现控制器间的通信
OpenFlow协议
OpenFlow是SDN中最流行的南向接口协议,定义了控制器和交换机之间的通信规范。
- 流表:交换机中的转发规则表
- 流表项:包含匹配字段、计数器和操作三部分
- 安全通道:控制器和交换机之间的安全连接
拥塞控制
拥塞控制是网络层的重要功能之一,用于防止网络出现过载和性能下降。网络层拥塞控制与传输层拥塞控制有所不同,主要关注网络资源的整体利用和流量管理。
网络拥塞的原因
- 网络资源有限:路由器缓冲区、链路带宽等资源有限
- 流量突发:网络流量的突发性导致资源瞬时不足
- 路由不对称:数据流向不同导致部分链路过载
- 路由变化:网络拓扑变化导致流量重新分布
网络层拥塞控制方法
-
预防性拥塞控制
- 资源预留:提前预留网络资源,如RSVP协议
- 接入控制:限制新流量进入网络,防止过载
- 流量整形:平滑流量突发,使流量更加均匀
- 流量监管:监控流量是否符合约定规范
-
反馈式拥塞控制
- 显式反馈:网络设备直接发送拥塞通知
- 隐式反馈:通过丢包、延迟等间接信号判断拥塞
- 基于路由器的反馈:路由器主动向源端发送拥塞信号
-
基于路由的拥塞控制
- 多路径路由:将流量分散到多条路径
- 自适应路由:根据网络状态动态调整路由
- 负载均衡:在多条路径间分配流量
拥塞控制算法
-
虚拟排队算法
- 为每个流维护虚拟队列
- 根据队列长度调整发送速率
- 实现公平的带宽分配
-
随机早期检测(RED)
- 在队列满之前随机丢弃数据包
- 通过概率丢包避免全局同步
- 平滑网络流量,减少突发
-
显式拥塞通知(ECN)
- 路由器标记拥塞的数据包
- 接收方将拥塞信息反馈给发送方
- 发送方根据反馈调整发送速率
拥塞控制与流量控制的区别
- 控制对象不同:
- 拥塞控制:关注整个网络的性能
- 流量控制:关注点对点的通信速率
- 实现层次不同:
- 拥塞控制:主要在网络层实现
- 流量控制:主要在传输层实现
- 目标不同:
- 拥塞控制:防止网络过载,保证网络整体性能
- 流量控制:防止接收方过载,保证可靠传输
拥塞控制的挑战
- 分布式环境:网络中没有中央控制器
- 延迟反馈:拥塞信息反馈存在延迟
- 公平性问题:如何公平分配网络资源
- 多目标优化:需要平衡吞吐量、延迟、公平性等多个指标
拥塞控制的发展趋势
- 智能化:利用机器学习预测和预防拥塞
- 软件定义网络:集中式控制使拥塞控制更加灵活
- 跨层设计:结合多层信息优化拥塞控制
- 网络功能虚拟化:通过虚拟化技术实现灵活的拥塞控制策略
路由算法
路由算法是网络中用于确定数据包从源到目的地的最佳路径的方法。根据不同的分类标准,路由算法可以分为多种类型。
静态路由与动态路由
静态路由
静态路由是由网络管理员手动配置的路由表项,不会自动改变。
- 特点:
- 配置简单,不需要复杂的路由协议
- 路由确定,可预测性强
- 不占用网络资源进行路由信息交换
- 安全性高,不易受到路由攻击
- 适用场景:
- 小型网络
- 网络拓扑结构稳定
- 安全要求高的网络
- 末梢网络(只有一个出口的网络)
- 缺点:
- 不能自动适应网络变化
- 网络规模大时配置复杂
- 不能实现负载均衡
- 网络故障时需要手动干预
动态路由
动态路由是通过路由协议自动学习和维护路由表,能够自动适应网络变化。
- 特点:
- 自动适应网络拓扑变化
- 配置简单,扩展性好
- 能够实现负载均衡
- 自动发现网络故障并重新计算路由
- 适用场景:
- 中大型网络
- 网络拓扑结构经常变化
- 需要冗余路径的网络
- 需要负载均衡的网络
- 缺点:
- 占用网络资源进行路由信息交换
- 配置相对复杂
- 安全性相对较低
- 可能产生路由环路
距离-向量路由算法
距离-向量路由算法是一种基于距离和方向的路由选择算法,每个路由器维护一张路由表,表中包含到各个目的地的距离和下一跳路由器。
基本原理
- 每个路由器定期向相邻路由器发送整个路由表
- 接收方根据收到的路由信息更新自己的路由表
- 使用"距离向量"表示到目的地的距离和方向
距离度量
- 跳数:数据包经过的路由器数量
- 延迟:数据包从源到目的地的传输时间
- 带宽:链路的传输能力
- 可靠性:链路的可靠性指标
- 负载:链路的当前负载情况
路由更新过程
- 路由器定期向相邻路由器发送路由更新
- 接收方比较收到的路由信息与现有路由表
- 如果发现更优路径,则更新路由表
- 重复此过程,直到网络收敛
算法特点
- 优点:
- 实现简单,配置容易
- 占用资源少
- 适合小型网络
- 缺点:
- 收敛速度慢
- 容易产生路由环路
- 可扩展性差
- 路由信息交换量大
代表协议
- RIP(Routing Information Protocol):使用跳数作为距离度量,最大跳数为15
- IGRP(Interior Gateway Routing Protocol):Cisco专有协议,使用复合度量
- EIGRP(Enhanced Interior Gateway Routing Protocol):Cisco增强型IGRP
链路状态路由算法
链路状态路由算法是一种基于网络拓扑的路由选择算法,每个路由器维护整个网络的拓扑图,并计算到各个目的地的最短路径。
基本原理
- 每个路由器发现相邻路由器并测量到它们的距离
- 构建包含所有链路状态的数据包(LSP)
- 将LSP广播到网络中的所有路由器
- 每个路由器收集所有LSP,构建完整的网络拓扑图
- 使用最短路径算法(如Dijkstra算法)计算路由表
链路状态信息
- 路由器标识:唯一标识路由器的ID
- 邻居列表:与该路由器直接相连的所有邻居
- 链路度量:到每个邻居的距离或成本
- 序列号:用于识别LSP的新旧
- 生存时间:LSP的有效期
算法特点
- 优点:
- 收敛速度快
- 不易产生路由环路
- 支持分层路由
- 路由信息交换量小
- 缺点:
- 实现复杂
- 占用资源多
- 初始收敛时间长
- 对路由器性能要求高
代表协议
- OSPF(Open Shortest Path First):广泛使用的域内路由协议
- IS-IS(Intermediate System to Intermediate System):最初用于OSI协议栈,后扩展到IP
- NLSP(NetWare Link Services Protocol):Novell公司的路由协议
层次路由
层次路由是一种将网络划分为多个区域的路由策略,每个区域内部使用自己的路由协议,区域之间使用另一种路由协议。
基本概念
- 区域(Area):网络的一部分,内部使用相同的路由协议
- 骨干区域(Backbone Area):连接所有其他区域的中心区域
- 区域边界路由器(ABR):连接多个区域的路由器
- 自治系统边界路由器(ASBR):连接不同自治系统的路由器
层次结构
-
第一层:自治系统内部的路由
- 域内路由协议(IGP):如OSPF、RIP、EIGRP
- 负责自治系统内部的路由选择
-
第二层:自治系统之间的路由
- 域间路由协议(EGP):如BGP
- 负责不同自治系统之间的路由选择
层次路由的优点
- 可扩展性:支持大规模网络
- 路由聚合:减少路由表大小
- 故障隔离:区域故障不会影响整个网络
- 安全性:可以限制路由信息的传播范围
- 管理简化:网络管理更加灵活
层次路由的缺点
- 复杂性增加:路由协议更加复杂
- 配置困难:需要合理划分区域
- 收敛时间:跨区域路由收敛时间较长
- 资源消耗:需要更多的计算和存储资源
应用场景
- 大型企业网络
- 互联网服务提供商网络
- 大学校园网
- 政府机构网络
IPv4
IPv4(Internet Protocol version 4)是互联网协议第四版,是当今互联网使用的核心协议之一。它提供了无连接的、不可靠的数据报服务。
IPv4 分组
IPv4分组是IPv4协议传输数据的基本单位,也称为数据报(Datagram)。
IPv4分组格式
IPv4分组由首部和数据两部分组成,首部包含20字节的固定部分和可选的选项部分。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version| IHL |Type of Service| Total Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identification |Flags| Fragment Offset |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Time to Live | Protocol | Header Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destination Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options (if any) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
字段说明
- 版本(Version):4位,表示IP协议版本,IPv4为4
- 首部长度(IHL):4位,表示IP首部长度,单位为32位字(4字节)
- 服务类型(Type of Service):8位,表示服务质量要求
- 总长度(Total Length):16位,表示IP分组总长度,包括首部和数据
- 标识(Identification):16位,用于标识IP分组,用于分片重组
- 标志(Flags):3位,用于控制分片,包括保留位、不分片位、更多分片位
- 片偏移(Fragment Offset):13位,表示分片在原始数据中的位置
- 生存时间(TTL):8位,表示IP分组在网络中可经过的最大路由器数
- 协议(Protocol):8位,表示上层协议类型,如TCP(6)、UDP(17)
- 首部检验和(Header Checksum):16位,用于检验IP首部的完整性
- 源地址(Source Address):32位,表示发送方的IP地址
- 目的地址(Destination Address):32位,表示接收方的IP地址
- 选项(Options):可变长度,用于测试、调试等特殊用途
IP分片
当IP分组大小超过网络MTU时,需要进行分片处理。
- 分片原因:不同网络的MTU不同,IP分组可能超过某些网络的MTU
- 分片过程:将IP分组分成多个较小的片段,每个片段有自己的IP首部
- 重组过程:在目的地根据标识、标志和片偏移字段重组原始IP分组
- 分片影响:增加网络开销,降低传输效率,容易丢失
IPv4 地址与 NAT
IPv4地址是互联网中设备的唯一标识,采用32位二进制数表示,通常用点分十进制表示。
IPv4地址结构
IPv4地址由网络部分和主机部分组成,网络部分标识设备所在的网络,主机部分标识该网络中的特定设备。
| 网络部分 | 主机部分 |
|------------------------|------------------------|
| 8-30位 | 2-24位 |
IPv4地址分类
IPv4地址分为A、B、C、D、E五类,其中A、B、C类用于单播地址,D类用于组播地址,E类保留用于实验。
- A类地址:
- 范围:1.0.0.0 - 126.255.255.255
- 网络位:8位,主机位:24位
- 默认子网掩码:255.0.0.0
- 最大网络数:126个
- 每个网络最大主机数:\(2^{24}-2=16,777,214\)个
- B类地址:
- 范围:128.0.0.0 - 191.255.255.255
- 网络位:16位,主机位:16位
- 默认子网掩码:255.255.0.0
- 最大网络数:16,384个
- 每个网络最大主机数:\(2^{16}-2=65,534\)个
- C类地址:
- 范围:192.0.0.0 - 223.255.255.255
- 网络位:24位,主机位:8位
- 默认子网掩码:255.255.255.0
- 最大网络数:2,097,152个
- 每个网络最大主机数:\(2^{8}-2=254\)个
- D类地址:
- 范围:224.0.0.0 - 239.255.255.255
- 用于组播地址
- E类地址:
- 范围:240.0.0.0 - 255.255.255.255
- 保留用于实验
特殊IP地址
- 网络地址:主机部分全为0的地址,表示一个网络
- 广播地址:主机部分全为1的地址,表示向该网络所有主机广播
- 环回地址:127.0.0.1,用于本地测试
- 私有地址:
- 10.0.0.0 - 10.255.255.255(A类)
- 172.16.0.0 - 172.31.255.255(B类)
- 192.168.0.0 - 192.168.255.255(C类)
NAT(网络地址转换)
NAT是一种将私有IP地址转换为公有IP地址的技术,用于缓解IPv4地址不足的问题。
- 工作原理:
- 内部网络使用私有IP地址
- 边界路由器维护NAT转换表
- 数据包离开内部网络时,将私有IP地址转换为公有IP地址
- 数据包进入内部网络时,将公有IP地址转换回私有IP地址
- NAT类型:
- 静态NAT:一对一的固定映射
- 动态NAT:从地址池中动态选择公有IP地址
- PAT(端口地址转换):多个私有IP地址映射到一个公有IP地址的不同端口
- NAT优点:
- 节约公有IP地址
- 增强网络安全
- 简化网络管理
- NAT缺点:
- 破坏端到端连接模型
- 影响某些协议的正常工作
- 增加网络延迟
子网划分、路由聚集、子网掩码与 CIDR
子网划分
子网划分是将一个大的网络划分为多个较小的子网的过程,通过借用主机位作为子网位实现。
- 目的:
- 提高IP地址利用率
- 隔离网络流量
- 增强网络安全
- 简化网络管理
- 子网划分步骤:
- 确定所需子网数量
- 计算所需子网位数
- 计算新的子网掩码
- 计算每个子网的地址范围
- 分配子网地址
- 子网划分示例:
- 原网络:192.168.1.0/24(C类网络)
- 划分为4个子网,需要2位子网位
- 新子网掩码:255.255.255.192(/26)
- 子网地址范围:
- 子网1:192.168.1.0 - 192.168.1.63
- 子网2:192.168.1.64 - 192.168.1.127
- 子网3:192.168.1.128 - 192.168.1.191
- 子网4:192.168.1.192 - 192.168.1.255
子网掩码
子网掩码用于区分IP地址中的网络部分和主机部分。
- 表示方式:
- 点分十进制:255.255.255.0
- CIDR表示法:/24
- 二进制:11111111.11111111.11111111.00000000
- 子网掩码作用:
- 确定IP地址的网络部分和主机部分
- 判断两个IP地址是否在同一网络
- 计算子网地址和广播地址
路由聚集
路由聚集是将多个连续的网络地址聚合为一个更概括的地址的过程,用于减少路由表的大小。
- 目的:
- 减少路由表大小
- 提高路由器性能
- 简化网络管理
- 增强网络稳定性
- 路由聚集条件:
- 地址连续
- 地址数量为2的幂次方
- 边界对齐
- 路由聚集示例:
- 原地址:192.168.0.0/24、192.168.1.0/24、192.168.2.0/24、192.168.3.0/24
- 聚集后:192.168.0.0/22
CIDR(无类域间路由)
CIDR是一种灵活的地址分配和路由聚合方法,打破了传统IP地址分类的限制。
- 特点:
- 不限制网络位和主机位的边界
- 支持变长子网掩码(VLSM)
- 支持路由聚集
- 提高IP地址利用率
- CIDR表示法:
- 格式:IP地址/前缀长度
- 示例:192.168.1.0/24
- 前缀长度表示网络部分的位数
- CIDR优势:
- 提高IP地址利用率
- 减少路由表大小
- 提高路由效率
- 增强网络扩展性
IPv6
IPv6(Internet Protocol version 6)是互联网协议第六版,设计用于替代IPv4,解决IPv4地址不足的问题。
IPv6 的主要特点
IPv6相比IPv4有许多改进和新特性,主要包括:
更大的地址空间
- IPv6地址长度为128位,而IPv4只有32位
- 理论地址数量:\(2^{128}\)个,约为\(3.4 \times 10^{38}\)个
- 实际可分配地址数量:约为\(2^{122}\)个
- 足以为地球上每一粒沙子分配一个IP地址
简化的首部格式
- IPv6首部固定为40字节,而IPv4首部长度可变(20-60字节)
- 去除了IPv4首部中的可选字段,简化了路由处理
- 提高了路由器处理效率
更好的扩展性
- 通过扩展首部支持新的功能
- 不需要修改基本首部格式
- 支持未来协议的扩展
内置的安全性
- 内置IPSec支持,提供端到端的安全性
- 支持认证和加密
- 解决了IPv4中安全性不足的问题
内置的移动性支持
- 内置移动IPv6支持
- 优化了移动设备的网络连接
- 支持无缝切换
内置的QoS支持
- 流标签字段支持流量识别
- 支持更好的服务质量
- 满足实时应用的需求
无状态地址自动配置
- 支持即插即用
- 无需DHCP服务器
- 简化网络管理
更好的多播支持
- 扩大了多播地址范围
- 取消了IPv4中的广播
- 提高了网络效率
IPv6 地址
IPv6地址采用128位二进制表示,通常用8组4位十六进制数表示,每组之间用冒号分隔。
IPv6地址表示方法
- 标准表示法:
- 格式:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX
- 示例:2001:0DB8:0000:0000:0000:FF00:0042:8329
- 压缩表示法:
- 连续的0组可以用"::"表示
- 每个"::"只能使用一次
- 示例:2001:0DB8::FF00:0042:8329
- 混合表示法:
- 用于IPv6地址中的IPv4地址
- 格式:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:IPv4地址
- 示例:2001:0DB8::192.168.1.1
IPv6地址类型
- 单播地址:
- 标识单个接口
- 发送到单播地址的数据包只被该接口接收
- 包括:全球单播地址、链路本地地址、唯一本地地址等
- 多播地址:
- 标识一组接口
- 发送到多播地址的数据包被该组所有接口接收
- 取代了IPv4中的广播地址
- 范围:FF00:0000:0000:0000:0000:0000:0000:0000 - FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF
- 任播地址:
- 标识一组接口
- 发送到任播地址的数据包被该组中最近的接口接收
- 用于负载均衡和服务发现
IPv6地址前缀
- 全球单播地址前缀:2000::/3
- 链路本地地址前缀:FE80::/10
- 唯一本地地址前缀:FC00::/7
- 多播地址前缀:FF00::/8
IPv6地址分配
- 全球单播地址:
- 由ICANN分配给区域互联网注册机构(RIR)
- RIR分配给互联网服务提供商(ISP)
- ISP分配给最终用户
- 链路本地地址:
- 自动配置
- 仅在本地链路上有效
- 用于邻居发现和自动地址配置
- 唯一本地地址:
- 类似于IPv4的私有地址
- 在本地网络内唯一
- 不在互联网上路由
IPv6地址配置
- 无状态地址自动配置(SLAAC):
- 基于MAC地址生成接口标识符
- 通过路由器通告获取网络前缀
- 组合成完整的IPv6地址
- 有状态地址自动配置(DHCPv6):
- 通过DHCPv6服务器获取IPv6地址
- 提供更多的配置选项
- 适用于需要集中管理的环境
- 手动配置:
- 网络管理员手动配置
- 适用于服务器和关键设备
- 提供更高的控制性
路由协议
路由协议是路由器之间交换路由信息的协议,用于建立和维护路由表,实现数据包的正确转发。
自治系统
自治系统(Autonomous System,AS)是指由一个或多个网络组成的网络集合,由单一实体管理,使用统一的路由策略。
自治系统特点
- 统一管理:由单一实体或组织管理
- 统一路由策略:内部使用相同的路由策略
- 自治系统号(ASN):每个自治系统都有一个唯一的ASN
- 边界网关协议:使用BGP与其他自治系统交换路由信息
自治系统类型
- 末梢自治系统:
- 只有一个出口连接到其他自治系统
- 通常用于企业网络
- 路由策略简单
- 多出口自治系统:
- 有多个出口连接到其他自治系统
- 通常用于大型企业网络
- 需要复杂的路由策略
- 传输自治系统:
- 连接多个其他自治系统
- 主要用于互联网服务提供商
- 需要非常复杂的路由策略
自治系统号(ASN)
- 16位ASN:范围1-65535,其中64512-65534为私有ASN
- 32位ASN:扩展了ASN数量,解决16位ASN不足的问题
- ASN分配:由ICANN分配给区域互联网注册机构(RIR),再分配给组织
域内路由与域间路由
根据路由协议工作的范围,可以分为域内路由和域间路由。
域内路由(IGP)
域内路由协议(Interior Gateway Protocol,IGP)是在自治系统内部使用的路由协议。
- 特点:
- 在自治系统内部工作
- 通常使用距离或成本作为度量
- 收敛速度快
- 支持复杂的路由策略
- 常见IGP协议:
- RIP:距离向量协议,使用跳数作为度量
- OSPF:链路状态协议,使用成本作为度量
- IS-IS:链路状态协议,最初用于OSI协议栈
- EIGRP:Cisco专有的混合路由协议
域间路由(EGP)
域间路由协议(Exterior Gateway Protocol,EGP)是在自治系统之间使用的路由协议。
- 特点:
- 在自治系统之间工作
- 需要支持复杂的路由策略
- 可扩展性好
- 安全性要求高
- 常见EGP协议:
- BGP:当前互联网使用的唯一EGP协议
- EGP:早期的域间路由协议,已被BGP取代
OSPF 路由协议
OSPF(Open Shortest Path First)是一种广泛使用的域内路由协议,基于链路状态算法。
OSPF特点
- 开放标准:公开的协议标准,多厂商支持
- 链路状态协议:基于Dijkstra最短路径算法
- 分层路由:支持区域划分,提高可扩展性
- 快速收敛:网络变化时快速收敛
- 支持VLSM和CIDR:支持变长子网掩码和无类域间路由
- 认证机制:支持简单认证和MD5认证
- 多路径:支持等价多路径(ECMP)
OSPF基本概念
- 区域(Area):OSPF网络的基本单位,用于分层路由
- 骨干区域(Area 0):连接所有其他区域的中心区域
- 路由器ID:唯一标识OSPF路由器的32位数
- 邻居:直接相连的OSPF路由器
- 邻接:交换路由信息的OSPF路由器关系
- 链路状态数据库(LSDB):存储整个网络拓扑信息的数据库
- 链路状态通告(LSA):描述路由器链路状态的信息单元
OSPF区域类型
- 标准区域:
- 可以接收所有类型的LSA
- 可以计算到所有目的地的路由
- 通常用于普通网络区域
- 末梢区域(Stub Area):
- 不接收外部LSA(Type 5)
- 使用默认路由到达外部网络
- 减少LSDB大小和路由计算开销
- 完全末梢区域(Totally Stubby Area):
- 不接收外部LSA(Type 5)和汇总LSA(Type 3、4)
- 只使用默认路由到达其他区域和外部网络
- 进一步减少LSDB大小
- 非末梢区域(NSSA):
- 类似于末梢区域,但可以引入外部路由
- 使用Type 7 LSA引入外部路由
- 在ABR上转换为Type 5 LSA
OSPF LSA类型
- Type 1 LSA(路由器LSA):
- 由每个路由器生成
- 描述路由器的链路和状态
- 只在区域内传播
- Type 2 LSA(网络LSA):
- 由DR(指定路由器)生成
- 描述多路访问网络
- 只在区域内传播
- Type 3 LSA(网络汇总LSA):
- 由ABR生成
- 描述区域间的路由信息
- 在其他区域传播
- Type 4 LSA(ASBR汇总LSA):
- 由ABR生成
- 描述到ASBR的路由信息
- 在其他区域传播
- Type 5 LSA(外部LSA):
- 由ASBR生成
- 描述外部路由信息
- 在整个AS内传播(除末梢区域)
- Type 7 LSA(NSSA外部LSA):
- 由NSSA中的ASBR生成
- 描述外部路由信息
- 在NSSA内传播,在ABR上转换为Type 5 LSA
OSPF路由计算过程
- 发现邻居:通过Hello报文发现邻居路由器
- 建立邻接关系:选举DR和BDR,建立邻接关系
- 交换LSA:邻接路由器之间交换LSA
- 构建LSDB:收集所有LSA,构建链路状态数据库
- 计算最短路径:使用Dijkstra算法计算最短路径树
- 生成路由表:根据最短路径树生成路由表
BGP 路由协议
BGP(Border Gateway Protocol)是当前互联网使用的唯一域间路由协议,用于在自治系统之间交换路由信息。
BGP特点
- 路径向量协议:不仅传递距离信息,还传递路径信息
- 策略驱动:支持复杂的路由策略
- 可靠性:使用TCP作为传输协议,确保可靠传输
- 可扩展性:支持大规模网络
- 增量更新:只发送变化的路由信息,减少网络开销
- 认证机制:支持MD5认证,提高安全性
BGP基本概念
- AS路径:BGP路由中包含的自治系统列表
- 路径属性:描述BGP路由的特性
- 邻居:交换BGP路由信息的对等体
- iBGP:同一AS内的BGP邻居关系
- eBGP:不同AS间的BGP邻居关系
BGP路径属性
- 公认必遵属性:
- AS_PATH:记录路由经过的AS列表
- NEXT_HOP:到达目的地的下一跳IP地址
- ORIGIN:路由的来源(IGP、EGP、INCOMPLETE)
- 公认自决属性:
- LOCAL_PREF:本地优先级,用于iBGP
- ATOMIC_AGGREGATE:聚合路由标志
- 可选过渡属性:
- AGGREGATOR:执行路由聚合的AS和路由器ID
- COMMUNITY:路由共同体,用于路由策略
- 可选非过渡属性:
- MED:多出口鉴别器,影响进入AS的流量
- ORIGINATOR_ID:路由发起者的路由器ID
- CLUSTER_LIST:路由反射器集群列表
BGP路由选择过程
- 最高权重:Cisco特有属性
- 最高LOCAL_PREF:本地优先级
- 本地起源:本地产生的路由优先
- 最短AS_PATH:AS路径最短的路由
- 最低起源类型:IGP < EGP < INCOMPLETE
- 最低MED:多出口鉴别器最小
- eBGP优于iBGP:外部BGP优于内部BGP
- 最低IGP度量:到BGP下一跳的IGP度量最小
- 最老路由:最早收到的路由
- 最低路由器ID:路由器ID最小
- 最低邻居地址:邻居IP地址最小
BGP消息类型
- OPEN消息:建立BGP邻居关系
- UPDATE消息:交换路由信息
- NOTIFICATION消息:报告错误
- KEEPALIVE消息:维持邻居关系
- ROUTE-REFRESH消息:请求重新发送路由信息
BGP邻居关系建立过程
- Idle状态:BGP进程初始状态
- Connect状态:尝试建立TCP连接
- Active状态:TCP连接失败,重试连接
- OpenSent状态:发送OPEN消息
- OpenConfirm状态:接收OPEN消息,发送KEEPALIVE
- Established状态:邻居关系建立,开始交换路由信息
IP 组播
IP组播是一种高效的数据传输方式,允许一个发送者向多个接收者发送数据,而无需为每个接收者单独发送数据。
组播的概念
组播(Multicast)是一种一对多的通信方式,介于单播(Unicast)和广播(Broadcast)之间。
组播特点
- 高效性:数据在网络的分支点复制,减少网络带宽消耗
- 可扩展性:支持大规模接收者
- 资源节约:减少发送者和网络资源消耗
- 动态性:接收者可以动态加入和离开组播组
组播应用场景
- 视频会议:多方视频会议
- 流媒体:网络电视、直播
- 软件分发:软件更新分发
- 股票行情:金融信息发布
- 在线教育:远程教学
- 网络游戏:多人在线游戏
组播地址
- IPv4组播地址范围:224.0.0.0 - 239.255.255.255
- IPv6组播地址前缀:FF00::/8
- 组播MAC地址:01:00:5E:00:00:00 - 01:00:5E:7F:FF:FF
组播组
- 组播组:接收相同组播流的主机集合
- 组播组地址:标识组播组的IP地址
- 动态成员:主机可以动态加入和离开组播组
组播路由协议
- 域内组播路由协议:
- DVMRP:距离向量组播路由协议
- PIM-DM:协议无关组播-密集模式
- PIM-SM:协议无关组播-稀疏模式
- 域间组播路由协议:
- MSDP:组播源发现协议
- MBGP:组播边界网关协议
IP 组播地址
IP组播地址是用于标识组播组的特殊IP地址,分为保留地址和用户地址。
IPv4组播地址分类
- 224.0.0.0 - 224.0.0.255:本地网络组播地址
- 224.0.0.1:所有主机
- 224.0.0.2:所有路由器
- 224.0.0.5:OSPF路由器
- 224.0.0.6:OSPF指定路由器
- 224.0.0.9:RIP-2路由器
- 224.0.0.10:IGRP路由器
- 224.0.0.13:PIM路由器
- TTL限制:通常为1,不跨越路由器
- 224.0.1.0 - 224.0.1.255:互联网组播地址
- 224.0.1.1:网络时间协议(NTP)
- 224.0.1.2:SGI-Dogfight
- 224.0.1.3:Rwhod
- 224.0.1.4:VNP
- 224.0.1.7:Audionews
- 224.0.1.8:Mbone-Audio
- 224.0.1.9:Mbone-Video
- 224.0.1.11:IETF-1-Audio
- 224.0.1.12:IETF-1-Video
- 224.0.1.13:IETF-2-Audio
- 224.0.1.14:IETF-2-Video
- 224.0.1.24:Microsoft-DS
- TTL限制:可以跨越路由器
- 224.0.2.0 - 238.255.255.255:用户组播地址
- 可用于应用程序的组播通信
- 需要避免与已分配地址冲突
- TTL限制:可以跨越路由器
- 239.0.0.0 - 239.255.255.255:管理范围组播地址
- 用于特定组织或地区
- 不在互联网上路由
- 类似于IPv4私有地址
IPv6组播地址分类
- FF00::/8:所有组播地址
- FF01::/16:接口本地组播地址
- FF02::/16:链路本地组播地址
- FF03::/16:管理本地组播地址
- FF04::/16:管理本地组播地址
- FF05::/16:站点本地组播地址
- FF08::/16:组织本地组播地址
- FF0E::/16:全局组播地址
知名IPv6组播地址
- FF02::1:所有节点
- FF02::2:所有路由器
- FF02::5:OSPF路由器
- FF02::6:OSPF指定路由器
- FF02::9:RIP路由器
- FF02::A:EIGRP路由器
- FF02::D:PIM路由器
- FF02::1:FFXX:XXXX:被请求节点组播地址
组播MAC地址
- IPv4组播MAC地址:01:00:5E:00:00:00 - 01:00:5E:7F:FF:FF
- 映射规则:低23位对应IP组播地址的低23位
- 示例:224.0.0.1 → 01:00:5E:00:00:01
- IPv6组播MAC地址:33:33:XX:XX:XX:XX
- 映射规则:低32位对应IPv6组播地址的低32位
- 示例:FF02::1 → 33:33:00:00:00:01
移动 IP
移动IP是一种支持移动设备在不同网络间移动时保持通信连续性的技术。
移动 IP 的概念
移动IP允许移动设备在不同网络间移动时保持其IP地址不变,从而维持现有的网络连接。
移动IP背景
- 问题:传统IP协议中,IP地址既标识主机又标识位置
- 挑战:移动设备移动到新网络时,IP地址需要改变
- 解决方案:将IP地址的双重功能分离,引入移动IP
移动IP基本概念
- 移动节点:可以改变位置的网络设备
- 归属网络:移动节点的原始网络
- 外地网络:移动节点当前所在的网络
- 归属代理:归属网络中的路由器,负责维护移动节点的位置信息
- 外地代理:外地网络中的路由器,为移动节点提供服务
- 转交地址:移动节点在外地网络中的临时地址
- 归属地址:移动节点的永久IP地址
移动IP目标
- 透明性:对上层应用透明,移动过程不影响应用
- 可扩展性:支持大规模移动用户
- 安全性:防止地址欺骗和拒绝服务攻击
- 效率:优化路由,减少三角路由问题
- 兼容性:与现有互联网协议兼容
移动 IP 通信过程
移动IP通信过程包括注册、数据传输和切换三个主要阶段。
移动IP注册过程
-
移动节点到达外地网络:
- 移动节点通过代理发现确定自己在外地网络
- 从外地代理获取转交地址
- 或者通过其他方式(如DHCP)获取转交地址
-
注册请求:
- 移动节点向归属代理发送注册请求
- 请求中包含归属地址、转交地址等信息
- 可能通过外地代理转发注册请求
-
注册确认:
- 归属代理验证注册请求
- 建立归属地址与转交地址的绑定关系
- 向移动节点发送注册确认
移动IP数据传输过程
-
发送方到移动节点:
- 发送方使用移动节点的归属地址发送数据包
- 数据包首先到达归属网络
- 归属代理截获数据包,通过隧道转发到转交地址
- 外地代理(或移动节点)接收并解封装数据包
-
移动节点到发送方:
- 移动节点直接向发送方发送数据包
- 使用归属地址作为源地址
- 数据包直接到达发送方,无需经过归属代理
移动IP切换过程
-
检测移动:
- 移动节点通过代理发现或信号强度检测移动
- 确定已进入新的外地网络
-
获取新转交地址:
- 从新外地代理获取转交地址
- 或者通过其他方式获取转交地址
-
重新注册:
- 向归属代理发送注册请求
- 更新归属地址与新转交地址的绑定关系
-
数据包重定向:
- 后续数据包被重定向到新的转交地址
- 保持通信连续性
移动IP优化
-
路由优化:
- 允许发送方直接向转交地址发送数据包
- 减少三角路由,提高效率
- 需要发送方维护绑定缓存
-
平滑切换:
- 在旧连接断开前建立新连接
- 减少切换过程中的数据丢失
- 提高通信质量
-
层次移动IP:
- 引入区域归属代理
- 减少与归属代理的交互
- 提高切换速度,减少信令开销
移动IPv6
移动IPv6是对移动IP的改进,利用IPv6的特性简化移动IP的实现。
-
改进之处:
- 无需外地代理
- 路由优化是标准功能
- 更好的安全性
- 更高效的切换
-
工作过程:
- 移动节点通过邻居发现获取转交地址
- 向归属代理和通信节点发送绑定更新
- 通信节点直接向转交地址发送数据包
- 无需通过归属代理转发
网络层设备
网络层设备是网络中负责路由选择和分组转发的设备,主要包括路由器和三层交换机。
路由器的组成和功能
路由器是工作在网络层的网络设备,负责连接不同的网络,实现数据包的路由选择和转发。
路由器组成
-
输入端口:
- 负责接收数据包
- 进行物理层和数据链路层处理
- 查找路由表,决定输出端口
- 将数据包放入交换结构
-
交换结构:
- 连接输入端口和输出端口
- 负责数据包的高速转发
- 常见类型:总线交换、交叉开关交换、共享内存交换
-
输出端口:
- 负责发送数据包
- 进行排队和调度
- 进行物理层和数据链路层处理
- 将数据包发送到下一跳
-
路由处理器:
- 负责运行路由协议
- 维护路由表
- 执行系统管理功能
- 处理控制平面流量
路由器功能
-
路由选择:
- 运行路由协议,学习网络拓扑
- 计算最佳路径,构建路由表
- 支持静态路由和动态路由
-
分组转发:
- 根据路由表转发数据包
- 支持单播、组播和广播
- 实现访问控制和QoS
-
网络隔离:
- 隔离广播域
- 连接不同类型的网络
- 实现网络分段
-
地址转换:
- 支持NAT功能
- 实现内外网地址转换
- 缓解IPv4地址不足问题
-
安全功能:
- 实现访问控制列表(ACL)
- 支持防火墙功能
- 提供VPN服务
路由器类型
-
按功能分类:
- 核心路由器:位于互联网核心,高速转发
- 边缘路由器:连接用户网络,提供多种服务
- 接入路由器:连接终端用户,功能简单
-
按性能分类:
- 高端路由器:高性能,用于核心网络
- 中端路由器:中等性能,用于企业网络
- 低端路由器:低性能,用于小型网络
-
按应用场景分类:
- 企业路由器:用于企业网络
- 运营商路由器:用于运营商网络
- 家用路由器:用于家庭网络
路由表与分组转发
路由表是路由器进行路由选择和分组转发的依据,分组转发是路由器根据路由表转发数据包的过程。
路由表结构
路由表通常包含以下字段:
- 目的网络地址:数据包目的地址所在网络
- 子网掩码:确定目的网络的网络位和主机位
- 下一跳地址:到达目的网络的下一跳路由器地址
- 出接口:转发数据包的接口
- 度量值:路径的成本或距离
- 路由类型:静态路由、动态路由、直连路由等
路由表条目类型
-
直连路由:
- 路由器直接连接的网络
- 自动发现,无需配置
- 度量值通常为0
-
静态路由:
- 管理员手动配置的路由
- 适用于简单网络或特殊需求
- 不会自动更新
-
动态路由:
- 通过路由协议学习到的路由
- 自动适应网络变化
- 需要运行路由协议
最长前缀匹配
路由器在进行路由选择时,使用最长前缀匹配算法:
- 原理:选择与目的地址匹配最长的路由条目
- 实现:将目的地址与路由表中的条目逐位比较
- 优点:提供最精确的路由选择
- 示例:
- 目的地址:192.168.1.1
- 路由条目1:192.168.0.0/16
- 路由条目2:192.168.1.0/24
- 选择:路由条目2(匹配更长)
分组转发过程
路由器转发数据包的基本过程:
-
接收数据包:
- 输入端口接收数据包
- 进行物理层和数据链路层处理
- 提取IP首部信息
-
查找路由表:
- 根据目的地址查找路由表
- 使用最长前缀匹配算法
- 确定下一跳和出接口
-
处理数据包:
- 减少TTL值
- 重新计算首部检验和
- 可能进行NAT转换
-
发送数据包:
- 将数据包放入输出端口的队列
- 进行排队和调度
- 通过出接口发送数据包
路由表查找优化
为了提高路由表查找速度,路由器采用多种优化技术:
-
哈希表:
- 将路由表存储在哈希表中
- 查找时间复杂度为O(1)
- 适用于精确匹配
-
Trie树:
- 使用前缀树结构存储路由表
- 支持最长前缀匹配
- 查找时间复杂度为O(n),n为地址长度
-
TCAM:
- 三态内容寻址存储器
- 支持并行查找
- 查找速度快,但成本高
-
缓存技术:
- 缓存常用的路由条目
- 减少查找时间
- 提高转发性能
路由表维护
路由表需要不断维护以保持准确性:
-
路由协议:
- 通过路由协议交换路由信息
- 自动更新路由表
- 适应网络变化
-
路由收敛:
- 网络变化后重新计算路由
- 所有路由器达成一致
- 恢复网络正常工作
-
路由策略:
- 控制路由信息的发布和接收
- 实现特定的路由选择
- 满足网络管理需求