1.网络层服务简介
2.网络层: 数据平面, 控制平面
3.流表
4.网络服务模型
1.网络层服务简介
csharp
复制代码
a.在发送方主机和接收方主机对之间传送数据报
b.在发送端将TCP段或UDP数据报封装到数据报中
c.在接收端, 将TCP段或UDP数据上传给传输层实体
d.网络层协议存在于每一个主机和路由器
e.路由器检查每一个经过它的IP数据报的头部
csharp
复制代码
网络层的功能:
a.转发: 将分组从路由器的输入接口转发到合适的输出接口
b.路由: 使用路由算法来决定分组从发送方主机到目标接收方主机的路径
- 路由选择算法
- 路由选择协议
c.旅行的类比:
- 转发: 通过单个路口的过程
- 路由: 从源到目标的路由规划过程
2.网络层: 数据平面, 控制平面
csharp
复制代码
1).数据平面
a.本地, 每个路由器功能
b.决定从路由器输入端口到达的分组如何转发到输出端口
c.转发功能
- 传统方式: 基于目标地址 + 路由表
- SDN方式: 基于多个字段匹配 + 流表
2).控制平面
a.网络范围内的逻辑
b.决定数据报从源到目标主机之间的端到端路径
c.2个控制平面方法
- 传统的路由算法: 在路由器中被实现
- SDN(software-defined networking, 软件定义网络): 远程的服务器中实现
csharp
复制代码
传统方式的控制平面在路由器的算法元件实现
csharp
复制代码
传统方式: 路由和转发的相互作用
csharp
复制代码
SDN方式: 逻辑集中的控制平面, 一个远程的控制器与本地控制代理进行交互
3.流表
csharp
复制代码
1).流表简介
a.流是一系列具有共同特征的数据包的集合; 比如, 从你的电脑(IP A)到视频网站服务器(IP B)的同一个TCP连接的所有数据
包, 就可以被看作一个"流"
b.流表是SDN交换机(一种新型的网络交换设备)中存储的一张表, 它由SDN控制器集中计算和下发, 告诉交换机如何匹配和处
理不同的"流"
2).流表的构成
a.匹配域: 定义一组规则, 用来识别一个"流"; 不仅可以基于目标IP地址,还可以基于网络包头的几乎任何字段进行匹配
- 二层: 入端口、源MAC地址、目的MAC地址、以太网类型
- 三层: 源IP地址、目的IP地址、IP协议类型
- 四层: 源TCP/UDP端口、目的TCP/UDP端口
b.动作: 当数据匹配上这条规则后, 应该执行什么操作
- 转发: 将数据包从某个指定的物理端口发送出去
- 丢弃: 直接扔掉数据包(用于实现防火墙功能)
- 转发到控制器: 将这个包送给SDN控制器做进一步决策
- 修改字段: 修改数据包的二层, 三层或四层头部信息
csharp
复制代码
流表实例
a.数据包到达, 一个数据包从交换机的某个网络端口进入
b.提取关键特征, 交换机解析这个数据包的包头, 提取出关键的识别信息, 也就是匹配域, 例如:
- 源/目的MAC地址
- 源/目的IP地址
- 协议类型(TCP/UDP)
- 源/目的端口号
- 入端口
c.查询流表, 交换机拿着这些提取出来的"特征", 去本地的一个或多个流表中进行查询; 流表就像一个由控制器预先下发的
规则手册
d.匹配判断, 在流表中找到了一个完全匹配的流表项(即获得了动作, 交换机执行该流表项中指定的动作 )
- 源IP = 10.0.0.1, 目的IP = 任何, 动作 = 丢弃 -> 封锁来自10.0.0.1的所有流量
- 源IP = 192.168.1.100, 目的TCP端口 = 22, 动作 = 转发至控制器) -> 将来自某台主机的流量上报给控制器进行安全分
析
4.网络服务模型
csharp
复制代码
互联网所采用的网络服务模型是尽力而为服务模型, 网络层会尽自己最大的努力来交付数据报, 但不提供任何保证; 尽力而为
就像寄平信, 邮局会尽力把你的信送到, 但不保证一定送到, 也不保证多久能送到, 信件还可能不按顺序到达; 成本低, 简
单通用
a.不保证交付: 数据包可能在网络中丢失(如路由器缓冲区溢出时被丢弃)
b.不保证按时交付: 数据包可能会有很长的、不确定的延迟
c.不保证有序交付: 后发送的数据包可能比先发送的包先到达目的地(因为网络路径可能不同)
d.不保证带宽: 不保证一个数据流能获得稳定的传输速率