<% Set conn = Server.CreateObject("ADODB.Connection") conn.ConnectionString ="Provider=SQLOLEDB.1;Password=sctelecomtemp;User ID=sctelecom3;Persist Security Info=True;Initial Catalog=SCtelecom;Data source=localhost;Connect Timeout=15" conn.Open %> <% '我自己写的一些函数 '======================================================================================================== '比较两个字符串Str1和Str2,如果Str1包含Str2返回True,否则返回False Function CompString(Str1,Str2) If Instr(1,Str1,Str2,1) Then CompString=True Else CompString=False End If End Function '======================================================================================================== 'Str 要分解的String 'FirstLinkStr 第一个分解后的字符串的连接字符串前部 'LastLinkStr 最后一个分解后的字符串的连接字符串前部 'LinkStr1 非第一个分解后的字符串的连接字符串前部 'LinkStr2 分解后的字符串的连接字符串后部 '返回一个新的字符串 Function DeleaveString(Str,FirstLinkStr,LinkStr1,LinkStr2,LastLinkStr,Char) TempStr=Str If TempStr<>"" Then If Instr(1,TempStr,Char,1)<1 Then DeleaveString=FirstLinkStr&TempStr&LastLinkStr Else E=Instr(1,TempStr,Char,1) Strtmp=Left(TempStr,E-1) TempStr=Replace(TempStr,"","",E+1,1) DeleaveString=FirstLinkStr&Trim(Strtmp)&LinkStr2 Do While Instr(E,TempStr,Char,1) E=Instr(1,TempStr,Char,1) Strtmp=Left(TempStr,E-1) TempStr=Replace(TempStr,"","",E+1,1) DeleaveString=DeleaveString&LinkStr1&Trim(Strtmp)&LinkStr2 Loop DeleaveString=DeleaveString&LinkStr1&Trim(TempStr)&LastLinkStr End If End If End Function '======================================================================================================== '比较两个字符串,把相同的保留一个,组成一个新的字符串返回 Function CompLinkString(Str1,Str2,Char) TempStr1=Str1 TempStr2=Str2 If TempStr1<>"" Then If TempStr2<>"" Then If Instr(1,TempStr2,Char,1)<1 Then If Instr(1,TempStr1,TempStr2,1)<1 Then TempStr1=TempStr1&Char&TempStr2 End If Else Do While Instr(1,TempStr2,Char,1) E=Instr(1,TempStr2,Char,1) Str=Left(TempStr2,E-1) If Instr(1,TempStr1,Str,1)<1 Then TempStr1=TempStr1&Char&Trim(Str) End If TempStr2=Replace(TempStr2,"","",E+1,1) Loop Str=TempStr2 If Instr(1,TempStr1,Str,1)<1 Then TempStr1=TempStr1&","&Trim(Str) End If End If End If Else TempStr1=TempStr2 End If CompLinkString=TempStr1 End Function '======================================================================================================== '统计字符串中元素个数 Function CountElements(Str,Char) TempStr=Str If TempStr<>"" Then Count=0 If Instr(1,TempStr,Char,1)<1 Then CountElements=1 Else Do While Instr(1,TempStr,Char,1) Count=Count+1 TempStr=Replace(TempStr,Char,"",1,1) Loop CountElements=Count+1 End If Else CountElements=0 End If End Function '======================================================================================================== '取指定位置的字符串 Function GetElement(Str,Char,Num) TempStr=Replace(Str,"","") If TempStr<>"" Then Count=0 If Instr(1,TempStr,Char,1)<1 Then Count=1 Else Do While Instr(1,TempStr,Char,1) Count=Count+1 TempStr=Replace(TempStr,Char,"",1,1) Loop Count=Count+1 End If TempStr=Replace(TempStr,"",Char) If Count>1 Then If Num<1 Then GetElement="" End If If Num=1 Then GetElement=Left(TempStr,Instr(1,TempStr,Char,1)-1) End If If Num=Count Then For i=1 to Num-1 TempStr=Replace(TempStr,"","",Instr(1,TempStr,Char,1)+1,1) Next GetElement=TempStr End If If Num>Count Then GetElement="" End If If Num>1 And NumCountElements(Str,Char) Then GetElements="" Else If Total>=CountElements(Str,Char) Then GetElements=Replace(Str,Char,ChangeChar) Else GetElements="" For i=Start To Total+Start-1 GetElements=GetElements&GetElement(Str,Char,i)&ChangeChar Next GetElements=Left(GetElements,Len(GetElements)-1) End If End If End If End Function '======================================================================================================== '生成“全选”和“清除”按钮 'ForName 表单中Form的名字 'ElementName 表单中元素的名字 'Parameter 为1时只有“全选”按钮,为2时只有“清除”按钮,为3时有“全选”和“清除”按钮 Function ChkButton(FormName,ElementName,Parameter) If Parameter<=1 Or Parameter>=3 Then Response.Write "" Response.Write "" End If If Parameter>=2 Then Response.Write "" Response.Write "" End If End Function '======================================================================================================== '取指定两字符串之间的字符串 Function GetString(Str,FrontStr,BackStr) TempStr=Str If TempStr="" Then GetString="" Else If FrontStr="" Then If BackStr="" Then GetString=Trim(TempStr) Else If Instr(1,TempStr,BackStr,1) Then GetString=Trim(Left(TempStr,Instr(1,TempStr,BackStr,1)-1)) Else GetString="" End If End If Else If Instr(1,TempStr,FrontStr,1) Then If BackStr="" Then GetString=Trim(Mid(TempStr,Instr(TempStr,FrontStr,1)+1,Len(TempStr))) Else TempStr=Replace(TempStr,FrontStr,"",Instr(1,TempStr,FrontStr,1),1) If Instr(1,TempStr,BackStr,1) Then GetString=Trim(Left(TempStr,Instr(1,TempStr,BackStr,1)-1)) Else GetString="" End If End If Else GetString="" End If End If End If End Function '======================================================================================================== '日期和时间 'Parameter<=1 返回日期 'Parameter>1 返回日期和星期 'Parameter2 为2时返回的月、日长度为2 Function WeekDate(LinkString,Parameter,Parameter2) Y=Year(Date()) M=Month(Date()) D=Day(Date()) If Parameter2=2 Then If Len(M)=1 Then M="0"&M End If If Len(D)=1 Then D="0"&D End If End If Select Case WeekDay(Date()) Case 1 Week="星期日" Case 2 Week="星期一" Case 3 Week="星期二" Case 4 Week="星期三" Case 5 Week="星期四" Case 6 Week="星期五" Case 7 Week="星期六" End Select If Parameter="" Or Parameter<=1 Then If LinkString="" Then WeekDate=Y&"年"&M&"月"&D&"日" Else WeekDate=Y&LinkString&M&LinkString&D End If Else If LinkString="" Then WeekDate=Y&"年"&M&"月"&D&"日  "&Week Else WeekDate=Y&LinkString&M&LinkString&D&"  "&Week End If End If End Function '======================================================================================================== '取得明天的日期 'LinkStr 年月日之间的连接字符串 Function Tomorrow(LinkStr) ThisYear=Year(Date()) ThisMonth=Month(Date()) ThisDay=Day(Date()) If LinkStr="" Then LinkStr1="年" LinkStr2="月" LinkStr3="日" Else LinkStr1=LinkStr LinkStr2=LinkStr LinkStr3="" End If Select Case ThisMonth Case 1,3,5,7,8,10,12 If ThisDay+1<=31 Then Tomorrow=ThisYear&LinkStr1&ThisMonth&LinkStr2&ThisDay+1&LinkStr3 Else If ThisMonth=12 Then Tomorrow=ThisYear+1&LinkStr1&"1"&LinkStr2&"1"&LinkStr3 Else Tomorrow=ThisYear&LinkStr1&ThisMonth+1&LinkStr2&"1"&LinkStr3 End If End if Case 2 If ThisYear\4=0 Then If ThisDay+1>29 Then Tomorrow=ThisYear&LinkStr1&"3"&LinkStr2&"1"&LinkStr3 Else Tomorrow=ThisYear&LinkStr1&"2"&LinkStr2&ThisDay+1&LinkStr3 End If Else If ThisDay+1>28 Then Tomorrow=ThisYear&LinkStr1&"3"&LinkStr2&"1"&LinkStr3 Else Tomorrow=ThisYear&LinkStr1&"2"&LinkStr2&ThisDay+1&LinkStr3 End If End If Case 4,6,9,11 If ThisDay+1<=30 Then Tomorrow=ThisYear&LinkStr1&ThisMonth&LinkStr2&ThisDay+1&LinkStr3 Else Tomorrow=ThisYear&LinkStr1&ThisMonth+1&LinkStr2&"1"&LinkStr3 End if End Select End Function '======================================================================================================== Function FormatNum(Number) If Number<0 Then If Instr(1,Cstr(Number),".")=2 Then Number="-0."&Right(Cstr(Number),Len(Cstr(Number))-2) End If Else If Number<1 And Number>0 Then If Instr(1,Cstr(Number),".")=1 Then Number="0"&Cstr(Number) End If Else Number=Number End If End If FormatNum=Number End Function '======================================================================================================== '格式化日期 Function FormatDate(Str,Char,ChangeChar) If Str<>"" Then FormatDate="" For i=1 To CountElements(Str,Char) TmpStr=GetElement(Str,Char,i) If Len(TmpStr)<2 Then TmpStr="0"&TmpStr End If if i - CountElements(Str,Char)=0 then FormatDate=FormatDate&TmpStr else FormatDate=FormatDate&TmpStr&ChangeChar end if Next Else FormatDate="" End If End Function '======================================================================================================== Function IsSelected(Str,Str2,Out) If Str=Str2 Then IsSelected=Out End Function '======================================================================================================== Function NoSpac(Str) If Str="" Then NoSpac=" " Else NoSpac=Str End If End Function '======================================================================================================== '显示文本格式! function Text(strTemp) if strtemp<>"" then MessageText = server.htmlencode(strTemp) MessageText = replace(MessageText,"<","<") MessageText = replace(MessageText,">",">") MessageText = replace(MessageText,""","""") MessageText = replace(MessageText,chr(13),"
") MessageText = replace(MessageText,chr(32)," ") text=Messagetext end if end function '======================================================================================================== '-年-月-日的日期格式 Function DateCH(strTemp) if isdate(strTemp) then YYYY=Year(strTemp) MM=Month(strTemp) DD=Day(strTemp) DateCH=YYYY&"年"&MM&"月"&DD&"日" else DateCH=strTemp end if End Function '======================================================================================================== %> <% ID=trim(request("ID")) if not isnumeric(id) then response.write "您输入了错误的ID号" response.end end if set rs=Server.CreateObject("ADODB.RecordSet") %> 四川省电信有限公司
  首页 关于我们 企业动态 电信业务 网上客服中心 技术前沿 总经理信箱 品牌管理系统 English
基于VPLS技术的城域以太网

   在过去的几十年中,以太网作为局域网(LAN)的重要技术实现手段在全球范围内早已得到了广泛的应用,据估计,目前已有超过1亿的以太网用户遍布与世界各地。近几年来,有关以太网技术的研究主要围绕在两个方面。首先,从网络吞吐量来看,以太网已从早期的10Mbps发展到快速以太网(100Mbps),千兆以太网(1Gbps)甚至是10Gbps;其次,以太网技术的应用范围也从早期单纯的LAN逐步向城域网(MAN)发展,即所谓的城域以太网(Metro Ethernet)。城域以太网主要面向的是城区内的企业用户,其优越性表现在三个方面:1)以太网低廉的成本,包括设备成本及连接成本;2)网络管理及工程人员对以太网技术已非常熟悉;3)以太网接入速度的灵活性,用户可以向网络服务供应商订购从1Mbps到1Gbps范围内的任意接入速度,并且可以根据企业的需要灵活调整,这一点是现有的诸如桢中继,ATM等所无法比拟的。

  目前,城域以太网还只能提供城区范围内的点对点连接服务,主要是提供企业的不同分部网络间的互连,企业网络或大楼向广域网(WAN)接口的连接等。因为以太网技术的本质是在一个共享传输媒介上提供多点接入方式,因此当前的点对点连接服务并没有充分发挥以太网技术的特点。并且,对于企业用户而言,其分支办公室网络可能分布在几个城市内,因此,它们真正需要的是能够覆盖多个城市范围的网络接入。对于这两个问题,当前已有一些网络服务供应商在尝试利用虚拟局域网(VLAN)提供多点到多点的以太连接。对于用户而言,这相当于所有的子网是连接到同一个局域网上的,而用户的数据流则通过VLAN ID来在逻辑上加以区别。这一方案虽然可以为用户带来成本上的优势与多点连接的便捷性,但是也存在着一些明显的缺陷。基于VLAN技术的城域以太网其组网是通过以太网交换机来完成的,这决定了它仅能提供OSI第二层交换的能力,而且VLAN也仅能够支持最多4096个终端用户。同时,以太网技术本身是为了小型的局域网络应用而开发的,当网络规模扩大时,诸如广播风暴,扩展树(Spanning Tree)协议的不稳定性等问题就显得更加严重了,这直接导致跨越多个城区的以太网无法基于VLAN技术实现。

  虚拟专用网(VPN)是当前电信运营商为企业用户提供诸如跨区域的分支办公室网络连接,Internet接入等服务的一个重要手段。VPN的实现主要包括依据IETF RFC2547规范,基于BGP与MPLS技术的第三层VPN(L3VPN)和依据IETF DRAFT Martini规范,基于ATM技术的第二层VPN(L2VPN)。L3VPN应用较早,而且技术也已比较成熟,它主要可以提供覆盖区域广泛的用户拨号VPN和基于多点到点连接的Intranet组网。这一方案的主要问题在于,首先,它只能提供IP数据的支持能力;其次,由于BGP协议较为复杂,因此L3VPN的网络规划与管理对技术人员提出了很高的要求。一般来说,第二层技术相对于第三层技术而言是比较简单的,因此L3VPN的技术复杂性引发了有关L2VPN的研究。L2VPN的简单性是其主要的技术优势。但是,L2VPN仅能提供点到点的连接,其应用则被限制于骨干网络之间的互联。如果将L2VPN推广到直接面向企业用户,则面临着所谓的“N平方”问题,即连接N个节点需要N(N-1)个连接,这样随着用户数量的增加所需的连接数量将呈几何级数增长。

  VPLS(Virtual Private LAN Service)就是为了上述的几个方面问题而提出的一种用于企业分支办公室局域网互连的解决方案。它有效的结合了IP/MPLS,VPN,以太网交换等多种技术各自的特点,为广域范围的多点到多点LAN互连提供了实现基础。从连接方式上来看,VPLS利用IP/MPLS的广域骨干网络为企业用户提供了一种仿真的LAN连接,因此也被称为透明的LAN服务(Transparent Lan Service——TLS)。这里的透明性是指对于用户而言,骨干网络的结构是不可见的,用户的分支局域网就好象是都连接在一个单一的桥接网络上。从网络拓扑结构与运营维护来看,VPLS则提供了与VPN类似的服务,唯一的区别在于VPLS的网络边缘节点采用了链路层(即第二层)桥接技术,而VPN则采用了第三层路由技术。VPLS网络结构如图1中所示。

  图1 VPLS网络结构图1中显示了企业用户A与B分别通过VPLS服务连接各自的三个分支结构局域网,红色的虚线表示了用户A的数据流而绿色的虚线则表示了用户B的数据流。这里的关键在于网络运营商的边界设备(Provider Edge——PE),其上运行了支持VPLS相关特性的协议。用户的各个分支局域网通过PE接入到网络运营商的IP/MPLS骨干,并形成一个得力的VPLS域,属于同一个VPLS域的各个分支局域网相互之间可以以LAN方式传递数据流。一个PE上的不同接口可以分别用于不同VPLS用户的接入,这时,PE上为每一个VPLS用户创建一个分离的VPLS进程,用于该VPLS域的通讯管理。这样就保证了即使是多个企业通过同一个PE接入同一个骨干网络,它们的数据流也是逻辑上相互独立的,互不影响,这就充分保证了用户数据的私密性。

  为了完成不同分支站点的连接,在服务于同一VPLS域的PE之间需要建立全网状的互连(即所谓的Full-mesh),这是通过IP/MPLS的标签交换路径(LSP)建立的数据隧道(Tunnel)。前面提到了,PE向用户提供了基于以太网的桥接接入方式,也就是说,PE可以直接接收来自用户分支局域网的以太封装格式的数据桢,并根据数据桢中的MAC地址信息决定将数据转发到合适的LSP上以送达另一端的分支局域网。PE上运行的VPLS协议支持特性使得PE上用于连接用户网络的接口可以象一个桥接设备一样提供二层交换和MAC地址学习的能力。通过MAC地址学习,PE上的每一个VPLS进程都为自己的VPLS域创建并维护一个MAC地址表。当接收到数据桢时,VPLS进程首先查询桢头中的目的MAC地址与MAC地址表中的表项是否有可匹配的。如果有,则数据桢被直接转发到对应的LSP上进行传输;如果没有匹配,则同一数据桢被广播到服务于同一VPLS域的其它逻辑端口上。等待PE设备从拥有这一MAC地址的主机上收到数据而学习到这个地址时,MAC地址表则被更新,而接下来的数据桢则可以被正常转发,这与以太网交换机的工作原理是基本相同的。

  与以太网交换机不同的是,PE上的VPLS支持还包括了另外两个特性。首先是服务于同一VPLS域的PE之间的信令机制,信令机制主要被用于LSP的建立以及MPLS标签的分配过程。主要的信令机制可有两种选择:基于LDP协议的信令和基于BGP协议的信令,这两种机制的细节在有关MPLS技术及MPLS VPN技术的文献中都已有介绍,在此就不再过多论述。这两钟机制各自有其优缺点,基于LDP协议的信令机制实现比较简单,它是通过在每一对PE之间建立点到点的LDP会话来完成信令过程的。而且,由于LDP协议提出的较早,目前已有许多厂商的产品支持这一机制。不过由于其点到点的会话建立,LDP协议在大型网络中的可扩展性较差;并且,由于以太网的本质是多点接入的,因此LDP在此并不太适合。为此,IETF PPVPN工作组正在制定LDP的扩展协议以支持多点连接特性。相对而言,基于BGP协议的信令机制则可以充分利用BGP路由反射器的特点,这样PE只需路由反射器建立信令会话即可,这就大大提高了可扩展性。同时,BGP协议还可以支持跨越多个自治系统(AS)网络结构,这对于多个网络运营商并存情况下的VPLS实现非常有利。不过,也有许多运营商担心BGP协议的复杂性会为网络运营管理带来较大的困难。

  另外一个特性则是自动发现机制,这对简化VPLS网络的管理与运营是相当重要的。自动发现是指当一个新的PE被增加到网络中时,所有属于同一VPLS域的其它PE可以自动的发现这一新的PE并自动完成相应的LSP建立过程。针对两种不同的信令机制也存在着两种自动发现机制。在采用了基于BGP协议的信令机制的情况下,新加入的PE只需与BGP路由反射器建立一个BGP连接会话,并通过BGP路由反射器向同一VPLS域的其它PE通知有关新的PE的参数。这样,其它PE就可以“发现”这一新的PE并主动与其建立LSP连接。在基于LDP协议的信令机制中并没有定义有关自动发现的功能,但是,通过在网络中增加一个目录服务器则也可以实现类似的功能。目录服务器中为每一个VPLS域维护了相关的配置信息。当新的PE加入网络中,将引起目录服务器上记录的更新,这一更新的结果被发布到其它所有的PE上,从而使得这些PE“发现”新的PE。

  有关VPLS技术的标准化工作已经初步取得成效,而VPLS也已经得到了电信运营商的极大关注。根据Infonetics的调查研究显示,目前有32%的运营商已经或正在准备提供VPLS服务,而有预期这一数字到年底时还将增加到47%。不过影响VPLS在短期内的大范围采用仍然存在着两个主要因素。其一是,大多数电信运营商们都已在桢中继与ATM网络上投入了大量的资金,而VPLS服务的引入必将吸引现有的用户而影响到它们在桢中继与ATM网络上的收益;其二,VPLS技术的标准化工作仍未能达到最后的统一,当前各个厂商的设备分别支持Martini草案,Kompella草案以及Lasserre-V. Kompella草案,这就造成了不同厂商的设备之间无法完全互操作的问题。IETF PPVPN工作组正在努力在各方面之间进行协调,并有希望与近期内推出一个统一的技术标准,这一标准的推出则必将极大地推动VPLS在全球范围内的广泛应用。

 
中国电信
<%set rs=nothing%> <% conn.close set conn=nothing %>

版权所有-四川省电信有限公司 
Copyright(C) SICHUAN TELECOM COMPANY LIMITED. All rights reserved
本网站由
天府热线设计制作