后页 退出前页路由信息协议 RIP
RIP是一种距离向量路由协议,距离度量采用一种非常简单的测量到目的地的距离的方式:
站点计数度量
– 每个 RIP路由器都保存了一张路由表,每一项对应着一个目的地,
目的地的 IP地址
到目的地的路径的距离的度量( metric)
到目的地的路径的下一个路由器的 IP地址(如果目的地是直接连接的,不需要这个字段)
路由改变标志(指示这条路由信息是否最近被改变过)
计时器。
后页 退出前页
RIP
RIP路由器每隔 30秒广播一个路由消息给邻居路由器
如果从邻居收到路由信息,发现通过邻居到某个目的地的路由更好,则更新相应的路由表项:
以前没有到该目的地的路由,新增,
到目的地 Z的路由经过 Y转发,距离为 C(x,y)+D(y,z)
以前有到目的地的路由,并且下一跳段也正好是该邻居,则更新路径花费
比较是否新的路径要更短,如果是,则更新表项
– C(x,y) + D(y,z) < D(x,z)
X Y Z
后页 退出前页
RIP对每条路由有一个计时器,当收到新的有关这条路由的消息时,该计时器被重置,如果计时器超时(超过 180秒),
该路由宣告为非法,即目的地不可达后页 退出前页
RIP:无穷计数问题
无穷计数问题:
– 好消息的传播迅速,但是坏消息的传播缓慢
好消息意味着一条更好的路径,很快被相邻路由器知道,并且更新相应路由表,再通知给其它路由器。
– 坏消息则不然:
一个例子,A/B是两个相邻路由器,数字为到
Internet的路径花费后页 退出前页
RIP:无穷计数问题(续)
无穷计数问题(续):
– B到 Internet的链路断开,A发送给 B的更新消息中有一条到 Internet的距离为 2的路由
– B更新到 Internet的路由为经 A、距离 3
– A收到 B的更新消息,更新路径为 4
– B收到 A的更新消息,更新路径为 5
– ……,直到距离达到 Infinity
后页 退出前页
RIP:抑制规则
抑制( hold-down)规则
– 一旦路由器了解到某个网络不可达(距离为无穷大),在一段时间(抑制期)内忽略所有有关那个网络的路由信息。抑制期必须足够大,以使得网络的不可达状态能够在这期间传播所有其他的路由器,一般被设为 60秒。
后页 退出前页
RIP:水平分割
水平分割,Split-Horizon
– 不要把从某个接口了解到的路由信息再通过该接口传递给其他路由器。
– 即如果 A到某个目的地 D的路由要经过邻居 B,
则 A向 B发送的更新消息不会包含到 D的路由
毒性反转水平分割,Poison reverse
– 如果到某个目的地不可达,则发送更新:到目的地的距离为无穷大。
后页 退出前页
RIP:触发更新
触发更新:
– 水平分割解决了两个节点间的路由回路,但是考虑三个或者更多节点间的路由回路:
C-D链路断开
A认为经 B可以到达 D
C收到该消息,认为经 A可到 D
C告诉 B经 A可到 D
– 当路由器了解到到某个目的地的路由有变化时,马上发送更新消息,从而加快收敛过程
RIP规定在传输触发更新消息时,必须延迟一段随机的时间再发送,这可以防止触发更新消息产生过多的网络负载
A
B
C D
后页 退出前页
RIP,RIP消息
RIP消息通过 UDP服务(端口 520)发送后页 退出前页命令 版本 必须为 0
网络 1的地址家族 必须为 0
网络 1的 IP地址必须为 0
必须为 0
到网络 1的距离网络 2的地址家族 必须为 0
网络 2的 IP地址必须为 0
必须为 0
到网络 2的距离
…
RIP消息格式
0 8 16 31
后页 退出前页
RIP的特点
距离向量路由算法,具有无穷计数问题
RIP选择 16作为无穷大,不能用在网络直径大于 15的网络中,同时 RIP使用的距离度量非常简单,不能采取一种动态的方法(比如根据网络延迟或负载)来选择路由
RIP的优点是简单,无需配置,一般用在网络规模不是很大的场合。
后页 退出前页自治系统
自治系统,autonomous system
– 由一个独立的管理实体控制的一组网络和路由器一般被称为一个自治系统
– 一般一个互连网是由许多个自治系统组成的,
自治系统内部可以选择任何路由协议,来进行自治系统内部的路由。
– 为了使自治系统中的网络能够被互连网中别的自治系统访问到,它必须把自治系统内网络的可达性信息传递给其他自治系统。
后页 退出前页自治系统
自治系统:
– 每个自治系统都被分配了一个自治系统编号,
该自治系统编号由一个中央权威机构进行分配,它唯一地标识了对应的自治系统。
– 外部邻居:两个属于不同自治系统并且交换路由信息的路由器,外部网关协议 EGP
– 内部邻居:属于同一自治系统并交换路由信息的两个路由器。内部网关协议 IGP
后页 退出前页自治系统自治系统 1 自治系统 2
外部网关协议内部网关协议
R1 R2
后页 退出前页开放最短路径优先协议 OSPF
OSPF是一种链路状态路由协议
动态的路由算法,能够自动而且快速地适应拓扑结构的变化
OSPF支持负载平衡功能,当同时有几条到目的地的最短路径时,可以将负载分流到这些路由之上。
允许网络管理人员配置路径花费的度量
支持区域的概念,可以用于大规模网络
支持认证服务,只有被授权的路由器才能进行自治系统的路由处理
允许路由器交换通过别的方法(比如通过边界网关协议 BGP了解到的到其他自治系统的路由)了解到的路由信息后页 退出前页
OSPF:链路拓扑
支持各种网络
– 点到点链路
– 广播网络
– NBMA( Nonbroadcast Multiti Access)
– 点到多点
R
1
R
2
R
1
R
2
( a) 点到点链路
R
LAN R N
( b) 中断网络
R
3
LAN
R
4
R
5
R
6
N
R
3 R4
R
5 R6
( c) 广播网络或 NBMA网络
( d) 点到多点非广播网络
R
3
点到多点网络
R
4
R
5
R
6
R
3
R
4
R
5
R
6
后页 退出前页
OSPF,区域
每个区域内部都运行一个基本链路状态路由算法,即每个区域内部有它自己的链路状态库和相应的有向图,
同时运行区域内的所有路由器的链路状态库是一致的。
区域边界路由器:一个同时连接多个区域的路由器,
该路由运行多个链路状态路由算法(每个链路状态路由算法的拷贝一一对应着一个区域)
– 一个区域内的拓扑结构和细节对于自治系统的其他部分是不可见的
– 区域内的路由器也不知道区域外的拓扑的具体细节
每个自治系统都有一个主干区域,称为区域 0。所有区域都与主干区域连接
后页 退出前页
OSPF,区域
自治系统内的路由选择:
– 区域内路由:
源端和目的端都在同一个区域内,只需要根据区域内部的路由信息来选择
– 区域间路由:
两个区域内的通信,限制必须通过区域 0(主干区域),
以保证 OSPF网络的规模
包括三个部分:从源端到某个区域边界路由器的区域内路径,源端和目的端所在区域之间的主干区域内路径,最后是从一条到目的端的区域内路径后页 退出前页
OSPF:各种路由器
两层层次结构:本地区域和主干区域 (0)
– LSA只在一个区域中扩散,每个节点了解区域内的详细拓扑情况;但只知道到其它区域的路径
– 区域边界路由器 ABR:汇集到本区域内部的网络的距离,通告给其它 ABR
– 主干路由器 BR:一个接口属于主干区域
– 自治系统边界路由 ASBR:和其它自治系统交换路由信息
– 内部路由器 IR:所有节点在同一个区域(不等于 0)
后页 退出前页主干主干路由器内部路由器 自治系统边界路由器
AS2AS1
区域边界路由器用 EGP连接各 AS
区域后页 退出前页
OSPF:邻接关系
邻接关系( adjacency)
– 什么是邻接关系?
点到点链路的两个路由器之间
LAN中选取一个 选取路由器 DR作为代表,它被认为与所有邻居路由器邻接
– DR与 LAN中的其它路由器之间存在邻接关系
– LAN中的其它路由器之间不存在邻接关系
通过 Hello协议发现邻接关系
– 邻接的路由器间的数据库保持同步
路由器给邻接路由器发送数据库描述分组
路由器然后比较数据库,请求没有的 LSP( 链路状态请求消息 )
后页 退出前页
OSPF:消息
路由器通过扩散把自己的链路状态信息告诉它所在区域的其他路由器。每个路由器都建立一个它所在区域的有向图,并计算出最短路径。
主干区域中的路由器还从区域边界路由器获取信息,计算出从主干到每个非主干区域的最短路径,再分发给区域边界路由器,由该路由器在它的区域中广播该消息。
后页 退出前页消息类型 描述
Hello 用于发现谁是邻居
Link state update 为邻居提供发送者的链路状态更新
Link state ack 确认链路状态更新
Database description 通知发送者有哪些更新
Link state request 向对方请求信息后页 退出前页边界网关协议 4( BGP-4)
BGP消息是通过一条 BGP路由器之间的
TCP连接来发送的
– 包括 Open,Update,Keepalive,Notification
消息
– 每个消息都有一个固定长度的头部,其中标记字段总共有 16个字节,它主要用于 BGP使用的认证机制,使得接收者可以确认发送者的身份后页 退出前页消息 定义
Open 建立和另一个路由器的邻居关系
Update 传输一个单一路由的消息和 /或列出取消的多条路由
Keepalive 确认 Open消息,定期维持邻居关系
Notification 检测到错误时发送后页 退出前页
BGP-4:协议过程
邻居获取过程
– 和相邻路由器建立一条 TCP连接,接着通过这条 BGP连接发送一个 Open消息,对方以 Keepalive消息回应
邻居可达性过程
– 建立 BGP连接的两个路由器定期互相发送 Keepalive消息
网络可达性
– 每个路由器维护一个它能到达的子网的数据库以及到达那个子网的最佳路由
– 数据库发生变化时,路由器产生一个 Update消息,并传播给所有实现 BGP的其他路由器后页 退出前页
BGP-4
BGP-4是一种 Path-Vector协议:
– 和距离向量协议类似
– 每个边界路由器向邻居广播到目的地的完整路径
( AS列表):
路由器 X发送的到目的地 Z的路径,Path(X,Z)= X,Y1,Y2,Y3,…,Z
– 路由选择可能采取策略路由
路由器 W可能并不一定采取路由器 X通告的路由
– 基于路径花费
– 基于策略控制:
– 为了防止回路出现
X可以控制到来的负载:如果不想转发到 Z的负载,则不通告到 Z的路由后页 退出前页
BGP-4:消息交换
R5通知列在 NLRI中的所有子网可以通过 R1到达,而且其中经过的自治系统只有自治系统 1。
– Update消息包括 AS_Path(等于自治系统 1的标识),Next_Hop(等于 R1的 IP地址),NLRI(等于自治系统 1中所有子网的列表)
BGP路由信息交换子网 1.3
子网 1.2
子网 1.1
子网 2.1
子网 2.2
子网 2.3
R1
R2
R3
R5
R4
R6
内部网关协议外部网关协议自治系统 1 自治系统 2
后页 退出前页
BGP-4:消息交换(续)
R5通过一个新的 Update消息把刚从 R1收到的信息转发给 R9
– 包括 AS_Path(自治系统 2和自治系统 1的标识)、
Next_Hop( R5的 IP地址),NLRI(自治系统 1中所有子网的列表)
一个路由器收到一 Update消息,如果该路由器所在的自治系统标识被包括在该 Update消息的
AS_Path字段中,则这个路由器不会把 Update
信息转发给其它路由器,从而防止消息的循环后页 退出前页
BGP-4
为什么采用 Intra-AS和 Inter-AS路由
– 策略:
Inter-AS:控制怎样路由负载
Intra-AS:单一管理者,无需策略控制
– 可伸缩性:层次路由减少路由表大小,降低负载
– 性能:
Intra-AS:考虑性能的优化
Inter-AS:策略占主导地位后页 退出前页传输控制协议 TCP概述
TCP的主要作用是在不可靠的网络服务上提供面向连接的端到端的可靠字节流。
– 面向连接的运输协议
套接字标识包括了两个部分,主机的 IP地址和一个 16比特的端口号。
一条 TCP连接由发送方套接字和接收方套接字来唯一标识,
即 TCP连接可用四元组 <源 IP地址、源端口号、目的 IP地址、
目的端口号 >来唯一标识。
– 全双工的数据传输服务
确认可以在反方向的数据流中捎带
不支持广播和组播后页 退出前页
TCP概述(续)
TCP:
– 面向字节流:用户数据没有边界
– TCP的 PUSH功能,TCP消息的头部中有一个
PUSH标志,用户可以设置这个 PUSH标志,
TCP实体检测到这个标志后马上发送数据。
– 紧急数据功能:设置 URGENT标志,TCP实体接收到带有 URGENT标志的数据后,马上以最高优先级发送这些数据后页 退出前页
TCP段格式
TCP段由一 20字节的头部、可选部分、和用户数据组成
– TCP数据段携带的用户数据的大小限制称为最大分段大小 MSS
源端口号 目的端口号序号确认号窗口大小校验和 紧急指针选项 (0 个或多个 32 位字 )
数据 ( 可选 )
U
R
G
A
C
K
P
S
H
R
S
T
S
Y
N
F
I
N
T C P
头部长度
32 位
TCP段格式后页 退出前页
TCP:头部格式
16比特的源端口、目的端口,<host,port>
32比特顺序号,
– 用户数据( 每个字节都有一个顺序号 )的第一个字节的顺序号
– SYN比特置位:表示初始顺序号 ISN,数据为 ISN+1
32比特确认号:
– 如果 ACK比特置位,发送者期望接收的下一个顺序号后页 退出前页
TCP:头部格式
6比特控制字段:
– URG:表示有紧急数据,16比特的 紧急指针字段给出了本 TCP段中紧急数据的最后一个字节位置
– ACK:确认号字段有意义
– PSH:要求接收者马上递交
– RST:连接复位
– SYN:同步顺序号,连接建立请求
– FIN:发送者没有数据发送,关闭连接
16比特接收窗口( 64kbytes):
– 发送者愿意接收的字节数(从确认字段给出的字节开始)
16比特检验和,segment+伪头部 (源和目的 IP地址 +协议 +IP头部中的长度字段 )
后页 退出前页
TCP连接管理
连接建立:三次握手协议
– 互相确认对方的初始顺序号,ISN是随机的,而非固定,以减少前后两条连接干扰的可能性
– 连接建立是一个不对称的过程:
一方处于被动方式 (listen),一方为主动方式 (connect),
主动方式的客户方要求和被动方式打开的服务方建立一条运输连接
协议:
A-to-P,SYN x
P-to-A,SYN y,ACK x+1
A-to-P,ACK y+1
SYN(seq=x)
SYN+ACK(seq=y,ack=x+1)
ACK(ack=y+1)
三次握手后页 退出前页
TCP连接管理
释放连接
– 把 TCP连接看成 由两个方向的单工连接组成
– 两方发送一个 FIN标志置为 1的 TCP段,表示没有数据要发送,当 FIN被确认后,那个方向的连接就被关闭,只有当两个方向的连接均关闭后,该 TCP连接才被完全释放。
A?B,FIN x
B?A,ACK x+1
后页 退出前页
TCP连接管理
释放连接
– 考虑 TCP连接的一方已经关闭了它这一方的连接,
这个时候它收到对方的 FIN字段,然后发送 ACK
ACK可能会丢失,则对方可能重传 FIN段,重传的 FIN段可能延时,而如果两者之间重新建立了一条新的连接,会带来干扰
如果对 FIN段的应答在两个最大的分组生命期内(保证 FIN
段和对 FIN段的确认完全从网络中消去)未到达,FIN段的发送方就可以释放连接。另一方最终会发现一直没有消息过来,从而因超时而释放连接。
后页 退出前页
TCP的流量控制
TCP采取一种可变大小的滑动窗口机制来进行流量控制,以防止发送方的数据发送得过快,以致接收方来不及处理的情况
接收者 B维护两个变量 LastByteRead和 LastByteRcvd:
– LastByteRead是 B的用户进程最近从缓冲区读取的最后一个字节的位置
– LastByteRcvd为从网络中接收到的、并且被放入接收缓冲区中的最后一个字节的位置
RecvWindow
网络来的数据空缓冲区 缓冲的 TCP数据
RecvBuffer
TCP的接收窗口用户进程
c v B u f f e radL a s t B y t evdL a s t B y t e R c ReRe
后页 退出前页
TCP流量控制
接收方 B:
– 接收窗口 RecvWindow为接收缓冲区中的空闲部分的大小,对应 B?A的 TCP段窗口字段
发送方 A维护变量 LastByteSent和 LastByteAcked
– LastByteSent-LastByteAcked给出了 A发送的但是又没有得到确认的数据的大小
– 接收窗口为 0,A不能发送,而如果 B不能捎带确认,
有问题,A允许发送探测分组,携带一字节的数据
)Re(ReRe adL a s t B y t evdL a s t B y t e R cc v B u f f e rc v W i n d o w
c v W i n d o wk e dL a s t B y t e A cntL a s t B y t e S e Re
后页 退出前页
TCP:自适应重传
对于每条 TCP连接
– TCP维护一个变量 EstimatedRTT,用于存放所估计的到目的端的往返传输时间
– 记录每个报文发送和收到对应 ACK的时间,估计平均值
a为修正因子,决定了以前估计的 RTT的权重,一般取值为 7/8
– 对重传段的 RTT测量有歧义
对重传的分组不测量 RTT,不更新 RTT估计
重传分组的超时设置采用指数后退算法:原超时的 2倍
S a m p l e R T TTTE s t i m a t e d RTTE s t i m a t e d R )1(
后页 退出前页
TCP:自适应重传
Jacobson提出了计算超时间隔时还应该考虑往返超时的标准偏差
– 为了计算方便用平均方差来代替
– 最后超时设置为
||)1( TTE s t i m a t e d RS a m p l e R T TxD e v i a t i o nxD e v i a t i o n
D e v ia tio nTTE s tim a te d RTim e o u t 4
后页 退出前页
TCP:拥塞控制
TCP拥塞控制采用慢启动和拥塞避免策略
– TCP连接维护两个变量
拥塞窗口 cwnd反映了网络的容量
慢启动阈值 ssthresh,当拥塞窗口小于该阈值时进入慢启动阶段,而大于时进入拥塞避免阶段。
)Re,m i n ( c v W i n d o wc w n dk e dL a s t B y t e A cntL a s t B y t e S e
后页 退出前页拥塞控制
慢启动阶段:
– TCP慢慢探测以决定网络的容量
– 初始
cwnd设置为初始窗口大小,如 MSS
Ssthresh设置较高的值,比如接收窗口大小
– 每收到一个确认 ACK时,就把拥塞窗口大小加 1个 MSS大小,指数增加
– 当 cwnd超过 ssthresh或者遇到拥塞时结束慢启动阶段时AC K每收到一个 M S Sc w n d
后页 退出前页拥塞控制
拥塞避免阶段:
– 每隔往返传输时间 RTT把拥塞窗口增加一个 MSS,
这样拥塞窗口缓慢地增加,直到出现拥塞。
– RTT可变,TCP采取每收到一个不重复的 ACK:
出现拥塞:超时重传
– 慢启动阈值 ssthresh缩减为拥塞窗口的一半,并且拥塞窗口恢复到原来的初始窗口大小,并且进入慢启动过程,重新探测目前网络的状况
)1,/( c w n dM S SM S SM a xc w n d
M S Sc w n d
M S Sc w n dM a xs s th r e s h
),2/(
后页 退出前页拥塞控制
重开空闲连接
– TCP模块没有办法利用 ACK来探测当前网络的容量。
– 如果这个时候仍然按照原有的拥塞窗口大小来发送数据,而实际上这个时候的网络状况可能有了改变,
这样可能会造成网络的拥塞。
– 最近的 TCP协议中规定如果 TCP在超过一段时间
(重传超时的时间)没有收到 TCP段,在重新开始传输数据时进入慢启动过程,也就是说拥塞窗口为
MSS。
cwnd
超时
ssthresh
空闲间隔时间 tTCP的拥塞窗口机制后页 退出前页
UDP
运输层协议,只包括复用功能,提供不可靠、
不保序的数据报服务
UDP头部,8个字节
检验和:检验和错误的 UDP报文被丢弃,1的反码运算,和 IP检验和类似
– 全 0表示不使用检验和源端口号 目的端口号长度 检验和应用数据
UDP头部格式
32比特后页 退出前页
RTP
实时运输协议 RTP是一种用于实时多媒体的标准传输协议,实际上包括一对协议:
– RTP,交换多媒体信息
– 实时运输控制协议 RTCP,用于定期发送对应该多媒体流的控制信息
RTP只是定义了一个基本的框架结构,而大多数的协议细节在开发具体的多媒体应用时再定义,这一般是在相应的脚本和格式文档中定义的。
后页 退出前页
RTP
RTP主要头部格式:
– Payload type(7bits):音频 /视频编码方式,在多媒体会话中可能改变编码方式
– 顺序号 (16bits):接收者检测分组丢失
– 时间戳 (32bits),RTP报文携带的第一个字节采样时刻
– 同步源标识 SSRC(32bits):标识产生 RTP流的源,一般每个 RTP会话保证 SSRC唯一。
顺序号相关源标识 CSRC
···
时间戳同步源标识 SSRC
32比特
V P X CC 负载类型扩展头部 ( 可选 )
RTP负载
RTP消息格式后页 退出前页
RTP头部
填充机制
– RTP消息通过 UDP封装,而 UDP头部给出了经过填充后的 RTP消息的长度,UDP消息中的最后一个字节给出了所填充的字节的数目,这样 RTP消息的头部字段可以省掉长度字段。
RTP的填充机制
UDP头部 RTP头部 RTP负载 填充字节 填充的字节数
UDP头部中的长度字段填充字段后页 退出前页
RTCP
RTCP用于传输控制信息,一般 RTP会话中的每个成员定期通过 IP组播发送控制信息给所有其它成员
RTP数据流和相应的 RTCP控制流利用相邻的运输层端口来传输,即 RTP数据流的端口为偶数端口( x),而 RTCP则使用相邻的那个为奇数的端口( x+1)
后页 退出前页
RTCP
RTCP提供如下功能:
– QoS监测和拥塞控制
发送者定期产生发送报告,包括累计发送了多少数据报文和字节数
接收者定期发送接收报告,包括所收到的数据报文的最大的顺序号、丢失的报文数、乱序报文的数目以及用于估计传输时延的时间戳信息
– 多媒体流之间的同步
RTCP发送报文中含有一个实时时钟信息和相关的 RTP时间戳信息后页 退出前页
RTCP
RTCP提供的基本功能(续)
– 源描述
源描述 SDES(Source Description) 一般包含有主机名、用户名等成员信息
通过 SDES报文把多媒体流与具体的用户联系起来
– RTCP规模优化
限制 RTCP报文所占的带宽,5%的会话带宽后页 退出前页
Intranet与 Extranet
Intranet是指一个企业内部各组织互连所形成的网络;它是在统一行政管理和安全控制管理之下,采用 Internet的标准技术和应用系统建设成的网络,并使用与 Internet相协调的技术开发企业内部的各种应用系统。
Extranet 是在 Internet和 Intranet的基础上发展起来的,根据企业自身的体系结构和运作方式,使网络高层体系结构逐步与企业计算模式相协调后页 退出前页
Intranet
Intranet的发展
– 第 0代 Intranet:大公司利用 Internet构建广域网
– 第一代 Intranet:将 Internet技术部署在企业内部
– 第二代 Intranet:实现了交互式和动态的页面
– 第三代 Intranet:应用 + 信息
RIP是一种距离向量路由协议,距离度量采用一种非常简单的测量到目的地的距离的方式:
站点计数度量
– 每个 RIP路由器都保存了一张路由表,每一项对应着一个目的地,
目的地的 IP地址
到目的地的路径的距离的度量( metric)
到目的地的路径的下一个路由器的 IP地址(如果目的地是直接连接的,不需要这个字段)
路由改变标志(指示这条路由信息是否最近被改变过)
计时器。
后页 退出前页
RIP
RIP路由器每隔 30秒广播一个路由消息给邻居路由器
如果从邻居收到路由信息,发现通过邻居到某个目的地的路由更好,则更新相应的路由表项:
以前没有到该目的地的路由,新增,
到目的地 Z的路由经过 Y转发,距离为 C(x,y)+D(y,z)
以前有到目的地的路由,并且下一跳段也正好是该邻居,则更新路径花费
比较是否新的路径要更短,如果是,则更新表项
– C(x,y) + D(y,z) < D(x,z)
X Y Z
后页 退出前页
RIP对每条路由有一个计时器,当收到新的有关这条路由的消息时,该计时器被重置,如果计时器超时(超过 180秒),
该路由宣告为非法,即目的地不可达后页 退出前页
RIP:无穷计数问题
无穷计数问题:
– 好消息的传播迅速,但是坏消息的传播缓慢
好消息意味着一条更好的路径,很快被相邻路由器知道,并且更新相应路由表,再通知给其它路由器。
– 坏消息则不然:
一个例子,A/B是两个相邻路由器,数字为到
Internet的路径花费后页 退出前页
RIP:无穷计数问题(续)
无穷计数问题(续):
– B到 Internet的链路断开,A发送给 B的更新消息中有一条到 Internet的距离为 2的路由
– B更新到 Internet的路由为经 A、距离 3
– A收到 B的更新消息,更新路径为 4
– B收到 A的更新消息,更新路径为 5
– ……,直到距离达到 Infinity
后页 退出前页
RIP:抑制规则
抑制( hold-down)规则
– 一旦路由器了解到某个网络不可达(距离为无穷大),在一段时间(抑制期)内忽略所有有关那个网络的路由信息。抑制期必须足够大,以使得网络的不可达状态能够在这期间传播所有其他的路由器,一般被设为 60秒。
后页 退出前页
RIP:水平分割
水平分割,Split-Horizon
– 不要把从某个接口了解到的路由信息再通过该接口传递给其他路由器。
– 即如果 A到某个目的地 D的路由要经过邻居 B,
则 A向 B发送的更新消息不会包含到 D的路由
毒性反转水平分割,Poison reverse
– 如果到某个目的地不可达,则发送更新:到目的地的距离为无穷大。
后页 退出前页
RIP:触发更新
触发更新:
– 水平分割解决了两个节点间的路由回路,但是考虑三个或者更多节点间的路由回路:
C-D链路断开
A认为经 B可以到达 D
C收到该消息,认为经 A可到 D
C告诉 B经 A可到 D
– 当路由器了解到到某个目的地的路由有变化时,马上发送更新消息,从而加快收敛过程
RIP规定在传输触发更新消息时,必须延迟一段随机的时间再发送,这可以防止触发更新消息产生过多的网络负载
A
B
C D
后页 退出前页
RIP,RIP消息
RIP消息通过 UDP服务(端口 520)发送后页 退出前页命令 版本 必须为 0
网络 1的地址家族 必须为 0
网络 1的 IP地址必须为 0
必须为 0
到网络 1的距离网络 2的地址家族 必须为 0
网络 2的 IP地址必须为 0
必须为 0
到网络 2的距离
…
RIP消息格式
0 8 16 31
后页 退出前页
RIP的特点
距离向量路由算法,具有无穷计数问题
RIP选择 16作为无穷大,不能用在网络直径大于 15的网络中,同时 RIP使用的距离度量非常简单,不能采取一种动态的方法(比如根据网络延迟或负载)来选择路由
RIP的优点是简单,无需配置,一般用在网络规模不是很大的场合。
后页 退出前页自治系统
自治系统,autonomous system
– 由一个独立的管理实体控制的一组网络和路由器一般被称为一个自治系统
– 一般一个互连网是由许多个自治系统组成的,
自治系统内部可以选择任何路由协议,来进行自治系统内部的路由。
– 为了使自治系统中的网络能够被互连网中别的自治系统访问到,它必须把自治系统内网络的可达性信息传递给其他自治系统。
后页 退出前页自治系统
自治系统:
– 每个自治系统都被分配了一个自治系统编号,
该自治系统编号由一个中央权威机构进行分配,它唯一地标识了对应的自治系统。
– 外部邻居:两个属于不同自治系统并且交换路由信息的路由器,外部网关协议 EGP
– 内部邻居:属于同一自治系统并交换路由信息的两个路由器。内部网关协议 IGP
后页 退出前页自治系统自治系统 1 自治系统 2
外部网关协议内部网关协议
R1 R2
后页 退出前页开放最短路径优先协议 OSPF
OSPF是一种链路状态路由协议
动态的路由算法,能够自动而且快速地适应拓扑结构的变化
OSPF支持负载平衡功能,当同时有几条到目的地的最短路径时,可以将负载分流到这些路由之上。
允许网络管理人员配置路径花费的度量
支持区域的概念,可以用于大规模网络
支持认证服务,只有被授权的路由器才能进行自治系统的路由处理
允许路由器交换通过别的方法(比如通过边界网关协议 BGP了解到的到其他自治系统的路由)了解到的路由信息后页 退出前页
OSPF:链路拓扑
支持各种网络
– 点到点链路
– 广播网络
– NBMA( Nonbroadcast Multiti Access)
– 点到多点
R
1
R
2
R
1
R
2
( a) 点到点链路
R
LAN R N
( b) 中断网络
R
3
LAN
R
4
R
5
R
6
N
R
3 R4
R
5 R6
( c) 广播网络或 NBMA网络
( d) 点到多点非广播网络
R
3
点到多点网络
R
4
R
5
R
6
R
3
R
4
R
5
R
6
后页 退出前页
OSPF,区域
每个区域内部都运行一个基本链路状态路由算法,即每个区域内部有它自己的链路状态库和相应的有向图,
同时运行区域内的所有路由器的链路状态库是一致的。
区域边界路由器:一个同时连接多个区域的路由器,
该路由运行多个链路状态路由算法(每个链路状态路由算法的拷贝一一对应着一个区域)
– 一个区域内的拓扑结构和细节对于自治系统的其他部分是不可见的
– 区域内的路由器也不知道区域外的拓扑的具体细节
每个自治系统都有一个主干区域,称为区域 0。所有区域都与主干区域连接
后页 退出前页
OSPF,区域
自治系统内的路由选择:
– 区域内路由:
源端和目的端都在同一个区域内,只需要根据区域内部的路由信息来选择
– 区域间路由:
两个区域内的通信,限制必须通过区域 0(主干区域),
以保证 OSPF网络的规模
包括三个部分:从源端到某个区域边界路由器的区域内路径,源端和目的端所在区域之间的主干区域内路径,最后是从一条到目的端的区域内路径后页 退出前页
OSPF:各种路由器
两层层次结构:本地区域和主干区域 (0)
– LSA只在一个区域中扩散,每个节点了解区域内的详细拓扑情况;但只知道到其它区域的路径
– 区域边界路由器 ABR:汇集到本区域内部的网络的距离,通告给其它 ABR
– 主干路由器 BR:一个接口属于主干区域
– 自治系统边界路由 ASBR:和其它自治系统交换路由信息
– 内部路由器 IR:所有节点在同一个区域(不等于 0)
后页 退出前页主干主干路由器内部路由器 自治系统边界路由器
AS2AS1
区域边界路由器用 EGP连接各 AS
区域后页 退出前页
OSPF:邻接关系
邻接关系( adjacency)
– 什么是邻接关系?
点到点链路的两个路由器之间
LAN中选取一个 选取路由器 DR作为代表,它被认为与所有邻居路由器邻接
– DR与 LAN中的其它路由器之间存在邻接关系
– LAN中的其它路由器之间不存在邻接关系
通过 Hello协议发现邻接关系
– 邻接的路由器间的数据库保持同步
路由器给邻接路由器发送数据库描述分组
路由器然后比较数据库,请求没有的 LSP( 链路状态请求消息 )
后页 退出前页
OSPF:消息
路由器通过扩散把自己的链路状态信息告诉它所在区域的其他路由器。每个路由器都建立一个它所在区域的有向图,并计算出最短路径。
主干区域中的路由器还从区域边界路由器获取信息,计算出从主干到每个非主干区域的最短路径,再分发给区域边界路由器,由该路由器在它的区域中广播该消息。
后页 退出前页消息类型 描述
Hello 用于发现谁是邻居
Link state update 为邻居提供发送者的链路状态更新
Link state ack 确认链路状态更新
Database description 通知发送者有哪些更新
Link state request 向对方请求信息后页 退出前页边界网关协议 4( BGP-4)
BGP消息是通过一条 BGP路由器之间的
TCP连接来发送的
– 包括 Open,Update,Keepalive,Notification
消息
– 每个消息都有一个固定长度的头部,其中标记字段总共有 16个字节,它主要用于 BGP使用的认证机制,使得接收者可以确认发送者的身份后页 退出前页消息 定义
Open 建立和另一个路由器的邻居关系
Update 传输一个单一路由的消息和 /或列出取消的多条路由
Keepalive 确认 Open消息,定期维持邻居关系
Notification 检测到错误时发送后页 退出前页
BGP-4:协议过程
邻居获取过程
– 和相邻路由器建立一条 TCP连接,接着通过这条 BGP连接发送一个 Open消息,对方以 Keepalive消息回应
邻居可达性过程
– 建立 BGP连接的两个路由器定期互相发送 Keepalive消息
网络可达性
– 每个路由器维护一个它能到达的子网的数据库以及到达那个子网的最佳路由
– 数据库发生变化时,路由器产生一个 Update消息,并传播给所有实现 BGP的其他路由器后页 退出前页
BGP-4
BGP-4是一种 Path-Vector协议:
– 和距离向量协议类似
– 每个边界路由器向邻居广播到目的地的完整路径
( AS列表):
路由器 X发送的到目的地 Z的路径,Path(X,Z)= X,Y1,Y2,Y3,…,Z
– 路由选择可能采取策略路由
路由器 W可能并不一定采取路由器 X通告的路由
– 基于路径花费
– 基于策略控制:
– 为了防止回路出现
X可以控制到来的负载:如果不想转发到 Z的负载,则不通告到 Z的路由后页 退出前页
BGP-4:消息交换
R5通知列在 NLRI中的所有子网可以通过 R1到达,而且其中经过的自治系统只有自治系统 1。
– Update消息包括 AS_Path(等于自治系统 1的标识),Next_Hop(等于 R1的 IP地址),NLRI(等于自治系统 1中所有子网的列表)
BGP路由信息交换子网 1.3
子网 1.2
子网 1.1
子网 2.1
子网 2.2
子网 2.3
R1
R2
R3
R5
R4
R6
内部网关协议外部网关协议自治系统 1 自治系统 2
后页 退出前页
BGP-4:消息交换(续)
R5通过一个新的 Update消息把刚从 R1收到的信息转发给 R9
– 包括 AS_Path(自治系统 2和自治系统 1的标识)、
Next_Hop( R5的 IP地址),NLRI(自治系统 1中所有子网的列表)
一个路由器收到一 Update消息,如果该路由器所在的自治系统标识被包括在该 Update消息的
AS_Path字段中,则这个路由器不会把 Update
信息转发给其它路由器,从而防止消息的循环后页 退出前页
BGP-4
为什么采用 Intra-AS和 Inter-AS路由
– 策略:
Inter-AS:控制怎样路由负载
Intra-AS:单一管理者,无需策略控制
– 可伸缩性:层次路由减少路由表大小,降低负载
– 性能:
Intra-AS:考虑性能的优化
Inter-AS:策略占主导地位后页 退出前页传输控制协议 TCP概述
TCP的主要作用是在不可靠的网络服务上提供面向连接的端到端的可靠字节流。
– 面向连接的运输协议
套接字标识包括了两个部分,主机的 IP地址和一个 16比特的端口号。
一条 TCP连接由发送方套接字和接收方套接字来唯一标识,
即 TCP连接可用四元组 <源 IP地址、源端口号、目的 IP地址、
目的端口号 >来唯一标识。
– 全双工的数据传输服务
确认可以在反方向的数据流中捎带
不支持广播和组播后页 退出前页
TCP概述(续)
TCP:
– 面向字节流:用户数据没有边界
– TCP的 PUSH功能,TCP消息的头部中有一个
PUSH标志,用户可以设置这个 PUSH标志,
TCP实体检测到这个标志后马上发送数据。
– 紧急数据功能:设置 URGENT标志,TCP实体接收到带有 URGENT标志的数据后,马上以最高优先级发送这些数据后页 退出前页
TCP段格式
TCP段由一 20字节的头部、可选部分、和用户数据组成
– TCP数据段携带的用户数据的大小限制称为最大分段大小 MSS
源端口号 目的端口号序号确认号窗口大小校验和 紧急指针选项 (0 个或多个 32 位字 )
数据 ( 可选 )
U
R
G
A
C
K
P
S
H
R
S
T
S
Y
N
F
I
N
T C P
头部长度
32 位
TCP段格式后页 退出前页
TCP:头部格式
16比特的源端口、目的端口,<host,port>
32比特顺序号,
– 用户数据( 每个字节都有一个顺序号 )的第一个字节的顺序号
– SYN比特置位:表示初始顺序号 ISN,数据为 ISN+1
32比特确认号:
– 如果 ACK比特置位,发送者期望接收的下一个顺序号后页 退出前页
TCP:头部格式
6比特控制字段:
– URG:表示有紧急数据,16比特的 紧急指针字段给出了本 TCP段中紧急数据的最后一个字节位置
– ACK:确认号字段有意义
– PSH:要求接收者马上递交
– RST:连接复位
– SYN:同步顺序号,连接建立请求
– FIN:发送者没有数据发送,关闭连接
16比特接收窗口( 64kbytes):
– 发送者愿意接收的字节数(从确认字段给出的字节开始)
16比特检验和,segment+伪头部 (源和目的 IP地址 +协议 +IP头部中的长度字段 )
后页 退出前页
TCP连接管理
连接建立:三次握手协议
– 互相确认对方的初始顺序号,ISN是随机的,而非固定,以减少前后两条连接干扰的可能性
– 连接建立是一个不对称的过程:
一方处于被动方式 (listen),一方为主动方式 (connect),
主动方式的客户方要求和被动方式打开的服务方建立一条运输连接
协议:
A-to-P,SYN x
P-to-A,SYN y,ACK x+1
A-to-P,ACK y+1
SYN(seq=x)
SYN+ACK(seq=y,ack=x+1)
ACK(ack=y+1)
三次握手后页 退出前页
TCP连接管理
释放连接
– 把 TCP连接看成 由两个方向的单工连接组成
– 两方发送一个 FIN标志置为 1的 TCP段,表示没有数据要发送,当 FIN被确认后,那个方向的连接就被关闭,只有当两个方向的连接均关闭后,该 TCP连接才被完全释放。
A?B,FIN x
B?A,ACK x+1
后页 退出前页
TCP连接管理
释放连接
– 考虑 TCP连接的一方已经关闭了它这一方的连接,
这个时候它收到对方的 FIN字段,然后发送 ACK
ACK可能会丢失,则对方可能重传 FIN段,重传的 FIN段可能延时,而如果两者之间重新建立了一条新的连接,会带来干扰
如果对 FIN段的应答在两个最大的分组生命期内(保证 FIN
段和对 FIN段的确认完全从网络中消去)未到达,FIN段的发送方就可以释放连接。另一方最终会发现一直没有消息过来,从而因超时而释放连接。
后页 退出前页
TCP的流量控制
TCP采取一种可变大小的滑动窗口机制来进行流量控制,以防止发送方的数据发送得过快,以致接收方来不及处理的情况
接收者 B维护两个变量 LastByteRead和 LastByteRcvd:
– LastByteRead是 B的用户进程最近从缓冲区读取的最后一个字节的位置
– LastByteRcvd为从网络中接收到的、并且被放入接收缓冲区中的最后一个字节的位置
RecvWindow
网络来的数据空缓冲区 缓冲的 TCP数据
RecvBuffer
TCP的接收窗口用户进程
c v B u f f e radL a s t B y t evdL a s t B y t e R c ReRe
后页 退出前页
TCP流量控制
接收方 B:
– 接收窗口 RecvWindow为接收缓冲区中的空闲部分的大小,对应 B?A的 TCP段窗口字段
发送方 A维护变量 LastByteSent和 LastByteAcked
– LastByteSent-LastByteAcked给出了 A发送的但是又没有得到确认的数据的大小
– 接收窗口为 0,A不能发送,而如果 B不能捎带确认,
有问题,A允许发送探测分组,携带一字节的数据
)Re(ReRe adL a s t B y t evdL a s t B y t e R cc v B u f f e rc v W i n d o w
c v W i n d o wk e dL a s t B y t e A cntL a s t B y t e S e Re
后页 退出前页
TCP:自适应重传
对于每条 TCP连接
– TCP维护一个变量 EstimatedRTT,用于存放所估计的到目的端的往返传输时间
– 记录每个报文发送和收到对应 ACK的时间,估计平均值
a为修正因子,决定了以前估计的 RTT的权重,一般取值为 7/8
– 对重传段的 RTT测量有歧义
对重传的分组不测量 RTT,不更新 RTT估计
重传分组的超时设置采用指数后退算法:原超时的 2倍
S a m p l e R T TTTE s t i m a t e d RTTE s t i m a t e d R )1(
后页 退出前页
TCP:自适应重传
Jacobson提出了计算超时间隔时还应该考虑往返超时的标准偏差
– 为了计算方便用平均方差来代替
– 最后超时设置为
||)1( TTE s t i m a t e d RS a m p l e R T TxD e v i a t i o nxD e v i a t i o n
D e v ia tio nTTE s tim a te d RTim e o u t 4
后页 退出前页
TCP:拥塞控制
TCP拥塞控制采用慢启动和拥塞避免策略
– TCP连接维护两个变量
拥塞窗口 cwnd反映了网络的容量
慢启动阈值 ssthresh,当拥塞窗口小于该阈值时进入慢启动阶段,而大于时进入拥塞避免阶段。
)Re,m i n ( c v W i n d o wc w n dk e dL a s t B y t e A cntL a s t B y t e S e
后页 退出前页拥塞控制
慢启动阶段:
– TCP慢慢探测以决定网络的容量
– 初始
cwnd设置为初始窗口大小,如 MSS
Ssthresh设置较高的值,比如接收窗口大小
– 每收到一个确认 ACK时,就把拥塞窗口大小加 1个 MSS大小,指数增加
– 当 cwnd超过 ssthresh或者遇到拥塞时结束慢启动阶段时AC K每收到一个 M S Sc w n d
后页 退出前页拥塞控制
拥塞避免阶段:
– 每隔往返传输时间 RTT把拥塞窗口增加一个 MSS,
这样拥塞窗口缓慢地增加,直到出现拥塞。
– RTT可变,TCP采取每收到一个不重复的 ACK:
出现拥塞:超时重传
– 慢启动阈值 ssthresh缩减为拥塞窗口的一半,并且拥塞窗口恢复到原来的初始窗口大小,并且进入慢启动过程,重新探测目前网络的状况
)1,/( c w n dM S SM S SM a xc w n d
M S Sc w n d
M S Sc w n dM a xs s th r e s h
),2/(
后页 退出前页拥塞控制
重开空闲连接
– TCP模块没有办法利用 ACK来探测当前网络的容量。
– 如果这个时候仍然按照原有的拥塞窗口大小来发送数据,而实际上这个时候的网络状况可能有了改变,
这样可能会造成网络的拥塞。
– 最近的 TCP协议中规定如果 TCP在超过一段时间
(重传超时的时间)没有收到 TCP段,在重新开始传输数据时进入慢启动过程,也就是说拥塞窗口为
MSS。
cwnd
超时
ssthresh
空闲间隔时间 tTCP的拥塞窗口机制后页 退出前页
UDP
运输层协议,只包括复用功能,提供不可靠、
不保序的数据报服务
UDP头部,8个字节
检验和:检验和错误的 UDP报文被丢弃,1的反码运算,和 IP检验和类似
– 全 0表示不使用检验和源端口号 目的端口号长度 检验和应用数据
UDP头部格式
32比特后页 退出前页
RTP
实时运输协议 RTP是一种用于实时多媒体的标准传输协议,实际上包括一对协议:
– RTP,交换多媒体信息
– 实时运输控制协议 RTCP,用于定期发送对应该多媒体流的控制信息
RTP只是定义了一个基本的框架结构,而大多数的协议细节在开发具体的多媒体应用时再定义,这一般是在相应的脚本和格式文档中定义的。
后页 退出前页
RTP
RTP主要头部格式:
– Payload type(7bits):音频 /视频编码方式,在多媒体会话中可能改变编码方式
– 顺序号 (16bits):接收者检测分组丢失
– 时间戳 (32bits),RTP报文携带的第一个字节采样时刻
– 同步源标识 SSRC(32bits):标识产生 RTP流的源,一般每个 RTP会话保证 SSRC唯一。
顺序号相关源标识 CSRC
···
时间戳同步源标识 SSRC
32比特
V P X CC 负载类型扩展头部 ( 可选 )
RTP负载
RTP消息格式后页 退出前页
RTP头部
填充机制
– RTP消息通过 UDP封装,而 UDP头部给出了经过填充后的 RTP消息的长度,UDP消息中的最后一个字节给出了所填充的字节的数目,这样 RTP消息的头部字段可以省掉长度字段。
RTP的填充机制
UDP头部 RTP头部 RTP负载 填充字节 填充的字节数
UDP头部中的长度字段填充字段后页 退出前页
RTCP
RTCP用于传输控制信息,一般 RTP会话中的每个成员定期通过 IP组播发送控制信息给所有其它成员
RTP数据流和相应的 RTCP控制流利用相邻的运输层端口来传输,即 RTP数据流的端口为偶数端口( x),而 RTCP则使用相邻的那个为奇数的端口( x+1)
后页 退出前页
RTCP
RTCP提供如下功能:
– QoS监测和拥塞控制
发送者定期产生发送报告,包括累计发送了多少数据报文和字节数
接收者定期发送接收报告,包括所收到的数据报文的最大的顺序号、丢失的报文数、乱序报文的数目以及用于估计传输时延的时间戳信息
– 多媒体流之间的同步
RTCP发送报文中含有一个实时时钟信息和相关的 RTP时间戳信息后页 退出前页
RTCP
RTCP提供的基本功能(续)
– 源描述
源描述 SDES(Source Description) 一般包含有主机名、用户名等成员信息
通过 SDES报文把多媒体流与具体的用户联系起来
– RTCP规模优化
限制 RTCP报文所占的带宽,5%的会话带宽后页 退出前页
Intranet与 Extranet
Intranet是指一个企业内部各组织互连所形成的网络;它是在统一行政管理和安全控制管理之下,采用 Internet的标准技术和应用系统建设成的网络,并使用与 Internet相协调的技术开发企业内部的各种应用系统。
Extranet 是在 Internet和 Intranet的基础上发展起来的,根据企业自身的体系结构和运作方式,使网络高层体系结构逐步与企业计算模式相协调后页 退出前页
Intranet
Intranet的发展
– 第 0代 Intranet:大公司利用 Internet构建广域网
– 第一代 Intranet:将 Internet技术部署在企业内部
– 第二代 Intranet:实现了交互式和动态的页面
– 第三代 Intranet:应用 + 信息