1,网络层-数据平面
1.1,几个概念
转发:局部的数据处理
路由:全局的控制功能
数据平面:
- 本地:每个路由器功能
- 决定从路由器输入端口到达的分组如何转发到输出端口
- 转发功能:传统方式,基于目标地址+转发表;SDN方式,基于多个字段+流表。
控制平面:
- 网络范围内的逻辑
- 决定数据报如何在路由器之间路由,决定数据报从源到目标的端到端路径
- 2个控制平面方法:传统的路由算法,在路由器中被实现;software-defined-networking(SDN),在远程服务器中实现。
网络层和传输层连接服务的区别:
- 网络层:在2个主机之间,涉及到路径上的一些路由器
- 传输层:在2个进程之间,很可能只体现在端系统上(TCP连接)
1.2,网络层服务
- 在发送主机和接受主机对之间传送段(segment);
- 在发送端将段封装在数据报中;
- 在接收端将段封上交给传输层实体;
- 网络层协议存在于每一个主机和路由器
- 路由器检查每一个经过他的IP数据报的头部
1.2.1,路由器组成
路由器分诶路由选择部分和分组转发部分。
- 路由选择部分:也被称为控制部分。核心部件是路由选择处理机。
- 分组转发部分:分为三部分,交换机构(switch fabric),一组输入端口,一组输出端口。交换结构又称为交换组织,它的作用就是根据转发表进行处理,将某个端口进来的分组从另外一个合适的输出端口转发出去。
交换结构:
- 通过存储器(memory)
- 通过总线(bus)
- 通过互联网络(crossbar)
第一代交换结构:通过内存交换
- 在CPU直接控制下的交换
- 分组被拷贝到系统内存,CPU从分组的头部提取出目标地址,查找转发表,找到对应的输出端口,拷贝到输出端口
- 转发速率被内存的带宽限制(数据报通过bus两遍)
- 一次只能转发一个分组
第二代交换结构:通过总线交换
- 数据报通过共享总线,从输入端口转发到输出端口
- 总线竞争:交换速度受限于总线带宽
- 一次处理一个分组
- 对于接入或企业级路由器速度足够,不适合区域或骨干级网络
第三代交换结构:通过互联网络的交换
- 同时并发转发多个分组,克服总线带宽限制
- banyan(榕树网络),crossbar(纵横)网络和其他的互联网络被开发,将多个处理器连接成多处理器
- 当分组从端口A到达,转给端口y:控制器短接相应的两个总线
调度机制:输出端口采用的机制来控制顺序,选择下一个要通过链路传输的分组。例如FIFO(先入先出)。
1.2.2,IP(Internet protocol)
1.IP协议是TCP/IP协议簇中的核心协议,也是TCP/IP的载体。所有TCP,UDP,ICMP数据都以IP数据报格式传输。
2.IP数据报格式:数据报宽度为32bit,包含
- 4位版本号
- 4位首部长度
- 8位服务类型
- 16位总长度(字节数)
3.IP分片和重组:网络链路层有MTU(最大传输单元)-链路层帧所携带的最大数据长度。不同链路类型有不同的MTU。
所以大的IP数据报在网络上被分片(fragmented):
- 一个数据报被分割为若干小的数据报,具有相同的ID,不同的偏移量,最有一个分片标记为0.
- 重组只在最终的目标主机进行。重组时通过不同片的偏移量(offset)确认片的顺序。
- IP头部的信息被用于标识,排序相关分片。IP地址全0和全1的网络不用,子网IP全0对应本网络,主机全0对应本主机。
4.子网:IP地址分为高位bits(子网部分)和低位bits(主机部分)。
一个子网内的节点(主机或路由器)它们的IP地址的高位部分相同,这些节点构成的网络的一部分叫做子网。
无需路由器介入,子网内各主机可以再物理上相互直接到达。
互联网以子网为单位计算路由,而不是以IP为单位进行计算。
5.内网(专用)IP地址:
专用地址:地址空间的一部分供专用地址使用,不会被当做公用地址分配,也不会与公用地址重复。
6.IP地址划分:所有IP地址可以分为5类,A,B,C,D,E,总长度全部为32bit。
- A类:最高位为0,接着7位网络号,24位主机号。地址范围为0.0.0.0到127.255.255.255
- B类:最高两位为10,接着14位网络号,16位主机号。地址范围为128.0.0.0到191.255.255.255
- C:最高三位为110,接着21位网络号,8位主机号。地址范围为192.0.0.0到223.255.255.255
问题:大多数组织申请B类,A类浪费了大量地址
7.针对6的问题,提出了新的划分方案,CIDR(classless interdomain routing)无类域间路由
- 子网部分可以在任意位置
- 地址格式:a.b.c.d/x,其中x是地址中子网号的长度
CIDR更灵活,根据情况选择网络位与主机位。在计算路由时与子网掩码进行“与运算”(把主机部分置零,因为主机部分在计算路由时无用)。
掩码(masking):使用掩码区分网络部分与主机部分,掩码使用与IP地址一样的格式,网络部分和子网部分全1,主机部分全0。
8.主机如何获取一个IP地址:通过DHCP技术,从服务器动态的获取IP地址,一般的路由器都带有DHCP功能。
9.第三种编址方式:层次编址(路由聚集,route aggregation)
10.网络地址转换(WAT):内网地址->可用的外网地址(一个机构共用一个外网地址)。
问题:出去没问题,外网主动连接时找不到内网设备,NAT穿越问题。
解决方法:
11.IPV6
诞生的原因:32bit地址空间很快被用完,头部格式改变帮助加速处理和转发,头部格式改变帮助QoS。
IPV6数据报格式:
- 固定的40字节头部
- 数据报传输过程中,不允许分片(让源主机分片)
1.2.3,通用转发和SDN
1.每个路由器的控制平面:每个路由器都有实现路由算法原件,形成传统IP实现方式的控制平面。
2.SDN:逻辑上集中的控制平面
一个不同的(通常是远程)控制器和CA交互,控制器决定分组转发的逻辑(可编程),CA所在设备执行逻辑。
SDN的主要思路:
- 网络设备数据平面和控制平面分离
- 数据平面-分组交换机
-
- 将路由器,交换机和目前大多数网络设备的功能进一步抽象成:按照流表(由控制平面设置的控制逻辑)进行PDU(帧,分组)的动作(包括转发、丢弃、拷贝、泛洪、阻塞)
-
- 统一化设备功能:SDN交换机(分组交换机),执行控制逻辑
- 控制平面-控制器+网络应用
-
-
SDN架构:SDN控制器,控制应用,流表(openflow)
SDN控制器:
- 维护网络状态信息
- 通过上面的北向API和网络控制应用交互
- 通过下面的南向API和网络交换机交互
- 逻辑上集中,实现上采用分布式方法
2,网络层-控制平面
2.1,传统路由算法,动态路由选择算法
1.link state(全局算法)链路状态算法:所有路由器有完整的拓扑和边的代价的信息
2.distance vector(局部算法)
汇集树(sink tree):
- 此节点到其他节点的最优路径形成的树
- 路由选择算法是为所有路由器找到并使用汇集树
2.LS算法的路由工作工程
- 各点获得整个网络拓扑,网络中所有代价等信息
- 使用LS路由选择算法,计算本站点到其他站点的最优路径(汇集树,通过dijstra算法获得),得到路由表
- 按此路由表转发分组(datagram方式)
3.距离矢量路由选择(DV routing)
核心思路:
- 每个节点都将自己的距离矢量估计值传送给邻居,定时或者DV有变化时,让对方去算
- 当x从邻居接收到DV时,自己运算,更新它自己的距离矢量(使用B-Fequation)
问题:无穷计算问题(通过水平分裂算法解决,但环状拓扑时该算法不可用),即好消息传得快,坏消息传的慢。
4.LS和DV算法比较
n个节点:
- 消息复杂度(DV优):LS有E条链路,发送报文O(nE),DV只和邻居交换信息
- 收敛时间(LS优):LS复杂度O(n^2),有可能震荡;DV收敛较慢,可能存在路由环路,无穷计算问题
- 健壮性:路由器故障会发生什么(LS优)。LS:节点会通告不正确的链路代价;每个节点只计算自己的路由表;错误信息影响较小,局部。
DV:DV节点可能通告对全网所有节点的不正确路径代价;每个节点的路由表可能被其他节点使用,错误扩散到全网。
2.2,因特网中自治系统内部协议(关注性能)
又被称为内部网关协议(IGP),有路由选择信息协议(RIP)和开放最短路径协议(OSPF)。
2.2.1,RIP协议
RIP协议是一种内部网关协议(IGP),是一种动态路由选择协议,用于自治系统(AS)内的路由信息传递。基于距离矢量算法(DV)。
工作原理:以应用进程的方式实现,通告报文通过UDP报文传送,周期性重复。RIP最多支持的跳数为15,16则为不可达。
2.2.2,OSPF协议(open shortest path first,基于LS算法)
使用五种不同类型的分组(报文):
- 问候分组
- 数据库描述分组
- 链路状态请求分组
- 链路状态更新分组
- 链路状态确认分组
相对于RIP协议新增的特性:
- 安全
- 允许多个代价相同的路径存在(RIP中只有一个)
- 对每一个链路,不同的TOS有多重代价矩阵
- 对单播和多播的集成支持
- 在大型网络中支持层次性OSPF
层次性的OSPF路由:
- 2个级别的层次性:本地,骨干。链路状态通告仅在本地区域area范围内进行;每个节点拥有本地区域的拓扑信息
- 区域边界路由器:“汇总”到自己区域内网络的距离,向其他区域边界路由器通告
- 骨干路由器:仅仅在骨干区域内,运行OSPF路由
- 边界路由器:链接其他的AS’s
2.3,因特网自治系统间的路由选择协议
又被称为外部网关协议(EGP协议)。
层次路由:将互联网分成一个个AS(路由器区域):
- 某个区域内的路由器集合,自治系统(autonomous system,AS)
- 一个AS用AN number(ASN)唯一标识
- 一个ISP可能包括一个或者多个AS
路由变成了两个层次路由:
- AS内部路由,使用IGP协议,如RIP,OSPF,IGRP协议
- AS间运行外部网关协议(EGP),如BGP协议(边际网关协议)
BGP提供给每个AS以以下方法:
- eBGP:从相邻ASes那里获得子网可达信息
- iBGP:将获得的子网可达信息传遍AS内部的所有路由器
- 根据子网可达信息和策略来决定到达子网的“好路径”
BGP算法基于距离矢量算法。
BGP回话:2个BGP路由器在一个半永久的TCP连接上交换BGP报文。
BGP路径选择:路由器可能获得一个网络前缀的多个路径,路由器必须进行路径的选择,路由选择可以基于:
- 本地偏好值属性:偏好策略决定
- 最短AS-PATH:AS的跳数
- 最近的NEXT-HOP路由器:热土豆路由器
- 附加的判断:使用BGP标示
RIP,OSPF,BGP比较
RIP使用UDP,OSPF使用IP,BGP使用TCP。为什么这样做?
答:RIP只和邻站交换信息,UDP不保证可靠交付,但UDP开销小,可以满足RIP要求,并且由于使用UDP,RIP周期性的与邻站交换信息,来克服UDP不可靠的缺点。
OSPF使用可靠的泛洪法,所以直接使用IP,好处是灵活性好开销小。
BGP需要交换整个路由表和更新信息,所以要保证正确,运用TCP,由于BGP使用TCP所以能够保证可靠交付,用不着周期性交互信息。
2.4,SDN控制
传统控制难实现流量工程的特性,SDN下简单。
SDN特点:
- 通用“flow-based”基于流的匹配+行动(eg:openflow)
- 控制平面和数据平面的分离
- 控制平面功能在交换设备之外实现
- 可编程控制应用
2.4.1,SDN架构
1.数据平面交换机
- 快速、简单、商业化交接设备采用硬件实现通用转发功能。
- 流表被控制器计算和安装
- 基于南向API(例如openflow),SDN控制器访问基于流的交换机
- 也定义了和控制器的协议(例如openflow)
2.SDN控制器(网络OS)
- 维护网络状态信息
- 通过上面的北向API和网络控制应用交互
- 通过下面的南向API和网络交换机交互
- 逻辑上集中,实现上分布
3.Openflow协议
- 控制器和SDN交换机交互的协议
- 采用TCP来交换报文(加密可选)
- 3中Openflow报文类型:控制器->交换机;异步(交换机->控制器);时移(misc)
控制器->交换机报文:
- 特性:控制器查询交换机特性,交换机应答
- 配置:交换机查询/设置交换机的配置参数
- 修改状态:增加删除修改Openflow表中的流表
- packet-out:控制器可以将分组通过特定的端口发出
交换机->控制器报文:
- 分组进入:将分组(和它的控制)传给控制器,见来自控制器的packet-out报文
- 流移除:在交换机上删除流表项
- 端口状态:通告控制器端口的变化
3,网络层总结
网络层控制平面的方法:
传统路由选择算法:
SDN控制器