概述
功能
- 从发送方主机传输报文段到接收方主机
- 发送方主机封装报文段(segments)为数据报(datagrams)
- 接收方主机递交报文段给传输层
- 在每个主机、路由器上都需要运行网络层协议
- 路由器会检查通过它的所有IP数据报的头部字段,然后根据目的IP地址对数据报进行转发
主要功能
- 转发:将分组从路由器的输入端口转移到正确的路由器输出端口
- 转发表确定本路由器上的本地转发
- 路由 :确定分组从发送方传输到接收方(目的主机)所经过的路径(或路由)
- 路由算法确定网络端到端的路径
网络层两个平面
- 数据平面
- 本地的,每个路由器自身的功能
- 决定抵达路由器输入端口的数据报如何转发到输出端口
- 控制平面
- 整个网络范围
- 决定数据报再端到端路径上的路由器之间如何路由
数据平面实现方式
- 传统的路由算法:在路由器内实现
- 软件定义网络:在远程服务器上实现
控制平面:传统方式
每个路由器都有单独的路由算法组件,路由器之间通过交互来实现控制平面
控制平面:SDN方法
一个分离的(通常时远程的)控制器和路由器本地的控制代理(loacl control agents,CAs)交互
连接建立
- 传输层连接:握手
- 网络层连接:指网络层数据分组开始传输前,在所选择的从源到目的地路径上的各路由器之间相互握手,建立连接状态(如ATM,帧中继,MPLS的网络层, 已经很少使用)
现在的因特网网络层不执行连接建立
服务模型
网络层可能提供的服务:
- 确保交付:确保分组到达目的地
- 具有时延上界的确保交付:主机到主机的时延
- 有序分组交付:按发送顺序到达
- 确保最小带宽:当发送主机以低于特定比特率的速率发送比特,分组不会丢失,在一定时延到达
- 确保最大时延抖动:发送方发送两个连续分组的时间间隔与接收到的间隔相同
因特网的网络层提供的服务
- 单一服务,即尽力而为服务
- 分组间的定时不能被保证
- 分组的接收顺序与发送顺序不一定相同
- 传送的分组不能保证最终交付,即网络可能未向目的地交付分组
虚电路和数据报网络
数据报网络提供网络层的无连接服务
虚电路网络提供网络层的连接服务
任何网络中的网络层指提供两种服务之一,不会同时提供
虚电路
- 在数据传输之前,需要为每个呼叫建立连接
- 每个分组携带VC标识符(不是目的主机地址)
- 位于“源-目的路径”上的每个路由器会维护经过它的每条连接的“状态”
- 链路和路由器的资源(带宽、缓存)可以被分配给VC(专用资源)
特点
- 呼叫建立及每次呼叫的状态要在网络中的路由器上维持,避免想数据报的网络要复杂
- 网络功能复杂,端系统设备简单
数据报网络
- 在网络层无呼叫的过程
- 路由器: 不需要维护端到端连接的状态
- 没有网络等级的“连接”的概念
- 使用目的主机的地址进行分组转发
特点 - 网络层服务模型简单
- 端系统功能复杂
- 高层实现许多功能,如按序传送、可靠数据传输、拥塞控制与DNS名字解析等
- 因特网服务模型提供的服务保证最少,对网络层的需求最小,使得互连使用各种不同链路层技术的网络变得更加容易
- 许多应用都在位于网络边缘的主机(服务器)上实现
数据报转发表
举例
最长前缀匹配
对于给定的目的地址,使用最长地址前缀匹配来完成输出端口的查找
路由器查表方法
用目的地址前缀和转发表的前缀匹配:
-
存在匹配:向对应链路转发
-
不存在匹配:选择"其他"项对应的链路转发
-
存在多个匹配:使用最长前缀匹配规则,即向与最长前缀匹配的链路接口转发分组
-
路由器转发表只维持转发状态信息
-
转发表由选路算法修改
-
虚电路网络转发表随虚电路的简历和拆除更新
-
一个端系统发送给另一个端系统的一批分组可能在网络中选择不同的路径,到达的顺序可能不一致
路由器的工作原理
路由器的整体结构
核心功能:
- 运行路由算法/协议(OSPF,RIP,BGP)
- 将分组从路由器的输入链路传送到正确的输出链路
体系结构:
输入端口功能
- 线路端接模块:将一条物理链路端接到路由器的物理层
- 数据线路处理模块:实现路由器的数据链路层功能
- 查找与转发模块:实现查找与转发功能,以便分组通过路由器交换结构转发到适当的输出端口
- 确定将一个到达的分组通过交换结构转发给哪个输出端口
- 分布式交换
- 选路处理器计算转发表,给每个输入端口存放一份转发表拷贝。
- 在每个输入端口本地做出交换决策,无须激活中央选路处理器。
- 可避免在路由器中某个单点产生转发处理瓶颈。
- 目的:以线速完成输入端口的处理
- 排队:如果数据报到达输入端口的速度快于输入端口将数据报转发到交换结构的速度,就会发生排队
网际协议
网络层协议
路由器可以隔离广播域
IP数据报格式(IPv4)
IP数据报分片和重组
- 每个数据链路有自己的MTU,链路类型不同,MTU的值也不同,这里MTU指的是数据链路帧的数据区的最大字节数
- 在因特网中,一个大的分组可能在路由器中被分割为几个分片,在最终的目的主机上,将这些分片重新组装成一个大的分组
- 为了进一步识别出这些分组,需要对分片进行标识
IP地址
- IP 地址: 分配给主机或路由器接口的标识符
- 接口: 主机/路由器与物理链路之间的边界
- 路由器有多个接口
- 主机可以有多个接口
- 每个接口有一个IP地址
IP地址结构:网络号(所在网络的编号)+主机号(主机在网络的编号)
- 网络地址:将主机号全变为0
- 广播地址:将主机号全变为1
传统的IP地址分类
- A类地址:IP地址的第一个字节作为网络地址,最高位为0,其余三个字节作为主机地址
1.0.0.1-127.255.255.254
- B类地址:前两个字节作为网络地址,最高位为10,其余的两个字节作为主机地址
128.0.0.1-191.255.255.254
- C类地址:IP地址的前三个字节作为网络地址,最高位为110,最后一个字节作为主机地址
192.0.0.1-223.255.255.254
特殊IP地址端
- 本地地址(localhost):主要用于识别主机本身的地址
127.0.0.1-127.255.255.254
- 私有地址:局域网使用的地址端,公网上不会被路由
10.x.x.x
172.16.x.x-172.31.x.x
192.168.x.x
0.0.0.0
:主要是用来标识不清楚的网络和主机的255.255.255.255
:这个地址是受限的广播地址。主要指一个网段内的所有主机
网络中的ID地址
- 同一局域网上的主机或者路由器的IP地址中的网络号必须相同
- 交换机互连的网络仍然是一个局域网,只能有一个网络号
- 路由器总是具有两个或两个以上IP地址
- 当两个路由器直接相连时,在连线两端的接口处,可以指明IP地址也可以不指明IP地址
划分子网
方法:从主机号借用若干个比特作为子网号,剩下的主机位为主机号。
子网掩码:用于标识网络号和主机号,网络号全1,主机号全0
例子
假设现有一个C类网202.115.1.1-202.115.1.254
-
划分2个子网、6个子网、14个子网
2个要借1位,6个借3位,14个借4位 -
分30台主机,49台主机
30<32,所以需要5位;
49<64,需要6位
对某个子网来说,主机号全0的地址不能用,被用做标识该子网的子网号;主机号全1的也不能用,用于子网的广播。所以能容纳的主机数是 2 N − 2 2^N-2 2N−2
传统IP分类问题
- 一个A类的IP地址,可以有24bit用于分配主机地址,但是用不了那么多,会造成浪费
- 一个C类的IP地址,只有8bit,可能不够用
无分类域间路由
- 消除了传统的A类、B类和C类地址
- CIDR将网络前缀都相同的连续的IP地址组成“CIDR地址块”
构造超网
一个CIDR地址块可以表示分类IP的多个分类地址,这种地址的聚合称为路由聚合,又称为构造超网
例子
202.115.22.0/25
202.115.22.128/25
可整合为 202.115.22.0/24
如何获取IP地址
- 手工指定(保存在系统配置中)
- DHCP: Dynamic Host Configuration Protocol
DHCP
动态主机配置协议
Dynamic Host Configuration Protocol
- 主机广播 “DHCP DISCOVER” 消息
- DHCP 服务器用 “DHCP OFFER” 消息响应
- 主机请求IP地址:“DHCP REQUEST” 消息
- DHCP 服务器确认 “DHCP ACK/NACK” 消息
- DHCP 终止租用期”DHCP RELEASE”消息
NAT
原因:对外部网络来讲,本地网络只用一个IP地址
效果:
- 不需要从 ISP分配一系列地址—— 只要一个IP地址用于所有设备
- 在本地网络,改变设备的IP地址不用通知外部世界
- 可以变更 ISP ,不用改变本地网络的设备的地址
- 本地网络内部设备不能被外部世界明确寻址,或是不可见 (增加了安全性)
IPv6
优先级由谁设置
初始动机:IPv4地址空间即将用尽
其他动机:
- 首部格式可帮助加速处理/转发
- 改变首部利于QoS要求
数据格式
- 固定长度的 40 字节首部
- 不允许分片
路由算法
是确定一个分组从源路由器到目的路由器所经路径的算法
分类
- 全局路由算法
- 所有路由器拥有完整的网络拓扑信息和链路费用信息
- 分布式路由算法
- 以迭代、分布式的方式计算最低费用路径
- 节点只有与其直接相连接链路的费用信息
- 通过迭代计算,并与相邻节点交换信息
- 逐步计算出到达某目的节点或一组目的节点的最低费用路径
- 静态路由算法
- 路由确定后不再变化,除非人工干预
- 动态路由算法
- 当网络的流量负载或拓扑发生变化时,路径可能发生变化
- 可以周期性地或直接地相应拓扑或链路费用
- 易受选路循环、路由振荡之类问题地影响
各种算法
链路状态(LS)选路算法(Dijkstra算法)
经典算法,不作过多解释
- 时间复杂度: O ( n 2 ) O(n^2) O(n2)
- 可能产生振荡
距离向量(DV)路由算法
特点
- 分布式:每个节点都从其直接相连邻居接收信息,进行计算,再将计算结果发布给邻居
- 迭代:计算过程一直持续到邻居之间无更多信息交换为止
- 异步:不要求所有节点相互之间步伐一致地操作
- 自我终结:算法能自行停止
最低费用——Bellman-Ford方程
d
x
(
y
)
=
m
i
n
v
{
c
(
x
,
v
)
+
d
v
(
y
)
}
d_x(y) = min_v\{c(x,v)+d_v(y)\}
dx(y)=minv{c(x,v)+dv(y)}
- d x ( y ) d_x(y) dx(y):节点x到节点y地最低费用路径的费用
- v v v:节点x的邻居节点
- c ( x , v ) + d v ( y ) c(x,v)+d_v(y) c(x,v)+dv(y):x经v到节点y的最小的路径费用
- m i n v min_v minv:从所有经直接相连邻居节点到节点y的费用中选取的最小路径费用
算法步骤
- 对每个结点
- 初始化
- 更新自己的距离向量
- 重复执行上一步,直到没有更新的距离向量发出
- 节点的距离向量表
- 每个节点不断向邻居发送其距离向量拷贝
- 当节点收到邻居发送的新距离向量,先保存,再用B-F公式更新自己的距离向量
- 若距离向量发生改变,将新距离向量发送给邻居
- 当距离向量不再变化是,算法终止
链路费用改变
减少
- 当某一结点检测到其到邻居的链路费用减少,更新距离向量,通知其他邻居
- 邻居收到更新报文,更新自己的距离表,然后通知包括上述节点在内的邻居
- 循环至静止状态
增加
以下仅作了解
解决"计数无穷":毒性逆转——对于上述条件,Z通过Y到达X,则Z告诉Y:它到X的距离是无穷大,Y将不会在经过Z到X
但是毒性逆转不能完全解决计数到无穷的问题,如果有三个以上节点的环路,则不能被检测到
其他解决环路的方法
- 定义最大度量
- 抑制计时器
- 水平分割
- 路由毒化
- 触发更新
LS和DV比较
两者在寻找最低费用的过程中,本质思想是一样的,比较–>更新节点状态–>比较
- 消息复杂度:
- LS算法:知道网络每条链路的费用,需发送O(nE)个报文;当一条链路的费用变化时,必须通知所有节点
- DV算法:迭代时,仅在两个直接相连邻居之间交换报文;当链路费用改变时,只有该链路相连的节点的最低费用路径发生改变时,才传播已
改变的链路费用。
- 收敛速度:
- LS算法:需要 O ( n E ) O(nE) O(nE)个报文和 O ( n 2 ) O(n^2) O(n2)的搜寻,可能会振荡
- DV算法:收敛较慢。可能会遇到选路回环,或计数到无穷的问题
- 健壮性:
- LS算法:路由器向其连接的一条链路广播不正确费用,路由计算基本独立(仅计算自己的转发表),有一定健壮性。
- DV算法:一个节点可向任意或所有目的节点发布其不正确的最低费用路径,一个节点的计算值会传递给它的邻居,并间接地传递给邻居的邻居。
一个不正确的计算值会扩散到整个网络。
层次选路(了解)
- 一个区域内的路由器组成集合"自治系统"(AS)
- 同一个自治系统的的路由器运行相同的路由协议——区域内路由协议(内部网关协议IGP)
- 不同自治系统内的路由器可以运行不同的区域内路由协议
标准域内路由协议
路由信息协议(RIP)距离向量算法
- 距离向量算法
- RIP通告
- 每隔30秒,通过响应报文在邻居间交换距离向量
- 每个通告包含了多达25个AS内的目的子网的列表
- 链路失败及恢复
- 若180秒后没有收到通告,则认为邻居死机或链路断开
- 通过故障邻居的路由失败
- 新的公告发送给其他邻居
- 邻居然后再发送新的公告 (如果转发表发生变化)
- 链路故障信息快速传播到整个网络
- 毒性逆转用于防止乒乓循环 (无限距离 = 16 跳)
开放最短路径优先(OSPF)
- 用链路状态算法
- 每个router都广播OSPF通告,OSPF通告里为每个邻居路由器设一个表项(记录每个邻居的链路特征和费用)
- 通告会散布到整个自治系统 (通过洪泛法)
- 使用IP传输
- 优点
- 安全
- 允许多个相同开销的路径
- 对于每个链路, 有多个消费尺度用于不同的服务类型TOS
- 单播和多播综合支持
- 多播 OSPF (MOSPF) 使用和 OSPF同样的链路数据库
- 在大的区域中使用层次 OSPF
层次 OSPF
- 两级层次: 本地区域, 主干区域(在同一个自治系统内)
- 只在区域内发送链路状态通告
- 每个节点有详细的区域拓扑;仅知道到达其他区域内网络的方向(即最短路径)
- 区域边界路由器(同时属于本地区域和主干区域):“汇总”了到本区域内部网络的路径, 并通告给其他区域边界路由器.
- 主干路由器:限于在主干区域内运行OSPF路由协议(本身不是区域边界路由器)
- 边界路由器: 连接到其他自治系统
Internet域间选路:BGP(了解)
BGP为每个AS提供一种手段:
- 从相邻AS获取子网可达信息
- 从该AS内部的所有路由器传播这些可达性信息
AS互连
转发表根据AS内和AS间选路算法而配置
- AS域内的选路项用于目的端在域内的选路。
- AS域内和AS域间的选路项用于目的端在域外的选路。
AS域间任务
- 通过相邻AS获取通过这些邻域可以到达哪些目的端
- 将这些信息传回域内所有路由器
BGP会话与通告
- 路由器对(BGP对等方)通过半永久TCP连接来交换选路信息:BGP 会话
- BGP会话和物理链路无关(并不总是和某条物理链路对应)。
- 当AS2通告一个前缀给AS1,说明AS2能够转发目的地址前缀是这个通告前缀的所有分组。
- AS2能够在它的通告中汇总了这些前缀。
路径属性 和 BGP 路由
- 当通告前缀时,通告包含了BGP属性.
- 前缀+属性=“路由”
- 两个重要的属性:
- AS-PATH: 包含了前缀的通告已经通告过的那些AS,如 AS 67 AS 17
- NEXT-HOP: 指出到达下一个AS的具体AS间边界路由器(可能存在多条从当前AS到达下一个AS的链路)
- 当网关路由器接收到路由通告时,使用输入策略来决定接收/舍弃该通告。
BGP 路由选择
- 路由器可能知道到相同前缀的多条路由,路由器必须从中选择.
- 排除规则(应用排除规则直到有一条留下)
- 本地偏好值属性: 具有最高偏好值的路由被选择
- 最短AS-PATH的路由
- 最靠近 NEXT-HOP路由器的路由 : 热土豆路由
- 其他标准
BGP报文
BGP 报文交换使用 TCP
- BGP 报文:
- OPEN:建立到对方的TCP连接,并对发送者进行认证
- UPDATE:通告新路径 (或者撤销旧路径)
- KEEPALIVE:在没有UPDATES时保持连结活跃; 也对OPEN请求作出应答
- NOTIFICATION:报告前面报文的错误; 也用于关闭连结
BGP 选路策略
SDN(不是重点,但会考)
-
软件定义网络:的一种新型网络创新架构,可通过软件编程的形式定义和控制网络,具有控制平面和转发平面分离及开放性可编程的特点。
-
核心理念:希望应用软件可以参与对网络的控制管理,满足上层业务需求,通过自动化业务部署,简化网络运维