计算机网络(本)2024-11-21 第 3-5 节 PPT
IPv6
将协议数据单元 PDU 称为分组 (packet) ,不需要使用 DHCP
IPv6 首部改为 8 字节对齐。首部长度必须是 8 字节的整数倍
IPv6 数据报的一般形式
- 基本首部 (base header)
- 有效载荷 (payload)。有效载荷也称为净负荷。有效载荷允许有零个或多个扩展首部 (extension header),再后面是数据部分
IPv6 数据报的基本首部
IPv6 的地址分为三种类型(单播 (unicast)多播 (multicast)任播 (anycast)),每种类型的地址都有不同
IPv6 将实现 IPv6 的主机和路由器均称为节点,IPv6 地址是分配给节点上接口的
在 IPv6 中,每个地址占 128 位
冒号十六进制记法
IPv4 一个数字是 8bit 十进制,IPv6 一个数字是 16bit 十六进制
主要是有两个技术
零压缩 (zero compression):一串连续的零可以用一对冒号取代
FF05:0:0:0:0:0:0: B3 -> FF05:: B3
在一个地址中只能使用一次,防止歧义
点分十进制记法的后缀 例如 0:0:0:0:0:0:128.10.2.1 -> :: 128.10.2.1
[!EXAMPLE]
CIDR 记法地址: 2001:0DB8:0:CD30:123:4567:89AB: CDEF/60,表示: IPv6 的地址是: 2001:0DB8:0:CD30:123:4567:89AB: CDEF 其子网号是: 2001:0DB8:0:CD30::/60
路由选择协议/算法
自治系统 AS (Autonomous System)
每一个 AS 对其他 AS 表现出的是一个单一的和一致的路由选择策略
内部网关协议 IGP 是在一个 AS 内部使用的路由选择协议,域内路由选择
外部网关协议 EGP 是在不同自治系统之间进行路由选择时使用的协议,域间路由选择
三种不同的自治系统 AS
内部网关协议 RIP
工作原理
路由信息协议 RIP (Routing Information Protocol) 是分布式的、基于 距离向量 的路由选择协议,最大的优点是简单
- 路由器到直接连接的网络的距离 = 1
- 路由器到非直接连接的网络的距离 = 所经过的路由器数 + 1
RIP 协议中的“距离”也称为“跳数”(hop count),每经过一个路由器,跳数就加 1
好路由 = “距离短”的路由,最佳路由 = “距离最短”的路由
一条路径最多只能包含 15 个路由器,“距离”的最大值为 16 时即相当于不可达
三个特点+优越点
- 仅和相邻路由器交换信息
- 交换的信息是当前本路由器所知道的全部信息,即自己的路由表
- 按固定时间间隔交换路由信息
- 好消息传播得快,坏消息传播得慢
[!EXAMPLE] 坏消息传播得慢
坏消息指发生错误的信息传播得慢,router 要很久才能确定一个地方出问题了
如下图,网 1 出了问题,R1 会标记该目的地址距离为 16
但是, R2 先会将距离为 2 的信息交给 R1,并且按照算法不会接收 R1 的 RIP 报文
R1 接收到 R2 的 RIP 报文,会按照算法以为 R2 是可以到网 1 的,就会接收这个信息,替换掉原来标记的不可达信息
然后 R1 又将错误的信息发送给 R2,两者就这么来回更新,直到更新到距离都为 16,才都确认网 1 出了故障
路由表的建立
RIP 的路由表一个 entity 包含 <目的网络,最短距离,下一跳地址> 三部分
路由器在刚刚开始工作时,路由表是空的
- 先识别直接连接的网络,距离设置为 1
-
之后每一个路由器和相邻路由器交换路由信息
- 使用距离向量算法更新最短距离
-
经过若干次交换后就存了整个 AS 的路由信息
RIP 协议的收敛 (convergence) 过程较快
“收敛”就是在自治系统中所有的结点都得到正确的路由选择信息的过程
距离向量算法
交换路由信息时,router 发送的叫 RIP 报文,router 收到 X 发来的 RIP 报文时:
- 先将里面路由表所有最短距离+1,将下一跳地址改为发送者 X
- 对报文里的每个 entity,重复以下步骤
- 若自己的路由表没有这个 dest addr,就加入路由表
- 若已经有这个 dest addr,且 dest addr 已经是 X,就用报文里的距离替换已有的距离
- 若已经有这个 dest addr,且目前的 next addr 不是 X,但发现报文里的距离小于目前已有的,就将已有的替换为报文的
- 若已经有这个 dest addr,目前的 next addr 不是 X,距离比 X 的要小,就不改
- 若 3 分钟还未收到相邻路由器的 RIP 报文,则将其记为不可达路由器(距离设 16)
算法基础:Bellman-Ford 算法(或 Ford-Fulkerson 算法)
RIP2 的报文用使用 UDP 传送(使用 UDP 端口 520)。
内部网关协议 OSPF
开放最短路径优先 OSPF (Open Shortest Path First),采用分布式的链路状态协议 (link state protocol),克服了 RIP 的缺点,对大型 AS 很有效
使用了 Dijkstra 提出的最短路径算法 SPF
三个特点
- 采用洪泛法 (flooding),向本自治系统中所有路由器发送信息
- 发送的信息是与本路由器相邻的所有路由器的链路状态
- 这只是路由器所知道的部分信息
- 链路状态:说明本路由器都和哪些路由器相邻,以及该链路的度量 (metric)
- 链路状态发生变化,或每隔一段时间(如 30 分钟),路由器才用洪泛法向所有路由器发送此信息
[!NOTE] 链路状态数据库 (link-state database)
全网的拓扑结构图,每个路由器最终都能建立
在全网范围内是一致的(这称为链路状态数据库的同步)
每个路由器使用链路状态数据库中的数据构造自己的路由表
OSPF 将自治系统划分为两种不同的区域 (area)
- 主干区域 (backbone area) 标识符 = 0.0.0.0
- 作用:连通其他下层区域。
- 包括 ABR 在内的主干区域的 router 都叫做 主干路由器 BR (backbone router)
- R3, R4, R7 这种属于 区域边界路由器 ABR (area border router)
- R6 这种属于 自治系统边界路由器 ASBR (AS border router)
[!NOTE] 划分区域优点和缺点
优点:
- 减少了整个网络上的通信量。
- 减少了需要维护的状态数量。
缺点:
- 交换信息的种类增多了。
- 使 OSPF 协议更加复杂了
OSPF 分组用 IP 数据报传送
OSPF 工作过程
- 确定邻站可达
- 相邻路由器定期交换一次问候分组
- 若长时间没收到某 router 发来的问候分组,则认为其不可达
- 同步链路状态数据库
- 两个同步的路由器叫做完全邻接的 (fully adjacent) 路由器
- 更新链路状态
- 只要链路状态发生变化,路由器就使用链路状态更新分组
- 采用可靠的洪泛法向全网更新链路状态
- 定期刷新一次数据库中的链路状态
外部网关协议 BGP
不知道要不要学,写作业看看,我这里没怎么学
BGP 是 AS 的路由器之间交换路由信息的、采用了路径向量 (path vector) 路由选择协议
力求选择出一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要计算出一条最佳路由
每个 AS 选一个 ASBR 作为 BGP 发言者 (BGP speaker)参与协议计算
- eBGP (external BGP) 连接:运行 eBGP 协议,在不同 AS 之间交换路由信息。
- iBGP (internal BGP) 连接:运行 iBGP 协议, 在 AS 内部的路由器之间交换 BGP 路由信息
BGP 路由信息
BGP 路由 = [ 前缀, BGP属性 ] = [ 前缀, AS-PATH, NEXT-HOP ]
- 前缀
- 指明到哪一个子网(用 CIDR 记法表示)
- BGP 属性
- 自治系统路径 AS-PATH
- 下一跳 NEXT-HOP
BGP 路由如何避免兜圈子?
在属性 AS-PATH 中,不允许出现相同的 AS 号
BGP 的路由选择
- 本地偏好 (local preference) 值最高的路由 (默认值=100)
- AS 跳数最小的路由
- 使用热土豆路由选择算法
- 分组在 AS 内的转发次数最少
- 路由器 BGP ID 数值最小的路由
- 具有多个接口的路由器有多个 IP 地址
- BGP ID 就使用该路由器的 IP 地址中数值最大的一个。
本地偏好 (local preference) 值最高
AS 跳数最小
热土豆路由选择算法
热土豆拿在手里是想丢掉的
?????
路由器的构成
路由器的结构
路由器的结构
[!NOTE] “转发”和“路由选择”的区别
转发只有一个 router 参与,静态
路由涉及多个 router,动态
输入端口对线路上收到的分组的处理
- 物理层:从输入端口接收比特
- 数据链路层:剥去帧的首部和尾部
- 网络层
- 若是路由信息交换分组,送交路由选择处理机
- 若是是数据分组,按目的地址查找转发表,根据得出的结果,经交换结构到达合适的输出端口。
- 有排队机制
输出端口将交换结构传送来的分组发送到线路
- 网络层
- 从交换结构接收分组。
- 当交换结构传送的分组的速率超过输出链路的发送速率时,来不及发送的分组就必须缓存在队列中。
- 若分组处理的速率赶不上分组进入队列的速率,队列满时,丢弃后面进入的分组。
- 数据链路层
- 物理层
交换结构
交换方法有三种:通过存储器、通过总线、通过纵横交换结构
具体没看,PPT 250 页