偷博!Secretly fighting~ 哈哈
(有道翻译)
又是美好学习的一天!邂逅了一首安静美好的小诗——《门前》
我多么希望,有一个门口
早晨,阳光照在草上
我们站着
扶着自己的门扇
门很低,但太阳是明亮的
草在结它的种子
风在摇它的叶子
我们站着,不说话
就十分美好
有门,不用开开
是我们的,就十分美好
…
————1982年8月
啊,确实十分美好~
进入正题(get right to the point)
一、导论
1.学习网络层:数据平面的Goal/Aim
-
理解网络服务的基本原理,聚焦于其数据平面
网络服务模型
转发和路由
路由器工作原理
通用转发 - 互联网中网络层协议的实例和实现
2.网络层服务
- 在发送主机和接收主机对之间传送段(segment)
- 在发送端将段封装到数据报(datagram)中
- 在接收端,将段上交给传输层实体
- 网络层协议存在于每一个主机和路由器
-
路由器检查每一个经过它的IP数据报的头部
2.1网络层的关键功能。(转发、路由)
-
转发: (是一种局部的概念/功能…数据平面的…依赖于路由表…)
将分组从路由器的输入接口转发到合适的输出接口 -
路由: (是一种全局的概念/功能…控制平面的…路由表…)
使用路由算法来决定分组从发送主机到目标接收主机的路径
旅行的类比:
转发: 通过单个路口的过程
路由: 从源到目的的路由路径规划过程
两个简单的概念,相互配合就能够把源主机的分组传输到目标主机
3.网络层:数据平面、控制平面
数据平面
- 本地,每个路由器功能
- 决定从路由器输入端口到达的分组如何转发到输出端口
- 转发功能:
- 传统方式:基于目标地址+转发表
- SDN方式:基于多个字段+流表
控制平面
- 网络范围内的逻辑
- 决定数据报如何在路由器之间路由,决定数据报从源到目标主机之间的端到端路径
- 2个控制平面方法:
- 传统的路由算法: 在路由器中被实现
(就只能匹配路由表,做分组的转发) - software-defined networking (SDN): 在远程的服务器中实现
(Compare to the traditional routing algorithm,SDN is much more flexible.
SDN 可以多个动作:转发、Block、泛洪、修改某些字段…
- 传统的路由算法: 在路由器中被实现
一张简单的图
3.1转发-传统方式:
每-路由器(Per-router)控制平面
-
在每一个路由器中的单独路由器算法元件,在控制平面进行交互
分布式的计算路由表,ip协议实体根据路由表来匹配,再转发到来的分组
-
路由和转发的相互作用
紧耦合的控制平面和数据平面,以及分布式的路由表(遍布全球,你算你的我算我的…)
causing some problems: 路由器的运行逻辑修改极其困难。很 "死板(inflexible/stiff)"
“路由实现控制功能,路由表是控制平面和数据平面的一个 “粘合体””
3.2转发-SDN方式:
(标题链接是百度百科的介绍)
———— 改变僵化的传统路由局面
摘了百度百科上的几句下来:
SDN中的接口具有开放性,以控制器为逻辑中心 [1] ,南向接口负责与数据平面进行通信,北向接口负责与应用平面进行通信,东西向接口负责多控制器之间的通信。
·
SDN的本质特点是控制平面和数据平面的分离以及开放可编程性。通过分离控制平面和数据平面以及开放的通信协议,SDN打破了传统网络设备的封闭性。此外,南北向和东西向的开放接口及可编程性,也使得网络管理变得更加简单、动态和灵活
-
逻辑集中的控制平面
一个不同的(通常是远程的)控制器与本地控制代理(CAs)交互
(这里的CA:Control Agent控制代理)
控制平面的功能,
集中交给了一个Remote Server上的远程控制器(Controller)/网络操作系统,去做。
然后Remote Controller 计算出的流表 ,通过南向接口,交给分组交换设备的CA,
各个CA对流表进行装载,然后对流表中的多个字段进行matching
匹配完成后,采取流表对应的表项,所相应的动作
4.网络服务模型
Q: 从发送方主机到接收方主机传输数据报的“通道”,网络提供什么样的服务模型?
-
对于单个数据报的服务:
可靠传送(保序、无误)
延迟保证,如:少于40ms的延迟; -
对于数据报流的服务:
保序数据报传送
保证流的最小带宽
分组之间的延迟差
(要是延迟差为0,那么接收方就“同步接收分组”,对于Receiver是一个很好的事情)
4.1连接建立
(TCP 的连接,是面向连接,
只体现在源主机和目标主机之间,而具体的物理上的,真正的连接没有体现)
网络层中,主机和主机之间的连接称为,有连接
-
在某些网络架构中是第三个重要的功能
- ATM, frame relay, X.25
-
在分组传输之前,在两个主机之间,在通过一些路由器所构成的路径上建立一个网络层连接
- 涉及到路由器
-
网络层和传输层连接服务区别:
网络层: 在2个主机之间,涉及到路径上的一些路由器
传输层: 在2个进程之间,很可能只体现在端系统上
(TCP连接)
二、路由器组成
路由器结构概况(高层面(非常简化的)通用路由器体系架构)
- 路由: 运行路由选择算法/协议 (RIP, OSPF, BGP)-生成路由表
- 转发: 从输入到输出链路交换数据报-根据路由表进行分组的转发
下图中间大红框框,应该是 “high-speed switching fabric” 高速开关结构
其中四角的红蓝绿颜色的框框分别代表:
图中分布式交换有queuing(课件pdf又错了,多了个e),
是因为这个 “红色框框”左右两边的箭头的传输速度不配。。
一般来说,右箭头要比左箭头faster。
但是根据生活经验 ,排的队越长说明排 队这一方的“请求服务”的 速度更快
·
出现queuing的原因是这样的:
输入端口缓存
有可能因为排队,在输入端口被drop
也有可能在输出端口被drop
注意:
- 实际中的路由器的Router input ports和 output ports 是同一个端口,
- 只是为了方便输入输出端口的讲解才分成两个“独立的输入输出端口”
到此为止,介绍了input ports了,
下面介绍input ports 和 output ports之间的 switch fabric
1.交换结构(Switching Fabric )
-
将分组从输入缓冲区传输到合适的输出端口
-
交换速率:分组可以按照该速率从输入传输到输出 (单位PPM,packet per minute)
运行速度经常是输入/输出链路速率的若干倍
N 个输入端口:
交换机构的交换速度是输入线路速度的N倍比较理想,才不会成为瓶颈 -
3种典型的交换机构
分别介绍如下:
1.1通过内存交换
-
第一代路由器:
在CPU直接控制下的交换,采用传统的计算机
分组被拷贝到系统内存,CPU从分组的头部提取出目标地址,
查找转发表,找到对应的输出端口,拷贝到输出端口
转发速率被内存的带宽限制
(数据报通过BUS (系统总线) 两遍)
一次只能转发一个分组(速度慢)
1.2通过总线(并非系统总线)交换
- 数据报通过共享总线,从输入端口转发到输出端口
- 总线竞争: 交换速度受限于总线带宽
- 1次处理一个分组
- 1 Gbps bus, Cisco 1900; 32 Gbps bus, Cisco 5600;
对于接入或企业级路由器,速度足够**(但不适合区域或骨干网络)**
1.3通过互联网络(crossbar等)的交换
啊这,啥啊,互联网络,没有好名词嘛?比如说:穿越火条、交叉木条…哈哈哈
- 同时并发转发多个分组,克服总线带宽限制
- Banyan(榕树)网络,crossbar(纵横)和其它的互联网络被开发,
将多个处理器连接成多处理器 - 当分组从端口A到达,转给端口Y;控制器短接(短路)相应的两个总线
- 高级设计:将数据报分片为固定长度的信元,通过交换网络交换
- Cisco12000:以60Gbps的交换速率通过互联网络
2.输出端口
2.1输出端口排队
假设交换速率R_switch 是R_line的N倍(N:输入端口的数量)
当多个输入端口同时向输出端口发送时,
缓冲该分组(当通过交换网络到达的速率超过输出速率则缓存)
排队带来延迟,由于输出端口缓存溢出则丢弃数据报!
Besides,先来的不一定先output。这is up to Scheduling Rules
2.2需要多少缓存?
2.3调度机制
调度: 选择下一个要通过链路传输的分组
-
FIFO (first in first out) scheduling: 按照分组到来的次序发送
-
优先权调度:发送最高优先权的分组
(具体咋标记是高级计算机网络中的内容,研究生阶段会上) -
Weighted Fair Queuing (WFQ,加权公平队列):
-
其他的Scheduling(vip加速服务啊…svip加速服务啊…铂金会员…星钻会员…哈哈)
突然好奇什么是VIP了:
于是我baidu一下:
VIP是very important person的缩写,起源于上个世纪80年代,当时电子邮件在美国一些发达地区很流行,人们没事就发一封快捷简单便宜的邮件向朋友问候.一个人在发送邮件的时候不想让其他人知道邮件的内容,所以就把邮件标名为very important person,后来VIP这个词被沿用到现在.字面意思是很重要的人,有文采的翻译就是贵宾,大人物之类的.
本篇结束