afunms

My Software,My Dream—Forge a more perfect NMS product.

#

Test new framework

    
    前几天完成了新了mvc架构,今天用这个new framework完成了“系统管理”部分,
等于是测试这个framework。感觉还不错,至少代码可以少写很多,而且层次结构更
加清晰。

    之前我对新产品(SourceView2.0)的设计是有三个部分:mvc、nms和distributed,
今天算是完成了mvc这部分。对于另外两部分,想法还不成熟,还有很多需要考虑的。

    如果来得及的话,我希望把新的产品用在新的项目中。

    但目前最要赶的事还是把PLN这个项目先搞定。

posted @ 2007-11-05 12:18 afunms 阅读(113) | 评论 (0)编辑 收藏

常去的几个外国技术门户


http://www.infoq.com
http://www.theserverside.com
http://www.javablogs.com
http://www.java.net
http://www.javasoft.com
http://blogs.sun.com 
http://blogs.sun.com/roumen/
http://blogs.sun.com/geertjan/
http://blogs.sun.com/theaquarium/
http://www.ibm.com/developerworks
http://www.onjava.com/
http://www.developer.com/java/
http://www.javaworld.com/
http://www.java.com/
http://www.netbeans.org/kb/index.html
http://www.eclipse.org
http://www.oracle.com/technology/tech/java/index.html
http://www.javaranch.com
http://www.javablackbelt.com
http://www.jugcologne.org
http://www.dzone.com
Interesting Resources For Java SE/EE Developers

Some interesting links for (motivated) Java developers, programmers, architects and leaders:
http://www.infoq.com
http://www.theserverside.com
http://www.javablogs.com
http://www.java.net
http://www.javasoft.com
http://blogs.sun.com especially http://blogs.sun.com/roumen/, http://blogs.sun.com/geertjan/, http://blogs.sun.com/theaquarium/
http://www.ibm.com/developerworks
http://www.onjava.com/
http://www.developer.com/java/
http://www.javaworld.com/
http://www.java.com/
http://www.netbeans.org/kb/index.html
http://www.eclipse.org
http://www.oracle.com/technology/tech/java/index.html
http://www.javaranch.com
http://www.javablackbelt.com
http://www.jugcologne.org
http://www.dzone.com

Enjoy! ...but don't forget programming :-)

 

posted @ 2007-11-04 13:03 afunms 阅读(118) | 评论 (0)编辑 收藏

同类产品(1)--EasyTouch

EasyTouch

不足之处:

1. 用java做的c/s系统,界面肯定很难看。
    2. 做了好些没意义的,或者用户基本不会去关心的东西,比如
       “接收/发送SNMP包流量统计”。

可取之处:
    1. 监视网络事件,比较人性化。
    2. 后台任务轮询控制,有点像“再发现”的功能,如果真能实现,
       就算是一个亮点了。

posted @ 2007-11-03 14:36 afunms 阅读(106) | 评论 (0)编辑 收藏

Nov.2

1. 重新整理了PVC相关程序,分页列出PVC信息,包括两端的单位名(IP地址),
   流量、利用率、类型和状态。

2. 列出PVC时,按VPI和VCI排序,原来数据全在内存中,排序有困难,所以今天
   把VPI-VCI存入数据库,这样方便排序和查找。

3. 把与PVC有关事件加入“告警平台”,比如PVC宽带变化、PVC利用率过高和PVC
   状态改变(从active变成inactive)。

4. 每15分钟扫描一次所有PVC,然后把流量和带宽利用率存入数据库,以便形成报表。

posted @ 2007-11-02 22:50 afunms 阅读(124) | 评论 (0)编辑 收藏

Nov.1

1. Discovered the routers in PL network.The following map is the result:


2. Completed the program about PVC traffic and bandwidth utilization.

    However,"Bandwidth for UBR conns will not be accounted for"(acmib.mib)

    So,bandwidth utilization for ubr PVC is unavailable.


posted @ 2007-11-01 08:55 afunms 阅读(97) | 评论 (0)编辑 收藏

why jta?

    虽然SpringJdbc中很多东西我看不太明白,但学习Spring源码仍然给我很大收获,
让我思考很多问题并努力去寻找答案。
   
    为什么需要JTA?Jdbc不就能处理事务了吗?
    JDBC事务的一个缺点是事务的范围局限于一个数据库连接。一个JDBC事务不
能跨越多个数据库。
    而JTA(Java Transaction API) 事务为J2EE平台提供了分布式事务服务,即可实现
