4.1 概述
4.1.1 转发和路由选择
1.转发。当一个分组到达路由器的一条输入链路时,路由器必须将该分组移动到适当的输出链路。
2.路由选择。当分组从发送方流向接收方时,网络层必须决定这些分组所采用的路由或路径。
3.每台路由器都有一张转发表,链路层交换机基于链路层字段中的值做转发决定,路由器则是基于网络层的字段
4.连接建立
4.1.2 网络服务模型
1.确保交付
2.具有延时上界的确保交付
3.对于分组流:(1)有序分组交付(2)确保最小带宽(3)确保最大时延抖动(4)安全性服务
4.因特网提供的是尽力而为服务(best-effort service)
5.两个重要的ATM服务模型:(1)恒定比特率ATM网络服务CBR(2)可用比特率ATM网络服务ABR
4.2 虚电路和数据包网络
1.仅在网络层提供连接服务的计算机网络称为虚电路VC网络;仅在网络层提供无连接服务的计算机网络称为数据报网络。
4.2.1 虚电路网络
1.每个数据报都带有VC标识
2.网络的路由器必须为进行中的连接维持连接状态信息
3.虚电路中有3个明显的不同阶段:(1)虚电路建立(2)数据传送(3)虚电路拆除
4.相比与运输层的连接(只有两个端系统知情,路由器完全不知道),虚电路的连接,沿两个端系统之间路径上的路由器都要参与虚电路的建立,且每台路由器都完全知道经过它的所有虚电路。
5.信令报文/信令协议
4.2.2 数据报网络
1.路由器用目的地址的前缀与转发表中的表项进行匹配
2.转发表能够在任何时刻被修改
4.2.3 虚电路和数据报网络的由来
1.因特网服务模型使服务保证最少
4.3 路由器工作原理
1.路由器的四个组成部分:(1)输入端口,物理接口(2)交换结构(3)输出端口(4)路由选择处理器
4.3.1 输入端口
4.3.2 交换结构
1.经内存交换,吞吐量小于B/2,B为内存单位时间读写分组数
2.经总线交换,吞吐量为1
3.经互联网络交换,如纵横交换,克服总线带宽限制
4.3.3 输出端口
4.3.4 何时出现排队
输出端口排队
1.输出端口排队,需要的缓存空间为,C为链路容量,N为TCP流。
2.输出端口排队就需要分组调度程序,用于挑选一个来发送,提供了服务质量保证。
3.缓存填满前就丢弃一个分组,以便向发送方提供一个拥塞信号。主动队列管理
输入端口排队
1.线路前部阻塞,即本身是可以发送的,但前一个阻塞了。
4.3.5 路由选择控制平面
1.网络范围的路由选择控制平面因此是分布式的
4.4 网际协议:因特网中的转发和编址
1.路由选择协议2.IP协议3.ICMP协议
4.4.1 数据报格式
1.首部检验和只检验首部,而TCP/UDP检验和是对整个报文段进行的。
IP数据报分片
1.一个链路层帧能承载的最大数据量叫做最大传送单元MTU。
2.标识、标志和片偏移字段。最后一个片的标志比特被设为0,其他的标志比特被设为1
4.4.2 IPv4编址
1.点分十进制法
2.子网,如223.1.1.0/24,/24称为子网掩码
3.因特网的地址分配策略被称为无类别域间路由选择CIDR,对于子网可以写作a,b,c,d/x
4.分类编址,A类(/8)、B类(/16)、C类(/24)
5.广播地址,全为1
获取一块地址
获取主机地址:动态主机配置协议
ICANN
1.动态主机配置协议DHCP,即插即用协议。每个子网都有DHCP服务器。DHCP可以返回子网掩码、第一跳路由地址(默认网关)以及本地DNS服务器地址
2.DHCP客户-服务器交互四个步骤:(1)DHCP服务器发现,目的IP为广播,封装在UDP里(2)DHCP服务器提供,目的IP为广播,返回给用户推荐的地址、网络掩码以及IP地址租用期(3)DHCP请求(4)DHCP ACK
网络地址转换NAT
1.NAT转换表,端口号和IP地址转换
2.NAT是有争议的。如修改端口号,路由器应当处理第三层分组,NAT违反了端到端原则,可以直接用IPv6
3.存在NAT之外的客户端要访问NAT之内的服务器存在问题。
UPnP通用即插即用
为某些请求的公共端口号请求一个NAT映射,位于(专用IP地址,专用端口号)和(公共IP地址,公共端口号)之间
也可以使用外部服务器中继的方式解决
4.4.3 因特网控制报文协议ICMP
1.ICMP最典型的用途是差错报告。被主机和路由器用来彼此沟通网络层的信息。ICMP报文是承载在IP分组中的
2.Traceroute程序是由ICMP报文实现的。
3.源主机将一系列普通IP数据报发送到目的地,每个都携带了一个不可达的UDP端口号和UDP报文段,并设置第一个数据报的TTL为1,第二个为2...;当第n个数据报到达第n个路由器时,则返回第n台路由器的名字与IP地址.目的主机向源地主发送一个不可达的ICMP报文来结束发送UDP报文
4.4.4 IPv6
1.IPv6数据报格式
流标签:给属于特殊流的分组加上标签
跳限制:每经过一个路由器跳限制减1
2.从IPv4到IPv6的迁移
1.双栈dual-stack,会发生IPv4到IPv6转换过程中信息的丢失
2.建隧道tunneling(一种双栈方法)可以解决,将IPv6数据报封装进IPv4的数据中,等到接收端的IPv6接收到之后再从数据中取出来
4.5 路由选择算法
1.全局式路由选择算法,常被称作链路状态算法LS/分散式路由选择算法,距离向量算法DV
2.也可以分为静态路由算法和动态路由算法
3.分为负载敏感和负载迟钝
4.5.1 链路状态路由选择算法
1.网络拓扑和所有链路费用都是已知的。
2.Dijkstra算法和prim算法
3.Dijkstra算法时迭代算法,经过k次迭代,可知到k个结点的最低费用路径。
D(v):到算法的本次迭代,从源结点到目的结点v的最低费用路径的费用
p(v):从源到v沿着当前最低费用路径的前一结点
N‘:结点子集;如果从源到v的最低费用路径已经确定,则v在N'中
复杂度为,但可以优化到,有可能发生振荡(如果费用等于承载的负荷)
4.5.2 距离向量路由选择算法
1.每个结点都要从一个或多个直接相连邻居接收某些信息,执行结算,然后将其结果分发给邻居。
2.DV算法是一个迭代的、异步的和分布式的算法
3.
4.如果x的距离向量更新了就向每个邻居发送其更新后的距离向量。
DV算法:链路费用改变与链路故障
当其中一个路径变大时可能要迭代很多次才能全部更新一致(先更新在发送消息)
DV算法:增加毒性逆转
如果z通过y到达x,则z将告诉y,它到x的距离是无穷大
LS算法与DV算法的比较
1.报文复杂性。LS算法要求发送O(NE)个报文,DV算法只要给邻居发送
2.收敛速度。LS算法O(N^2),DV算法很慢,还会遇到无穷计数问题
3.健壮性。LS算法是分离的,DV算法会将不正确的结点计算值扩散到整个网络。
4.5.3 层次路由选择
1.自治系统AS。在相同的AS中的路由器全部运行相同的路由算法,且拥有彼此的信息
2.连接不同的AS的路由器叫网关路由器。
3.当一个AS连有多个AS时,该AS需要知道多个AS的目的地并把信息告诉该AS中的每个路由器。
4.如果多个网关都可达则选择费用最小的(热土豆法)
4.6 因特网中的路由选择
4.6.1 因特网中自治系统内部的路由选择:RIP
1.内部网关协议
2.路由选择信息协议RIP和开放最短路优先OSPF
3.在RIP中,路由选择更新信息在邻居之间通过使用一种RIP响应报文来交换
4.路由选择表
5.每隔30s,路由器会根据收到的通告更新转发表
6.如果过了180s没有收到邻居的报文,则可以认为该邻居将不再是可达的了。此时该路由器修改转发表并告知可达的邻居。也可以通过RIP请求报文,请求其邻居到指定目的地的费用(在UDP上使用端口520互相发送RIP报文)。
7.RIP在UNIX中是被当作应用层进程来实现的。
4.6.2 因特网中自治系统内部的路由选择:OSPF
1.OSPF的核心就是一个使用洪泛链路状态信息的链路状态协议和一个Dijkstra最低费用路径算法。
2.OSPF的优点:(1)安全(2)多条相同费用的路径(3)对单播或多播路由选择的综合支持(4)支持在单个路由选择域内的层次结构
4.6.3 自治系统间的路由选择:BGP
边界网关协议
1.BGP为每个AS提供一下工作的手段:(1)从相邻AS处获得子网可达性信息。(2)向本AS内部的所有路由器传播这些可达性信息(3)基于可达性信息和AS策略,决定到达子网的路由
BGP基础
1.半永久TCP连接来交换路由选择信息,对于每条连接的两台路由器称为BGP对等方,整个连接称为BGP会话,包括外部会话和内部会话
2.在BGP中目的地不是主机而是CIDR化的前缀
3.当一台路由器得知一个新前缀时,它为该前缀在其转发表中创建一个项
路径属性和BGP路由
1.一个自治系统由全局唯一的自治系统号所标识
2.当一台路由器通过BGP会话通告一个前缀时,它在前缀中包括一些BGP属性。带有属性的前缀称为一条路由。两个较为重要的属性是AS-PATH(前缀通告已经通过的AS)和NEXT-HOP
3.当一台网关路由器接收到一台路由通告时,它使用其输入策略来决定是否接收或过滤该路由,是否设置某种属性
BGP路由选择
1.BGP顺序调用下列消除规则,直到留下一条路由。
(1)路由被指派一个本地偏好值作为它们的属性之一
(2)在余下的路由中,具有最短AS-PATH的路由将被选择
(3)选择具有最靠近NEXT-HOP路由器的路由
(4)使用BGP标识符来选择路由
BGP Message
(1)OPEN(2)UPDATE(3)KEEPLIVE(4)NOTIFICATION
路由选择策略
X不会告诉B,X能经过C到达Y,因此B也不会经过X转发目的地为C或Y的流量
对于提供商网络,比如B知道A能到W,B就会告诉X经过BA能到W,但B不会告诉C,A能到W,防止X走CA到W