CH22 Delivery, Fowarding and Routing
Delivery:在网络层的控制下利用底层网络对一个分组进行处理
Forwarding:将一个分组传递到下一个站点的方法
Routing:转发过程中创建路由表的方法
路由选择协议routing protocol:用于不断更新在转发和路由选择中要查找的路由表。
22.1 Delivery
delivery:网络层控制下利用底层网络对一个分组进行处理。
22.1.1 Direct Versus Indirect Delivery
(1)Direct Delivery
直接传递:目的端的主机与发送方连接在同一个物理网络上
情况:
- 源端和目的端出现在同一个物理网络上
- 传递在最后一个路由器与目的主机之间进行
出现直接传递
(2)Indirect Delivery
目的主机与发送方不在同一个网络上,分组就是间接传递。
Note:
- 一个传递永远包含一个直接传递和0或若干个间接传递
- 最后的传递总是直接传递
22.2 Forwarding
转发:将分组路由到他的目的端,转发要主机或者路由器有一个路由表。当主机有分组要发送时,或是路由器已收到一个分组要转发时,就要查找路由表以便求得到达最终目的端的路由。
22.2.1 Forwarding Techniques
(1)Next-hop versus Route Method
a. next-hop method
路由表中只保存下一跳的地址,而不完整保存路由信息。
b. route method
在路有效中保留完整的路由信息
(2)Network-Specific Method Versus Host-Specific Method
a. host specific
对连接在同一个物理网络上的所有主机都有一个项目
b. network specific
把同一个网络上的主机看做一个项目
(3)Default Method
仅可是用一个默认项目
22.2.2 Forwarding Process
假定主机和路由器使用classless addressing。在无类寻址中,路由表对涉及到的每一个地址块都有一行信息。
路由表需要根据网络地址进行查询,但是分组中只有目的地址而没有网络地址,所以我们还需要掩码mask。
在无类寻址中,一个路由表至少要有4列:
其中next-hop address指的是下一个路由器的ip地址。
Example:制作R1的路由表
(1)Longest Mask Matching
路由表中的掩码存放按照从长到短的原则排列,不按此顺序可能出现问题。
- 使用 CIDR 时,路由表中的每个项目由“掩码”、“网络地址”和“下一跳地址”组成。在查找路由表时可能会得到不止一个匹配结果。
- 应当从匹配结果中选择具有最长掩码的路由。
- 掩码越长,其地址块就越小,因而路由就越具体
(2)Address Aggregation
路由汇总
classless addressing将地址空间划分成可管理的地址块。
地址块的增多将增大路由器的寻找:
Example:
22.2.3 Routing Table
a. 路由表
路由:从某一网络设备出发去往某个目的地所经过的路径。路由器通过查询路由表为数据报选择转发路径。
路由表只存在于终端计算机、路由器及三层交换机中,二层交换机中不存在路由表。
路由表中的常用字段:
b. 三种路由
- 直连路由:设备自动发现的路由信息,路由器可自动发现与自己接口直接相连的网络的路由
- 静态路由:人工输入,无法自动更新。用于小型互联网或试验网络
- 动态路由:可周期性更新,适合大型网络
c. 动态路由优先级
静态路由的优先级高于动态路由的优先级。
路由器可以同时运行多种路由协议,RIP路由表和OSPF路由表中的路由都加进IP路由表中,如果RIP路由表和OSPF路由表都有到某一网段的路由项,就需要比较路由协议的优先级。OSPF协议的优先级高于RIP协议。
22.3 Unicast Routing Protocol
static routing table:有人工输入项目,大型网络不适用
dynamic routing table:使得路由表自动更新
需要有动态路由表,所以产生了多种路由选择协议。
22.3.1 Optimization
路由器将收到的分组转发到哪个网络?取决于最优化原则
取决于度量metric
m
e
r
i
c
取
决
于
协
议
的
类
型
{
R
I
P
:
同
等
对
待
所
有
的
网
络
,
即
通
过
每
个
网
络
的
代
价
都
是
一
样
的
,
跳
数
都
是
1
O
S
P
F
:
允
许
管
理
员
基
于
服
务
类
型
指
定
通
过
网
络
的
代
价
{
最
大
吞
吐
量
最
小
延
迟
.
.
.
.
B
G
P
:
可
由
网
络
管
理
员
设
置
的
策
略
meric取决于协议的类型\begin{cases}RIP:同等对待所有的网络,即通过每个网络的代价都是一样的,跳数都是1\\OSPF:允许管理员基于服务类型指定通过网络的代价\begin{cases}最大吞吐量\\最小延迟\\....\end{cases}\\BGP:可由网络管理员设置的策略\end{cases}
meric取决于协议的类型⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧RIP:同等对待所有的网络,即通过每个网络的代价都是一样的,跳数都是1OSPF:允许管理员基于服务类型指定通过网络的代价⎩⎪⎨⎪⎧最大吞吐量最小延迟....BGP:可由网络管理员设置的策略
22.3.2 Intra and Interdomain Routing 域内部和域间路由选择
互联网划分为自制系统autonomous system。
autonomous system :一个单一的管理机构管辖下的一组网络和路由器。
在自治系统内的路由选择称为域内路由选择interadomain routing
- 每一个autonomous system可以选择一种或者多种域内路由选择协议处理域内路由选择
- 自治系统之间,通常使用一种域间路由选择协议
{ R I P [Routing Information Protocol] : 基 于 【 距 离 向 量 D i s t a n c e v e c t o r 】 的 协 议 O S P F [Open Shortest Path First] : 基 于 【 链 路 状 态 l i n k s t a t e 】 的 协 议 B G P [Border Gate Protocol] : 基 于 【 路 径 向 量 p a t h v e c t o r 】 的 协 议 \begin{cases}RIP\text{ [Routing Information Protocol]}:基于【距离向量Distance\ vector】的协议\\ OSPF\text{ [Open Shortest Path First]}:基于【链路状态\ link\ state】的协议\\ BGP\text{ [Border Gate Protocol]}:基于【路径向量path\ vector】的协议\\\end{cases} ⎩⎪⎨⎪⎧RIP [Routing Information Protocol]:基于【距离向量Distance vector】的协议OSPF [Open Shortest Path First]:基于【链路状态 link state】的协议BGP [Border Gate Protocol]:基于【路径向量path vector】的协议
22.3.3 Distance Vector Routing
在距离向量路由选择中,任何两个节点之间路由的最低代价是最小距离的路径。
每个节点都保留一张到其他的节点的最小向量距离表。每个节点也用这张表表示路由中的下一个节点指导分组流向目的节点。
(1)Initialization
最开始时:每个节点仅知道与他直接连接的邻站的距离
我们假定一个节点能向邻站发送报文并得到与这些邻站的距离里。
初始的表如下:
(2)Sharing
距离向量路由选择的总的思想是与邻站共享路由信息
每个站点向邻站发送完整的表,让邻站决定哪个信息是有用的。
- next是没有用的,邻站收到是,需要用发送方的节点名代替
- 周期性或者有变化时共享表
(3)Updating
step1:接收节点在表的第二列加上它与发送节点之间的代价值。
step2:将发送节点名作为第3列【发送节点作为next】
step3:
- 如果下一节点的项目相同,选取新行
- 如果下一节点项目不同,选取具有代价较小的行,最小代价相同时保持旧项目
(4)When to Share
{ 周 期 性 : 通 常 30 s 触 发 更 新 , 路 由 表 有 变 化 时 { 节 点 接 收 邻 站 的 表 , 引 起 自 己 的 表 的 更 新 节 点 检 测 到 邻 站 链 路 有 故 障 \begin{cases}周期性:通常30s\\触发更新,路由表有变化时\begin{cases}节点接收邻站的表,引起自己的表的更新\\节点检测到邻站链路有故障\end{cases}\end{cases} ⎩⎪⎨⎪⎧周期性:通常30s触发更新,路由表有变化时{节点接收邻站的表,引起自己的表的更新节点检测到邻站链路有故障
(5)Two-Node Loop Instability
解决方案:
-
定义无穷大defining infinity:将一个较小的值定义为无穷大,RIP使用16
-
分割范围 split horizon:每个节点仅能通过接口发送表的一部分,B的信息是从A获得的,那么这条信息将不会通知给A
在上图中,删除最后一样发送给A,那么问题不会发生
-
分割范围与毒性逆转Poison Reverse:分割范围与毒性逆转结合起来。节点B依旧通知X的值,但是如果信息源是A,那么用无穷大的距离表示警告
(6)Three-Node Instability
两个节点可以使用分割范围加毒性逆转的方式解决,但是三个节点的稳定性无法解决。
使用定义无穷大解决。
(7)RIP
-
RIP:路由选择信息协议,在自制系统内使用域内路由选择协议
-
RIP基于的事实:
- 度量为跳数hop
- 16定义为无穷大——RIP只适用于小型网络
- next为发送方
- 路由器有路由表,网络没有
- 分类
- RIPI:有类路由选择,通知IP可知道地址类型,无需通告掩码
- RIPII:支持可变长掩码,掩码需要通知
-
RIP优点:实现简单,开销较小
-
RIP缺点:
- 网路故障时,需要经过较长时间才能将信息传送到所有的路由器
- RIP限制了网络规模,他能使用的最大的距离为15
- 路由器之间交换的路由信息是完整的路由表,因而随着网络的扩大,开销也增大
-
RIP算法:
注意收到的相邻的节点,所以默认两个节点直接的距离是1.即+1.
22.3.4 Link State Routing
链路状态路由选择与距离向量路由选择基本原理不同:每个节点有该区域的全部拓扑结构
全
部
拓
扑
结
构
{
所
有
节
点
和
链
路
的
列
表
如
何
连
接
{
类
型
代
价
条
件
全部拓扑结构\begin{cases}所有节点和链路的列表\\如何连接\begin{cases}类型\\代价\\条件\end{cases}\end{cases}
全部拓扑结构⎩⎪⎪⎪⎨⎪⎪⎪⎧所有节点和链路的列表如何连接⎩⎪⎨⎪⎧类型代价条件
基于假设:整个拓扑可以由每个节点的知识复合而成——迪杰斯特拉算法
如果网络中的任意一个点改变,就必须更新整个拓扑。
(1)Building Routing Table
step1:为每个节点建立LSP(link state packet)
- LSP携带信息:
- 节点标识
- 链路清单
- 序列号:洪泛区别新的LSP和旧的LSP
- 寿命
- LSP生成的时刻:
- 区域的拓扑发生变化时,让周围的节点知道
- 周期性:实际上不需要,且周期较长
step2:使用一种可靠的方法向其他的路由器扩散LSP,称为flodding洪泛
- 洪泛:一个节点准备好LSP后,必须向其他的节点扩散,不仅是相邻节点。
- 创建节点的LSP,并从每个接口发送LSP
- 接收到的LSP的节点与已有的副本比较。如果到达的LSP是比较旧的,那么丢弃。如果是比较新的,那么执行
- 丢弃丢的,保留新的
- 节点通过每个接口,但是除了接收到分组的接口再发送分组的副本——确保洪泛的停止
step3:为每个节点构成一个最短路径树——Dijkstra
step4:基于最短路径树计算路由表
(2)OSPF
Open Shortest Path First 开放最短路径协议:基于link state的协议
- O:”开放”表明 OSPF 协议不是受某一家厂商控制,而是公开发表的。
- SPF:“最短路径优先”是因为使用了 Dijkstra 提出的最短路径算法
- OSPF 只是一个协议的名字,并不表示其它的路由选择协议不是“最短路径优先”。
a. 区域area
OSPF在自治系统的基础上划分区域。一个area是包含在autonomous system中的一些网络,主机和路由器的集合。
自治系统可以划分为不同的区域,在一个区域中的所有网络必须是互相连接的。
- 区域内:一个区域内通过洪泛传送路由选择信息。——减少通信量
- 区域边界有区域边界路由器 area border router:将本区域的信息概括起来发送给其他的区域
自治系统中有一个特殊的area称为主干backbone,其他的区域称为从区域secondary area。
自治系统中的所有的区域必须连接到backbone上。
每个区域有一个区域标识,主干区域的标识是0.
22.3.5 Path Vector Routing
path vector:自治系统之间的路由选择。
原理与距离向量路由选择相似。
(1)speaker node
path vector routing中,假定每个AS中有一个节点的行为代表了整个自治系统,该节点称为代言节点speaker node。
一个自治系统的speaker node生成一个路由表并且通知相邻的自治系统中的代言节点。
- 通知的是他的自治系统或者其他自治系统中的路径,而不是节点的跳数
(2)initialization
初始化:每个代言节点只知道自己的自治系统内的节点的可达性。
(2)Sharing
每个代言节点与邻站的speaker node共享路由表
A1与C1和B1共享,C1与A1和D1共享…
(3)Updating
当代言节点从邻站收到一个两列的路由表时,更新自己的路由表。
更
新
内
容
{
增
加
不
在
表
中
的
节
点
A
S
与
发
送
方
之
间
的
路
径
更新内容\begin{cases}增加不在表中的节点\\AS与发送方之间的路径\end{cases}
更新内容{增加不在表中的节点AS与发送方之间的路径
Path Vector Routing优点:
- 预防回路:避免距离向量路由选择协议的不稳定性和回路问题
- 策略路由选择:路由器检查报文路径,如果路径中列出的某自治系统不符合策略,则忽略。
- 优化路径:符合组织机构标准的路径及保密、安全、可靠性等其它原则。
(4)BGP
边界网关协议 Border Gateway Protocol
自治系统的类型:
- 惨状
- 多接口
- 转送
特点:
- 节点数量是自治系统的数量级,比网络数要少很多
- BGP代言节点数目很少,交换不复杂
- 支持CIDR
(5)BGP Section
使用BGP的两个路由器之间交换的路由信息即为会话。
交换路由信息时需要先建立TCP连接,基础上建立BGP会话。
22.4 Routing algorithm
22.4.1 Dijikstra
- 表头记住
- 多少个点,多少轮
Itera | T | L(2) | Path | L(3) | Path | L(4) | Path | L(5) | Path | L(6) | Path |
---|---|---|---|---|---|---|---|---|---|---|---|
1 | {1} | 2 | 1-2 | 5 | 1-3 | 1 | 1-4 | ∞ \infty ∞ | - | ∞ \infty ∞ | - |
2 | {1,4} | 2 | 1-2 | 4 | 1-4-3 | 1 | 1-4 | 2 | 1-4-5 | ∞ \infty ∞ | - |
3 | {1,2,4} | 2 | 1-2 | 4 | 1-4-3 | 1 | 1-4 | 2 | 1-4-5 | ∞ \infty ∞ | - |
4 | {1,2,4,5} | 2 | 1-2 | 3 | 1-4-5-3 | 1 | 1-4 | 2 | 1-4-5 | 4 | 1-4-5-6 |
5 | {1,2,3,4,5} | 2 | 1-2 | 3 | 1-4-5-3 | 1 | 1-4 | 2 | 1-4-5 | 4 | 1-4-5-6 |
6 | {1,2,3,4,5,6} | 2 | 1-2 | 3 | 1-4-5-3 | 1 | 1-4 | 2 | 1-4-5 | 4 | 1-4-5-6 |
22.4.2 Bellman-Ford
- 注意初始化各项距离为无穷,路径为止
- 算法停止条件
h | L(2) | Path | L(3) | Path | L(4) | Path | L(5) | Path | L(6) | Path |
---|---|---|---|---|---|---|---|---|---|---|
0 | ∞ \infty ∞ | - | ∞ \infty ∞ | - | ∞ \infty ∞ | - | ∞ \infty ∞ | - | ∞ \infty ∞ | - |
1 | 2 | 1-2 | 5 | 1-3 | 1 | 1-4 | ∞ \infty ∞ | - | ∞ \infty ∞ | - |
2 | 2 | 1-2 | 4 | 1-4-3 | 1 | 1-4 | 2 | 1-4-5 | ∞ \infty ∞ | - |
3 | 2 | 1-2 | 3 | 1-4-5-3 | 1 | 1-4 | 2 | 1-4-5 | 4 | 1-4-5-6 |
4 | 2 | 1-2 | 3 | 1-4-5-3 | 1 | 1-4 | 2 | 1-4-5 | 4 | 1-4-5-6 |
|
| 1 | 2 | 1-2 | 5 | 1-3 | 1 | 1-4 |
∞
\infty
∞ | - |
∞
\infty
∞ | - |
| 2 | 2 | 1-2 | 4 | 1-4-3 | 1 | 1-4 | 2 | 1-4-5 |
∞
\infty
∞ | - |
| 3 | 2 | 1-2 | 3 | 1-4-5-3 | 1 | 1-4 | 2 | 1-4-5 | 4 | 1-4-5-6 |
| 4 | 2 | 1-2 | 3 | 1-4-5-3 | 1 | 1-4 | 2 | 1-4-5 | 4 | 1-4-5-6 |