多个数据库的事务处理。

    因为目前的项目不会遇到跨越多个数据库的操作,所以在以后设计中,我暂时
不会考虑用JTA。

posted @ 2007-10-31 22:44 afunms 阅读(115) | 评论 (0)编辑 收藏

install syslog service for windows server

    对于UNIX类主机之间记录日志,由于协议、软件和日志信息格式等都大同小异,
因此实现起来比较简单,但是windows的系统日志格式不同,日志记录软件,方式等都
不同。因此,我们需要第三方的软件来将windows的日志转换成syslog类型的日志后,
转发给syslog服务器。
    这里我们用第三方软件evtsys (全称是evntlog to syslog),这是一个非常小巧而且免费
的第三方日志记录软件,文件才几十K大小,非常小巧,解压后是两个文件evtsys.dll和
evtsys.exe

把这两个文件拷贝到 c:\windows\system32目录下。
C:\>evtsys –i –h 192.168.2.155
-i 表示安装成系统服务
-h 指定log服务器的IP地址
如果要卸载evtsys,则:
net stop evtsys
evtsys -u

posted @ 2007-10-30 13:55 afunms 阅读(540) | 评论 (1)编辑 收藏

pvc info

关于PVC的一些常用信息都记录在atmPvcVccTable中

(1)
pvc类型:atmPvcVccServiceTypeA2B
atmPvcVccServiceTypeA2B OBJECT-TYPE
                SYNTAX INTEGER  {
                                ubr(1),
                                vbr-nrt2(2),
                                vbr-nrt1(3),
                                vbr-rt2(4),
                                vbr-rt1(5),
                                vbr-express(6),
                                cbr4(7),
                                cbr3(8),
                                cbr2(9),
                                cbr1(10),
                                gfr2(11)
                                }

通过对比前后两次扫描结果,如果atmPvcVccServiceTypeA2B有变化,
则应该给出报警,告知用户PVC类型有变化。

(2)
pvc当前状态(active/inactive):atmPvcVccConnectionStatus
atmPvcVccConnectionStatus OBJECT-TYPE
                SYNTAX INTEGER {
                                active(1),
                                inactive(2),
                                inactiveA2B-B2A(3),
                                inactiveA2B(4),
                                inactiveB2A(5)
                               }
如果atmPvcVccConnectionStatus != 1,
应该给出报警,告知用户PVC状态为inactive。

(3) PVC带宽 (单位:cell/s)
atmPvcVccPeakCellRateA2B(也可能是atmPvcVccSusCellRateA2B,目前来看两者的值一样)
通过对比前后两次扫描结果,如果atmPvcVccPeakCellRateA2B有变化,
则应该给出报警,告知用户PVC带宽有变化。

关于atm pvc带宽利用率如何计算,网上找不到任何资料,这也是我研究了好久才搞出来的,
至于是否正确,还得看程序的运行结果。

posted @ 2007-10-29 15:28 afunms 阅读(130) | 评论 (0)编辑 收藏

pvc traffic and bandwidth utilization

AtmPvcVccStatsTable中有PVC两端的数据。以前计算IP网链路流量时只计算链路一端端口的
流量即可,据此,我也只计算PVC一端的数据,即A端。

atmPvcVccStatsInCellCountHiA
atmPvcVccStatsInCellCountLoA
A端“进”的数据。经观察发现HiA不会变化,所以我选择LoA

atmPvcVccStatsOutCellCountHiA
atmPvcVccStatsOutCellCountLoA                
同时,A端“出”的数据。经观察发现HiA不会变化,所以我选择LoA

atmPvcVccPeakCellRateA2B
A端最大流量,我想就是带宽了。

atmPvcVccSusCellRateA2B               
A端持续流量,如果atmPvcVccPeakCellRateA2B不是带宽,那就是这个了。
反正这两个总有一个是,我暂时选atmPvcVccPeakCellRateA2B。
而且我看到的是两者的值都是一样。

atmPvcVccStatsTimer
秒数

另:一个pvc cell(信元)是53个字节。

根据以上分析,得到计算PVC流量的公式:(单位:kpbs)

  pvcInTraffic = (△atmPvcVccStatsInCellCountLoA * 53) / △atmPvcVccStatsTimer / 1024

  pvcOutTraffic = (△atmPvcVccStatsOutCellCountLoA * 53) / △atmPvcVccStatsTimer / 1024

