网络层介于传输层和数据链路层之间,其主要作用是实现两个网络系统之间的数据透明传送,具体包括路由选择,拥塞控制和网际互连等。网络层是网络与网络之间通信的最底层,在数据从数据链路层向传输层进行数据传输的通信中,起到构建一个中间通信子网的作用。不同网络有着不同的网络层协议和地址规范,如果一个网络中的用户不能识别其他网络的通信协议和地址规范,那么这两个网络之间就不能进行数据通信,就好比不同国家有着不同的交通法规,属于不同的交警系统管理,不允许他国车辆随便出入一样。不同网络也有不同的设计规范,属于不同的组织来管理,必须通过授权,并由专门的协议来负责网络间的通信。如果只是同一局域网内的各个计算机之间的通信,单靠物理层和数据链路层就可以建立通信链路完成用户间的数据通信,但要扩大应用范围,连接不同的局域子网,就需要借助网络层处理各个网络子网的协议,从而进行计算机的网络互连,所以网络层在TCP/IP协议体系中叫网际互连层。
从一般的概念来讲,将网络互相连起来的要使用一些中间设备。根据中间设备所在的层次,可以有以下四种不同的中间设备:
(1)物理层使用的中间设备叫转发器(repeater)
(2)数据链路层使用的中间设备叫做网桥或者桥接器(bridge)
(3)网络层使用的中间设备叫做路由器(router)
(4)在网络层以上使用的中间设备叫做网关(gateway)。用网关连接两个不兼容的系统需要在高层进行协议转换。
1:转发和路由选择
网络层的作用从表面上看起来很简单即将分组从一台发送主机移动到一台接收主机。需要两种功能:
转发是路由器本地动作,主要由硬件来实现。路由选择是网络范围过程,主要由软件来实现。比如开车从北京到上海,转发相当于在某个路口选择某一条岔路,路由选择相当于规划从北京到上海所有线路的过程
每台路由都有一张转发表。路由器检查分组首部字段值(可能是目的地址或所属连接,看网络层协议)来转发分组,使用该值在转发表索引查询。该值指出了该分组将被转发的路由器输出链路接口。
转发表的配置:
定义了分组在发送与接收端系统之间的端到端运输特性。
当位于发送主机的运输层向网络层传输分组时要面对的一系列问题:
- 运输层能指望网络层将分组交付给目的地吗?
- 当发送多个分组时,他们会按发送顺序按序交付到接收主机的运输层吗?
- 发送两个连续分组的时间间隔与接收到这两个分组的时间间隔相同吗?
- 网络层会提供关于网络中拥塞反馈的信息吗?
- 在发送主机与接收主机中连续运输层通道的抽象视图是什么?
网络层可以提供的服务(注意IP并没有这些服务!):
因特网的网络层IP协议提供单一服务,尽力而为服务,无带宽保证,无丢包保证,无顺序保证,不定时,无拥塞指示。
(1)输入端口:
(2)交换结构
(3)输出端口
(4)路由选择处理器
路由转发平面 :一台路由器的输入端口、输出端口和交换结构共同实现了转发功能,并且用硬件实现(软件太慢,需以纳秒时间尺度运行)
路由控制平面:路由器的控制功能(执行路由选择协议、对上线或者下线链路进行响应、管理功能),在毫秒时间尺度上运行,用软件实现并在选择处理器上执行(一种cpu)
2:输入端口
(1)线路端接
(2)数据链路处理(协议、拆封)
(3)查找
(4)转发
(5)排队
3:交换结构
交换结构位于一台路由器的核心部位,正是通过这种交换结构,通过交换结构,分组才能实际地从一个输入端口交换(转发)到一个输出端口中。
(2)经总线交换
(3)经互联网络交换
4:输出端口
取出已经存放在输出端口内存中的分组并将其发送到输出链路上。
5:何时出现排队
(1)输入排队
如图所示,其中在输入队列前端的两个分组(带深色阴影)要发往同一个右上角的输出端口。假定该交换结构决定发送左上角队列前端分组。在这种情况下,左下角队列中的深色阴影分组必须等待。但不仅该分组要等待,左下角队列中排在该分组后面的浅色阴影分组也要等待,即使右中侧输出端口中无竞争。这种现象叫做输入排队交换机中的线路前部阻塞(Head-Of-the-Line,HOL)。即在一个输入队列中排队的分组必须等待通过交换结构发送(即使输出端口是空闲的),因为它被位于线路前端的另一个分组所阻塞。
(2)输出排队
当分组的数量变得足够大时,耗尽输出端口的可用内存,就必须作出决定:要么丢弃到达的分组(采用一种弃尾的策略),要么删除一个或多个已排队的分组为新来的分组腾出空间。在某些情况下,在缓存填满之前便丢弃一个分组的做法是有利的,这可以向发送方提供一个拥塞信号。已经提出和分析了许多分组丢弃和标记策略,这些策略统称为主动队列管理(Active Queue Manager,AQM).
上图显示了输出端口的排队情况。在t时刻,每个输入端口都到达了一个分组,每个分组都是发往最上侧的输出端口。假定线路速度相同,交换机以3倍于线路速度的速度运行,一个时间单位以后,所有三个初始分组都被传送到输出端口,并排队等待传输。在下一时间单位中,这三个分组中的一个将通过输出链路发送出去。在这个例子中,又有两个分组已到达交换机入端;这些分组之一要发往最上侧的输出端口。这样的后果是,输出端口的分组调度(packet scheduler)在这些排队分组中选择一个分组来传输。
6:分组调度
即排队的分组是如何经输出链路传输的。
(1)先进先出(First-In-First-Out,FIFO)
按照分组到达输出链路队列的次序来选择分组在链路上传输
排队抽象:
运行中的队列:
(2)优先权排队(Priority Queuing)
到达输出链路的分组被分类放入输出队列中的优先权类中,每个优先权类都有一个队列,先传输优先权高类中的分组,最后传输优先权类低中的分组。在非抢占式优先权排队中,一旦分组开始传输就不可以被打断。
排队抽象:
运行中的队列:
(3)循环和加权公平排队(round robin queuing discipline)
在循环排队规则下,分组像优先权排队那样被分类,然而,在类之间不存在严格的优先服务权,循环调度器在这些类之间轮流提供服务。在最简单形式的循环调度中,类1的分组被传输,接着是类2的分组,接着又是类1的分组,然后又是类2的分组,等等。一个所谓的保持工作排队规则在有(任何类的)分组排队等待传输时,不允许链路保持空闲。当寻找给定类的分组但是没有找到时,保持工作的循环规则将立即检查循环序列中的下一个类。
排队抽象:
运行中的队列:
加权公平排队(WFQ)是一种通用的循环排队。与循环排队不同的是,它的每个类在任何时间间隔内可收到有不同数量的服务。
1:IPv4数据报格式
网络层分组被称为数据报,下图是IPV4数据报格式。一个IP数据报有总长为20字节的首部,如果数据报承载一个TCP报文段,则每个数据报共承载40个字节的首部以及应用层报文
关键字 | 含义 |
---|---|
版本 | 这4比特规定了数据报的IP协议版本,通过版本号路由器可以确定如何解析IP数据报。不同IP版本使用不同的数据报格式。 |
首部长度 | IPV4数据报包含了一些可变数量的选项,所以需这4比特来确定IP数据包中的载荷实际开始的地方。 |
服务类型(TOS) | 以便使不同类型的IP数据包能够相互区别开。例如:实时数据包和非实时数据包。 |
数据包长度 | IP数据包的总长度。该字段16比特,所以最大是65535 |
标识、标志、片偏移 | 这三个字段与所谓的IP分片有关。 |
寿命 | 用来确保数据宝永远不会在网络中循环。每当一台路由器出路数据报时候,该字段-1,直到TTL字段为0,则丢弃该数据报。 |
协议 | 指示了IP数据报的数据部分应该交付给那个特定的运输层协议。值为6交付给TCP,为17交付给UDP。 |
首部校验和 | 首部校验和用于帮助路由器检测收到的IP数据报中的比特错误,首部校验和计算方法:将首部中每两个字节当做一个数,用反码算术对这些数求和。如果首部中携带的校验和和计算出的校验和不一致则代表出错,一般会丢弃出错的数据报。 |
源和目的地址 | 在源IP字段插入源IP地址,在目的IP字段插入目的IP地址。 |
选项 | 允许IP首部被扩展,可有可无。 |
数据 | 有效载荷,数据报存放的地方。 |
2:IPv4数据报分片
最大传输单元(MTU):并不是所有链路层都能承受相同长度的网络层分组。有的协议能承载大数据报,而有的协议只能承载小分组。因此一个链路层帧能承载的最大数据量叫做最大传输单元。因为每个IP数据报封装在链路层帧中一台路由器到达另一台路由器,所以链路层协议的MTU严格限制IP数据报的长度。不同链路层协议中的MTU不同。
分片:如果链路的MTU比IP数据报长度小,那么将IP数据报中的数据分片成两个或者多个较小的IP数据报,用单独的链路层帧封装这些较小的数据报,然后发送。这些较小的数据报称为片。在到达目的地时候进行重装。
IPv4的设计者将标识、标志和片偏移放在IP数据报中,用来分片。
举个:
4000字节数据报:20字节头部,3980字节数据,MTU = 1500字节
第一片:20字节头部 + 1480字节数据(1480字节应用数据),偏移量:0
第二片:20字节头部 + 1480字节数据(1480字节应用数据),偏移量:1480 / 8 = 185(为了方便计算,以8个字节为单位)
第三片:20字节头部 + 1020字节数据(应用数据),偏移量:2960 / 8 = 370
总长度 | 标识 | MF | DF | 片偏移 | |
---|---|---|---|---|---|
原始数据报 | 40000 | 12345 | 0 | 0 | 0 |
数据报片1 | 1500 | 12345 | 1 | 0 | 0 |
数据报片2 | 1500 | 12345 | 1 | 0 | 185 |
数据报片2 | 1040 | 12345 | 0 | 0 | 370 |
3:IPv4编址
在讨论IP编制之前,我们需要简述一下路由器连入互联网的方法:一台主机通常只有一条链路连到网络;当主机中的IP想发送一个数据报时,它就在该链路上发送。主机与物理链路之间的边界叫做接口。 因为路由器的任务是从链路上接收数据并从某些链路转发出去,于是路由器必须拥有两条或更多的条链路与它连接,因此一台路由器有多个接口,IP要求每台主机和路由器都有自己的IP地址,因此一个IP地址实际上是与每一个接口相关联的。
每个IP地址长度32bit(4字节),总共2^32个可能的IP地址,约40亿个,采用点分十进制标识,如:193.32.216.9。在全球因特网中的每台主机和路由器上的每个接口,都必须有一个全球唯一的IP地址(在NAT后面的接口除外)。然而,这些地址不能是随意的选择。一个接口的IP地址的一部分需要由其连接的子网来决定。
如上图所示,一台路由器(具有三个接口)用于互联7台主机。注意左上侧的3台主机以及连接他们的路由器接口,都有一个形如223.1.1.xxx的IP地址。这就是说,在他们的IP地址中,最左侧的24比特是相同的。这4个接口也通过并不包含路由器的网络互联起来,该网络可能是一个以太网LAN互联,在此情况下,这些接口将通过一台以太网交换机互联,或者通过一个无线接入点互联。我们此时将这种无路由器连接这些主机的网络表示为一朵云。用IP的术语来说,互联这三个主机与一个接口的网络形成一个子网。
IP编址为这个子网分配一个地址223.1.1.0/24,其中/24记法,有时称为子网掩码(network mask),指示32比特中最左侧24比特定义了子网地址,任何其他要连接的223.1.1.0/24子网的主机都要求其地址具有223.1.1.xxx的形式。
因特网的地址分配策略:
(1)无类别域间路由选择(Classless Interdomain Routing,CIDR)
CIDR将子网寻址的概念一般化了。当使用子网时,32比特的IP地址被划分为两部分,并且具有点分十进制数形式a.b.c.d/x,其中x指示了地址的第一部分中的比特数。x即表示网络地址的比特数,并且经常被称为该地址的前缀。一个组织通常被分配一块连续的地址,即具有相同前缀的一段地址。剩余的32-x比特可认为是用于区分该组织内部设备,其中所有设备具有相同的网络千种。
(2)分类编地址(classful addressing)
在CIDR被采用前,IP地址的网络部分被限制为长度为8,16,24比特,这是一种称为分类编址的编址方案。
A类地址:
B类地址:
C类地址:
一般不使用的特殊IP地址:
总结:
(3)IP广播地址
当一台主机发出目的地址为255.255.255.255的数据报时,报文会交付给同一个网络的所有主机,路由器也会有选择地向邻近的子网转发该报文(虽然他们通常不这样做)。
1:获取地址、分配地址
(1)获取一块地址
(2)获取主机地址
(3)动态主机配置协议(Dynamic Host Configuration Protocol, DHCP)
DHCP允许主机自动获取一个IP地址。网络管理员也能配置DHCP,以使某给定主机每次与网络连接时都能得到一个相同的IP地址,或者某主机将被分配一个临时的IP地址,每次与网络连接时该地址也许是不同的。除了主机IP地址外,DHCP还允许一台主机得知其他信息,例如它的子网掩码、它的第一条路由器位置(常称为默认网关)与它的本地DNS服务器地址。
DHCP能将主机连接进一个网络的自动能力,常被称为即插即用协议(plug-and-play protocol)或者零配置(zeroconf)协议。
DHCP是一个客户-服务器协议。新来的主机要获得自使用的IP地址等网络配置信息:
客户收到ACK后,交互完成,在租期内使用DHCP分配的IP地址。DHCP提供了机制允许客户更新对一个IP地址的租用
2:网络地址转换(Network Address Translate, NAT)
当ISP已经为SOHO(Small Office,Home Office)网络当前地址范围分配过一块连续地址,而SOHO内主机越来也多时,需要用到NAT(比如电信给你家分配一个动态IP地址,家里要好几台手机电脑联网用一个IP地址,需要用NAT)。
(1) NAT使能路由器
NAT路由器对外界来看像一个具有单一IP地址的单一设备。例如,家里有一个NAT使能路由器,其IP地址138.76.29.7,且进入和离开家庭的报文都有同样的该地址。从本质上来说,NAT使能路由器对外隐藏了家庭网络的细节。NAT路由器从ISP的DHCP服务器得到它的地址,并且路由器运行一个DHCP服务器,为位于NAT-DHCP路由器控制的家庭网络地址空间中的主机提供地址
(2)NAT转换表
如果从广域网WAN到达NAT路由器的所有数据报都具有相同的目的IP地址,那么路由器应该怎样知道它将某个分组转发给那个内部主机那?技巧就是使用NAT路由器上的一张NAT转换表(NAT translation table)。
(3)NAT重要问题
(4)NAT解决方案
方案一:静态配置NAT,转发进来的对服务器特定端口连接请求
e.g:123.76.29.7, port 2500 总是转发到10.0.0.1 port 25000
方案二:通用即插即用(Universal Plug and Play, UPnP)
方案三: 中继 (usedin Skype)
在20世纪90年代早期,因特网工程任务组就开始致力于开发一种代替IPv4的协议,该努力的首要动机是以下现实:由于新的子网喝IP节点以惊人的增长率连到因特网上(并被分配唯一的IP地址),32比特的IP地址即将被用尽。
关键字 | 含义 |
---|---|
流标签 | 此20比特用于给特殊流的分组加上标签,这种流是一种非默认服务质量或需要实时服务的流。例如视频流 |
版本 | 该4比特字段用于表示IP版本号 |
流量类型 | 这8比特字段与我们在IPV4中看到的TOS 字段相似 |
有效载荷长度 | 该16比特作为一个无符号整数,给出了IPV6数据报中跟在定长40字节数据报后的字节数量 |
下一个首部 | 该字段标识数据报中的内容交付给哪个协议(UDP还是TCP),与IPV4中协议字段相同 |
跳限制 | 转发数据报的每台路由器将对该值减一,当值为0时,则丢弃该数据报 |
源地址和目的地址 | IPv6 128比特地址的各种格式在RFC 4291中进行了阐述 |
数据 | IPV6有效载荷部分 |
2:与IPv4的格式对比
区别 | 原因 |
---|---|
分片/重新组装 | IPv6不允许在中间路由器上进行分片组装。这种操作只能在源与目的地执行。如果路由器收到的IPv6数据报太大了,则路由器只需丢掉该数据报,并向发送方发回一个“分组太大”的ICMP差错报文 |
首部检验和 | 因为因特网中的运输层和数据链路层协议执行了检验操作,所以就被去除了 |
选项 | 选项字段不再是标准IP首部的一部分了,但它并没有消失,而是可能出现在IPv6首部中由“下一首部”指出的位置上 |
3:从IPv4到IPv6的迁移
虽然新型的IPv6能够向后兼容,即能发送,路由和接收IPv4数据报,但已经部署的具有IPv4能力的系统却不能够处理IPv6数据报。
于是在实践中已经得到广泛应用的IPv4到IPv6的迁移方法包括建隧道。
假定两个IPV6路由器相互通讯中间有个IPV4的路由器,我们将两台IPV6中间的IPV4的路由器集合称为一个隧道,隧道发送端的IPV6节点可以将整个IPV6的数据报封装到一个IPV4的数据报中,该IPV4的地址指向隧道接收端的IPV6节点,隧道接收端的IPV6最终接受到该IPV4的数据报。如图
其目的是从发送方到接收方的过程中确定一条通过路由器网络的好的路径。通常是指开销最低的路径。
1:概念
(1)图(graph)
我们可以用图来描述路由选择问题。
G = (N,E)
其中 N 指节点,E指边,G是他们的集合。
选路算法的图论抽象: 图中的节点是路由器 图中的边是物理链路
(2)开销
一条边还有一个值表示他的开销
c(x,y)= n
其中 x,y 表示两个节点,n 表示开销
(3)路径
图 G = (N,E)中的一条路径(path)是一个节点序列(x1, x2, …, xp)
开销总和是:c(x1,x2)+ c(x2,x3)+ … + c(xp-1,xp)
通常节点之间有许多路径,每条路径都有一个开销。
(4)最低开销路径/最短路径
2:分类
(1)按照分布来划分——最重要
(2)按照动/静态来划分
(3)按照负载来划分
3:链路状态路由选择算法
在链路状态算法中,网络拓扑和所有链路的开销都是已知的,也就是说可用作LS算法的输入。实践中这事通过让每个节点向网络中所有其他节点广播链路状态分组来完成的,其中每个链路状态分组包含它所连接的链路标识和开销。
链路状态路由选择算法一般采用 Dijsktra 算法:
(1)c(x,y):从节点x到y的链路费用; = ∞ 如果不是直接邻居
(2)D(v):从源到目的地v路径费用的当前值
(3)p(v):从源到v沿路径的前任节点
(4)N’:已知在最小费用路径中的节点集合
伪代码:
1 Initialization
2 N' = {u}
3 for all nodes v:
4 if v is a neighbor of u
5 then D(v) = c(u,v)
6 else D(v) = ∞
7
8 Loop
9 find w not in N' such that D(w) is a minimum
10 add w to N'
11 update D(v) for each neighbor v of w and not in N'
12 D(v) = min( D(v), D(w) + c(w,v) )
13 /*new cost to v is either old cost to v or known
least path cost to w plus cost from w to v*/
15 until N' = N
举个:
当LS算法终止时,对于每个节点,我们都能得到从源节点沿着它的最低开销路径的前一节点。对于每个前一节点,我们又有它前一节点,依次迭代我们可以构建从源节点到所有目的节点的完整路径。
4:距离向量路由选择算法
距离向量算法是一种迭代的、异步的和分布式的算法,而LS算法是一种使用全局信息的算法。说它是分布式的,是因为每个节点都要从一个或多个直接相连邻居接收某些信息,执行计算,然后将其计算结果发送给邻居。说他是迭代的,是因为此过程一直要持续到邻居之间无更多信息交换为止。说它是异步的,是因为它不要求所有节点相互间步伐一致地操作。
在我们给出DV算法之前,有必要讨论一下存在于最低开销路径的开销之间的一种重要关系。令
Dx(y)是从节点x到节点y的最低开销路径的开销。则该最低开销与著名的Bellman-Ford(BF)方程相关,即
方程中的minv是对于x的所有邻居的。
距离向量路由选择算法一般采用 Bellman-Ford算法:
(1)c(x,v):节点 x 到邻节点 v 的开销
(2)Dv(y):邻节点 v 到目的地 y 的最小开销
(3)Dx(y):邻节点 x 到目的地 y 的最小开销
伪代码:
1 Initialization
2 for all destinations y in N:
3 Dx(y) = c(x,y) /*if y is not a neighbor then c(x,y) = ∞ */
4 for each neighbor w
5 Dw(y) = ?for all destionations y in N
6 for each neighbor w
7 send distance vector Dx = [Dx(y): y in N] to w
8 Loop
9 wait(until I see a link cost change to some neighbor w or until I receive a distance vector from some neighbor w)
10 for each y in N
11 Dx(y) = minv{c(x,y) + Dv(y)}
12 if Dx(y) changed for any destination y
13 send distance vector Dx = [Dx(y) : y in N] to all neighbor
14 forever
某时刻 x<–>y 的开销由 4 变为 60,y 需要通知其他节点改变开销,但是 y 要首先改变与 x 的开销就要到达 x,通过算法 y 要经过 z 到达 x,但是 z 没有修改最短路径,告诉 y 到达 x 只需要 5,结果 y 到 z 然后返回 y,距离由 5 变为 6,但是还是小于 60,一直由 5 增长到大于 50 才结束。需要迭代 44 次。
(2)毒性逆转
上面的形成环路的问题可以通过毒性逆转来避免。
办法:定义 dz(x) = ∞,y 开始直接会选择 60 到 x,更新后修改完善转发表。
问题:只能解决两个节点之间的问题,一旦节点多了同样不能解决问题。
5:LS和DV算法比较
N是节点(路由器)的集合,而E是边(链路)的集合。
(1)报文复杂性
(2)收敛速度
(3)健壮性:如果有一台路由器故障,将发生什么现象
LS:节点可能通告不正确的链路费用、每个节点仅计算它自己的表。这就意味着,路由器计算在某种程度上是分离的,提供了一定程度的健壮性。
DV:一个节点可以向任意或所有目的节点通告其不正确的最低开销路径,一个不正确的节点计算会扩散到整个网络。
目前为止,我们将网络只看成一个互联路由器的集合。从所有路由器执行相同的路由选择算法以计算穿越整个网络的路由选择路径的意义上来说,一台路由器很难同另一台路由器区别开来。这样的话随着路由器数量变得很大,涉及路由选择信息的通信,计算和存储的开销将高的不可实现。因特网是ISP的网络,其中每个ISP都有它自己的路由器网络。ISP通常希望按自己的意愿运行路由器,或对外部隐藏其网络的内部组织面貌。在理想情况下,一个组织应当能够按照自己的意愿运行和管理其网络,还要能将其网络与其他外部网络连接起来。
这两个问题都可以通过路由器组织进自治系统(Autonomous System, AS)来解决。其中每个AS由一组通常处于相同管理控制下的路由器组成。
在相同AS中的路由器都运行相同的路由选择算法并且有彼此的信息。在一个自治自制系统内运行的路由选择算法叫做自治系统内部路由选择协议(intra-autonomous system routing protocol)
1:开放最短路优先(OSPF)
开放最短路优先(OSPF):OSPF是一种链路状态协议,他使用洪泛链路状态信息和Dijkstra算法。使用OSPF,一台路由器构建了一幅关于整个自治系统的完整拓扑图。每台路由器在本地运行Dijkstra算法以确定一个以自身为根节点到所有子网的最短路径树。使用OSFP时路由器向自治系统(AS)内所有其他路由器广播路由选择协议,每当一条链路状态发生变化时候,路由器就会广播链路状态信息。即使状态未发生变化也会每隔30min广播一次状态。
优点:
边界网关协议(Broder Gateway Protocol、BGP):一个运行在AS之间的路由选择协议。它协调因特网中数以万计的ISP。OSPF是一个AS内部的路由选择协议。
1:BGP的作用
在BGP中,分组并不是路由到一个特定的目的地址,相反是路由到CIDR化的前缀。其中每个前缀表示一个子网或一个子网的集合。在BGP的世界中,一个目的地可以采用138.16.68/22的形式,对于这个例子来说包括1024个IP地址。
作为一种AS间的路由选择协议,BGP为每台路由器提供了一种完成以下任务的手段:
2:通告BGP路由信息
如上图所示,这个简单的网络具有三个自治系统AS1、AS2、AS3。如显示的那样,AS3包括一个具有前缀x的子网。对于每个AS,每台路由器要么是一台网关路由器(gateway router),要么是一台内部路由器(interal router)网关路由器是一台位于AS边缘的路由器,它直接连接到其他AS中的一台或者多台路由器。内部路由器仅连接它自己AS中的主机和路由器。跨越两个AS的连接称为外部BGP连接,而在相同AS中的两台路由器之间的BGP会话称为内部BGP连接。在AS1中路由器1c是网关路由器,路由器1a、1b、1d都是内部路由器。
举个
如图所示的所有路由器对于前缀x的可达信息:首先AS3向AS2发送一个BGP报文,告知x存在并且位于AS3中;我们将该报文表示为“AS3 x”。然后AS2向AS1发送一个BGP报文,告知x存在并且能够先通过AS2然后进入AS3进而到达x;我们将该报文表示为“AS2 AS3 x”。以这种方式,每个自治系统不仅知道x存在,而且知道通向x的自治系统的路径。
在BGP中,每对路由器通过使用179端口的半永久TCP连接交换路由选择信息。每条直接连接以及所有通过该连接发送的BGP报文,称为BGP连接(BGP connection)。此外,跨越两个AS的BGP连接称为外部BGP(eBGP)连接,而在相同AS中的两台路由器之间的BGP会话称为内部BGP(iBGP)连接。
举个
当使用了iBGP和eBGP后,网关路由器3a先向网关路由器2c发送一个eBGP报文“AS3 x”。网关路由器2c然后向AS2中的所有其他路由器(包括网关路由器2a)发送iBGP报文“AS3 x”。网关路由器2a接下来向网关路由器1c发送一个eBGP报文“AS2 AS3 x”。最后,网关路由器1c使用iBGP向AS1中的所有路由器发送“AS2 AS3 x”。在这个过程完成后,在AS1和AS2中的每个路由器都知道了x的存在并且知道了通往x的AS路径。
3:确定最好的路由
在真实网络中,从一个给定的路由器到一个目的子网可能有多条路径,因此我们就要确定最好的路由。
在处理这个问题之前,我们需要了解一些BGP的属性:
(1)热土豆路由选择:对于路由器1b,尽可能快地将分组发送出其AS(最低开销),而不关心其AS外部到目的地的余下部分开销。
(2)路由器选择算法:
1.路由器被指定一个本地偏好值作为其属性之一。一条路由的本地偏好可能由该路由器设置或可能由在相同AS中的另一台路由器学习到。本地偏好属性的值是一种策略决定,它完全去决定于该AS的网络员。具有最高本地偏好的路由将被选择。
2.如果所有本地偏好值都相同,那么选择最短的AS-PATH的路由。
3.如果1和2都相同,那么使用热土豆路由选择,选择最靠近 NEXT-HOP的路由器路由。
4:IP任播
BGP还被用于IP任播服务,该服务用于DNS中。IP任播被DNS系统广泛用于将DNS请求的指向最近的根DNS服务器。
SDN控制平面即控制分组在网络的SDN使能设备中转发的网络范围逻辑,以及这些设备的和他们的服务的配置与管理,网络中转发设备称为分组交换机。根据网络层源/目的地址、链路层源/目的地址以及运输层、网络层和链路层中的分组首部做出转发决定。
SDN体系结构具有以下四个特征:
1.SDN控制平面:SDN控制器和ADN网络控制应用程序
下图是SDN控制器的组件
通信层:SDN控制器和受控制网络设备之间的通信,如果SDN控制器要控制远程SDN使能交换机、主机或其他设备的运行,需要一个协议来传送控制器与这些设备之间的信息。此外设备必须向SDN控制器传送本地观察到的事件,这些事件向SDN控制器提供网络状态的最新试图。这个协议构成了控制器体系结构的最底层。这个协议是图中的南向API。
网络范围状态管理层:由SDN控制平面所做出的最终控制决定,将要求控制器具有有关网络的主机、链路、交换机和其他SDN控制设备的最新状态信息。既然控制平面的终极目的是用于控制设备的流表,那么控制器也可以维护这些表的拷贝。这些信息都构成了由SDN控制器维护的网络范围状态的例子。
对于网络控制应用程序层的接口:控制器通过北向接口与网络控制应用程序交互。该API允许网络控制应用程序在状态管理层之间读/写网络状态和流表,当状态改变事件出现时应用程序能够注册进行通告。
2.OpenFlow协议
OpenFlow是一种网络交换模型,OpenFlow交换机由FlowTable(流表)、SecureChannel(安全通道)和OpenFlowProtocol(协议)三部分组成。OpenFlow交换机是整个OpenFlow网络的核心部件,主要管理数据层的转发。它运行在TCP之上默认端口6653。
从控制器到受控交换机流动的主要报文有:
3.ICMP:因特网控制报文协议
ICMP:被主机和路由器用来彼此沟通网络层信息,ICMP经典用途是差错报告。例如http中网络不可达这类的错误报告。ICMP从体系结构上讲位于IP之上,因为ICMP报文是承载在IP分组中的。同样IP数据报可以分解出数据报内容给ICMP。ICMP有一个类型字段和一个编码字段,包含引起该ICMP报文首次生成的IP数据报的首部和前8个字节。我们所知道的ping命令就是发送了一个ICMP类型8编码0的报文到指定主机,然后看回显请求,目的主机发回一个ICMP类型0编码0的ICMP回显回答。
ICMP报文类型表图如下:
ICMP类型 | 编码 | 描述 |
---|---|---|
0 | 0 | 回显回答(对ping的回答) |
3 | 0 | 目的网络不可达 |
3 | 1 | 目的主机不可达 |
3 | 2 | 目的协议不可达 |
3 | 3 | 目的端口不可达 |
3 | 6 | 目的网络未知 |
3 | 7 | 目的主机未知 |
4 | 0 | 源抑制(拥塞控制) |
8 | 0 | 回显请求 |
9 | 0 | 路由器通告 |
10 | 0 | 路由器发现 |
11 | 0 | TTL过期 |
12 | 0 | IP首部损坏 |
4.网络管理和SNMP
网络管理:网络管理包括硬件、软件和人类元素的设置、综合和协调,以监视、测试、轮询、配置、分析、评价和控制网络以及网元资源,用合理的成本满足实时性、运营性和服务质量的需求。
网络管理组件:
管理服务器:它是一个应用程序,通常有人参与,并运行在网络运营中心(NOC)的集中式网络管理站上,它是执行网络管理活动的地方,它控制网络管理信息的收集、处理、分析和显示。发起控制网络行为的动作。
被管设备:网络装备的一部分,位于被管理的网络中,可以是一台主机、路由器、交换机等联网设备。这些被管设备实际被管对象是设备中的硬件部分和硬件及软件的组成部分。
管理信息库(MIB):一个被管设备中的每个被管对象的管理信息收集地。这些信息可被管理信息服务器所用。
网络管理代理:运行在被管设备中的一个进程,该进程与管理服务器通信,在管理服务器的命令和控制下在被管设备中采取本地动作。
网络管理协议:运行在网络管理服务器和被管设备之间,允许服务器查询被管设备的状态,并经过代理间接地在这些设备上采取动作。
SNMP:简单网络管理协议:
它是一个应用层协议,用于管理服务器和代表管理服务器执行的代理之间传递网络管理控制和信息报文。SNNP最常用的是请求响应模式,其中SNMPP管理服务器向SNMP 代理发送一个请求,代理收到请求之后执行谋些动作。然后该请求发送一个回答。请求通常用于查询或修改某个被管设备关联的MIB对象值。还有一个用途是代理向管理服务器发送一种非请求报文该报文称为陷进报文,用于通知管理服务器有异常情况导致MIB对象值已改变。
啊啊,越到后面越写不进去了,先更新上,以后再补全吧!