3 组播信令协议

为了能在现有的GMPLS框架下支持具有TE能力的点到多点连接,IETF讨论了相应的信令需求[4]。与传统的点到点LSP相比,点到多点LSP除了原有的建立和删除操作,还增加了嫁接(grafting)和剪枝(Druning)这两个操作。嫁接操作允许将新的叶子(即出口LSR)动态地加入到一个已经存在的组播树(即点到多点LSP),而剪枝操作则是从组播树中动态地将已存在的某些叶子剪除,所有的操作都不能影响组播树上正在运行的业务。与此同时,扩展后的信令协议必须与GMPLS已有的特性兼容并尽可能重用已存在的协议。基于上述要求.S.Yasukawa等人在RSVP-TE的基础上做了扩展.引入了次要显示路由对象(SERO:Secondarv Explicit Route Object)、次要记录路由对象(SRRO:Secondary Record Route Object)和"子LSP" (S2L sub-LSP)等概念[5]。这个扩展在前不久刚刚成为RFC标准。

用图2所示的6节点光网络来阐述整个组播信令流程。与IP组播不同,点到多点LSP并不需要额外的组播组管理协议。这是因为叶子节点的地址直接被包括在请求中,而不像IP组播中仅仅只是使用一个D类地址。所有的组播树请求都将用一个三元组来表示{T,a,L},其中T是组播树的标识符,s是源节点,L是组播树的叶子集合。当T等于O的时候意味着这是一个组播树建立请求。例如,源节点A希望建立一个到叶子E和F的组播树,那么这个请求就被表示为{0,A,{E,F}}。当这颗树被建立后,它将被分配一个全局唯一的标识符,比如1。请求{1,A,{C1}}和{1,A,{F}}则分别意味着将叶子C嫁接到组播树1和将叶子F从组播树1中剪除。如果想删除整棵树,只需要将组播树1的所有叶子都剪除即可,即{1,A,{C,E}}。

3.1 组播树建立

当源节点收到一个建立请求后,它首先为这棵组播树计算显示路由。假设网络中的每个节点都具有无限制的组播能力,其组播实现可以是通过使用分光器将光信号一分为几[6],也可以是将光信号转换成电信号然后进行复制。这样就不需要对路由扩散协议进行额外的扩展。为一个组播组计算一棵从一个源节点到若干个叶子的最小代价树的问题被称之为Steiner树问题,众所周知,这是一个NP-complete问题。我们使用最近节点优先启发式算法来计算次优的动态点到多点Steiner树[7]。

当路由被计算好后,组播树被分解成若干个"子LSP"。在一个Path消息中,除了第一个子LSP被编码成ERO外,后续的子LSP都将被编码成SERO。为了减小信令消息的长度,如果某个SERO的部分路由与ERO或前面的SERO发生重叠,那么这部分冗余信息将被移除。例如,请求{0,A,{E,F}】的路由将被分解成2个子LSP,其中从源节点A到叶子E的子LSP的路由被编码成ERO{B,D,E},而从源节点A到F的子LSP的路由则被编码成SERO {D,F}。所有属于同一个组播树的子LSP共享一个全局唯一的组播树标识符。在实际的RSVP-TE消息中。这个标识符由点到多点标识符、隧道标识符、扩展隧道标识符、源节点地址和LSP标识符共同组成。当分枝(branch)节点D收到Path消息后,Path消息被分解成两个并被分别传递给下游节点E和F,每一个Path消息中只包含相应子LSP的SERO。也就是说前者为{E},而后者为{F}。当收到返回的Resv消息时,为了避免Resv消息的泛滥,分枝节点会等待所有下游节点的Resv消息都到达后再将其合并到一个消息中转发至上游节点。Resv消息中RRO/SRRO对象的处理与Path消息中的ERO/SERO类似。图3描述了请求{0,A,{E,F}}的信令实现过程。

3.2 组播树嫁接

组播树的嫁接可以有两种实现方式。第一种是将要嫁接的叶子添加到一个已经存在的Path消息中,然后刷新整个Path消息。例如,请求{1,A,{C}}的实现可以通过类似上一小节中处理请求{0,A,{C,E,F}}的信令过程实现。这种实现方式可能会导致ERO/SERO编码方案的重新计算。

第二种方式被称为增量更新。源节点为需要嫁接的叶子生成一个新的Path消息,此Path消息和其他已经存在并属于同一组播树的Path消息拥有同样的组播树标识符。组播树的嫁接只涉及对新Path消息的处理,不会影响组播树中已经存在的其他子LSP。基于这样可以减少信令消息的开销以及节点的处理时延,我们的实现中采用的是第二种方式。请求{1,A,{C}}的信令实现过程如图4所示。

3.3 组播树剪枝

组播树的剪枝同样有两种实现策略:隐示的和显示的。隐示剪枝使用标准的RSVP消息处理机制,通过修改原来的Path或Resv消息实现子LSP的删除。修改过的消息必须包含所有其他未被删除的子LSP。当使用这种方法的时候,节点在删除到达相应叶子的数据通道之前必须确保被删除的子LSP未被包含在任何其他的Path状态中。显示剪枝的实现则是基于为每一个Path消息生成一个相对应的PathTear消息。当某个Path消息所对应的所有叶子都需要被剪除的时候,显示剪枝应当被使用。此外。如果需要删除整个组播树时,必须为每一个Path消息建立的子LSP执行显示剪枝。


相关内容