标题：路由决策原则
鱼型问题
鱼型问题 
路由决策一般基于简单度量（如跳数或时延) 原则，采用最短路径算法，这种简化做法使路由技术获得了很好的伸缩性，但在资源分配和优化等方面却没有提供足够的支持。这可以通过著名的“鱼型问题”来说明。 
图1所示的网络拓扑形状如一条鱼，节点G代表鱼头，A和B代表鱼尾，数据流从A和B流向G。 
从鱼尾到鱼头有C→D→F和C→E→F两条路径。如果C→D→F比C→E→F短，则路由协议将选择C→D→F作为最短路由，A和B的业务流都将沿着C→D→F走，结果造成C→D→F负载沉重而C→E→F却被闲置的情形。 
从这个例子我们可以发现，路由协议实际上很“傻”。
这个问题源于IP路由协议的两个基本特点： 
第一，基于目的地选路。目的地址相同的数据包在被转发时，选择的下一跳也相同。所以，在路由表中，到达某目的地的路径只有一条（除非有多条成本相同
MPLS
的路径存在）。这样，网络中可用的其他链路就无法被利用起来，流量分布很难预测，实现均衡更不可能。 
第二，局部优化。每个节点都独自选择路径，相互之间缺乏协调合作，故整个网络的路径选择无法得到优化。如在图1中，很多节点都独立地选择C→D→F，结果导致最短路径成了最拥挤的路径。在这种情况下，较长的路径反而可能是更好的选择。为了优化网络总体资源利用率，路由决策应该从全局观点出发，把整个网络视为一个对象考虑。 
在极端的情况下，最短路径算法还可能导致路由振荡。假如某节点在某时刻根据路由协议选择C→D→F作为从C到F的最短路径，当所有业务流都经过时，该路径就变得异常拥塞，而另一条C→E→F则很空闲。下一次路由更新时，假如路由协议把C→E→F选为最短路径，则此改变就会将原来C→D→F的流量转移到C→E→F上。结果呢，情况倒置，C→E→F拥塞，而C→D→F却变得空闲。每次路由更新都会引起路径选择的翻转，从理论上讲，该过程会持续到无穷大。 
MPLS 
要克服鱼型问题，让路由技术变“聪明”，就必须改变网络选路基于目的地的特点，并提供网络内部流量管理机制，即路由技术必须能够精确地控制业务流所遍历的路径，这需要路由技术提供额外的能力以及更好的管理工具。 
过去，服务提供商一般采用IP over ATM技术解决此问题。ATM虚电路可以映射到物理拓扑结构中，所以，ATM骨干网的业务流能够得到有效管理。近几年来，MPLS异军突起，逐渐成了IP网络流量工程的主要机制，IETF正在对MPLS标记分配协议和IP路由协议扩展进行相应的标准化工作。 
MPLS采用覆盖模型解决流量工程。服务提供商使用MPLS建立由所有网络边缘节点组成的逻辑连接的虚拟网络，这些逻辑连接是通过带宽预留获得的MPLS显式路由，然后在物理网络上建立显式路由路径，从而均衡网络中所有干线的业务流，最终实现流量工程的目的。 
这种覆盖的方法非常适用于BGP路由协议。在典型的骨干网中，边缘节点一般都是BGP路由器，它们连接不同的路由域。为了与其他域交换路由信息，BGP路由器相互之间需建立对等关系，这些逻辑对等连接可以被映射到MPLS标签交换路径（LSP）上，这些LSP通过覆盖方法在所有的边缘路由器之间建立。因此，我们可以用MPLS LSP替代BGP路由器之间的路由。MPLS LSP是基于流量工程建立的，而不是纯粹基于IGP路由度量，故它能有效地提高网络资源的利用率。 
在图2所示的骨干网络中，节点A、B、C、D、E是同外部域连接的边缘路由器，实线表示物理链路，虚线表示逻辑连接，覆盖方法可以根据逻辑连接建立虚拟网络。当MPLS LSP控制这些物理拓扑中的具体路由时，网络就可以建立起相应的逻辑连接。 
现在，我们通过节点A和C之间的MPLS LSP来看看覆盖方法的好处。A和C之间有四条路径：A→G→H→C、A→F→H→C、A→G→F→H→C、A→F→G→H→C。假设A→G→H→C是从A到C的最短路径，则最短路径算法会选择A→G→H→C，但覆盖方法比最短路径算法要灵活得多，它可以使用四条路径中的任意一条，并根据两个节点之间的流量做出选择。如果节点A和B之间的业务流繁忙，则网络通过A→F→H→C建立A到C的LSP，这样，链路A→G上的带宽就全部留给了A和B之间的业务流。 
覆盖方法简单、易实现，但其缺点是伸缩性不好。为了建立N个边缘节点之间的所有逻辑连接，每个节点都需要建立到其他（N-1）个节点的LSP。所以，最后总
流量工程系统
共有N×（N-1）个LSP。在多个边缘节点的大型骨干网中，效率会明显降低。 
流量工程系统 
优化网络性能的过程被称为流量工程（Traffic Engineering），它使用先进的路由选择算法规定骨干网内部的业务流干线和规划业务流，将业务流映射到物理拓扑网络中，从而充分提高网络的整体效率。流量工程可以平衡网络中不同链路、路由器和交换机之间的业务负载，有效地利用网络所提供的带宽资源。 
一、流量工程系数组成 