PVC利用率的公式:(单位:%)

  pvcInUtilization = (△atmPvcVccStatsInCellCountLoA / △atmPvcVccStatsTimer / atmPvcVccPeakCellRateA2B ) * 100
 
  pvcOutUtilization = (△atmPvcVccStatsOutCellCountLoA / △atmPvcVccStatsTimer / atmPvcVccPeakCellRateA2B ) * 100

posted @ 2007-10-28 11:58 afunms 阅读(81) | 评论 (0)编辑 收藏

atm pvc table

与PVC关系最大的两张表

T1:我称它为PVC基本信息表。

AtmPvcVccEntry        ::= SEQUENCE {
                atmPvcVccIfA                        IntfIndex,
                atmPvcVccVpiA                        INTEGER,
                atmPvcVccVciA                        INTEGER,
                atmPvcVccIfB                        IntfIndex,
                atmPvcVccVpiB                        INTEGER,
                atmPvcVccVciB                        INTEGER,
                atmPvcVccServiceTypeA2B                INTEGER,
                atmPvcVccSarTypeA2B                INTEGER,
                atmPvcVccPeakCellRateA2B        Integer32,
                atmPvcVccSusCellRateA2B                Integer32,
                atmPvcVccMaxBurstSizeA2B        Integer32,
                atmPvcVccServiceTypeB2A                INTEGER,
                atmPvcVccSarTypeB2A                INTEGER,
                atmPvcVccPeakCellRateB2A        Integer32,
                atmPvcVccSusCellRateB2A                Integer32,
                atmPvcVccMaxBurstSizeB2A        Integer32,
                atmPvcVccType                        INTEGER,
                atmPvcVccFlow                        INTEGER,
                atmPvcVccRowStatus                RowStatus,
                atmPvcVccFrwdErrCorrectionA2B        INTEGER,
                atmPvcVccFrwdErrCorrectionB2A        INTEGER,
                atmPvcVccConnectionStatus        INTEGER,
                atmPvcVccOamStatus                INTEGER,
                atmPvcVccDualHomed                INTEGER,
                atmPvcVccViA                    INTEGER,
                atmPvcVccViB                    INTEGER,
                atmPvcVccCnfrmTypeA2B           INTEGER,
                atmPvcVccCnfrmTypeB2A           INTEGER,
                atmPvcVccVUNIA                  INTEGER,
                atmPvcVccVUNIB                  INTEGER,
                atmPvcVccOamStatusB             INTEGER,
                atmPvcVccOAMConnEndPtStatusA    INTEGER,
                atmPvcVccOAMConnEndPtStatusB    INTEGER,
                atmPvcVccOAMConnSegEndPtStatusA INTEGER,
                atmPvcVccOAMConnSegEndPtStatusB INTEGER,
                atmPvcVccMfsA2B                 INTEGER,
                atmPvcVccMfsB2A                 INTEGER,
                atmPvcVccConnFailureCauseA      AtmConnFailureCause,
                atmPvcVccConnFailureCauseB      AtmConnFailureCause,
                atmPvcVccTrafficShapingA2B      INTEGER,
                atmPvcVccTrafficShapingB2A      INTEGER
                }

T2:PVC状态表。

AtmPvcVccStatsEntry ::= SEQUENCE {
                atmPvcVccStatsIfA                         IntfIndex,
                atmPvcVccStatsVpiA                         INTEGER,
                atmPvcVccStatsVciA                        INTEGER,
                atmPvcVccStatsIfB                         IntfIndex,
                atmPvcVccStatsVpiB                         INTEGER,
                atmPvcVccStatsVciB                        INTEGER,
                atmPvcVccStatsInCellCountHiA                Integer32,
                atmPvcVccStatsInCellCountLoA                Integer32,
                atmPvcVccStatsOutCellCountHiA                 Integer32,
                atmPvcVccStatsOutCellCountLoA                 Integer32,
                atmPvcVccStatsInCellCountHiB                Integer32,
                atmPvcVccStatsInCellCountLoB                Integer32,
                atmPvcVccStatsOutCellCountHiB                 Integer32,
                atmPvcVccStatsOutCellCountLoB                 Integer32,
                atmPvcVccStatsTimer                        Integer32,
                atmPvcVccStatsFrwdErrCrrctnRateA2B         INTEGER,
                atmPvcVccStatsFrwdErrCrrctnRateB2A         INTEGER,
                atmPvcVccStatsInOdometerCellCountHiA        Integer32,
                atmPvcVccStatsInOdometerCellCountLoA        Integer32,
                atmPvcVccStatsOutOdometerCellCountHiA         Integer32,
                atmPvcVccStatsOutOdometerCellCountLoA         Integer32,
                atmPvcVccStatsInOdometerCellCountHiB        Integer32,
                atmPvcVccStatsInOdometerCellCountLoB        Integer32,
                atmPvcVccStatsOutOdometerCellCountHiB         Integer32,
                atmPvcVccStatsOutOdometerCellCountLoB         Integer32,
                atmPvcVccStatsOdometerTimer                Integer32,
                atmPvcVccStatsOdometerReset                 INTEGER,
                atmPvcVccStatsOamAisTxA                        Integer32,
                atmPvcVccStatsOamAisRxA                        Integer32,
                atmPvcVccStatsOamRdiTxA                        Integer32,
                atmPvcVccStatsOamRdiRxA                        Integer32,
                atmPvcVccStatsOamAisTxB                        Integer32,
                atmPvcVccStatsOamAisRxB                        Integer32,
                atmPvcVccStatsOamRdiTxB                        Integer32,
                atmPvcVccStatsOamRdiRxB                        Integer32,
                atmPvcVccStatsCellsDroppedA                  Integer32,
                atmPvcVccStatsCellsTaggedA                  Integer32,
                atmPvcVccStatsCellsDroppedB                  Integer32,
                atmPvcVccStatsCellsTaggedB                  Integer32
                }

