在网络中,每一台主机和路由器都有网络层。
网络层可以分解为两个互相作用的部分——数据平面和控制平面。
数据平面指网络层中每台路由器的功能,决定了到达路由器输入链路之一的数据报(网络层分组)如何转发到路由器的输出链路之一。
- IP转发:转发基于数据报的目的地址;
- 通用转发:使用数据报首部中的几个不同域的值执行转发和其他功能;
1. 网络层概述
1.1. 转发和路由器选择
网络层的作用:将分组从发送主机转发到接收主机。
为此需要两种网络层功能:
- 转发(forwarding):数据平面中的唯一功能。将到达路由器输入链路接口的分组转发到路由器的输出链路接口的路由器本地动作,由硬件来实现。
- 路由选择(routing):由控制平面实现,决定分组所采用的路由或路径。计算路径的算法被称为路由选择算法(routing algorithm)。时间较长,由软件来实现。
1.1.1. 数据平面
每台路由器都有一个转发表(forwarding table)。
路由器通过使用分组首部的字段值在转发表中索引,指出了该分组将被转发的路由器的输出链路接口。
1.1.2. 控制平面
- 传统的方法
路由选择算法配置插入路由器转发表的内容。
路由器中的路由选择算法与其他路由器中的路由选择算法通信,从而计算出它的转发表的值。
这种通信根据路由选择协议交换包含路由选择信息的路由选择报文。
2. SDN方法
远程控制器计算并分发转发表以供每台路由器使用。路由器只执行转发,没有选择功能。
远程控制器可能由ISP或第三方管理。远程控制器通过交换包含转发表和其他路由选择信息的报文表与路由器通信。
因为计算转发表并与路由器交互的控制器是用软件实现的,故网络是“软件定义”的,所以这种控制平面的方法称为软件定义网络(SDN, Soft-ware-defined Networking)。
1.2. 网络服务模型
网络服务模型(network service model)定义了分组在发送与接收端系统之间的端到端运输特性。
网络层提供的服务包括:
- 确保交付:确保分组最终会到达目的地;
- 具有时延上限的确保交互:在特定的主机到主机时延上限内(如 100ms)交付;
- 有序分组交付:确保分组以发送的顺序到达目的地;
- 确保最小宽带:模仿在发送和接收主机之间的一条特定比特率(如1Mbps)的传输链路行为;
- 安全性:在源加密所有数据报,并在目的地解密;
转发和交换是同样的意思。
分组交换机分为链路层交换机(link-layer switch)和路由器,他们分别基于链路层和网络层数据报中的首部字段值做出转发决定。
2. 路由器的工作原理
路由器有4个组件:
- 输入端口(input port)是物理输入接口,不同于套接字那样的软件接口。
- 执行查找功能;
- 执行终结入物理链路的物理层功能;
- 与位于入链路远端的数据链路层交互来执行数据链路层功能;
2. 交换结构 将输入端口连接到输出端口,是网络路由器的网络。
3. 输出端口 存储从交换结构接收的分组,并通过执行链路层和物理层功能将分组在输出链路上传输。当链路是双向时,输出端口和输入端口成对出现。
4. 路由选择处理器 执行控制平面功能。
- 在传统路由器中,执行路由器选择协议,维护路由选择表与关联链路状态信息,并计算转发表;
- 在SDN路由器中,负责与远程控制器通信,接收远程控制器计算的转发表,并安装在输入端口;
输入端口、输出端口和交换结构由硬件实现;
控制平面由软件在路由选择器上执行。
3. 网际协议
3.1.IPv4 数据报格式
IPv4 数据报中的关键字段:
![e161049e66a54026cae45664d5315b42.png](https://i-blog.csdnimg.cn/blog_migrate/5f1a00714491fd6cbbebd3be80cda53a.jpeg)
- 版本号 4比特,规定了数据报的IP协议版本,让路由器确定如何解释IP数据报的剩余部分;
- 首部长度:4比特,因为IPv4数据报可包含一些可变数量的选项,所以用来确定IP数据报中载荷实际开始的地方。
- 服务类型:包含在IPv4首部中,使不同类型的IP数据报互相区分。
- 数据报长度:IP数据报的总长度(首部加数据)。因为该字段长16比特,所以IP数据报理论最大长度为65535字节。但因为以太网帧的载荷字符,数据报一般不超过1500字节。
- 标识、标志、片偏移:这三个字段与IP分片有关。
- 寿命(Time-To-Live, TTL):确保数据报不会永远在网络中循环。路由器每处理一次,TTL减1,当减为0,该数据报必须丢弃。
- 协议:指示了IP数据报的数据部分应该交给哪个运输层协议。协议号将网络层与运输层绑定在一起,类似于端口号将应用层与运输层绑在一起。
- 首部检验和:帮助路由器检测收到的IP数据报中的比特错误。
- 源和目的IP地址。
- 选项:使IP首部可以被扩展,但很少使用。
- 数据(有效载荷):最重要的字段,包含交付给目的地的运输层报文段和其它类型的数据。
每个数据报承载了20字节的IP首部加20字节的TCP首部以及应用层报文。
3.5.IPv6
大量新的子网和IP节点将32比特的IP地址空间即将用尽,因此开发出IPv6。
![d7de10dd669205c28edf63ed3472745a.png](https://i-blog.csdnimg.cn/blog_migrate/edd95d8e12f87ec276b411b04583e92a.jpeg)
IPv6数据报的主要变化:
- 扩大的地址容量:将IP地址长度从32比特增加到128比特。且引入了任播地址(anycast address),使数据报可以交付给一组主机中的任意一个。
- 简化高效的40字节首部:40字节定长首部允许路由器更快地处理IP数据报。
- 流(flow)标签:给发送方要求特殊处理的流的分组加上标签。
IPv6中定义的字段:
- 版本
- 流量类型
- 流标签
- 有效载荷长度
- 下一个首部
- 跳限制:和寿命相似;
- 源和目的地址
- 数据
IPv6中不再出现的字段:
- 分片/重新组装:这种操作现在只能在源和目的地执行;
- 首部检验和:运输层和链路层已执行了此操作;
- 选项:可能存在下一个首部指出的位置;
4. 通用转发和SDN
基于目的地的转发:
- 查找目的IP地址(匹配);
- 将分组发送到有特定输出端口的交换结构(动作);