路由计算
、链路状态、流量需求、路由、策略等，系统中其他模块可以通过数据库存储、访问和交换信息。 
流量工程系统需要确切地知道用户的流量需求，在VPN服务中，流量需求可以在服务提供商和客户之间的SLA（服务级别协定）中说明。在另一些情况下，需求估计基于流量测试。 
流量工程系统根据流量需求建立最佳路由之后，通过Web接口或SNMP配置网络单元完成这些需求。 
二、网络拓扑和链路状态发现 
流量工程系统必须时刻关注网络拓扑和链路状态的变化: 在配置网络时可以获得一些静态信息，使用网络管理系统（如SNMP陷阱和轮询系统）可以收集动态信息，如剩余带宽、链路利用率等。 
扩展路由协议（如OSPF）可以周期性地广播链路状态信息。OSPF应用范
网络拓扑和链路状态发现
围很广，并且已经为分配链路状态信息和构造拓扑数据库提供了必要的机制，所以，OSPF也被扩展到流量工程中用于拓扑和状态发现。 
OSPF方法要求所有节点尽力同邻居建立并维持对等关系，一个节点的邻居（即对等体）是跟它直接交换控制信息的节点，每个节点都记录着本地链路状态以及此状态与其他节点或网络管理站之间的通信信息，流量工程系统可以根据OSPF链路状态信息建立拓扑数据库。 
三、路由计算 
路由计算引擎是流量工程系统的“大脑”。 
从流量工程角度出发，路由选择必须超越简单的最短路径方法，即需要根据流量需求、拓扑结构和链路状态信息计算出最佳路由，解决资源优化、恢复以及抢占优先等问题。我们称之为约束路由（Constraint-based Routing）。 
约束路由有两种实现方式：在线和离线。 
离线方式根据当前信息对所有路由进行周期性计算，在维护期间完成路由更新。在离线方式中，所有路由在改变之后都要进行重新优化，所以，网络路由结果更佳。但是，对网络连接进行频繁、大规模的重新路由会导致数据流激增，从运营角度来看并不理想。此外，由于路由计算是周期性进行的，所以当网络增加新的流量需求时，容易产生额外时延。 
在线方式的路由计算以增量方式进行，即收到一条新请求后，路由计算模块只为新需求计算最佳路由，当前需求下的路由并不会被调整。在线方式的资源利用率没有离线方式高，但现有业务流的重新路由率却被降到最低。 
在线和离线方式可以结合使用。例如，在网络繁忙时，新的路由需求可以采用增量方式建立，当网络不太繁忙时，再用离线方式对所有需求做全面的重新优化。 
约束路由技术有两个基本要素：路由优化和路由设置。路由优化在给定一组约束条件的情况下，根据流量需求选择路由；确定路由之后，再在整个网络实现路由设置，以便于业务流沿着这些路由传输。 
约束路由解决方案很多，有一些基于高等数学的方法，可对网络资源的总体效率进行优化，还有一些是在IP路由框架中使用启发式的方法。 
目前，网络变得越来越复杂，资源需求也在迅速增长，以流量工程为基础的智能化路由技术将在管理网络资源、优化性能、提高总体效率、降低拥塞方面发挥越来越重要的作用。 
但是，流量工程并不能包治百病，一个特定的网络选择合适的流量工程技术时要考虑很多因素，如网络配置、业务流特征以及需求分布等。