⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rfc3035.txt

📁 很多RFC的中文文档
💻 TXT
📖 第 1 页 / 共 3 页
字号:
有时, 认为两个LSR在LC-ATM接口上相邻(在一些LSP)的想法是很用的, 即使它们俩的连接是通过ATM虚通路的ATM云团建立起来. 这样, 对MPLS来说, VPI字段是没有用的, 标签必须完全在VCI字段内编码.
这样, 在LSR之间的非MPLS连接中, VCI缺省值是32. 也可以配置其它的值, 只要比方都知道配置的值就行了. VPI可以设置成利用虚通路所需要的任何值.
VPI/VCI值中, 如果它的VCI部分的值是在0到32之间(包含0,32), 那么它就不能被视为是标签的编码.
除了这些保留值以外, 用于连接的两个方向中的VPI/VCI值都是独立的空间.
VPI/VCI允许范围内的值通过LDP传送. 在标签交换中, 如果使用了多个VPI, 则对每一个VPI, VCI允许的范围是不同的, 每一个VCI范围通过LDP传送.

6.3 通过ATM SVC的连接
    有时, 认为两个LSR在LC-ATM接口上相邻(在一些LSP)的想法是很用的, 即使它们俩的连接是通过一组ATM交换虚电路的ATM云团建立起来.   
文档没有详细说明处理这个连接的过程. 可以在[4]中找到这个处理过程. [4]中描述的过程允许分配VCID到每一个VC中, 并详细说明了如何使用LDP在FEC中绑定VCID. 接收分组中的最高标识符将由分组到达时的虚电路推断出(通过一对一映射). 在非MPLS连接中不是缺省的VPI或VCI值.

7. 标签分配及维护过程
    文档讨论了ATM-LSR 使用的"下游按需"标签分配. 不支持VC合并的ATM-LSR必须使用这些标签分配过程, 而支持VC合并的ATM-LSR也可以使用. 而这两种情况下的处理过程有一些不同. 下面我们将依次对这两种情况进行描述. 我们首先描述ATM-LSR域的边缘组成员的行为,这些行为对域中有没有支持VC合并的LSR都是一样的.
        
7.1 边缘LSR行为
考虑ATM-LSR域的边缘组的成员. 假设, 有一个路由计算结果, 选择一个ATM-LSR作为一个特定FEC的下一跳, 而且这下一跳可以通过LC-ATM接口到达. 边缘LSR使用LDP为来自下一跳的FEC请求标签绑定. 请求中的跳计数字段被置1(参见下一段). 一旦边缘LSR收到标签绑定信息, 它就使用MPLS转发过程以在指定FEC中传送分组, 使用指定标签作为输出标签. (或如果使用[4]中的VCID技术, 就用VPI/VCI来响应指定的VCID以作为输出标签). 
注意: 如果边缘LSR的前一跳使用下游按需标签分配来为一指定FEC请求来自边缘LSR的标签, 如果边缘LSR不将来自前一跳的LSP与其它LSP合并, 如果来自前一跳的请求有h的跳计数值, 那么边缘LSR发出的请求中跳计数值应该置1, 而不是h+1.
边缘LSR接收的绑定信息包含跳计数, 跳计数表示一个分组使用该标签 经过ATM-LSR域时需要的跳数. 如果跳计数与绑定相联合, ATM-LSR就要在发送分组前用这个数调整数据分组的TTL值. 在任何情况下, 必须在传送前至少调整数据分组的TTL值一次. 第10部分将详细讨论了这个过程(以IP分组为例). 第9部分详细讨论了分组的封装过程.
当ATM-LSR域的边缘组的成员从ATM-LSR中接收到标签绑定请求时, 它分配一个标签, 并将包含已分配标签的绑定返回(通过LDP)到最先发起请求的对等层. 它将绑定中的跳计数置1. 
当路由计算引起边缘LSR改变指定FEC的下一跳时, 原先的下一跳在ATM-LSR域中, 边缘LSR将要通报(通过LDP)原先的下一跳, 即与FEC关联的标签绑定, 不再使用了.

