网络层
一.数据平面
我们将网络层分解为两个相互作用的部分,即数据平面和物理平面。本章首先学习数据平面的作用,即网络层中路由器的功能,数据平面部分决定到达路由器输入链路之一的数据报如何转发到该路由器的输出链路之一。在下一章中我们将涉及网络层控制平面功能,即网络范围的逻辑,该控制平面功能控制数据报沿着源主机到目的主机的端到端路径中路由器之间的路由方式,我们将学习路由选择算法,以及路由选择协议。
1.网络层概述
假设一个简单的网络其中有H1和H2两台主机,并在H1和H2之间的路劲上有几台路由器,其中H1正在向H2发送信息。H1中的网络层取得来自于H1运输层的报文段,将每个报文段封装成一个数据报,然后向相邻路由器R1发送该数据报。在接收方H2网络层接收来自相邻路由器R2的数据报,提取出运输层报文段,并将其向上交付给H2的运输层。每台路由器的数据平面的主要作用是从其输入链路向其输出链路转发数据报;控制平面的作用是协调这些本地的每台路由器转发动作,使得数据报沿着源和目的地主机之间的路由器路径最终进行端到端传送。
1.1 转发和路由选择:数据平面和控制平面
网络层的两种重要功能:
- 转发:当一个分组到达某台路由器的一条输入链路时,该路由器必须将该分组移动到适当的输出链路。转发是在数据平面实现的唯一功能,分组也可能被现有的路由器阻拦,或者可能是冗余的并经过多条出链路发送(将分组从一个输入链路接口转移到适当的输出链路接口的路由器本地动作)。
- 路由选择:当分组从发送方流向接收方时,网络层必须决定这些分组采用的路由或路径,计算这些路径的算法被称为路由选择算法(确定分组从源到目的地所采取的端到端路径的网络范围处理过程)。
每台网络路由器都有一个关键元素是它的转发表。路由器检查到达分组首部的一个或多个字段值,进而使用这些首部值在其转发表中索引,通过这样的方法来转发分组。
- 控制平面:传统的方法
人工配置 - 控制平面:SDN方法
每台路由器斗殴一个与其他路由器的路由选择组件通信的路由选择组件,通过远程控制器计算和分发转发表以供每台路由器使用。控制平面路由选择功能与物理的路由器是分离的,即路由选择设备仅执行转发,而远程控制器计算并分发转发表。
1.2 路由器工作原理
当位于发送主机的运输层向网络传输分组时,运输层能够指望网络层将给分组交付给目的地吗?当发送多个分组时,它们会按发送顺序按序交付给接收主机的运输层吗?发送两个连续分组的时间间隔与接收到这两个分组的时间间隔相同吗?网络层会提供关于网络中拥塞的反馈信息吗?在发送主机与接收主机中连接运输层通道的特性是什么?这些都通过网络服务模型来决定。网络服务模型定义了分组在发送与接收端系统之间的端到端特性。 可能包括的服务:
- 确保交付,该服务确保分组最终到达目的地。
- 具有时延上界的确保交付:该服务不仅确保分组的交付,而且在特定的主机到主机时延上界内交付。
- 有序分组交付。该模型确保分组以它们发送的顺序到达目的地
- 确保最小带宽。这种网络层服务模仿在发送和接收主机之间一条特定比特率的传输链路行为,只要发送主机以低于特定比特率的速率传输比特,则所有分组最终会交付给目的主机
- 安全性。网络层能够在源加秘所有的数据报并在目的地解密这些分组
因特网的网络层提供了单一的服务,称为尽力而为服务。即尽力而为服务,不保证传送的分组有序,不丢失,能交付;不能保证端到端时延,也不能保证有最小的带宽。
链路层交换机和路由器统称为分组交换机,但是: 链路交换机:基于链路层帧中的字段值做出转发决定 路由器:基于网络层中的字段值做出转发决定
2.路由器工作原理
首先标识路由器的四个组件:
- 输入端口: 执行终结入物理链路的物理层功能;与位于入链路远端的数据链路层交互来执行数据链路层功能;执行查找功能,通过查询转发表决定路由器的输出端口,到达的分组通过交换结构转发到输出端口;控制分组从输入端口转发到路由选择处理器。
- 交换结构:将输入端口连接到它的输出端口。
- 输出端口:存储从交换结构接收的分组,并通过执行必要的链路层和物理层功能在输出链路上传输这些分组。
- 路由选择处理器:执行路由选择协议,执行网络管理功能。
转发的类型:
2.1 输入端口处理和基于目的地转发
在输入端口处,路由器使用转发表来查找输出端口,使得到达的分组能经过交换结构转发到该输出端口。转发表是由路由选择处理其计算和更新的或者转发表接收来自远程SDN控制器的内容。
路由器使用分组目的地址的前缀与该表中的表项进行匹配,如果存在一个匹配项,则路由器向该匹配项相关联的链路转发分组。当出现多个匹配时,路由器使用最长前缀匹配规则。 一旦通过查找确定了某分组的输出端口,则该分组就能够发送进入交换结构。在某些设计中,如果来自其他输入端口的分组当前正在使用该交换结构,一个分组可能会在进入交换结构时被暂时阻塞,因此此时该被阻塞的分组就在输入端口处排队,并等待稍后被即时调度以通过交换结构。因此在此时,如果出现输入端口排队队列溢出的话,就可能会导致分组丢失。
2.2 交换
交换结构唯一一台路由器的核心部件,通过交换结构分组从输入端口到输出端口。 常见有以下三种交换方式:
- 经内存交换
在CPU直接控制下交换,采用传统计算机;分组被拷贝到系统内存,cpu从分组的头部提出目标地址,查找转发表,找到相应的输出端口拷贝到对应的输出端口;转发速率被内存的带宽所限制,一次只能转发一个分组。 - 经总线交换
数据报通过共享总线,从输入端口转发到输出端口;交换速率受限于总线带宽;一次只能处理一个分组;对于接入或企业级路由器速度够快,但是不适合区域或骨干网络。 - 经互联网交换
能够并行转发多个分组,并且是非阻塞的,只要没有其他分组当前被转发到输出端口,转发到输出端口的分组就不会被到达输出端口的分组阻塞,但是当两个分组有相同的输出端口时,就需要其中一个阻塞。
2.3 输出端口处理
输出端口处理取出已经存放在输出端口内存中的分组并将其发送到输出链路上。包括选择和取出排队的分组进行传输,执行所需的链路层和物理层的传输功能。
2.4 何时出现排队
由于路由器的缓存最终将被耗尽,当无内存可用于存储到达的分组时将会出现丢包现象。
-
输入排队 当出现大量的分组涌入的时候,由于路由器要计算不同的分组的输出端口,以及需要将那个输出端口用于输出分组,假如该输出端口被占用,那么此时具有相同输出端口的分组就会被阻塞在输入端口,此时就会在输入端口处出现排队现象。 线路前部阻塞:分组在输入端口处等在,其后的分组也必须等待,但是其后的分组可能具有与当前分组不一样的输出端口,这就导致其后分组对应的输出端口是空闲的。 -
输出排队 当没有足够的内存来缓存一个入分组时,就要选择是丢弃到达的分组(弃尾)要么删除一个或多个已排队的分组。
2.5 分组调度
对用拥塞的分组队列而言,先传送那个分组是通过分组调度算法来决定的。
- 先进先出:
FIFO调度规则按照分组到达输出链路队列的相同次序来选择分组在链路上传输 - 优先权排队:
在优先权排队的规则下,到达输出链路的分组被分类放入输出队列中的优先权类,当选择一个分组传输时,优先权排队规则先从队列的非空的最高优先权类中传输一个分组。当在同一个优先权类的分组中选择时,一般采用先进先出的方式。 - 循环和加权公平排队:
在循环排队规则下,分组像使用优先权排队那样被分类,然而类之间不存在严格的服务优先权,循环调度器在这些类之间轮流提供服务。在加权公平排队规则中,到达的分组被分类并在合适的每个类的等待区域排队。
3.网络协议:IPV4、寻址、IPV6以及其他
3.1 IPV4数据报格式
网络层分组被称为数据报,如今有两种版本的IP正在使用,我们首先讲第一个版本IPV4。
- 版本号:这4比特规定了数据报的IP协议版本
- 首部长都:因为一个IPV4数据报可包含一些可变数量的选项,故需要这4比特来确定IP数据报中的载荷实际开始的地方。
- 服务类型:使不同类型的IP数据报能相互分开。
- 数据报长度:IP数据报的总长度。
- 标识、标志、片偏移:与IP分片有关
- 寿命:TTL,当TTL减至0时,该数据报就会被丢弃。
- 协议:指示了IP数据报的数据部分应交给哪个特定的运输层协议。
- 首部校验和:首部校验和用于帮助路由器检测收到的IP数据报中的比特错误。
- 源和目的IP地址
- 选项:允许IP首部被扩展
- 数据(有效载荷):IP数据报所携带的数据,不包括头部信息。
一个IP数据报有总长为20字节的首部,如果数据报承载一个TCP报文段,则每个(无分片)数据报共承载了总长40字节的首部(20字节的IP首部加上20字节的TCP首部)以及应用层报文。
3.2 IPV4数据报分片
一个链路层帧能承载的最大数据量叫做最大传送单元(MTU)。因为每个IP数据报封装在链路层帧中从一台路由器传输到下一台路由器,故链路层协议的MTU严格地限制着IP数据报的长度。由于每条链路都运行着不同MTU的链路层协议。假设收到的一个IP数据报比该链路的MTU大的时候,此时解决方法是将IP数据报中的数据分片成两个或更多个较小的IP数据报,用单独的链路层帧封装这些较小的IP数据报,然后通过输出链路发送,这些较小的数据报都被称为片。
当分片后,之后的数据报重组发生在最终目标的端系统。
当生成一个数据报时,发送主机在为该数据报设置源和目的地址的同时贴上标识号。发送主机通常将它发送的每个数据报的标识号加1.当某路由器需要对一个数据报分片时,形成的每个数据报具有初始的源地址、目的地址和标识号。当目的地从同一发送主机收到一系列数据报时,它能够检查数据报的标识号以确定那些数据报实际上是同一较大数据报的片;为了让目的主机绝对相信它已收到了初始数据报的最后一个片,最后一个片的标志比特被设为0,而其他比特的标志比特被设为1;为了让目的主机确定是否丢失了一个片(且能按正确的顺序重新组装片),使用偏移字段指定该片应放在初始IP数据报的哪个位置。
3.3 IPV4编址
一台主机通常只有一条链路连接到网络;当主机中的IP想发送一个数据报时,它就在该链路上发送,主机与物理链路之间的边界叫做接口;一台路由器必须有两个以上的链路相连,因此它由多个接口。因此,从技术上讲,一个IP地址与一个接口相关联、而不是与包括该接口的主机或路由器相关联。
每个IP地址长度为32比特(等价为4字节),因此总共有大约2的32次方可能的IP地址。这些地址同行按所谓点分十进制记法书写。 有一些特殊的IP地址: ①子网部分全为0----本网络 ②主机部分全为0----本主机 ③主机部分全为1----广播地址 在上图中,用IP的术语来说,互联左侧这三个主机接口与一个路由器接口形成一个子网。IP编址为这个子网分配一个地址223.1.1.0/24,其中24记法,有时候被称为子网掩码,指示32比特中的最左侧的24比特定义了子网地址;以下为上图所示的对应子网地址。 子网的定义由此可得:分开主机和路由器的每个接口,产生几个隔离的网络岛,使用端口接这些隔离的网络的端点,这些隔离的网络中的每一个都叫做一个子网。
因特网的地址分配策略被称为无类别域间路由选择(CIDR).CIDR将子网寻址的概念一般化了。当使用子网寻址时,32比特的IP地址被划分为两部分,并且也具有点分十进制形式a.b.c.d/x,其中x指示了地址的第一部分的比特数。 形式为a.b.c.d/x的地址的x最高比特构成了IP地址的网络部分,并且经常被称为该地址的前缀。 对于外部的主机其他部分而言,并不知道本子网内部的主机分布,仅仅能通过路由器进入子网内部,这种使用单个网络前缀通告多个网络的能力通常称为地址聚合,也成为路由聚合或路由摘要。当进行匹配的时候,将使用最长前缀匹配原则来进行匹配。
- 获取一块地址
为了获取一块IP地址用于一个组织的子网内,某网络管理员会首先与他的ISP联系,该ISP可能会分给它的更的地址块中提供一些地址。还可以通过一个全球性的权威机构分配地址块。 - 获取主机地址:动态主机配置协议
可以通过动态主机配置协议(DHCP)允许主机自动获取一个IP地址。网络管理员能够配置DHCP,以使得给定主机每次与网络连接时能够得到一个相同的IP地址,或者某注意将被分配一个临时的IP地址,每次与网络连接时该地址可能不同。 DHCP协议又被称为即插即用协议或零配置协议,它是一个客户-服务器协议,客户通常是新到达的主机,他要获得包括自身使用的IP地址在内的网络配置信息。DHCP协议可以更新对主机在用IP地址的租用期;重新启动时,允许重新使用之前使用过的IP,并且支持移动用户假如网络。 对于一台新到达的主机而言,DHCP是4个步骤: ①DHCP服务器发现:客户在新加入后,需要在UDP分组中向端口67发送DHCP发现报文,通过广播的方式。 ②DHCP服务器提供:DHCO服务器接收到一个DHCP发现报文时,用DHCP提供报文向客户做出响应,该报文向该子网的所有结点广播。DHCO响应报文包含有收到的发现报文的事务ID、向客户推荐的IP地址、网络掩码以及IP地址租用期。 ③DHCP请求:新到达的客户从一个或多个服务器提供中选择一个,并向选中的服务器提供用DHCP请求报文进行响应。 ④DHCP ACK:服务器用DHCP ACK报文对DHCP请求报文进行响应。
3.4 网络地址转换
地址10.0.0.0/8是保留的3个IP地址空间之一,这些地址用于家庭网络等专用网络或具有专用地址的地域。具有专用地址的地域是指其地址仅对还网络中的设备有意义的网络。
当ISP已经为SOHO网络当前地址范围分配过一块连续地址,而SOHO内主机越来也多时,需要用到网络地址转化(NAT)(比如电信给你家分配一个动态IP地址,家里要好几台手机电脑联网用一个IP地址,需要用NAT)。
NAT使能路由器:
- NAT路由器对外界来看像一个具有单一IP地址的单一设备。例如,家里有一个NAT使能路由器,其IP地址138.76.29.7,且进入和离开家庭的报文都有同样的该地址
- NAT路由器对外隐藏了家庭网络的细节
- NAT路由器从ISP的DHCP服务器得到它的地址,并且路由器运行一个DHCP服务器,为位于NAT-DHCP路由器控制的家庭网络地址空间中的主机提供地址。
NAT通过NAT转换表来知道到达NAT路由器的数据报应该转发给内部某个主机,在每个表项中包含了端口号即其IP地址。
3.5 IPV6
由于新的子网和IP结点以惊人的增长率连到因特网上(并被要求分配唯一的IP地址),32位比特的IP地址空间即将用尽,为了应对这种对大IP地址空间的需求,开发了一种新的IP协议即IPV6。
-
IPV6数据报格式 1.扩大的地址容量: IP地址长度从32bit扩大到128bit,并且除了单播多播地址,引入任播地址,该模式使数据报交付给一组主机中的任意一个。 2.简化高效的40字节首部 3.流标签与优先级。 如音频流、视频流、高优先级用户承载的流量 4.有效载长度 5.版本 6.流量类型 7.下一首部 8.跳限制 9.源地址和目的地址 10.数据 不同的地方有以下: 1.分片/重组。 只能在源与目的地进行**,IPV6不允许分片**。 2.选项 放到了『下一个首部』位置,使得IP首部定长40字节 3.去除首部检验和 -
IPV4到IPV6的迁移 同时使用IPv4和IPv6,这种结点有两种地址。DNS可解析两种地址。如果发送方和接收方中任意一个仅为IPV4使能的,则必须使用IPv4数据报。
建隧道:图中B和E,要使用IPV6交互,但是它们经由中间IPv4路由器关联的,我们将两台IPv6路由器之间的Ipv4路由器的集合成为一个隧道,将整个IPv6数据报放在IPv4的有效载荷中。
4.通用转发和SDN
基于目的地转发的特征总结为两个步骤:查找目的IP地址,然后将分组发送到有特定输出端口的交换结构。
现在我们考虑另外一种方式,通过通用的“匹配加动作”范式来进行:可以对协议栈中的多个首部字段进行匹配,然后执行动作,动作又包括将分组转发到一个或多个输出端口,跨越多个通向服务的离开接口进行负载均衡分组,重写首部值,有意识地阻拦/丢弃某个分组,为进一步处理和动作而向某个特定的服务器发送一个分组等等。
OpenFlow是一个得到高度认可和成功的标准,他已经称为匹配加动作转发抽象、控制器以及更为一般的SDN革命等概念的先驱。匹配加动作转发表在OpenFlow中称为流表,它的每个表项包括:
- 首部字段值的集合:入分组将与之匹配。
- 计数器集合:计数器可以包括已经与该表项匹配的分组数量以及自从该表项上次更新以来的时间
- 当匹配分配流表项时所采取的动作集合:这些动作可能将分组转发到给定的输出端口、丢弃该分组、复制该分组和将它们发送到多个输出端口以及重写所选的首部字段。
4.1 匹配
到达一台分组交换机的一个链路层帧将包含一个网络层数据报作为其有效载荷,该载荷通常依次将包含一个运输层报文段。
入端口是指分组交换机上接受分组的输入端口,流表项也可以有通配符
4.2 动作
每个流表项都有零个或多个动作列表:
-
转发:一个入分组可以转发刀一个特定的物理输出端口,广播到所有端口,或通过所选的端口集合进行多播。该分组可能被封装并发送用于该设备的远程控制器,该控制器则可能对该分组采取某些动作。 -
丢弃:没有动作的流表项表明某个匹配的分组应当被丢弃 -
修改字段:在分组被转发刀所选的输出端口之前,分组的首部10个字段中的值可以重写。
二.控制平面
控制平面作为一种网络范围的逻辑,不仅沿着从源主机刀目的主机的端到端路径间的路由器如何转发数据报,而且控制网络层组件和服务如何配置和管理。
1.概述
在之前的描述中,我们介绍了转发表和流表。我们已经学习了完成这些工作有两种可能的办法:
- 每路由器控制:每台路由器中都包括转发和路由选择功能,每台路由器有一个路由选择组件,用于其他路由器的路由选择组件通信,以计算其转发表的值。
- 逻辑集中式控制:通用的“匹配加动作”抽象允许执行传统的IP转发以及其他功能的丰富集合,而这些功能先前是在单独的中间盒中实现的。中间控制器经一种定义良好的协议与每台路由器中的一个控制代理CA进行交互,以配置和管理该路由表的转发表。CA一般具有最少的功能,其任务是与控制器通信并且按控制器命令行事。
2.路由选择算法
路由选择算法的目的是:从发送方到接收方的过程中确定一条通过路由器网络的好的路径(等价于路由)。通常一条好路径值具有最低开销的路径。主机通常直接与一台路由器相连,该路由器即为该主机的默认路由器或第一跳路由器。源主机默认路由器称为源路由器,目的主机默认路由器称为目的路由器,一个分组从源主机到目的主机 == 从源路由器到目的路由器。 路由选择算法:给定一组路由器和连接路由器的链路,路由选择算法找到一条源路由器到目的路由器好的路径(最低费用),如最短路径算法(图)。
1.路由选择算法的一类分类方式是根据算法是集中式还是分散式分类:
- 集中式路由选择算法:用完整的、全局性的网络知识2计算出从源到目的地之间的最低开销路径。也就是说,该算法以所有结点之间的连通性以及所有链路的开销为输入。具有全局状态信息的算法常被称作链路状态(LS)算法,因为该算法需要知道网络中每条链路的开销。
- 分散式路由选择算法:路由器以迭代、分布式的方式计算出最低开销路径。没有节点拥有关于所有网络链路开销的完整信息。每个节点维护到网络所有其他节点的开销估计的向量,称为距离矢量(DV)算法。
2.路由选择算法的第二种广义分类方式是根据算法是静态的还是动态的进行分类。在静态路由选择算法中,路由随时间的变化非常缓慢,通常是人工进行调整。动态路由选择算法随着网络流量负载或拓扑发生变化而改变路由选择路径。
3.路由选择算法的第三种分类方式是根据它是负载敏感的还是负载迟钝的进行划分,在负载敏感算法中,链路开销会动态地变化以反映出底层链路的拥塞水平。而负载迟钝的相反。当前因特网路由选择算法都是负载迟钝的。
2.1 链路状态路由选择算法 在实践中,链路状态算法中的每一个节点向网络中所有其他节点广播链路状态分组来完成的,其中每个链路状态分组包含它所连接的链路的标识和开销,其中广播功能一般是使用链路状态广播算法来完成。
2.2 距离矢量路由选择算法 距离向量(DV)算法是一种迭代的、异步的和分布式的算法,而LS算法是一种使用全局信息的算法:
- 说它是分布式的,是因为每个节点都要从一个或多个直接相连邻居接收某些信息,执行计算,然后将计算结果分发给邻居;
- 说他是迭代的,是因为此过程一直要持续到邻居之间无更多信息要交换为止;
- 说它是异步的,是因为它不要求所有节点相互之间步伐一致地操作。
通过Bellman-Ford方程的解来为节点x提供了表项,并且提出了将在DV算法中发生的邻居到邻居通信的形式。
DV算法是异步式、分布式的,他不使用全局信息。对于某一结点而言,结点具有的唯一信息是它到直接相连邻居的链路开销和它从这些邻居接收到的信息,每个结点等待来自任何邻居的更新,当接收到一个更新时计算它的新距离矢量并向它的邻居分布其新距离矢量。 缺点:1.由于链路开销改变与链路故障导致的无穷计数问题; 2.增加读性逆转,一个链路出问题就会将该信息传播至整个链路。
LS与DV路由选择算法的比较: 报文复杂性:显然LS复杂得多,每条链路费用改变都要通知所有结点 收敛速度:DV算法收敛较慢,且会遇到路由选择环路和无穷计数问题 健壮性: 路由器发生故障,LS结点仅计算自己的转发表,提供了一定健壮性,DV算法一个 不正确的结点会扩散到整个网络。
3.因特网中自治系统内部的路由选择:OSPF
在目前为止的算法研究中,我们将网络看成一个互联路由器的集合。在实践中,该模型会显得简单化,有以下两个重要原因:
- 规模:随着路由器数目变得很大,涉及路由选择信息的通信、计算和存储的开销将高的不可实现。由此需要的巨大容量的内存,并且会引起巨大的负担。
- 管理自治:因特网是ISP的网络,其中每个ISP都有他自己的路由器网络,ISP通常希望按自己的意愿执行路由器或对外部隐藏其网络的内部组织面貌。
以上问题都通过将路由器组织自治系统AS来解决,其中每个AS由一组通常处在相同管理控制下的路由器组成,在相同AS中的路由器都运行相同的路由选择算法并且有彼此的信息。在一个自治系统内运行的路由选择算法叫做自治系统内部路由选择协议。
- 开放最短路优先OSPF
OSPF路由选择及其关系密切的协议IS-IS都被广泛应用于因特网的AS内部路由选择。OSPF的开放一词是指路由选择协议规范是公众可用的。OSPF是一种了链路状态协议,它使用洪泛链路状态信息和Dijkstra最低开销路径算法。使用OSPF一台路由器构建了一幅关于整个自治系统的完整拓扑图。于是每台路由器在本地运行Dijkstra的最短路径算法,以确定一个以自身为根节点刀所有子网的最短路径树。 使用OSPF时,路由器向自治系统内所有其他路由器广播路由选择信息,而不仅仅是向其相邻路由器广播。每当一条链路的状态发生改变时,路由器就会广播链路状态信息,即使未发生改变,它也要周期性地广播链路状态。 其优点: 安全:能够鉴别OSPF路由器之间的交换(如链路状态更新); 多条相同开销的链路:当到达某目的地的多条路径具有相同的开销时,OSPF允许使用多条路径。 对单播与多播路由选择的综合支持 支持在单个AS中的层次结果
4.ISP之间的路由选择:BGP
当我们需要跨越多个AS进行路由时,我们需要一个自治系统间路由选择协议。因为AS间路由选择协议涉及多个AS之间的协调,所以AS通信必须运行相同的AS间路由选择协议。在因特网中,称之为边界网关协议BGP。
4.1 BGP的作用 每台路由器的转发表将具有形式为(x,I)的表项,其中x是一个前缀,I是该路由器的接口之一的接口号。作为一种AS间的路由选择协议、BGP为每台路由器提供了一种完成以下任务的手段:
- 从邻居AS获得前缀的可达性信息:BGP允许每个子网向因特网的其余部分通告它的存在。
- 确定到该前缀的最好路由:一台路由器可能知道两条或更多条到特定前缀的不同路由,为了确定更好的路由,该路由器将本地运行的一个BGP路由选择过程。
4.2 通告BGP路由信息 对于每个AS,每台路由器要么是一台网关路由器,要么是一台内部路由器。网关路由器是一台位于AS边缘的路由器,它直接连接到在其他AS中的一台或多台路由器;内部路由器仅连接在它自己AS中的主机和路由器。
在BGP中,每台路由器通过使用179端口的半永久TCP连接交换路由选择信息。每条直接连接以及所有通过该连接发送的BGP报文,称为BGP连接。此外,跨越两个AS的BGP连接称为外部BGP连接eBGP;而在相同AS中的两台路由器之间的BGP会话称为内部BGP连接iBGP。
** 4.3 确定最好的路由** 当路由器通过BGP连接通告前缀时,他在前缀中包含一些BGP属性,用BGP术语来说,前缀及其属性被称为路由。BGP中,一个AS由其全局唯一的AS号ASN标识,which is allocated by ICANN;
主要有以下属性: AS-PATH: 1.该属性包含了前缀通告已经通过的AS,当一个前缀传送到一个AS时,AS将其ASN增加到AS-PATH中 2.路由器使用AS-PATH属性检测和防止循环通告 3. 路由器使用AS-PATH在多条路径中选择相同的前缀 NEXT-HOP: 1.是一个开始某AS-PATH的路由器接口 2.路由器使用该属性正确地配置它们的转发表 3.使用NEXT-HOP值和AS内部路由选择算法,路由器能确定到每条对等链路的路径的费用,用热土豆路由选择决定适当的接口
路由选择算法:
-
热土豆路由选择 对于某一路由器而言,尽可能快地将分组送出其AS,而不担心其AS外部到目的地余下部分的开销,选择具有最小的最低费用的网关,从转发表确定最低费用网关接口I,将(x,I)添加到转发表中 -
路由器选择算法 在BGP中,对于任何给定的目的地前缀,进入BGP的路由选择算法的输入是到某前缀的所有路由的集合,该前缀是已被路由器学习和接收的。如果有多条这样的路径,则: ①路由被指派到一个本地偏好值作为其属性之一。一条路由的本地偏好可能由该路由器设置或可能由在相同AS中的另一台路由器学习。 ②从余下的路由中选择具有最短AS-PATH的路由 ③从余下的路由使用热土豆路由选择 ④如果仍留下多条路由,该路由器使用BGP标识符来选择路由
4.4 IP任播 IP任播被DNS系统广泛应用于将DNS请求指向最近的根DNS服务器。
1.广播路由选择算法
- N次单播
给定N个目的节点,源结点产生该分组的N份副本,对不同目的地每个副本编址,用单播路由选择传送,但是其效率低,多份独立的副本会重复经过某段链路,让网络结点本身生成分组副本更有效 N次单播的一个假设是广播的接收方及其地址为发送方所知晓。但是怎样得到这些消息呢?最可能的是,可能还需要别的机制。浙江增加更多的开销。 - 无控制洪泛
源节点向所有邻居发送分组副本,结点复制该分组并向它邻居转发,但是图中可能会有环,会造成无休止循环。 当一个结点与两个以上结点连接时,它将生成并转发广播分组的多个副本,副本中的每个又产生多个副本,产生广播风暴,使网络变得毫无用处 - 受控洪泛
序号控制洪泛:源节点将其地址或其他唯一标识和广播序号放入广播分组,每个结点维护它已经收到的、复制的和转发的源地址和序号列表。当结点接受到一个广播分组时,它首先检查该分组是否在列表中。如果在,丢弃该分组;如果不在,复制该分组并向该结点的所有邻居转发。 反向路径转发RPF:仅当分组到达的链路正好位于它自己返回源的最短单薄路径上,才传输报文,否则丢弃。RPF仅需要知道在它到发送方的单薄路径上的下一个邻居;它仅用这个邻居的身份以决定是否洪泛一个接收到的广播分组。 - 生成树广播
虽然序号控制洪泛和RPF避免了广播风暴,但它们不能完全避免冗余广播分组的传输。通过 构造最小生成树: 结点只需知道哪些邻居在生成树中; 分布式生成树算法: 基于中心的方法:建立一棵生成树时,定义一个中心结点(汇合点、核),结点向中心结点单薄加入树的报文。加入树的报文使用单播路由选择朝着中心结点进发,直到它到达一个生成树中,经过的路径再嫁接到现有生成树中。在实践中,广播协议被用于应用层和网络层
2.多播 只有一部分路由器(那些具有加入该多播组的相连主机的路由器)实际需要接收多播流量。 一些新兴应用要求将分组从一个或多个发送方交付给一组接收方,比如各种直播、游戏 多播数据报使用间接地址来编址。每个分组难道携带所有接收方IP地址?这不科学 用一个标识表示一组接收方(D类多播地址),接收方小组称为多播组 因特网组管理协议IGMP IGMP + 多播路由选择协议 组成网络层多播 确定多播路由选择:
解决应用RPF时会收到不想要的多播分组这个问题成为剪枝。一台接收到该多播分组的多播路由器,如它无加入改组的相连主机,则它向其上游路由器发送一个剪枝报文,则它就能向上游转发一个剪枝报文。
5. SDN控制平面
SDN体系结构具有4个关键特征:
- 基于流的转发:SDN控制的交换机的分组转发工作,能够基于运输层、网络层或链路层首部中任意数量的首部字段值进行。
- 数据平面和控制平面分离:数据平面由网络交换机组成,该设备在它们的流表中执行“匹配加动作”的规则;控制平明由服务器以及决定和管理交换机流表的软件组成。
- 网络控制功能:位于数据平面交换机外部,在逻辑上是集中的,实际上通常在几台服务器上实现。
- 可编程网络:通过运行在控制平面的网络控制应用程序,该网络是可编程的。
5.1 SDN控制平面:SDN控制器和SDN网络控制应用程序 SDN控制平面由两部分组成:SDN控制器和SDN控制平面。控制器的功能答题上可以分为三个层次:
- 通信层:SDN控制器和受控网络设备之间的通信,通过南向接口完成控制器与受控设备之间的通信。
- 网络范围状态管理层:控制器具有有关网络的主机、链路、交换机和其他SDN控制设备的最新状态信息。
- 对于网络控制应用程序层的接口:控制器通过它的北向接口与网络控制应用程序交互。
SDN被认为是一种逻辑上集中的,即该控制器可以被外部视为一个单一、整体的服务,但是在实践中,由于故障容忍、高可用性或性能等原因一般通过分布式服务器集合实现。 5.2 OpenFlow协议 OpenFlow协议运行在SDN控制器和SDN控制的交换机或者是其实现OpenFow ADI的设备之间,从控制器刀受控交换机流动的重要报文如下所示:
- 配置:该报文允许控制器查询并设置交换机的配置参数
- 修改状态:增加/删除或修改交换即流表中的选项,并设置交换机端口特性。
- 读状态:用于交换机的流表和端口收集统计数据和计数器值
- 发送分组:在受控交换机从特定的端口发送一个特定的报文。
- 流删除:通知控制器已删除一个报文
- 端口状态:向控制器通知端口状态的变化
- 分组入:将分组发送给控制器。
5.3 数据平面和控制平面交互的例子 Dijkstra算法是实现在每台路由器中并且所有网络路由器中泛洪链路状态更新:
- Dijkstra算法作为一个单独的程序来执行,位于分组交换机的外部
- 分组交换机向SDN控制器发送链路更新并且不相互发送
例子如下所示: 具体流程如下所示:
6. ICMP:因特网控制报文协议
ICMP被主机和路由器用来沟通网络层信息,如差错报告。如『目的网络不可到达』这种错误是在ICMP产生的,IP路由器找不到路径通往指定主机,该路由器就向发送主机发出ICMP报文指示错误。 ICMP通常被认为是IP的一部分,但从体系结构上来讲它是位于IP之上的,因为ICMP报文是承载在IP分组中的。也就是说,ICMP报文是作为IP有效载荷承载的。 ping:发送一个ICMP类型8编码0(回显请求)的报文到指定主机,目的主机发回一个类型0编码0(回显回答)的报文 源抑制报文:拥塞的路由器向主机发送,强制主机减小发送速率。TCP在运输层有拥塞控制机制,不需要该报文的信息了
Traceroute:如何跟踪从一台主机到世界上任意一台主机之间的路由? 原理:IP协议规定,路由器收到TTL为0的数据报会将其丢弃,然后发送一个ICMP告警报文给源主机,which concludes the name and IP address of it 方法:发送TTL为1~n的一系列IP数据报。当到达目的主机时,返回一个端口不可达(数据报携带了不可达UDP端口号)的ICMP报文,则结束探测。
7.网络管理和SNMP
7.1 网络管理框架
- 管理服务器:是一个应用程序,运行在运营中心NOC的集中式网络管理工作站上,是执行网络管理活动的地方,它控制网络管理信息的收集,处理,分析和/显示。
- 被管设备:是网络装备的一部分,位于被管理的网络中。
- 管理信息库:可以看到一个被管设备中的每个被管对象的关联信息,这些值可以被管理服务器使用。
- 网络管理代理:运行在被管设备中的一个进程,该进程与管理服务器通信,在管理服务器的命令和控制下在被管设备中采取本地动作。
- 网络管理协议:运行在管理服务器和被管设备之间,允许管理服务器查询被管设备的状态,并经过其代理间接地在这些设备上采取行动。
7.2 简单网络管理协议 简单网络管理协议(SNMP)是一个应用层协议,用于在管理服务器和代表管理服务器执行的代理之间传递网络管理控制和信息报文。SNMP最常使用的是请求响应模式,其中SNMP管理服务器向SNMP代理发送一个请求,代理接收到该请求后,执行某些动作,然后对该请求发送一个回答。
请求通常用于查询或修改与某被管设备关联的MIB对象值。SNMP第二个常被使用的是代理向管理服务器发送的一种非请求报文,该报文称为陷阱报文。陷阱报文通常用于通知管理服务器,一个异常情况已经导致了MIB对象值的改变。
|