网络层总结

1,网络层-数据平面

1.1,几个概念

转发:局部的数据处理
路由:全局的控制功能
数据平面:

  • 本地:每个路由器功能
  • 决定从路由器输入端口到达的分组如何转发到输出端口
  • 转发功能:传统方式,基于目标地址+转发表;SDN方式,基于多个字段+流表。

控制平面:

  • 网络范围内的逻辑
  • 决定数据报如何在路由器之间路由,决定数据报从源到目标的端到端路径
  • 2个控制平面方法:传统的路由算法,在路由器中被实现;software-defined-networking(SDN),在远程服务器中实现。

网络层和传输层连接服务的区别:

  • 网络层:在2个主机之间,涉及到路径上的一些路由器
  • 传输层:在2个进程之间,很可能只体现在端系统上(TCP连接)

1.2,网络层服务

  • 在发送主机和接受主机对之间传送段(segment);
  • 在发送端将段封装在数据报中;
  • 在接收端将段封上交给传输层实体;
  • 网络层协议存在于每一个主机和路由器
  • 路由器检查每一个经过他的IP数据报的头部

1.2.1,路由器组成

路由器分诶路由选择部分和分组转发部分。

  • 路由选择部分:也被称为控制部分。核心部件是路由选择处理机。
  • 分组转发部分:分为三部分,交换机构(switch fabric),一组输入端口,一组输出端口。交换结构又称为交换组织,它的作用就是根据转发表进行处理,将某个端口进来的分组从另外一个合适的输出端口转发出去。

交换结构:

  1. 通过存储器(memory)
  2. 通过总线(bus)
  3. 通过互联网络(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穿越问题。
解决方法:

  • IGD协议
  • 中继(Skype用的)

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算法的路由工作工程

  1. 各点获得整个网络拓扑,网络中所有代价等信息
  2. 使用LS路由选择算法,计算本站点到其他站点的最优路径(汇集树,通过dijstra算法获得),得到路由表
  3. 按此路由表转发分组(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方法

传统路由选择算法:

  • AS内:RIP,OSPF
  • AS间:BGP

SDN控制器

你可能感兴趣的:(#,计算机网络,网络,网络协议,运维)