四、网络层
网络层服务
在发送主机和接收主机之间对传送段(segment)
在发送端将段封装到数据报中
在接收端,将段上交给传输层实体
网络层协议存在于每一个主机和路由器
路由器检查每一个经过它的IP数据报头部
网络层关键功能
转发
数据平面(实施怎么走)
将分组从路由器的输入接口转发到合适的输出接口
路由
控制平面(决定怎么走)
使用路由算法来决定分组从发送主机到目标接收主机的路径
- 路由选择算法
- 路由选择协议
传统方式
在每一路由器中的单独路由器算法原件,在控制平面进行交互
SDN方式
一个不同的(通常是远程的)控制器与本地控制代理(CAs)交互
网络服务模型
连接建立
网络层服务模型
网络层:数据平面
路由器组成
输入端口功能
输入端口缓存
交换结构
通过内存交换
通过总线交换
通过互联网络的交换
输出端口功能
输出端口排队
调度机制
调度:选择下一个要通过链路传输的分组
丢弃策略:
- tail drop:丢弃刚到达的分组
- priority:根据优先权丢失/移除分组
- random:随机地丢弃/移除
FIFO scheduling:
按照分组到来的次序发送
优先权调度:
发送最高优先权分组
分为多类,不同类别有不同的优先权
- 类别可能依赖于标记或者其他的头部字段
- 先传高优先级的队列中的分组,除非没有
- 每类中的分组按照FIFO次序传输
Round Robin scheduling:
将分组分为多类
循环扫描不同类型的队列,发送完一类的一个分组,再发送下一个类的一个分组,循环所有类
Weighted Fair Queuing:
一般化的Round Robin
在每段时间内,每个队列得到的服务是和权重成正比的
每个类在每一个循环中获得不同权重的服务量
IP:Internet Protocol
网络层功能
IP数据报格式
IP分片和重组(Fragmentation & Reassembly)
例子
IP编址
IP地址:32位表示,对主机或者路由器的接口编址
接口:主机/路由器和物理链路的连接处
- 路由器通常有多个接口
- 主机也有可能有多个接口
- IP地址和每一个接口关联
一个IP地址和一个接口想关联
子网(Subnets)
IP地址:
- 子网部分(高位bits)
- 主机部分(低位bits)
一个子网内的节点它们的IP地址高位部分相同,这些节点构成的网络的一部分叫做子网
无需路由器介入,子网内各主机可以在物理上相互直接到达
例子
上述网络有6个子网
IP地址分类
全0和全1的地址有特殊定义,这里需要去掉
特殊IP地址
约定
- 子网部分:全0——本网络
- 主机部分:全0——本主机
- 主机部分:全1——广播地址,这个网络的所有主机
特殊IP地址
127.x.x.x
表示回路(测试)地址,该地址会在到达IP层时,会反转朝上,表示本机
内网(专用)IP地址
CIDR(Classless InterDomain Routing)
无类域间路由
- 子网部分可以在任意位置
- 地址格式
a.b.c.d/x
,x表示地址中子网号的长度
与子网掩码进行与操作就可以得到一个网络号,主机号全为零(因为不需要)
子网掩码(subnet mask)
转发表和转发算法
如何获取一个IP地址
系统管理员将地址配置在一个文件中
DHCP(Dynamic Host Configuration Protocol):从服务器中动态获得一个IP地址
DHCP
允许主机再加入网络的时候,动态地从服务器那里获得IP地址
工作概况
DHCP client-server scenario
建立在UDP之上
如何获得一个网络的子网部分
从ISP获得地址块中分配一个小地址块
层次编址:路由聚集(route aggregation)
层次编址允许路由信息的有效广播
IPX的路由器将IP0-IPN的IP聚集起来之后,再向外通告路由
当组织进行了迁移,例如组织7从IPX迁移到IPY时,IPY路由器将会更改通告
这样后就需要进行最长前缀匹配,因为IPX和IPY都对200.23.18.0进行了成功的匹配,但是IPY通告的前缀最长,更精准,所以下一跳将会是IPY路由器
ISP如何获得一个地址块
ICANN:Internet Corporation for Assigned Names and Numbers
- 分配地址
- 管理DNS
- 分配域名
NAT:网络地址转换(Network Address Translation)
动机
本地网络只有一个有效IP地址
实现
NAT路由器必须具备:
路由器用端口号区分内网主机
问题
NAT穿越
三种方案
IPV6
动机
数据报格式
- 固定的40字节头部
- 数据报传输过程中,不允许分片
头部
与IPV4的变化
从IPV4到IPV6的平移
隧道(Tunneling)
在IPV4路由器之间传输IPV4数据报中携带IPV6数据报
通用转发和SDN
数量众多、功能各异的中间盒
网络设备控制平面的实现方式特点
传统方式实现网络功能的问题
SDN的主要思路
SDN控制平面和数据平面分离的优势
垂直集成和水平集成的差异
SDN特点
1、通用“flow-based”基于流的匹配+行动(OpenFlow)
2、控制平面和数据平面分离
3、控制平面功能在数据交换设备之外实现
4、可编程控制应用,在控制器之上以网络应用形式实现各种网络功能
SDN架构
数据平面交换机
SDN控制器
控制应用
OpenFlow数据平面抽象
流表的表项结构
抽象
match+action:统一化各种网络设备提供的功能
路由器、防火墙、交换机、NAT都能由match+action实现相关功能
例子
网络层:控制平面
概念
路由的概念
网络的图抽象
边和路径的代价
最优化原则(optimality principle)
汇集树(sink tree)
- 此节点到所有其它节点的最优路径形成的树
- 路由选择算法就是为所有路由器找到并使用汇集树
路由的原则
路由选择算法的原则
路由选择算法的分类
①全局
①分布式
②静态
路由随时间变化缓慢
②动态
路由变化很快
- 周期性更新
- 柑橘链路代价的变化而变化
路由选择算法
Link State
LS路由工作过程
链路状态路由选择(link state routing)
1、发现相邻节点,获知对方网络地址
2、测量到相邻节点的代价(延迟、开销)
3、组装一个分组,描述相邻节点的情况
4、将分组通过扩散的方法发送到所有其它路由器
5、通过Dijkstra算法找出最短路径
Dijkstra算法缺点
可能会引起震荡
LS应用情况
- OSPF协议是一种LS协议,被用于Internet上
- IS-IS(Internet system-intermediate system):被用于Internet主干中,Netware
Distance Vector
距离矢量路由选择(distance vector routing)
动态路由算法之一
DV应用情况
ARPANET、Internet(RIP)、DECnet
基本思想
具体实现
例子
Bellman-Ford例子
距离矢量算法
核心思路
无穷计算问题
水平分裂(split horizon)算法
一种对无穷计算问题的解决办法
LS和DV算法的比较
因特网中自治系统内部的路由选择
RIP(Routing Information Protocol)
RIP通告(advertisements)
例子
链路失效和恢复
RIP进程处理
OSPF(Open Shortest Path First)
高级特性(RIP没有)
层次性OSPF路由
ISP之间的路由选择:BGP
层次路由
一个平面的路由
平面路由的问题
层次路由:将互联网分成一个个AS(路由器区域)
路由变成了:2个层次路由
层次路由的优点
解决了规模问题
解决了管理问题
互联网AS间路由:BGP
eBGP、iBGP连接
BGP基础
路径的属性 & BGP路由
BGP路径通告
BGP报文
BGP、OSPF、转发表表项
路由器是如何设置到这些远程子网前缀的转发表表项的
BGP路径选择
热土豆路由
BGP:通过路径通告执行策略
内部网关协议和外部网关协议差异很大
SDN(Software Defined Network)控制平面
SDN特点
SDN架构
数据平面交换机
SDN控制器
控制应用
SDN控制器里的元件
OpenFlow协议
控制器到交换机的报文
交换机到控制器的报文
例子
OpenDaylight(ODL)控制器
ONOS控制器
SDN面临的挑战
网络管理和SNMP
网络管理
- 自治系统(autonomous system):1000多个相互的软件和硬件部件
- 其它复杂的系统也需要被监视和控制
“网络管理”包括了硬件、软件和人类元素的设置,综合和协调,以便监测,测试,轮询,配置,分析,评价和控制网络和网元资源,用合理的成本满足实时性,运行能和服务质量的要求