概述
- 网络层分为两个相互作用的部分:数据平面和控制平面
- 数据平面:负责转发(forwarding),将分组从一个输入链路接口转移到适当的输出链路接口
- 控制平面:负责路由选择(routing),确定分组从源到目的地所采取的端到端路径
- 转发是路由器的本地动作,路由选择是网络范围的处理
- 网络服务模型:尽力而为服务
- 不保证确保交付
- 不保证端到端时延
- 不保证有最小的带宽
路由器工作原理
路由器结构
- 输入端口(input port)
- 交换结构:连接输入端口和输出端口
- 输出端口
- 路由选择处理器:执行控制平面功能
输入端口处理
- 线路端接 -> 数据链路处理 -> 查找,转发,排队
- 转发方式:基于目的地转发(destination-based forwarding),通用转发(generalized forwarding)
- 最长前缀匹配(longest prefix matching):在转发表中寻找最长的匹配项,向与最长前缀匹配相关联的链路接口转发分组
交换结构(swiching fabrics)
- 将分组从入端口发送到合适的输出端口
- 经内存交换(switching via memory)
- 分组由输入端口复制到内存,再由内存复制到输出端口
- 吞吐量(分组由输入端口被传送到输出端口的总速率)由内存带宽限制,若每秒最多从内存写入或读出B个分组,则吞吐量必定小于B/2
- 经总线交换(switching via bus)
- 分组从输入端口经一根共享总线直接传送到输出端口
- 输入端口为分组加上一个标签,该分组能够被所有输出端口收到,但只有与标签匹配的端口能够保存该分组,标签在输出端口被去除
- 一次只有一个分组能够跨越总线
- 交换带宽受到总线速率的限制
- 经互联网络交换(switching via interconnection network)
- 多条总线,纵横式网络,多级交换网络
- 纵横式网络:只要没有其他分组当前被转发到该输出端口,转发到输出端口的分组不会被到达输出端口的分组阻塞
- 多级交换网络:使来自不同输入端口的分组通过交换结构同时朝相同的输出端口并行
排队
- 输入排队
- 交换结构不能快得使所有到达分组无时延地通过
- 在输入端口出现分组排队,到达的分组要加入队列中
- 线路前部阻塞(Head-of-the-line blocking)
- 输出排队
- 分组经由交换结构到达的速度大于链路发送的速度
- 分组丢弃策略(Drop policy):当缓冲区不够时丢弃什么分组
- 分组调度
- 排队的分组如何经输出链路传输
- 先进先出(First-in-First-out)
- 优先权排队(priority queuing):到达输出链路的分组被分裂放入输出队列中的优先权类,每个优先权类有自己的队列
- 循环排队(round robin queuing):在不同类中轮流提供服务,类之间不存在严格的服务优先权
- 加权公平排队(weighted fair queuing)
IP协议
IP数据报格式
- 版号:数据报的IP协议版本
- 首部长度
- 服务类型
- 数据报长度:IP数据报的总长度
- 标识(identifier):与IP分片相关
- TTL:用来确保数据报不会永远在网络中循环,每当一台路由器处理数据报,TTL字段减一,若TTL字段减为0,丢弃该数据报
- 协议:用于关联网络层和运输层,表明数据要交给那个运输层协议,与运输层报文段中端口号的作用类似
- 首部检验和:将首部的每两个字节当作一个数,用反码算数对这些数求和
- 源和目的地IP地址
- 选项:一些可以扩展的选项
- 数据
IPv4编址
- 接口:主机与物理链路之间的边界叫做接口,路由器与它的任意一条链路之间的边界也叫做接口
- 一个IP地址与一个接口向关联,而不是主机或路由器
- IP地址长度为32比特
- IP地址一般用点分十进制记法(dotted-decimal notation),每个字节用它的十进制形式书写,各字节之间用句点隔开
- 子网:设备接口可以不经过路由器直接通信
- 一个接口的IP地址的一部分由其连接的子网确定
- 子网掩码(network mask):指示子网地址是IP地址左边的若干比特
- 无类别域间路由选择(Classless Interdomain Routing, CIDR)
- 形式为a.b.c.d/x,IP地址划分为两部分,x指示第一部分的比特数
- 地址的x最高比特构成了该IP地址的网络部分,一般称为该地址的前缀(prefix)
- 一些特殊的IP地址
- IP广播地址:255.255.255.255
- 本机IP地址:0.0.0.0
- 私有的IP地址:10.0.0.0-10.255.255.255,192.168.0.0-192.168.255.255,172.16.0.0-172.31.255.255
IP地址分配
- 组织获取一块地址
- 主机通过动态主机配置协议(Dynamic Host Configuration, DHCP)获取地址,步骤如下:
- DHCP服务器发现:使用广播地址255.255.255.255和本机源地址0.0.0.0,发送DHCP发现报文
- DHCP提供:DHCP服务器收到DHCP发现报文后进行响应,使用广播地址255.255.255.255,提供发现报文的事务ID,推荐的IP地址,网络掩码以及IP地址租用期(address lease time)
- DHCP请求:客户从一个或多个服务器中选择一个,向选中的服务器用DHCP请求报文进行响应,回显配置的参数
- DHCP ACK:对DHCP请求报文进行响应
网络地址转换(network address translation, NAT)
- NAT路由器对外部世界来说如同一个具有单一IP地址的单一设备
- 从NAT中发送出去或者发送给NAT内部主机的分组具有相同的IP地址,不同的端口号
- 反对意见:
- 路由器应当处理只能到达网络层的分组
- 违反了主机应当彼此直接对话的原则
IPv6
- 32比特的IP地址即将用尽
- 与IPv4相比缺少的部分
- 没有检验和
- 没有分片/重新组装字段
- 没有选项字段
- 迁移
- 建隧道(tunneling):将IPv6数据报放到IPv4数据报的数据部分中