posted @ 2007-10-27 22:44 afunms 阅读(173) | 评论 (0)编辑 收藏

终于买房了

今天签了购房合同,终于把房子买下了,算是完成人生一大事。 明年7月就能入住新房,真的很高兴。

posted @ 2007-10-26 22:51 afunms 阅读(148) | 评论 (0)编辑 收藏

有关ATM的一些新发现

与ATM PVC有关的就三个表:
atmPvcVccTable,atmPvcVccStatsTable(T1)
cirEmPvcVccTable,cirEmPvcVccStatsTable(T2)
ipAtmAppPvcVccTable,ipAtmAppPvcVccStatsTable(T3)

对于Lucent4500有T1,对于Lucent1000有T2。
对于Lucent1250有T1也有T2(整个网络只有一台1250,即172.16.1.82)。
对于有些Lucent2300,有T1。

    以前想用T1和T2结合的方法找出所有PVC,然后根据PVC再找出物理链路,
后来发现好些2300既没有T1也没有T2,这意味着这些设备是孤立点,没有物理连线。
如果是一两台设备这样,还有可能,可是至少有15台设备是这样,我认为就有问题。
所以后来选择T3来找出物理链路,根据结果(画出的拓扑图)来看,这些物理是正
确的。
    但T3中所带的PVC信息与T1或T2都不同,以用户提供的excel文件为依据,判断
T3中所带的PVC信息是不正确的(至于为什么,我也不知道),而T1或T2中所带PVC
信息与excel文件比较接近。
    结论:要找物理链路用T3;要找PVC用T1或T2。

    另外,PVC active/inactive这个重要参数,在表cirEmPvcVccTable中。
    cirEmAtmPvcVccConnectionStatus OBJECT-TYPE
                SYNTAX INTEGER {
                                active(1),
                                inactive(2),
                                inactiveA2B-B2A(3),
                                inactiveA2B(4),
                                inactiveB2A(5)
                               }
    以及表atmPvcVccTable中。
    atmPvcVccConnectionStatus OBJECT-TYPE
                SYNTAX INTEGER {
                                active(1),
                                inactive(2),
                                inactiveA2B-B2A(3),
                                inactiveA2B(4),
                                inactiveB2A(5)
                               }

posted @ 2007-10-25 14:33 afunms 阅读(186) | 评论 (0)编辑 收藏

当一男子刮开了一单身女人的超短裙.....

东京  
在人流不息的银座广场,一男子不小心刮开了一单身女人的超短裙。  
男人还没有开口,那单身女人一个90度的大鞠躬:不好意思,给您添麻烦了!都怪裙子的质量不好......说完,取出一个别针别好,又匆匆走掉。  

美国纽约  

在人来人往的时代广场,一美国男子不小心刮开了一美国单身女人的超短裙。  
美国男人还没开口,那美国单身女人立刻从身上摸出一张名片来:这是我律师的电话,  
他会找你详细谈关于你性骚扰我的事情,你可以做好准备,我们法庭上见.....  
说完记下美国男子的姓名电话,扬头走掉。  

法国巴黎  