7.2 传统ATM交换(非VC合并)
ATM-LSR在LC-ATM接口上与另一个ATM-LSR的对等连接上, 接收(通过LDP)某一FEC的标签绑定请求时, ATM-LSR做以下的行为:
---分配标签,
---为FEC请求(通过LDP)下一跳的标签绑定,
---将包含已分配标签的绑定返回(通过LDP)到最先发起请求的对等层,
为这个过程, 我们定义了最大跳数值MAXHOP. 缺省值为255, 可以配置成其它值.
ATM-LSR发送请求(发送至下一跳LSR)中的跳计数字段, 要比从上游LSR中接收的请求中的跳计数值加1. 如果此时跳计数值超过MAXHOP, 请求将不能发送到下一跳, ATM-LSR必须通报邻近上游, 请求被禁止.
否则, 一旦ATM-LSR接收来自下一跳的绑定, 又将使用已用的标签.
ATM-LSR可以在返回上游绑定前选择等待来自下游的请求响应. 这是一种"受控控制"方式(如[1],[2]中所定义), 特殊"入口初始受控控制". 这样, 只要ATM-LSR接收来自下游的跳数大小0且小于MAXHOP, 在返回上游时, 必须将跳数值加1, 并在绑定中包含这个结果. 然而, 如果跳数超过MAXHOP, 就不能给上游传递标签绑定. 而是, 必须通报对等上游LDP, 所请求的标签绑定被禁止. 如果从下游接收的跳数是0, 则传递给上游的跳数也是0; 这表明实际跳数是未知.
ATM-LSR也可以选择返回上游绑定, 不必等待来自下游的绑定("独立控制", 如[1],[2]中所定义). 这样, 它绑定时指定跳数为0, 表明真实跳数未知. 跳数的正确值将在后面返回, 如下所述.
注意ATM-LSR, 或ATM-LSR域边缘组的成员, 可以从同一ATM-LSR中接收同一FEC的多个绑定请求. 它必须为每一请求产生一个新的绑定(假定有足够的资源可以这么做), 保留任一现存的绑定. 为每一接收的请求, ATM-LSR还必须为FEC产生发送到下一跳的新的绑定请求.
当路由计算引起ATM-LSR改变一个FEC的下一跳时, ATM-LSR必须通报(通过LDP)原先的下一跳, 即与FEC关联的标签绑定, 不再使用了.
当LSR接收到声明指定的标签绑定不再使用的通告时, LSR将对与该绑定相关的标签进行解分配, 然后去除该绑定. ATM-LSR在接收到这样的通告和去除绑定的情况下, 必须通报FEC的下一跳, 不再使用该标签绑定了. 如果LSR不去除绑这一绑定, 只有在下面情况下, 它可以重新用此绑定, 即它接收到同一FEC的请求, 且跳数值与最先导致这一绑定产生的请求的跳数值相同. 
当路由改变时, 标签绑定要从与先前路由不同处的路由点开始重新确立. 该点的LSR上游不用改变(有一个例外, 如下所述).
不管LSR何时改变它特定FEC的下一跳, 如果新的下一跳通过LC-ATM接口可达, 那么对每一与该FEC相关的标签, 及分布式上游, 它都必须从下一跳中请求新的标签绑定.
ATM-LSR从邻近下游接收到指定FEC的标签绑定时, 由于使用独立控制方式, 或由于来自下游的新绑定是路由改变的结果, 它可能已经将与该FEC相关的标签绑定发送到邻近上游. 这样, 除非跳数值为0, ATM-LSR必须将新绑定的跳数值加1. 如果新跳数值与原先发送到邻近上游的跳数值不同(包括邻近上游被赋于"未知"跳数值的情况), ATM-LSR必须向邻近上游通报这个改变. 每一ATM-LSR必须依次将跳数值加1 , 并传送至上游直到到达入口边缘LSR. 如果此间任何一点的跳数值等于MAXHOP, ATM-LSR就要从邻近上游中收回绑定. 跳数值0必须不变的传送到上游.
作为从另一个LSR(上游)接收标签绑定请求的结果, ATM-LSR对它的下一跳LSR发出标签绑定请求, 当送往下一跳LSR的请求被禁止时, ATM-LSR应当删除对接收请求响应产生的绑定, 并通报请求者(通过LDP).
ATM-LSR接收的绑定请求中如果包含超过MAXHOP值的跳数值, 它就不能建立绑定, 必须向请求方返回一个错误值.
当LSR丢失了与另一个LSR的LDP部分, 将会采取下列行为. 通过LDP这一连接得到的任何绑定信息都必须丢弃. 作为从对等端接收标签绑定请求的结果而建立的任一标签绑定, LSR都将去除(解分配与这些绑定相关的标签).
ATM-LSR从它的邻处响应绑定请求时, 使用"水平分割"方法. 就是说, 如果ATM-LSR接收一个指定FEC的绑定请求, LSR根据ATM-LSR使该请求成为指定FEC的下一跳, ATM-LSR不为路由返回绑定.
非合并ATM-LSR通常使用"保守标签方式" [1].

