第 5章 网络层
网络层主要解决的问题
路由选择
网络互连
拥塞控制
为上层提供服务
第 5章 网络层
网络层设计的相 问题
路由算法
拥塞控制
服务质量
网络互联
因特网中的网络层
网络层的设计
存储转发的数据包交换
为传输层提供的服务
面向无连接服务的实现
面向连接服务的实现
虚电路子网和数据报子网的比较
存储转发的数据包交换
数据包 Packet
存储转发 Store and Forward
路由器 Router
交换 Switching
通信子网 Communication Subnet
资源子网 Resource Subnet
网络层协议环境
A
B
C
D
E F
Router Carrier’s equipment
LAN Packet
H1 H2
Process P1
Process P1
Tnbm P344 Fig. 5-1 网络层协议环境
网络层的设计
存储转发的数据包交换
为传输层提供的服务
面向无连接服务的实现
面向连接服务的实现
虚电路子网和数据报子网的比较
为传输层提供的服务
服务应与路由器技术无
路由器的数量、类型和拓扑结构对 于传输层来说应是不可见的
传输层所能获得的网络地址应采用
统一的编址方式,并允许跨越多个
LAN和WAN
网络层提供的服务类型
面向无连接服务:网络是不可靠的,网络服务不应面向 连接,分组的排序和流控制应不属于网络层,每个分组 都单独寻径,所以必须携带完整的目的地址
如 Internet
面向连接的服务:网络应该提供可靠的、面向连接的服 务,否则服务质量将无从谈起,尤其对于多媒体应用
对于网络层提供的服务有 观点:
网络层的设计
存储转发的数据包交换
为传输层提供的服务
面向无连接服务的实现
面向连接服务的实现
虚电路子网和数据报子网的比较
面向无连接服务的实现 (数据报子网)
路由器A按左边的
路由表运行,后 来发现如到E和F
应该走B才更好,
于是更新路由表
A
B
C
D
E F
Router Carrier’s equipment
LAN Packet
H1 H2
Process P1
Process P1
1
A - B B C C D B E C F C
A - B B C C D B E B
A A B A C - D D E E F E
A C B D C C D D E - F F
A的路由表 C的路由表 E的路由表
网络层的设计
存储转发的数据包交换
为传输层提供的服务
面向无连接服务的实现
面向连接服务的实现
虚电路子网和数据报子网的比较
面向连接服务的实现 (虚电路子网)
H1和H2已建立
了1#连接
H3要和H2建立
连接只能是2#
H1 1 H3 1
入口
F 1 F 2
出口 E 1
E 2 出口 C 1
C 2 出口 A的路由表
Tnbm P348 Fig. 5-3 虚电路子网中分组的寻径
A
B
C
D
E F
Router Carrier’s equipment
LAN Packet
H1 H2
Process P1
Process P1
1 H3
Process P3
A 1 A 2
入口
C的路由表
C 1 C 2
入口
E的路由表
网络层的设计
存储转发的数据包交换
为传输层提供的服务
面向无连接服务的实现
面向连接服务的实现
虚电路子网和数据报子网的比较
虚电路子网和数据报子网的比较
数据报子网 虚电路子网 建立电路连接 不需要 需要
寻址 每个分组包含完整的源
和目的地址 每个分组包含一个很短的虚电路号 状态信息 路由器不保留连接的状
态信息
每条虚电路要求为每个连接提供路 由表空间
寻径 路由器为每个分组独立 寻径
寻径在虚电路建立时完成,此后,
所以分组按此路径传输 路由器故障的
影响
除路由器崩溃,所以分 组丢失,否则无影响
所有通过该故障路由器的虚电路全 部终止
服务质量 困难 对每条虚电路,沿途的路由器如有 足 的资源可分配,则很容易实现 拥塞控制 困难 对每条虚电路,沿途的路由器如有
足 的资源可分配,则很容易实现
虚电路子网 /数据报子网的比较 (续)
虚电路子网
通过路径选择后建立连接
分组按序传输
服务质量能得到保证
通信后撤销连接
适合于实时传输
数据报子网
每个分组分 选择最佳路径,健壮性较好
整个网络系统的信道利用率高,成本低
差错控制和排序工作由协议高层(主机)完成
适合于非实时传输
第 5章 网络层
网络层设计的相 问题
路由算法
拥塞控制
服务质量
网络互联
因特网中的网络层
路由算法
路由算法是网络层软件的一个重要部分,
它决定进入的分组应从 一根输出线传输
如果是数据报子网,将在每一个分组到达 时作此决定
如果是虚电路子网,是在虚电路建立时决 定,该连接上所有分组都将沿此线路传输
路由与转发:路由是寻径,转发是当一个
分组到达时发生的动作
路由算法 (续)
路由算法设计必须考虑的问题
正 性 简单性 健壮性 稳定性 公平性 最优性
路由算法中的度量标准
路径长度
hop数
延迟时间
路由算法 的分类
静态算法
自适应算法
拓扑相 的路由算法
移动节点的路由
Ad-hoc网络的路由
静态算法 ( static routing)
最短路径算法( Dijkstra)
扩散法( flooding)
为路由器配置一张最优的路由表
最短路由选择( Dijkstra) !
Dijkstra算法(1959):通过用边的权值作为 距离的度量来计算最短路径,有最少边数的路 径不一定是最短路径
1
6 7
4 2 3
9
11
5
3 2
8 6
3
5
如下图:
5和4之间边数最少的路径是5234但最短路径是523674
采用的数据结构
集合 S:尚未找到最短路径的节点 的集合
数组 R:R[i]为从指定源点去节点i 的路径上,节点i的前一个 节点
数组 D:D[i]为从指定源点到节点i
的最短距离
算法的初始化
初始化集合 S为除源节点外的所有节点
初始化数组 D:如果从源节点到节点v的边存 在,则 D(v)为该边的权值,否则为无穷大
初始化数组 R:如果从源节点到节点v的边存
在,则 R(v)为源节点,否则为0
算法
WHILE(集合S非空)
{ 从S中选一节点u,使D[u]最小;
如果(D[u]为无穷大)
{错误!无路径存在,退出}
把u从S中删去;
对(u,v)是边的每个节点v { 如果(v仍在S中)
C=D[u]+weight(u,v);
如果 (C<D[v]) /*v找到了一条更短的路径*/
{R[v]= u; /*替换v的最短路径及长度*/
D[v]=C;
}
}
从 5出发到各个节点的最短路径
S R1 D1 R2 D2 R3 D3 R4 D4 R6 D6 R7 D7 u
{1,2,3,4,6,7} 5 9 5 6 0 ∞ 0 ∞ 0 ∞ 0 ∞ 2
{1,3,4,6,7} 5 9 5 6 2 9 0 ∞ 2 14 0 ∞ 1
{3,4,6,7} 5 9 5 6 2 9 0 ∞ 2 14 0 ∞ 3
{4,6,7} 5 9 5 6 2 9 3 20 3 11 0 ∞ 6
{4,7} 5 9 5 6 2 9 3 20 3 11 6 16 7
{4} 5 9 5 6 2 9 7 19 3 11 6 16 4
静态算法 ( static routing)
最短路径算法( Dijkstra)
扩散法( flooding)
为路由器配置一张最优的路由表
扩散法( flooding)
不计算路径,有路就走
1
5 6 7
4 3
2
9
11
5
3 2
8 6
3
如从
5出发到4:数据包从
5→1,2;2→3,6;3→6,4;6→3,7;7→4要解决的问题:数据包重 到达某一节点,如
3,6扩散法 (续) !
解决方法
在数据包头设一计数器初值,每经过一个节 点自动 1,计数值为0 时,丢弃该数据包
在每个节点上建立登记表,则数据包再次经 过时丢弃
缺点:重 数据包多,浪费带宽
优点:可靠性高,路径最短,常用于军事
路由算法 的分类
静态算法
自适应算法
拓扑相 的路由算法
移动节点的路由
Ad-hoc网络的路由
自适应算法是动态的、分布式的算法
实现分布式算法的三要素:
The measurement process(测量)
The update protocol(更新协议)
The calculation(计算)自适应算法 ( adaptive algorithm)
自适应算法 ( adaptive algorithm)
距离矢量算法( D-V)
链路状态算法( L-S)
路由器动态建立和维护一张最优的路由表
D-V算法的工作原理
每个路由器用 个向量 D i 和 S i 来表 示该点到网上所有节点的路径距离 及其下一个节点
相邻路由器之间交换路径信息
各节点根据路径信息更新路由表
Di =
di1 di2 di3
… din
Si =
si1 si2 si3
… sin
s
i1:从节点i到节点1的一条最小时延路径上的下一个节点s
i2:从节点i到节点2的一条最小时延路径上的下一个节点其中:
n —网络中的节点数 Di—节点i的时延向量dij—节点i到j的最小时延的当前估计值 Si—节点i的后继节点向量
路由表的更新
d ij = min(d ix + d xj ) ( x ∈ A )
(从
i到j的时延取途经每个节点时的时延的最小值)S ij = x (从
i到j途经的下一个节点为x)其中: A —与i相邻的所有节点的集合 d ij —i到j 的最短距离
d ix —i到x的最短距离
d —x到j 的最短距离
A 0 24 20 21 B 12 36 31 28 C 25 18 19 36 D 40 27 8 24 E 14 7 30 22 F 23 20 19 40 G 18 31 6 31 H 17 20 0 19 I 21 0 14 22 J 9 11 7 10 K 24 22 22 0 L 29 33 9 9
J到A 延时
为 8
J到I 延时 为 10
J到H 延时 为 12
J到K 延时
为 6
8 A 20 A 28 I 20 H 17 I 30 I 18 H 12 H 10 I
0 - 6 K 15 K
节点J的 新路由表注意: AI为21;IA为24
因为:往和返的信道流量不 一定相同,节点 A和I也并非 在同一时刻测得,且线路状 态是动态变化的
所谓节点即路由器 当前节点为
J
E
I
G H F
L J K
D-V算法的缺点
交换的路径信息量大
路径信息不一致
收敛速度慢(坏消息)
不适合大型网络
无穷计算问题
好消息传播得快,坏消息传播得慢
A B C D E
∞ ∞ ∞ ∞ 初始时
1
∞ ∞ ∞ 第1次交换后1 2
∞ ∞ 第2次交换后1 2 3
∞ 第3次交换后1 2 3 4
第4次交换后
A B C D E
1 2 3 4
初始时3 2 3 4
第1次交换后 3 4 3 4
第2次交换后 5 4 5 4
第3次交换后 5 6 5 6
第4次交换后 7 6 7 6
第5次交换后 7 8 7 8
第6次交换后
… … … …
∞ ∞ ∞ ∞
A下网了
Tnbm P359 Fig. 5-10 无穷计算问题
克服收敛速度慢的方法
水平分裂
同距离矢量法,只是到
X的距离并不是真正的距离,对下方点通知真正的距离,对上方点,给出无穷大
如上图中的
C点,它向D通知到A的是真正距离,而向 B通知到A的距离是无穷大
Holddown
当发现不通时,不重新选路径,而是把它设成无穷大
这些方法尚在研究之中
自适应算法 ( adaptive algorithm)
距离矢量算法( D-V)
链路状态算法( L-S)
路由器动态建立和维护一张最优的路由表
链路状态算法( L-S )
( Link State Routing)
基本思想:
发现它的邻接节点,并得到其网络地址
测量它到各邻接节点的延迟或 销
组装一个分组以告知它刚知道的所有信息
将这个分组发给所有其他路由器
计算到每个其他路由器的最短路径
发现邻接节点 !
当一个路由器启动后,向每个点到点线
路发送 HELLO分组(携带自己的网络地
址),另一端的路由器发送回来一个应
答来说明它是谁,即通报其网络地址
链路状态算法( L-S )
( Link State Routing)
基本思想:
发现它的邻接节点,并得到其网络地址
测量它到各邻接节点的延迟或 销
组装一个分组以告知它刚知道的所有信息
将这个分组发给所有其他路由器
计算到每个其他路由器的最短路径
测量线路 销 !
发送一个 ECHO分组要求对方立即响应,
通过测量一个来回时间再除以 2,发送
方就可以得到一个延迟估计值,想要更
精 些,可以重 这一过程,取其平均
值
链路状态算法( L-S )
( Link State Routing)
基本思想:
发现它的邻接节点,并得到其网络地址
测量它到各邻接节点的延迟或 销
组装一个分组以告知它刚知道的所有信息
将这个分组发给所有其他路由器
计算到每个其他路由器的最短路径
构造分组!
子网及其节点到其邻节点(路由器)的线 路 销测量值(即延时,假设以 ms计)
A B C D E F 序号 序号 序号 序号 序号 序号 年龄 年龄 年龄 年龄 年龄 年龄 B 4 A 4 B 2 C 3 A 5 B 6 E 5 C 2 D 3 F 7 C 1 D 7 F 6 E 1 F 8 E 8 A
E
3 2
4
F
D C
B
5 1 6 8
7
子网的链路、状态及分组情况:
节点 A仅与节点B和E相邻 A → B的时延为4ms
Tnbm P363 Fig. 5-13 L-S算法的路由表更新
链路状态算法( L-S )
( Link State Routing)
基本思想:
发现它的邻接节点,并得到其网络地址
测量它到各邻接节点的延迟或 销
组装一个分组以告知它刚知道的所有信息
将这个分组发给所有其他路由器
计算到每个其他路由器的最短路径
发布链路状态分组 !
用扩散法(向邻接的节点)发布链路状态分组
(以 B为例,B的邻接点有A、C、F)
源 序号 年龄 A C F A C F 数据 A 21 60 0 1 1 1 0 0
F 21 60 1 1 0 0 0 1 E 21 59 0 1 0 1 0 1 C 20 60 1 0 1 0 1 0 D 21 59 1 0 0 0 1 1
源节点
E的链路状态分组经A和F到节点B,节点B必须再将
E的状态分组转送到C,并向A和F发ACK发送标志 ACK标志
存在的问题 !
状态分组的重 到达
如果序号循环使用,就会发生重
如果一个路由器被重起,序号将从 0 始重新 计数,但这些分组会被当成过时分组
如果序号发生错误(如序号用 32位表示,4被
看成 65540, 第 16位的0被误传成了1 ),则很多分
组将被看成过时分组(此时 5~65539均为过时
分组,因为当前的分组序号是 65540)
解决办法
使用一个 32位序号,即使每秒钟发送一 个分组, 137年才会循环一次
在每个分组中加一年龄字段(如初值为
60),每秒钟将年龄 1,为0后该分组
将被丢弃 ,否则不会被认为是过时分组
链路状态算法( L-S )
( Link State Routing)
基本思想:
发现它的邻接节点,并得到其网络地址
测量它到各邻接节点的延迟或 销
组装一个分组以告知它刚知道的所有信息
将这个分组发给所有其他路由器
计算到每个其他路由器的最短路径
计算新路由 !
用 Dijkstra算法计算到每个节点的路由
得到该节点到每个节点的最短路径
L-S路由算法的优缺点
LSR的优点
路由信息的一致性好,坏消息也一样传播得快
状态分组的长度较短,仅包含到邻接点的距离、序号 和年龄等,与网络规模 系不大,传输所耗用的网络 带宽不大,此外,状态分组的扩散,由于年龄参数的 设定,不会无限制扩散,所以可适用于大型网络
LSR的缺点
每个路由器需要有较大的存储空间,用以存储所收到 的每一个节点的链路状态分组
计算工作量大,每次都必须计算最短路径
路由算法 的分类
静态算法
自适应算法
拓扑相 的路由算法
移动节点的路由
Ad-hoc网络的路由
拓扑相 的路由算法
分层路由
广播路由
多址传输路由选择
Peer-to-Peer网的节点查找
分层路由
随着网络规模的增长,存储和处理路由表所需 的资源也急剧增长,从拓扑上分层是解决问题 的一个方法
分层的概念:将路由器分成组,每一路由器知
道到组内任何一台路由器的路由,以及到其他
组的路由,因此可把其他组中所有的路由器抽
象成一个,以 少路由表的长度
分层实例
不分层时1A的路由表
目的地 下一跳 跳数
1A -- --
1B 1B 1
1C 1C 1
2A 1B 2
2B 1B 3
2C 1B 3
2D 1B 4
3A 1C 3
3B 1C 2
4A 1C 3
4B 1C 4
4C 1C 4
5A 1C 4
5B 1C 5
5C 1B 5
分层时1A的路由表
目的地 下一跳 跳数
1A -- --
1B 1B 1
1C 1C 1
2 1B 2
3 1C 2
4 1C 3
5 1C 4
Tnbm P367 Fig. 5-15 分层路由
5D 5A
5B
5C 4A 5E
4B 4C 3A
3B 1A
1B 1C
2A 2B 2C 2D
区域1
区域5 区域3
区域2
区域4
分层的层数
Kamoun和Kleinrock发现:N个
路由器的最优层次数是 lnN,每个
路由器需要 elnN个路由表项
拓扑相 的路由算法
分层路由
广播路由
多址传输路由选择
Peer-to-Peer网的节点查找
广播路由
逐个向所有节点分 发送报文
缺点:发送量大
需知道网上所有节点的地址
扩散法
缺点:流量大,消耗大量带宽
某些节点还可能收到重 的报文
广播路由算法
多目的地路由
生成树算法
逆向路径传送
多目的地路由
分组中包含需到达的多个目的地的地址表
到一个节点时,路由器检查所有的目的地址表,
定输出线路集合,路由器为每一条输出线路 制一个新的分组,每个分组中仅含有要用此 线路的目的地址表
优点:流量小,节约带宽
缺点:费用承担不公平
广播路由算法
多目的地路由
生成树算法
逆向路径传送
生成树算法
路由器将分组沿生成树发送 (除进入线路之外)
优点:带宽得到最佳利用
缺点:每个路由器必须知道其可用生成树
如链路状态路由算法可得到生成树,距离矢量路由
算法却不能得到
广播路由算法
多目的地路由
生成树算法
逆向路径传送
逆向路径传送
基本原理:当某一广播分组到达路由器时,路由器对 它进行检查,如该分组来自通常向广播源发送分组的 线路,则将该分组转发到除进线以外的其它线路,否 则丢弃
(a) 一个子网 A
B C
D E
H
F G
I
J K
L
M N O
A
B C
D E
H
F G
I
J
K L
M N O (b) 一 汇集树
Tnbm P369 Fig.
逆向路径传送说明
在 (a)的子网中,每个节点都已生成了一张 路由表,假设当前每个节点的路由表中到 节点 I去的路径中的下一跳分 为:
当前节点 A B C D E F G H J K L M N O
到 I去的下一节点 F C D F A I J I I M K N I J
逆向路径传送说明 (续 1)
根据上述逆向路径转发的原则,可构造如下一 树
(c) 由逆向路径转发构造的树
M
H
K
J I
H
G F
D E C B
A O
N
O
E G K
L L
D N
Tnbm P369 Fig. 5-16 逆向路径传送 B
H M
H
K
J I
H
G F
D E C B
A O
N
O
E G K
L L
D N
Tnbm P369 Fig. 5-16 逆向路径传送 B
H
逆向路径传送说明 (续 2)
如节点
F收到一个从I来的分组,则立即向节点A和节点
D转发 当节点
D收到一个经F来的节点I的分组,它意识到如它有分组要送给
I的话,是走节点F的,所以立即向节点
C和G转发 当节点
G收到一个经D来的节点I的分组,它意识到如它有分组要送给
I的话,是走节点J而不是走节点D的,所以它不再转发
所以:经过 5个站点共24个分组的转发后,广播算法结束
优点:算法合理,容易实现
拓扑相 的路由算法
分层路由
广播路由
多址传输路由选择
Peer-to-Peer网的节点查找
多址传输路由选择
(Multicast Routing)
多址传输路由选择 使用IP的D类地址
生成树法
核心树 (core-based tree)
0 前缀 后缀
8 16 31
1 1 1 1 保留将来使用
1 1 1 0 多址传送地址
1 1 0 前缀 后缀
1 0 前缀 后缀
A类 B类 C类 D类 E类
大规模网络 中规模网络 小规模网络
Tnbm P437 Fig. 5-55 IP地址格式
生成树法
组中的每个成员都必须以自己作为出发点建立 一 生成树,根据自己所在小组对生成树进行 修剪,得到一 本小组修剪过的生成树,并告 诉同组的其他成员
多址传输时仅沿相应的生成树转发
缺点:存储量大
如一个网络有
n个组,每个组平均有m个成员,则要存储
m*n 生成树多址传输路由选择
(Multicast Routing)
多址传输路由选择 使用IP的D类地址
生成树法
核心树 (core-based tree)
0 前缀 后缀
8 16 31
1 0 前缀 后缀
1 1 1 1 保留将来使用
1 1 1 0 多址传送地址
1 1 0 前缀 后缀
A类 B类 C类 D类 E类
大规模网络 中规模网络 小规模网络
Tnbm P437 Fig. 5-55 IP地址格式
核心树 (core-based tree)
每个组只有一 生成树,它的树根靠近
组的中心部位,要发送一个分组给这个
组成员,则发给树根,由树根将该分组
沿核心树发往各成员,这样,每组只有
一 核心树,节约了存储空间
拓扑相 的路由算法
分层路由
广播路由
多址传输路由选择
Peer-to-Peer网的节点查找
Peer-to-Peer网中节点的查找
对等网:一组织中大量用户通过固定线路 接入Internet,共享资源
对等网的特点:
全分布:所有节点都是对称的,没有控制中 心或分层的概念
每个节点都有一些其他用户感 趣的信息
对等网的路由:没有一个中心数据库,如
何发现要寻找的信息
Chord算法
假设:
系统中有
n个用户 每个用户都有可提供的信息资源,并且都已作了 索引供其他用户使用
每个用户都有一个
IP地址,并可被散列成m位的一个数字,称为节点标识符(
Chord用SHA-1算法来散列),节点标识符为
0 ~ 2m-1 所有
2m个标识符按递增次序链接成一个环,而不 管节点是否存在
定义函数
successor(k):找出节点k后面的第一Chord算法 (续)
信息资源名称
(name)同样被散列为一个m位的数字,称为键值
key(key=hash(name)) 信息索引的存储:信息的索引在所有节点上是随 机分布的,当一个节点要提供信息
name时,它首先构造一个二元组(
name, IP地址),然后调用 successor(hash(name))去存储该二元组,不同节点上的同名信息,其索引将被存在同一节点
信息的查找:当某个用户需要查找名称为
name的信息时,向
successor(key)发一个请求,要求返回拥有信息
name的节点的IP地址Chord算法优化
每个节点保存其直接前趋和直接后继,那 么请求可以顺时针传递,也可以逆时针传 递,可以在 者之间选择一条较短的路径
每个节点保存一张表,称为 finger table,
该表有 m个表项,编号从0到m-1
Chord算法优化 (续 1)
finger table表的内容
每个表项指向一个实际存在的节点,每个 表项有 个字段:
start 和 successor(start)的 IP地址,节点k中第i个表项的值为:
Start [ i ] = [ k + 2 i ] mod ( 2 m )
[i=0…m-1]Successor (start [ i ] ) 的IP地址
Chord算法优化 (续 2)
在节点 k上查找键值key的过程:
如果
k < key < successor (k)之间,那么包含key信息的节点是
successor (k) ,查找结束 否则,查找
finger表,找出小于key但最接近key的
start值,并直接发一请求给successor(start)的
IP地址,请求它继续查找Chord算法实例
2 4 3 4 5 7 9 12 17 20
节点
1
0 1
7
12 20
27
4
10 9 8 6 5 2 3
11
16 15 14 13 19 18 17
21 22 23 24
26 25
29 30 28
31
i=4
4 4
2 0,1
2,3
2,3
0,1
0,1 3
当前在线的节点
i = 0 1 2 3 4
5 7 6 7 8 12 12 12 20 20
节点
4
8 12 9 12 11 12 15 15 23 27
节点
7
13 15 14 15 16 20 20 20 28 1
节点
12
16 20 17 20 19 20 23 27 31 1
节点
15
i = 0 1 2 3 4
21 27 22 27 24 27 28 1
4 4
节点
20
28 1 29 1 31 1 3 4 11 12
节点
27
Chord算法实例
2 4 3 4 5 7 9 12 17 20
节点
1
i = 0 1 2 3 4
5 7 6 7 8 12 12 12 20 20
节点4
8 12 9 12 11 12 15 15 23 27
节点
7
13 15 14 15 16 20 20 20 28 1
节点
12
16 20 17 20 19 20 23 27 31 1
节点15
21 27 22 27 24 27 28 1
4 4
节点
20
28 1 29 1 31 1 3 4 11 12
节点27 例
1:在节点1上查找key=3(key=hash(name)=3)
对于节点1,successor(1)=4, key在(1,4)中,返回4,即资源名为name的索
引在节点4上例
2:在节点1上查找key=14
由于key不在(1,4)中,于是查节点1的finger table,小于14并最接近14的节
点是9,successor(9)=12;于是到节点12查找,successor(12)=15,key
在(12,15)中,于是返回15
例
3:在节点1上查找key=16
key不在(1,4)中,于是查节点1的finger table,小于16并最接近16的节点是
9, successor(9)=12,于是到节点12查找,successor(12)=15,key不在
(12,15)中,于是查节点12的finger table,小于16并最接近16的节点是14,
节点的动态添加和删除
初始化:假设 始时节点很少,因此通过节点之间直 接交换信息建立初始的环和
finger表 添加节点
r:
向任一节点询问successor(r)的地址s
向s询问它的直接前趋p
向s和p申请加入环
节点s将p+1到r的信息转储到r上,添加即告结束
其他finger
表中的问题由定时执行一个后台进程完成 删除节点
r
将r的信息转储到后继s通知前趋p,它的后继变为s
节点的动态添加举例
2 4 3 4 5 7 9 12 17 20
节点
1
0 1
7
20 12 27
4
10 9 8 6 5 2 3
11
16 15 14 13 19 18 17
21 22 23 24
26 25
29 30 28
31
i=4
4 4
2 0,1
2,3
2,3
0,1
0,1 3
当前在线的节点
i = 0 1 2 3 4
5 7 6 7 8 12 12 12 20 20
节点
4
8 12 9 12 11 12 15 15 23 24
节点
7
13 15 14 15 16 20 20 20 28 1
节点
12
16 20 17 20 19 20 23 24 31 1
节点
15
i = 0 1 2 3 4
21 24 22 24 24 24 28 1
4 4
节点
20
25 27 26 27 28 1
0 1 8 12
节点
24
28 1 29 1 31 1 3 4 11 12
节点
27
路由算法 的分类
静态算法
自适应算法
拓扑相 的路由算法
移动节点的路由
Ad-hoc网络的路由
移动IP(rfc2002)
移动
IP技术,是移动用户在跨网络随意移动和漫游中,不用修改计算机配置的
IP地址,享有原网络中一切权限。 支持主机移动或漫游的协议是
Mobile IP协议
Mobile IP协议中定义了三 功能实体:
移动节点:一个移动的计算机,它改变位置时无需更改其 IP设 置,仍然可以通过其固定的 IP地址进行通信。
主代理:一个移动节点本地网络的主机或路由器,它保存有移 动节点的位置信息,当移动节点离 主网络时能 将发往移动 节点的数据包传给移动节点。
客代理:移动节点当前所在的外地网络上的一个主机,它能
移动 IP的工作机制
代理周期性地发送广播,宣告他们与链路之间 的 系
移动节点收到这些广播后,判断自己是在本地 网还是在其他网。
如在其他网
移动节点向客代理注册,递交自己的
IP地址,MAC地址和一些安全信息
客代理与主代理联系,报告自己的网络地址
主代理告诉客代理接收此消息
数据包的转发
首先,该包会路由到主网络
主代理查找到了移动主机的新住址,以及客代 理的地址。
把此包再封装在一个
IP包中,发给客代理 告诉发送者将包直接发给客代理
客代理解封装数据包,把此数据包用数据链路 层协议传给移动主机
当有一个包发给移动主机时
安全问题
采用优化路由的主要障碍是安全问题。
当通信对端直接通过隧道与移动节点通信时,对端必 须知道移动节点当前的优化地址,这个问题与移动
I P注册相似。移动
I P注册的目的就是通知家乡代理移动节点当前的转交地址。一个
“坏家 ”只需送一个伪造的注册给通信对端就可以中断移动节点和对端的通信,
这对移动
I P中任何试图优化路由的努力来说都是一个挑战。
移动 IPv6
无客代理
同时支持隧道和源路由技术
主要内容
移动主机在外地网上获取一个转交地址
将转交地址通知主代理和他的通信 伴
知道转交地址的 伴和直接发送信息
不知道转交地址的 伴可发送给主代理,
由主代理在发送到转交地址
Ethernet 因特网 CN
8000::1234:4567:89AB:CDEF
MN
8000::123:0:2100:0D4D
MN
8000::123:0:2100:0D4D(HAddr)
隧道
1
2
3
外地子网1 8000::80:x:x:x
外地子网2 8000::688:x:x:x HA
8000::123:0:0:1 8000::123:x:x:x
MN:移动主机(Mobile Node)
HA:原地代理(Home Agent)
CN:通信主机(Correspondent Node)
HAddr:原地地址(Home Address)
CCOA:联合定位关照地址(Co-located Care-of-Addre
ss
)路由算法 的分类
静态算法
自适应算法
拓扑相 的路由算法
移动节点的路由
Ad-hoc网络的路由
Ad-Hoc模式!
早期的
Ad-Hoc模式用于多个移动主机(无线站点)
之间的直接通信,毋需接 到有线网络,每个站点必 须
“看”到其它所有站点 现在的
Ad-Hoc,移动主机并不要求相互都能
“看”到,但,源主机到目
的主机之间至少存在一条
通路,途中的站点(移动
主机)同时也将兼作路由
器用,也可以与有线网络
Ad-Hoc的路由!
主动路由
(表驱动):每个节点都周期性广播路由信息,主动地发现并维护路由表
DSDV(Destination Sequenced Distance Vector) 按需路由
(事件驱动):只有在需要发送数据时,源站点才寻找路由
AODV (Ad Hoc On-demand Distance Vector)
DSR(Dynamic Source Routing)主动路由 DSDV
DSDV(Destination Sequenced Distance Vector)是一 采用距 离矢量算法的路由协议
网络中每个节点都维护一张路由表,路由表包含所有可能的目的节 点、距离信息以及下一跳等
每个节点都周期地广播其全部的路由信息(对于拓扑变化相对较慢 的网络只需广播其更新的路由信息),每个节点都依据所收到的信 息来维护它们的路由表
DSDV算法依赖于每个节点路由信息周期性的广播,在Ad-Hoc网络
中,由于其网络拓扑是动态变化的,维护一张路由表意味着耗用大
量的带宽和 CPU资源
Ad-Hoc的路由!
主动路由
(表驱动):每个节点都周期性广播路由信息,主动地发现并维护路由表
DSDV(Destination Sequenced Distance Vector) 按需路由
(事件驱动):只有在需要发送数据时,源站点才寻找路由
AODV (Ad Hoc On-demand Distance Vector)
DSR(Dynamic Source Routing)按需路由 AODV说明
AODV (Ad Hoc On-demand Distance Vector)
AODV是DSDV算法的改进,与DSDV的区 在于只是在需要时
( on-demand)才寻找路由,而不必如DSDV一样需随时维护 一张包含全部节点的路由表
当源节点想发送信息给某个目的节点时,如当前没有路径,则启 动 Path Discovery过程,广播一个Route Request
(RREQ) 路 径请求分组给相邻节点,收到此请求分组的邻节点再转发给它的 相邻节点并建立到源节点的反向路径,直到一个知道目的节点路 由信息的中间节点或目的节点本身 ,然后回 Route Reply
(
RREP) 路径应答包给源节点
AODV假设每一条链路都是双向对称的(Symmetric)
按需路由 AODV算法!
AODV的请求分组和应答分组
AODV的Path Discovery过程
AODV的路径维护
AODV中的请求分组和应答分组
AODV中的请求分组
AODV中的应答分组
Source Add
Request ID
Destination Add
Source Seq. #
Destination
Seq. # Hop Count
Source Add
Destination Add
Destination
Seq. # Hop Count LifeTime
Tnbm P378 Fig. 5-22 Route Reply分组的格式 Tnbm P377 Fig. 5-21 Route Request分组的格式
按需路由 AODV算法!
AODV的请求分组和应答分组
AODV的Path Discovery过程
AODV的路径维护
AODV算法举例—环境
A的广播范围
F
E G
H I
D
C
A B
图中每个节点都是一台具 有路由功能的移动主机 图为A~I九个节点当前的位 置及其相互的连接状态
节点A的广播范围覆盖了节 点
B和节点D,所以A和B
以及A和D之间有连接,其
它节点间的连接 系如图,并假设连接是双向的
当 前 A 准 备 向 I 发 送 分 组,
并且当前没有到达I的表项
于是A发送一个RREQ广播 分组,分组中包含源和目 的地址(
A和I的IP地址)
路径发现过程 —Route Request1
当B和D接收到A的RREQ 广播分组,于是查各自的 路由表,首先判断是否重
,然后查找是否有较新 的到达目的端的路径信息
如果有,则向源节点回送 一个
RREP分组
如果没有,则继续广播该
RREQ分组,并建立一逆
向路由的表项,以备返回 的RREP分组途经本节点
时使用,同时启动一个定 时器(届时如果不是逆向 路径的途经节点,则丢弃)F
E G
H I
D
C A B
可能的 逆向路径