在闻名于世的凯旋门广场上,一法国男子不小心刮开了一法国单身女人的超短裙。  
法国男人还没开口,那法国单身女人咯咯一笑,然後细手搭肩的说道:如果你不介意的话,送我一枝玫瑰来向我道歉......说完。法国男人从花店买了一枝玫瑰,还请她去酒吧喝上一杯,然後两人一起去一家小旅馆再研究一下超短裙以内的事情了......  

英国伦敦  

b泰晤士河边的教堂广场上,一英国男子不小心刮开了一英国单身女人的超短裙。  
英国男人还没开口,那英国单身女人忙用手里的报纸遮住裙子开了的部分,  
红著脸说:先生,可以先送我回家吗?我家就在前面不远......说完。  
英国男人把自己的上衣脱下来,披在她上。  
叫了一辆Taix,安全的把她送到家,又换了一件裙子。  

中国重庆  

在人头簇动的解放碑前,一重庆男子不小心刮开了一重庆单身女人的超短裙。  
重庆男人还没开口,那重庆单身女人扬手一记响亮的耳光,还抓住重庆男人的脖领子不放:你这个宝器!敢吃老**豆腐,跟我去见110去......  

台湾西门町  

在台湾的西门町里,一台客不小心刮开了一女学生的超短学生裙。  
台客还没开口,那个女学生咯咯一笑,对著你说:价钱还没谈隆就要先看货了啊!  

香港铜锣湾  

在人山人海的时代广场,一中年男子不小心刮开了一年约18女生的超短裙。  
中年男人还没有开口,那女生就开口 : 我x你**呀!你当我流架?你咪x走呀!  
我依家拖马来收你皮  

韩国斧山  

在斧山的街上,一中年男子不小心刮开了一年约18女生的超短裙。中年男人还没有开口,那女生二话不说便踢出一个turning kick,然後冷冷地说: 你不知道我可是跆拳道黑带2段的吗?  

泰国曼谷  

在曼谷的街上,一中年男子不小心刮开了一年约18女生的超短裙。中年男人忙乱地道歉,那女生优雅地双手合十於面前,缓慢地作一姿势优美的敬礼,以娇人欲滴的声音说:先生…唔紧要,其实我系男人  


看贴不回的你就是那泰国人... 

posted @ 2007-10-24 20:21 afunms 阅读(321) | 评论 (4)编辑 收藏

第三层交换机技术白皮书(转)

  http://network.ccidnet.com/art/3723/20071114/1275025_1.html

1.1 共享技术

所谓共享技术即在一个逻辑网络上的每一个工作站都处于一个相同的网段上。

以太网采用CSMA/CD 机制,这种冲突检测方法保证了只能有一个站点在总线上传输。如果有两个站点试图同时访问总线并传输数据,这就意味着“冲突”发生了,两站点都将被告知出错。然后它们都被拒发,并等待一段时间以备重发。

这种机制就如同许多汽车抢过一座窄桥,当两辆车同时试图上桥时,就发生了“冲突”,两辆车都必须退出,然后再重新开始抢行。当汽车较多时,这种无序的争抢会极大地降低效率,造成交通拥堵。

网络也是一样,当网络上的用户量较少时,网络上的交通流量较轻,冲突也就较少发生,在这种情况下冲突检测法效果较好。当网络上的交通流量增大时,冲突也增多,同进网络的吞吐量也将显著下降。在交通流量很大时,工作站可能会被一而再再而三地拒发。

1.2 交换技术

局域网交换技术是作为对共享式局域网提供有效的网段划分的解决方案而出现的,它可以使每个用户尽可能地分享到最大带宽。交换技术是在OSI 七层网络模型中的第二层,即数据链路层进行操作的,因此交换机对数据包的转发是建立在MAC(Media Access Control )地址--物理地址基础之上的,对于IP 网络协议来说,它是透明的,即交换机在转发数据包时,不知道也无须知道信源机和信宿机的IP 地址,只需知其物理地址即MAC 地址。交换机在操作过程当中会不断的收集资料去建立它本身的一个地址表,这个表相当简单,它说明了某个MAC 地址是在哪个端口上被发现的,所以当交换机收到一个TCP /IP 封包时,它便会看一下该数据包的目的MAC 地址,核对一下自己的地址表以确认应该从哪个端口把数据包发出去。由于这个过程比较简单,加上这功能由一崭新硬件进行--ASIC(Application Specific Integrated Circuit),因此速度相当快,一般只需几十微秒,交换机便可决定一个IP 封包该往那里送。值得一提的是:万一交换机收到一个不认识的封包,就是说如果目的地MAC 地址不能在地址表中找到时,交换机会把IP 封包"扩散"出去,即把它从每一个端口中送出去,就如交换机在处理一个收到的广播封包时一样。二层交换机的弱点正是它处理广播封包的手法不太有效,比方说,当一个交换机收到一个从TCP/IP 工作站上发出来的广播封包时,他便会把该封包传到所有其他端口去,哪怕有些端口上连的是IPX 或DECnet 工作站。这样一来,非TCP/IP 节点的带宽便会受到负面的影响,就算同样的TCP/IP 节点,如果他们的子网跟发送那个广播封包的工作站的子网相同,那么他们也会无原无故地收到一些与他们毫不相干的网络广播,整个网络的效率因此会大打折扣。从90 年代开始,出现了局域网交换设备。从网络交换产品的形态来看,交换产品大致有三种:端口交换、帧交换和信元交换。