7.3 能实现VC合并的ATM交换
为适应支持VC合并的ATM-LSR, 需要作一些相关的小变化. 支持VC合并的ATM-LSR的最主要的差别是对每一个FEC只需要一个输出标签, 即使从邻近上游中接收了FEC的多个标签绑定请求.
支持VC合并的ATM-LSR从某一FEC的上游LSR中接收了绑定请求时, 对这个FEC, 它还没有输出标签绑定(或对这个标签绑定有一个明显请求), ATM-LSR必须对它的下一跳发出绑定请求, 就象不支持合并的ATM-LSR一样. 然而, 如果ATM-LSR已经有一个输出标签绑定, 它就不需要发出一个下游绑定请求. 相反, ATM-LSR会简单地分配一个输入标签, 用一个绑定向上游请求端返回该标签. 当对应这个标签的分组的最高标识被请求端接收时, 最高标识值将被现有的对应于同一FEC的输出标签值替代.
如果ATM-LSR对FEC没有输出标签绑定, 但却有一个明显请求, 它就不需要发送另外的请求了.
发送上游标签绑定时, 下游与相应绑定关联的跳数值必须加1, 加1后的跳数值,即新绑定关联的跳数值必须传送到上游. 然而, 有两个例外: 跳数值为0时必须将该值不变地传送到上游, 跳数值已是MAXHOP, ATM-LSR不是传送上游绑定, 而是传送一个错误信息到上游.
注意, 既然有不支持VC合并的上游交换, 象传统的ATM-LSR和ATM-LSR域的边缘组成员一样, 支持VC合并的ATM-LSR必须在每次从上游接收到请求时, 发出新的绑定. 然而, ATM-LSR只需要在它没有标签绑定合适路由时,发送相应下游绑定请求.
支持VC合并的ATM-LSR的路由表发生变化时, 会引起对它的FEC选择新的下一跳, 它会随意地释放原先下一跳的路由绑定. 支持VC合并的ATM-LSR对新的下一跳没有相应的绑定时,它会请求绑定.(可以选择执行保守及自由标签模式[1])
如果获得了新绑定, 其中包含的跳数与原先的旧绑定中的跳数不同, ATM-LSR必须将新的跳数值加1, 并向所有的同一FEC标签绑定的邻近上游通报这个新值. 与传统的ATM-LSR一样, 能够将新值往回传送到ATM-LSR域的入口处. 如果在此中任何一个点上跳数值超过了MAXHOP,那么这个路由的标签绑定, 必须从所有邻近上游到该绑定先前提供处, 一一被收回. 这样, 可以确保瞬时路由引起的环路被检测出并被破坏掉.

