1.计算、维护和安装转发表和流表有两种可能的方法:
每路由器控制。每台路由器中都包含转发和路由选择功能。每台路由器有一个路由选择组件,用于与其他路由器中的路由选择组件通信,以计算转发表的值。
逻辑集中式控制。逻辑集中式控制器计算并分发转发表以供每台路由器使用。
1.根据路由算则算法是集中式还是分散式可分为:
集中式路由选择算法用完整的、全局性的网络知识计算出从源到目的地之间的最低开销路径。也就是说,该算法以所有节点之间的连通性及所有链路的开销为输入。这就要求该算法在真正开始计算以前,要以某种方式获得这种信息。具有全局状态信息的算法常被称作链路状态(Link State, LS)算法。
在分散式路由选择算法中,路由器以迭代、分布式的方式计算出最低开销路径。没有节点拥有关于所有网络链路的开销的完整信息。相反,每个节点仅有与其之间相连链路的开销知识即可开始工作。然后,通过迭代计算过程以及与相邻节点的信息交换,一个节点逐渐计算出到达某目的节点或一组目的节点的最低开销路径。
根据算法是静态的还是动态的分类:
静态路由选择算法中,路由随时间的变化非常缓慢,通常是人工进行调整。
动态路由选择算法随着网络流量负载或拓扑发生变化而改变路由选择路径。一个动态算法可周期性地运行或直接相应拓扑或链路开销的变化而运行。虽然动态算法易于对网络的变化做出反应,但也更容易受诸如路由选择循环、路由振荡之类问题的影响。
根据是负载敏感还是负载迟钝分类:
负载敏感算法中,链路开销会动态地变化以反应出底层链路得到当前拥塞水平。如果当前拥塞的一条链路与高开销想联系,则路由选择算法趋向于绕开该拥塞链路来选择路由。
负载迟钝算法中,某条链路的开销不明确地反应其当前的拥塞水平。
2.在链路状态算法中,网络拓扑和所有的链路开销都是已知的,也就是说可用作LS算法的输入。实际上这是通过让每个节点向网络中所有其他节点广播链路状态分组来完成的,其中每个链路状态分组包含它所连接的链路的标识和开销。这经常有链路状态广播算法来完成。链路状态算法实际上是用Dijkstra算法实现的。
3.距离向量(Distance-Vector, DV)算法是一种迭代的、异步的和分布式的算法。DV算法实际上是用Bellman-Ford算法实现的。在DV算法中,当节点x发现它的直接相连的链路开销变化或从某个邻居接收到一个距离向量的更新时,它就更新距离向量估计值。每个节点等待来自任何邻居的更新,当接收到一个更新时计算它的新距离向量并向它的邻居分布其新距离向量。
4.DV算法会遇到路由选择环路而变得缓慢。对于两个直接相连的节点,可以通过毒性逆转技术加以避免,但是对于3个或以上的节点就无法使用毒性逆转技术检测到。
5.LS算法与DV算法的比较:
报文复杂性。LS算法要求每个节点都知道网络中每条链路的开销。这就要求发送O(|N||E|)个报文。而且无论何时一条链路的开销改变时,必须向所有节点发送新的链路开销。DV算法要求在每次迭代时,在两个直接相连邻居之间交换报文。算法收敛所需时间依赖于许多因素。当链路开销改变时,DV算法仅当在新的链路开销导致与该链路相连节点的最低开销路径发生改变时,才传播已改变的链路开销。
收敛速度。LS算法的实现是一个要求O(|N||E|)个报文的O(|N|2)算法。DV算法收敛较慢,且在收敛时会遇到路由选择环路。DV算法还会遇到无穷计数问题。
健壮性。如果一台路由器发生故障、行为错乱或收到蓄意破坏时,对于LS算法,路由器能够向其连接广播不正确的开销。作为LS广播的一部分,一个节点也可损坏或丢弃它收到的任何LS广播分组。但是一个LS节点仅计算自己的转发表;其他节点也自行执行类似的计算。这就意味着在LS算法下,路由计算在某种程度上是分离的,提供了一定程度的健壮性。在DV算法中,一个节点可向任意或所有目的节点通告其不正确的最低开销路径。在此情况下,DV算法中一个不正确的节点计算值会扩散到整个网络。
1.随着路由器数目变得很大,涉及路由选择信息的通信、计算和存储的开销将高得不可实现。因特网是ISP的网络,其中每个ISP都有它自己的路由器网络。ISP通常希望按自己的意愿运行路由器,或对外部隐藏其网络的内部组织面貌。这两个问题都可以通过将路由器组织进自治系统(Autonomous System, AS)来解决。其中每个AS由一组通常处在相同管理控制下的路由器组成。通常在一个ISP中的路由器以及互联它们的链路构成一个AS,而其他ISP则将它们的ISP拆分为数十个互联的AS。一个自治系统由其全局唯一的AS号(ASN)所标识。在相同的AS中的路由器都运行相同的路由选择算法并且有彼此的信息。在一个自治系统内运行得到路由选择算法叫做自治系统内部路由选择协议。
2.开放最短路优先(OSPF)是一种链路状态协议,它使用洪泛链路状态信息和Dijkstra最低开销路径算法。使用OSPF,一台路由器构建了一副关于整个自治系统的完整拓扑图。于是,每台路由器在本地运行Dijkstra的最短路径算法,以确定一个自身为根节点到所有子网的最短路径树。各条链路开销是由网络管理员配置的。
使用OSPF时,路由器向自治系统内所有其他路由器广播路由选择信息,而不仅仅是向其相邻路由器广播。每当一条链路的状态发生变化时,路由器就会广播链路状态信息。即使链路状态未发生变化,它也要周期性地(至少每隔30min一次)广播链路状态。
3.OSPF的优点包括下列几个方面:
安全。能够鉴别OSPF路由器之间的交换。使用鉴别,仅有受信任的路由器能参与一个AS内的OSPF协议,因此可防止恶意入侵者将不正确的信息诸如路由器表内。
多条相同开销路径。当到达某目的地的多条路路径具有相同的开销时,OSPF允许使用多条路径(这就是说,当存在多条相等开销的路径时,无须仅选择单一的路径来承载所有的流量)。
对单播和多播路由选择的综合支持。多播OSPF(MOSPF)提供对OSPF的简单扩展,以便提供多播路由选择。MOSPF使用现有的OSPF链路数据库,并为现有的OSPF链路状态广播机制增加了一种新型的链路状态通告。
支持在单个AS中的层次结构。一个OSPF自治系统能够层次化地配置多个区域。每个区域都运行自己的OSPF链路状态路由选择算法,区域内的每台路由器都向该区域内的所有其他路由器广播其链路状态。
1.在因特网中,所有的AS运行相同的AS间路由选择协议,称为边界网关协议(Broder Gateway Protocal, BGP)。
2.BGP的作用:
从邻居AS获得前缀的可达性信息。BGP允许每个子网向因特网的其余部分通告他的存在。BGP确保在因特网中的的所有AS知道该子网。如果没有BGP的话,每个子网将是隔离的孤岛,即它们孤独地存在,不为其他因特网其余部分所知和所达。
确定到该前缀的“最好的”路由。一台路由器可能知道两条或更多条到特定前缀的不同路由。为了确定最好的路由,该路由器将本地运行一个BGP路由选择过程。该最好的路由将基于策略以及可达性信息来确定。
3.对于每个AS,每台路由器要么是一台网关路由器,要么是一台内部路由器。网关路由器是一台位于AS边缘的路由器,它直接连接到在其他AS中的一台或多台路由器。内部路由器仅连接在它自己AS中主机和路由器。
4.在BGP中,每对路由器通过使用179端口的半永久TCP连接交换路由选择信息。每条直接连接以及所有通过该连接发送的BGP报文,称为BGP连接。此外,跨越两个AS的BGP连接称为外部BGP(eBGP)连接,而在相同AS中的两台路由器之间的BGP会话称为内部BGP(iBGP)连接。通过使用eBGP和iBGP会话,路由器之间可以互相通告可达性信息。
5.当路由器通过 BGP连接通告前缀时,它在前缀中包括一些BDP属性。用BGP术语来说,前缀及其属性称为路由。两个较为重要的属性是AS-PATH和NEXT-HOP。AS-PATH属性包含了通告已经通过的AS列表。当一个前缀通过某AS时,该AS将其ASN加入AS-PATH中现有的列表。BGP路由器还使用AS-PATH属性来检测和防止通告环路,如果一台路由器在路径列表中看到包含了它自己的AS,它将拒绝该通告。NEXT-HOP是AS-PATH起始的路由器接口的IP地址。
6.通过使用热土豆路由选择,选择的路由到开始该路由的NEXT-HOP路由器具有最小开销。在一台路由器转发表中对于热土豆路由器选择增加AS向外前缀的步骤:
从AS间协议学到经过多个网关可达子网x。
使用来自AS内部协议的路由选择信息,以决定到达每个网关的最低开销路径的开销。
热土豆路由选择:选择具有最小最低开销的网关。
从转发表确定通往最低开销的网关的接口I。在转发表中加入表项(x, I)。
7.在实践中,BGP使用了一种比热土豆路由选择更为复杂但却结合了其特点的算法:
路由被指派一个本地偏好值作为其属性之一。一条路由的本地偏好可能由该路由器设置或可能在相同AS中的另一台路由器学习到。本地偏好属性的值是一种策略决定,它完全取决于该AS的网络管理员。具有最高本地偏好值的路由将被选择。
从余下的路由中(所有都具有相同的的最高本地偏好值),将选择具有最短AS-PATH的路由。
从余下的路由中(所有都具有相同的最高本地偏好值和相同的AS-PATH长度),使用热土豆路由选择,即选择具有最靠近NEXT-HOP路由器的路由。
如果仍留下多条路由,该路由器使用BGP标识符来选择路由。
8.除了作为因特网的AS间路由选择协议外,BGP还常为用于实现IP任播服务,该服务通常同用于DNS中。
1.SDN体系结构具有4个关键特征:
基于流的转发。SDN的交换机分组转发工作,能够基于运输层、网络层或链路层首部中任意数量的首部字段值进行。
数据平面与控制平面分离。数据平面由网络交换机组成,交换机是相对简单(但快速)的设备,该设备在它们的流表中执行“匹配加动作”的规则。控制平面由服务器以及决定和管理交换机流表的软件组成。
网络控制功能:位于数据平面的交换机外部。软件在服务器上执行,该服务器与网络交换机截然分开且与之远离。控制平面自身由两个组件组成:一个SDN控制器,以及若干网络控制应用程序。控制器维护准确的网络状态信息;为运行在控制平面的中的网络控制应用程序提供这些信息;提供方法,这些应用程序通过这些方法能够监视、编程和控制下面的网络设备。
可编程的网络。通过运行在控制平面中的网络控制应用程序,该网络是可编程的。这些应用程序代表了SDN控制平面的“智力”,使用了由SDN控制器提供的API来定义和控制网络设备中的数据平面。
2.SDN控制器的功能大体可组织为3个层次:
通信层:SDN控制器和受控网络设备之间的通信。显然,如果SDN控制器要控制远程SDN使能的交换机、主机或其他设备的运行,需要一个协议来传送控制器与这些设备之间的信息。此外,设备必须能够向可知其传递本地观察到的时间。这些时间向SDN控制器提供该网络状态的最新视图。这个协议构成了控制器体系结构的最底层。
网络范围状态管理层。由SDN控制平面所做出的最终控制决定,将要求控制器具有有关网络的主机、链路、交换机和其他SDN控制设备的最新状态信息。交换机的流表包含计数器,其值也可以由网络控制应用程序很好地使用;因此这些值应当为应用程序所用。
对于网络控制应用程序层的接口。控制器通过接口与网络控制应用程序交互。该API允许网络控制应用程序在状态管理层之间读/写网络状态和流表。当状态改变事件出现时,应用程序能够注册进行通告。
3.OpenFlow协议运行在TCP之上,使用6653的默认端口号。从控制器到受控交换机流动的重要报文有下列这些:
配置。该报文允许控制器查询并设置交换机的配置参数。
修改状态。该报文由控制器所使用,以增加/删除或修改交换机流表中的表项,并且设置交换机端口特性。
读状态。该报文被控制器用于从交换机的流表和端口收集统计数据和计数器值。
发送分组。该报文被控制器用于在受控交换机从特定的端口发送出一个特定的报文。
从受控交换机到控制器流动的重要报文有下列这些:
流删除。该报文通知控制器已删除一个流表项,例如由于超时,或作为收到“修改状态”报文的结果。
端口状态。交换机用该报文向控制器通知端口状态的变化。
分组入。一个分组到达交换机端口,并且不能与任何流表项匹配,那么这个分组将被发送给控制器进行额外处理。匹配的分组也被发送给控制器,作为匹配是所采取的一个动作。“分组入”报文被用于将分组发送给控制器。
1.因特网控制报文协议(ICMP),被主机和路由器用来彼此沟通网络层的信息。ICMP通常被认为是IP的一部分,但从体系结构上讲它位于IP之上,因为ICMP报文是承载在IP分组中的。
2.ICMP报文有一个类型字段和一个编码字段,并且包含引起该ICMP报文首次生成的IP数据报的首部和前8个字节。表5-1列出了所选的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首部损坏 |
1.网络管理包括了硬件、软件和人类元素的设置、综合和协调,以监视、测试、轮询、配置、分析、评价和控制网网络及网元资源,用合理的成本满足实时性、运营性能和服务质量的要求。
2.网络管理的关键组件:
管理服务器是一个应用程序,通常有人的参与,并运行在网络运营中心的集中式网络管理的工作站上。管理服务器是执行网络管理活动的地方,它控制网络管理信息的收集、处理、分析和/或显示。正是在这里,发起控制网络行为的动作,人类网络管理员与网络设备打交道。
被管设备是网络装备的一部分,位于被管理的网络中。在一个被管设备中,有几个所谓被管对象。这些被管对象是被管设备中硬件的实际部分和用于这些硬件及软件组件的配置参数。
一个被管设备中的每个被管对象的关联信息收集在管理信息库(Management Information Base, MIB)中,这些信息的值可供管理服务器所用。MIB对象由称为SMI(Strcture of Management Information)的数据语言所定义。
在每个被管设备中还驻留有网络管理代理。它是运行在被管设备中的一个进程,该进程与管理服务器通信,在管理服务器的命令和控制下载被管设备中采取本地动作。
网络管理框架的最后组件是网络管理协议。该协议运行在管理服务器和被管设备之间,允许管理服务器查询被管设备的状态,并经过其代理间接地在这些设备上采取行动。代理能够使用网络管理协议向管理服务器通知异常事件。重要的是网络管理协议自己不能管理网络。恰恰相反,它为网络管理员提供了一种能力,使他们能够管理网络。
3.简单网络管理协议版本2(SNMPv2)是一个应用层协议,用于在管理服务器和代表管理服务器执行的代理之间传递网络管理控制和信息报文。SNMP最常使用的是请求响应模式,其中SNMP管理服务器向SNMP代理发送一个请求,代理接收到该请求后,执行某些动作,然后对该请求发送一个回答。请求通常用于查询或修改与某被管设备关联的MIB对象值。SNMP第二个常被使用的是代理向管理服务器发送的一种非请求报文,该报文被称为陷阱报文。陷阱报文用于通知管理服务器,一个异常情况已经导致了MIB对象值的改变。表5-2中列出了SNMPv2定义的7种报文,这些报文一般称为协议数据单元(PDU)。SNMP PDU通常是作为UDP数据报的载荷进行传输的。
SNMPv2 PDU类型 | 发送方-接收方 | 描述 |
---|---|---|
GetRequest | 管理者到代理 | 取得一个或多个MIB对象实例值 |
GetNextRequest | 管理者到代理 | 取得列表或表格中下一个MIB对象实例值 |
GetBulkRequest | 管理者到代理 | 以大数据块方式取得值 |
InformRequest | 管理者到管理者 | 向不能访问的远程管理实体通知MIB值 |
SetRequest | 管理者到代理 | 设置一个或多个MIB对象实例的值 |
Response | 代理到管理者或管理者到管理者 | 对GetRequest, GetNextRequest, GetBulkRequest, SetRequest PDU,或InformRequest产生的响应 |
SNMPv2-Trap | 代理到管理者 | 向管理者通知一个异常事件 |