(1)端口交换

端口交换技术最早出现于插槽式集线器中。这类集线器的背板通常划分有多个以太网段(每个网段为一个广播域)、各网段通过网桥或路由器相连。以太网模块插入后通常被分配到某个背板网段上,端口交换适用于将以太模块的端口在背板的多个网段之间进行分配。这样网管人员可根据网络的负载情况,将用户在不同网段之间进行分配。这种交换技术是基于OSI第一层(物理层)上完成的,它并没有改变共享传输介质的特点,因此并不是真正意义上的交换。

(2)帧交换

帧交换是目前应用的最广的局域网交换技术,它通过对传统传输媒介进行分段,提供并行传送的机制,减少了网络的碰撞冲突域,从而获得较高的带宽。不同厂商产品实现帧交换的技术均有差异,但对网络帧的处理方式一般有:存储转发式和直通式两种。存储转发式(Store-and-Forward :当一个数据包以这种技术进入一个交换机时,交换机将读取足够的信息,以便不仅能决定哪个端口将被用来发送该数据包,而且还能决定是否发送该数据包。这样就能有效地排除了那些有缺陷的网络段。虽然这种方式不及使用直通式产品的交换速度,但是它们却能排除由破坏的数据包所引起的经常性的有害后果。直通式Cut-Through :当一个数据包使用这种技术进入一个交换机时,它的地址将被读取。然后不管该数据包是否为错误的格式,它都将被发送。由于数据包只有开头几个字节被读取,所以这种方法提供了较多的交换次数。然而所有的数据包即使是那些可能已被破坏的都将被发送。直到接收站才能测出这些被破坏的包,并要求发送方重发。但是如果网络接口卡失效,或电缆存在缺陷;或有一个能引起数据包遭破坏的外部信号源,则出错将十分频繁。随着技术的发展,直通式交换将逐步被淘汰。在“直通式”交换方式中,交换机只读出网络帧的前几个字节,便将网络帧传到相应的端口上,虽然交换速度很快,但缺乏对网络帧的高级控制,无智能性和安全性可言,同时也无法支持具有不同速率端口的交换;而“存储转发”交换方式则通过对网络帧的读取进行验错和控制。联想网络的产品都采用“存储转发”交换方式。

(3)信元交换

信元交换的基本思想是采用固定长度的信元进行交换,这样就可以用硬件实现交换,从而大大提高交换速度,尤其适合语音、视频等多媒体信号的有效传输。目前,信元交换的实际应用标准是ATM (异步传输模式),但是ATM 设备的造价较为昂贵,在局域网中的应用已经逐步被以太网的帧交换技术所取代。

1.2.1 第二层交换技术

第二层的网络交换机依据第二层的地址传送网络帧。第二层的地址又称硬件地址(MAC 地址),第二层交换机通常提供很高的吞吐量(线速)、低延时(10 微秒左右),每端口的价格比较经济。第二层的交换机对于路由器和主机是“透明的”,主要遵从802.1d 标准。该标准规定交换机通过观察每个端口的数据帧获得源MAC 地址,交换机在内部的高速缓存中建立MAC 地址与端口的映射表。当交换机接受的数据帧的目的地址在该映射表中被查到,交换机便将该数据帧送往对应的端口。如果它查不到,便将该数据帧广播到该端口所属虚拟局域网(VLAN )的所有端口,如果有回应数据包,交换机便将在映射表中增加新的对应关系。当交换机初次加入网络中时,由于映射表是空的,所以,所有的数据帧将发往虚拟局域网内的全部端口直到交换机“学习”到各个MAC 地址为止。这样看来,交换机刚刚启动时与传统的共享式集线器作用相似的,直到映射表建立起来后,才能真正发挥它的性能。这种方式改变了共享式以太网抢行的方式,如同在不同的行驶方向上铺架了立交桥,去往不同方向的车可以同时通行,因此大大提高了流量。从虚拟局域网(VLAN )角度来看,由于只有子网内部的节点竞争带宽,所以性能得到提高。主机1 访问主机2 同时,主机3 可以访问主机4 。当各个部门具有自己独立的服务器时,这一优势更加明显。但是这种环境正发生巨大的变化,因为服务器趋向于集中管理,另外,这一模式也不适合Internet 的应用。不同虚拟局域网(VLAN )之间的通讯需要通过路由器来完成,另外为了实现不同的网段之间通讯也需要路由器进行互连。

路由器处理能力是有限的,相对于局域网的交换速度来说路由器的数据路由速度也是较缓慢的。路由器的低效率和长时延使之成为整个网络的瓶颈。虚拟局域网(VLAN )之间的访问速度是加快整个网络速度的关键,某些情况下(特别是Intranet ),划定虚拟局域网本身是一件困难的事情。第三层交换机的目的正在于此,它可以完成Intranet 中虚拟局域网(VLAN )之间的数据包以高速率进行转发。

1.2.2 VLAN 技术

在传统的局域网中,各站点共享传输信道所造成的信道冲突和广播风暴是影响网络性能的重要因素。通常一个IP 子网或者IPX 子网属于一个广播域,因此网络中的广播域是根据物理网络来划分的。这样的网络结构无论从效率和安全性角度来考虑都有所欠缺。同时,由于网络中的站点被束缚在所处的物理网络中,而不能够根据需要将其划分至相应的逻辑子网,因此网络的结构缺乏灵活性。为解决这一问题,从而引发了虚拟局域网(VLAN )的概念,所谓VLAN 是指网络中的站点不拘泥于所处的物理位置,而可以根据需要灵活地加入不同的逻辑子网中的一种网络技术。

VLAN 技术的基础

基于交换式以太网的VLAN

在交换式以太网中,利用VLAN 技术,可以将由交换机连接成的物理网络划分成多个逻辑子网。也就是说,一个VLAN中的站点所发送的广播数据包将仅转发至属于同一VLAN 的站点。而在传统局域网中,由于物理网络和逻辑子网的对应关系,因此任何一个站点所发送的广播数据包都将被转发至网络中的所有站点。在交换式以太网中,各站点可以分别属于不同的VLAN 。构成VLAN 的站点不拘泥于所处的物理位置,它们既可以挂接在同一个交换机中,也可以挂接在不同的交换机中。VLAN 技术使得网络的拓扑结构变得非常灵活,例如位于不同楼层的用户或者不同部门的用户可以根据需要加入不同的VLAN 。到目前为止,基于交换式以太网实现VLAN 主要有三种途径:基于端口的VLAN 、基于MAC 地址的VLAN 和基于IP 地址的VLAN 。

1、基于端口的VLAN

基于端口的VLAN 就是将交换机中的若干个端口定义为一个VLAN ,同一个VLAN 中的站点具有相同的网络地址,不同的VLAN 之间进行通信需要通过路由器。采用这种方式的VLAN 其不足之处是灵活性不好,例如当一个网络站点从一个端口移动到另外一个新的端口时,如果新端口与旧端口不属于同一个VLAN ,则用户必须对该站点重新进行网络地址配置,否则,该站点将无法进行网络通信。

2、基于MAC 地址的VLAN

在基于MAC 地址的VLAN 中,交换机对站点的MAC 地址和交换机端口进行跟踪,在新站点入网时根据需要将其划归至某一个VLAN ,而无论该站点在网络中怎样移动,由于其MAC 地址保持不变,因此用户不需要进行网络地址的重新配置。这种VLAN 技术的不足之处是在站点入网时,需要对交换机进行比较复杂的手工配置,以确定该站点属于哪一个VLAN 。

3、基于IP 地址的VLAN

在基于IP 地址的VLAN 中,新站点在入网时无需进行太多配置,交换机则根据各站点网络地址自动将其划分成不同的VLAN 。在三种VLAN 的实现技术中,基于IP 地址的VLAN 智能化程度最高,实现起来也最复杂。VLAN 作为一种新一代的网络技术,它的出现为解决网络站点的灵活配置和网络安全性等问题提供了良好的手段。虽然VLAN 技术目前还有许多问题有待解决,例如技术标准的统一问题、VLAN 管理的开销问题和VALN 配置的自动化问题等等。然而,随着技术的不断进步,上述问题将逐步加以解决,VLAN 技术也将在网络建设中得到更加广泛的应用,从而为提高网络的工作效率发挥更大的作用。事实上一个VLAN(虚拟局域网)就是一个广播域。为了避免在大型交换机上进行的广播所引起的广播风暴,可将连接到大型交换机上的网络划分为多个VLAN(虚拟局域网)。在一个VLAN(虚拟局域网)内,由一个工作站发出的信息只能发送到具有相同VLAN(虚拟局域网)号的其他站点。其它VLAN(虚拟局域网)的成员收不到这些信息或广播帧。

采用VLAN 有如下优势:

1. 抑制网络上的广播风暴;

2. 增加网络的安全性;

3. 集中化的管理控制。

这就是在局域网交换机上采用VLAN(虚拟局域网)技术的初衷,也确实解决了一些问题。但这种技术也引发出一些新的问题:随着应用的升级,网络规划/实施者可根据情况在交换式局域网环境下将用户划分在不同VLAN(虚拟局域网)上。但是VLAN(虚拟局域网)之间通信是不允许的,这也包括地址解析(ARP)封包。要想通信就需要用路由器桥接这些VLAN(虚拟局域网)。这就是VLAN(虚拟局域网)的问题:不用路由器是嫌它慢,用交换机速度快但不能解决广播风暴问题,在交换机中采用VLAN(虚拟局域网)技术可以解决广播风暴问题,但又必须放置路由器来实现VLAN(虚拟局域网)之间的互通。形成了一个不可逾越的怪圈。这就是网络的核心和枢纽路由器的问题。在这种网络系统集成模式中,路由器是核心。

路由器所起的作用是:

1.网段微化(网段之间通过路由器进行连接):

2. 网络的安全控制;

3. VLAN(虚拟局域网)间互连;

4. 异构网间的互连。

1.2.3 局域网瓶颈

1、 采用路由器作为网络的核心将产生的问题:

● 路由器增加了3 层路由选择的时间,数据的传输效率低;

● 增加、移动和改变节点的复杂性有增无减;

● 路由器价格昂贵、结构复杂;

● 增加子网/ VLAN(虚拟局域网)的互连意味着要增加路由器端口,投资也增大。

相比之下,路由器是在OSI 七层网络模型中的第三层--网络层操作的,它在网络中,收到任何一个数据包(包括广播包在内),都要将该数据包第二层(数据链路层)的信息去掉(称为"拆包"),查看第三层信息(IP 地址)。然后,根据路由表确定数据包的路由,再检查安全访问表;若被通过,则再进行第二层信息的封装(称为"打包"),最后将该数据包转发。如果在路由表中查不到对应MAC 地址的网络地址,则路由器将向源地址的站点返回一个信息,并把这个数据包丢掉。与交换机相比,路由器显然能够提供构成企业网安全控制策略的一系列存取控制机制。由于路由器对任何数据包都要有一个"拆打"过程,即使是同一源地址向同一目的地址发出的所有数据包,也要重复相同的过程。这导致路由器不可能具有很高的吞吐量,也是路由器成为网络瓶颈的原因之一。如果路由器的工作仅仅是在子网与子网间、网络与网络间交换数据包的话,我们可能会买到比今天便宜得多的路由器。实际上路由器的工作远不止这些,它还要完成数据包过滤、数据包压缩、协议转换、维护路由表、计算路由、甚至防火墙等许多工作。而所有这些都需要大量CPU 资源,因此使得路由器一方面价格昂贵,另一方面越来越成为网络瓶颈。

posted @ 2007-10-23 00:02 afunms 阅读(109) | 评论 (0)编辑 收藏

cast

昨天还在考虑怎么能把Class限制在某个类型上,而且一直以来都不理解 Class<? extends XXX>是什么意思。

今天终于理解了Class<? extends XXX>的用法,并把昨天那个问题解决了。

所以,有些东西就是只有当真正需要时才会去认真考虑它,呵。

posted @ 2007-10-22 21:42 afunms 阅读(103) | 评论 (0)编辑 收藏

仅列出标题
共25页: First 上一页 11 12 13 14 15 16 17 18 19 下一页 Last 

My Links

News

留言簿(18)

随笔档案

相册

搜索

最新评论

阅读排行榜