8. 封装
这个部分描述的过程仅涉及ATM-LSR域的边缘LSR. ATM-LSR本身不对这种封装作任何修改.
必须使用RFC 2684 [5] 6.1部分中的空封装来传递标识分组. 
除了下面说明的特殊情况外, 当标识分组在LC-ATM接口被传递时, VPI/VCI(或VCID)值被认为标签栈中的最高标签, 分组必须包含"通用头" [3].
如果分组的标签栈有n个条目, 则它必须有n个条目的通用头. 最高标签的实际值在VPI/VCI字段中编码. 通用头的最高条目的标签值(仅是一个"占位符"条目)在传送时必须被置0, 在接收时也必须被忽略. 分组的输出TTL, 及它的Cos信息, 分别在通用头最高栈条目中的TTL和Cos字段中携带.
注意, 如果分组只有一个条目的标签栈, 就需要一个单目通用头(4个字节), 即使实际标签值在VPI/VCI字段中编码. 这样才能保证分组都有一个通用头. 否则, 就不可能确定分组有没有通用头, 也不可能确定它有没有额外标签栈条目.
要消除这个额外开销的唯一方法是:
---据先验知识分组仅有一个标签(如: 可能网络仅支持一级标签)
---对每个FEC使用两个VC, 一个用于仅含一个标签的分组, 另一个用于有多于一个标签的分组.
第二种方法要求有一种信令方法, VC通过LDP仅传送含一个标签的分组, 而不传送通用头. 若支持VC合并, 还必须注意不要把不使用VC的通用头合并VC到一个使用VC的通用头中, 或反之. 
若上面两种方法都不允许使用, 就可能没有其它更实用的方法了. 注意, 如果通用头不存在, 输出TTL将在网络层头中的TTL字段中传送.

9. TTL操作
这个部分描述的过程仅涉及ATM-LSR域的边缘LSR. ATM-LSR本身不对TTL作任何修改.
TTL调整过程的细节如下所述. 如果分组作为未标识分组被边缘LSR中接收, "输入TTL"值来自IP报头(其它网络层协议的过程需要进一步的研究). 如果分组作为标识分组被边缘LSR中被接收, 就使用[3]中详细说明的封装, "输入TTL"值来自标签栈的最高条目.
如果跳数值与传送分组时使用的标签绑定关联, "输出TTL"就设置为下面两个值中的较大者: 0, 输入TTL与跳数值的差值. 如果跳数值不与传送分组时使用的标签绑定关联, "输出TTL"就设置为下面两个值中的较大者: 0, 比输入TTL小1的值. 
如果这使得输出TTL变成零, 这个分组将不能视为使用指定标签的标签分组而传送. 将对分组作如下两种方法之一的处理:
---分组超时; 将发送ICMP报文;
---分组将作为未标识分组向前传送, TTL值为1, 比输入TTL小; 这样的传送需要在非MPLS连接上进行. 
当然, 如果输入TTL为1, 就只能是这两种情况中的第一种.
如果分组作为标识分组传送, 携带的输出TTL如第九部分中所指定.
边缘LSR从LC-ATM接口中接收到标识分组时, 能从一般封装的最高标签栈条目中得到输入TTL, 或如果没有封装, 就从IP报头中得到. 
如果分组的下一跳是ATM-LSR, 输出TTL将使用本部分讲述的过程形成. 否则输出TTL使用[3]中描述的过程形成.
本部分的过程本来仅是用于单播分组.

10. 可选环路检测: 分布路径矢量
    作为一个可配置选项, 每一ATM-LSR必须实现下面的检测传送环路的过程. 我们称之为LDPV过程(路径矢量的环路检测). LDPV不阻止传送环路的信息, 但确保任一这样的环路被检测到. 如果该选项没有被激活, 将使用原先讨论的跳数机制检测环路. 如果该选项被激活, 环路检测将更为快速, 但这是以高开销为代价的.

10.1 何时发送下游路径矢量
假定LSR R 为特定LSP向下一跳发送一个标签绑定请求. R不支持VC合并, R 被配置成使用LDPV过程:
---如果R为LSP发送请求, 是因为R是一个入节点, 或因为R已获得新的一跳, R将必须在请求中包括路径矢量对象, 且路径矢量对象必须只包含R的自身地址.
---如果R从上游LSR中接收了请求后而发送请求, 那么:
* 如果接收的请求有路径矢量对象, R必须将自身地址加入到接收的路径矢量对象中, 且必须将新路径矢量对象传送随标签绑定请求传送到它的下一跳;
* 如果接收的请求没有路径矢量对象, R必须在发送的请求中包含路径矢量对象, 且该路径矢量对象只包含R的自身地址.
支持VC合并的LSR不应该在它向下一跳发送的请求中包含路径矢量对象.
如果LSR接收的标签绑定请求, 它里面的路径矢量对象包含节点自身的地址, LSR则推断出该标签绑定请求已在环路中传播了一周. LSR此时所作的处理与出现跳数值超过MAXHOP情况时所作的处理一样.(参见8.2部分)
这一过程检测出请求消息围绕非合并ATM-LSR序列循环的情况.

10.2 何时发送上游路径矢量
如第八部分所述, 存在如下情况: LSR R必须通过标签绑定响应信息, 向它的邻近上游告知指定LSP的跳数值改变. 如果以下条件都成立:
---R 被配置成使用LDPV过程,
---R支持VC合并,
---R不是LSP的出口
---R不向它的邻处通告跳数值的减少
那么R必须在响应信息中包含路径矢量对象.
如果跳数值的改变是由于R的下一跳S告知跳数值改变的结果, 且从S向R传送的消息包含了路径矢量对象, 那么如果上述的条件成立, R必须在该对象中加入其自身地址, 并将结果传送到上游. 否则, 如果上述条件不成立, R必须创建一个只包含自身地址的新对象.
如果R 被配置成使用LDPV过程, 且R支持VC合并, 那么它可以在任一向上游发送的标签绑定响应消息中包含路径矢量对象. 特别地, 当R 收到从它的下一跳中发来的标签绑定响应时, 如果该响应包含路径矢量, R可以(如果已配置成使用LDPV过程)向它的邻近上游发送响应, 其中包括在接收路径矢量中将自身地址加入而形成的路径矢量对象.
如果R不支持VC合并, 它不能发送上游路径矢量对象.
如果LSR从它的下一跳中接收了消息, 其中的路径矢量对象包含LSR自身地址, 那么LSR所作的处理与它在接收到的消息中跳数值等于MAXHOP情况下作的处理是一样的.
配置成使用LDPV过程的LSR, 一旦相应路径矢量对象已被传送, 就不能存储路径矢量.
注意, 如果ATM-LSR域完全由非合并ATM-LSR组成, 路径矢量就不需要被传送至上游, 因为通过路径矢量下游传播的方法就可以检测到任一环路.
除非跳数值增加, 否则采用不发送路径矢量的方法时就要避免在没有环路的情况下发送. 代价是在没有环路的某些情况下, 花费在检测环路的时间会延长.

11. 安全考虑
文档详细说明的封装和过程并没有涉及任何认证过程和/或对网络层分组的加密过程(如对IP数据报的IPSEC应用). 
文档中描述的MPLS标签过程不是不能变更的(或是偶然的, 或是恶意的).这种变更将导致错误前传.
文档中描述的过程, 接收LSR不能鉴别传送LSR.
在[2]在可以找到适用于标签分配机制的安全问题讨论.

12 参考文献

   [1] Rosen, E., Viswanathan, A. and R. Callon "Multi-Protocol Label
       Switching Architecture", RFC 3031, January 2001.

   [2] Andersson L., Doolan P., Feldman N., Fredette A. and R. Thomas,
       "LDP Specification", RFC 3036, January 2001.

   [3] Rosen, E., Rekhter, Y., Tappan, D., Farinacci, D., Fedorkow, G.,
       Li, T. and A. Conta, "MPLS Label Stack Encoding", RFC 3032,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -