用户操作
[留言]  [发消息]  [加为好友] 
订阅我的博客
XML聚合    FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
hust_wh的公告
<div class="leftmenu"> <b>个人资料</b><br> 城市:武汉<br> QQ :5383574<br> Email:hust_wh@163.com<br> <!-- Blog日历表开始 --> <script language="javascript"> var diarydays=""; </script> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <style> .calendarBigBorder { font-family: "Arial", "Helvetica", "sans-serif", "宋体"; text-decoration: none; width: 170; background-color: #FFFFFF; font-size: 9pt;border:1px dotted #999; } .calendarTd { font-family: "Arial", "Helvetica", "sans-serif", "宋体"; font-size: 9pt; color: #000000; background-color: #eeeeee; height: 18px; width: 11%; text-align: center;} .calendarMInput { font-family: "Arial", "Helvetica", "sans-serif", "宋体"; font-size: 9pt; text-decoration: none; background-color: #FFFFFF; height: 15px; border: 1px solid #666666; width: 19px; color: #0099FF;} .calendarYInput { font-family: "Arial", "Helvetica", "sans-serif", "宋体"; font-size: 9pt; color: #0099FF; text-decoration: none; background-color: #FFFFFF; height: 15px; width: 34px; border: 1px solid #666666;} .calendarMonthTitle { font-family: "Arial", "Helvetica", "sans-serif", "宋体"; font-size: 9pt; font-weight: normal; height: 24px; text-align: center; color: #333333; text-decoration: none; background-color: #eeeeee; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-bottom-style: none; border-top-color: #999999; border-right-color: #999999; border-bottom-color: #999999; border-left-color: #999999;} .calendarNow { font-family: "Arial", "Helvetica", "sans-serif", "宋体"; font-size: 9pt; font-weight: bold; color: #000000; background-color: #C0C9D3; height: 18px; text-align: center;} .calendarDaySat { font-family: "Arial", "Helvetica", "sans-serif", "宋体"; font-size: 9pt; color: #333333; text-decoration: none; background-color: #eeeeee; text-align: center; height: 18px; width: 12%;} .calendarDaySun { font-family: "Arial", "Helvetica", "sans-serif", "宋体"; font-size: 9pt; color: #333333; text-decoration: none; background-color: #eeeeee; text-align: center; height: 18px; width: 12%;} .calendarLink { font-family: "Arial", "Helvetica", "sans-serif", "宋体"; font-size: 9pt; font-weight: normal; color: #333333; text-decoration: none; background-color: #E7E7F6; text-align: center; height: 18px;} .categoryTxt { font-family: "Arial", "Helvetica", "sans-serif", "宋体"; font-size: 9pt; line-height: 23px; color: #333333; text-decoration: none;} .categoryTable { border-right-width: 1px; border-bottom-width: 1px; border-right-style: solid; border-bottom-style: solid; border-left-style: none; border-right-color: #000000; border-bottom-color: #000000; border-top-width: 1px; border-top-style: solid; border-top-color: #71b99c;} </style> <SCRIPT LANGUAGE="JavaScript"> var months = new Array("一", "二", "三","四", "五", "六", "七", "八", "九","十", "十一", "十二"); var daysInMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31,30, 31, 30, 31); var days = new Array("日","一", "二", "三","四", "五", "六"); var classTemp; var calendarHover="calendarHover"; var today=new getToday(); var year=today.year; var month=today.month; var newCal; //得到某月天数 function getDays(month, year) { if (1 == month) return ((0 == year % 4) && (0 != (year % 100))) ||(0 == year % 400) ? 29 : 28; else return daysInMonth[month]; } //得到当天时间信息 function getToday() { this.now = new Date(); this.year = this.now.getFullYear(); this.month = this.now.getMonth(); this.day = this.now.getDate(); } //生成日历 function Calendar() { newCal = new Date(year,month,1); //当前月的第一天 today = new getToday(); var day = -1; //用来判断日历中是否为当天 var startDay = newCal.getDay(); //当月开始时间 var endDay=getDays(newCal.getMonth(), newCal.getFullYear());//当月结束时间 var daily = 0; //用来生成日历中的天数值 if ((today.year == newCal.getFullYear()) &&(today.month == newCal.getMonth())) day = today.day; var caltable = document.all.caltable.tBodies.calendar; //得到日历表格的集合 var intDaysInMonth =getDays(newCal.getMonth(), newCal.getFullYear()); //得到当月天数 //生成日历 for (var intWeek = 0; intWeek < caltable.rows.length;intWeek++) for (var intDay = 0;intDay < caltable.rows[intWeek].cells.length;intDay++) { var cell = caltable.rows[intWeek].cells[intDay]; //得到单元袼 //生成字符串用于判断当天是否有日志 var montemp=(newCal.getMonth()+1)<10?("0"+(newCal.getMonth()+1)):(newCal.getMonth()+1); if ((intDay == startDay) && (0 == daily)){ daily = 1;} var daytemp=daily<10?("0"+daily):(daily); var d="<"+newCal.getFullYear()+"-"+montemp+"-"+daytemp+">"; //选择样式 if(day==daily) cell.className="calendarNow"; else if(diarydays.indexOf(d)!=-1) cell.className="calendarLink"; else if(intDay==6) cell.className = "calendarDaySat"; else if (intDay==0) cell.className ="calendarDaySun"; else cell.className="calendarTd"; //生成值 if ((daily > 0) && (daily <= intDaysInMonth)) { cell.innerText = daily; daily++; } else cell.innerText = ""; } document.all.year.value=year; document.all.month.value=month+1; } function subMonth() { if ((month-1)<0) { month=11; year=year-1; } else { month=month-1; } Calendar(); } function addMonth() { if((month+1)>11) { month=0; year=year+1; } else { month=month+1; } Calendar(); } //得到响应事件 function getDiary() { var mon=(newCal.getMonth()+1)<10?("0"+(newCal.getMonth()+1)):(newCal.getMonth()+1); var day=event.srcElement.innerText<10?("0"+event.srcElement.innerText):(event.srcElement.innerText); var d="<"+newCal.getFullYear()+"-"+mon+"-"+day+">"; if ("TD" == event.srcElement.tagName) if (("" != event.srcElement.innerText)&&(diarydays.indexOf(d)!=-1)) { diary.location="/chensheng913/archive/"+newCal.getFullYear()+"/"+mon+"/"+day+".aspx"; window.location.href = diary.location; } } function setDate() { if (document.all.month.value<1||document.all.month.value>12) { alert("月的有效范围在1-12之间!"); return; } year=Math.ceil(document.all.year.value); month=Math.ceil(document.all.month.value-1); Calendar(); } </SCRIPT> <table border="0" cellpadding="0" cellspacing="1" class="calendarBigBorder" id="caltable" width="180"> <thead> <tr align="center" valign="middle"> <td colspan="7" class="calendarMonthTitle"> <input name="year" type="text" class="calendarYInput" size="3" maxlength="4" onkeydown="if (event.keyCode==13){setDate()}" onkeyup="this.value=this.value.replace(/[^0-9]/g,'')" onpaste="this.value=this.value.replace(/[^0-9]/g,'')">年 <input name="month" type="text" class="calendarMInput" size="1" maxlength="2" onkeydown="if (event.keyCode==13){setDate()}" onkeyup="this.value=this.value.replace(/[^0-9]/g,'')" onpaste="this.value=this.value.replace(/[^0-9]/g,'')">月 [<a onClick="addMonth()" href="javascript:;">下月</a>] [<a onClick="subMonth()" href="javascript:;">上月</a>]</td> </tr> <tr align="center" valign="middle"> <SCRIPT LANGUAGE="JavaScript"> document.write("<TD class=calendarDaySun id=diary>" + days[0] + "</TD>"); for (var intLoop = 1; intLoop < days.length-1; intLoop++) document.write("<TD class=calendarTd id=diary>" + days[intLoop] + "</TD>"); document.write("<TD class=calendarDaySat id=diary>" + days[intLoop] + "</TD>"); </SCRIPT> </TR> </thead> <TBODY border=1 cellspacing="0" cellpadding="0" ID="calendar" ALIGN=CENTER ONCLICK="getDiary()" onmouseup=document.selection.empty() oncontextmenu="return false" onselectstart="return false" ondragstart="return false" onbeforecopy="return false" oncopy=document.selection.empty() onselect=document.selection.empty()> <SCRIPT LANGUAGE="JavaScript"> for (var intWeeks = 0; intWeeks < 6; intWeeks++) { document.write("<TR style='cursor:hand'>"); for (var intDays = 0; intDays < days.length;intDays++) document.write("<TD class=calendarTd onMouseover='{classTemp=this.className;this.className=calendarHover}' onMouseOut='this.className=classTemp'></TD>"); document.write("</TR>"); } </SCRIPT> </tbody> </table> <script LANGUAGE="JavaScript"> Calendar(); </script> <!-- Blog日历表结束 --> <center><script language=JavaScript src="http://laoan.com/counters/count.php?jierry"></script></center><br> <table border="0" bordercolor="#000000" bgcolor="#F7F7F7" cellpadding="5" cellspacing="0" width="150"> <tr> <td style="border:1px dotted #999; "> </td> </tr> </table> </div>
文章分类
    友情blog
    !java
    火凤凰
    翱翔.Net Blog
    键者天行
    阿赖的个性空间
    站点收藏
    CSDN程序员网
    ITPUB论坛
    net130.com
    中国IT认证实验室
    中国UNIX技术社区
    中国互联网协会
    中国交换机网
    中国协议分析网
    中国教育产业联盟网
    中国电信技术
    中国系统分析员
    中国软考联盟
    中国通信网
    中国通信联盟论坛
    互联网在线
    天极网
    慧聪网
    拓普电子技术学习网
    术语详解
    李开复中国网
    系统分析员之窗
    网管员世界
    网络大典
    网络工程师联盟
    菊花论坛
    视频教学下载网
    赛迪网
    软件工程专家网
    存档

    原创  利用802.3ad实现链路聚合 收藏


    利用802.3ad实现链路聚合

    尽管很难相信,但是对于局域网交换机之间以及从交换机到高需求服务的许多网络连接来说,1Gbps的带宽是不够的。除了ISP、应用服务提供商、流媒体提供商这类企业之外,传统企业网络管理员也会感到自己服务器连接上的带宽压力。

    用于局域网交换机端口和高端服务器网卡的基于标准的链路聚合技术将帮助用户减少这种压力。制订于1999年年中的802.3ad 标准定义了如何将两个以上的千兆以太网连接组合起来为高带宽网络连接实现负载共享、负载平衡以及提供更好的弹性。

    这并不是一种新概念,许多厂商支持用于10/100Mbps 以太网和FDDI 的专用“干线”技术(trunking)已经有很多年了。这一标准的独特之处在于标准化实现链路聚合,802.3ad 意味着一直用于将多个低速端口组合起来形成更快的点到点逻辑链路的专用技术的终结。

    Cisco 公司的专用Inter-Switch Link 干线技术(交换机互联链路,ISL)和Adaptec公司的Duralink端口聚合软件只是许多交换机和网卡制造商支持的流行聚合技术中的两项技术。这类技术所存在的基本问题以及我们现在之所以采用802.3ad的理由是,它们只是设计用于单一品牌网络设备的。这对于需要更快速的“聚合式”链路但想使用不同品牌的网络硬件的网络管理员来说,意味着很大的麻烦。

    随着交换机和网卡厂商开始推出支持802.3ad的产品,你会看到在不同网卡和交换机产品中出现越来越多的兼容性,并会看到其他一些重要好处。

    首先,这项标准适用于10M、100M和1000Mbps 以太网。聚合在一起的链路可以在一条单一逻辑链路上组合使用上述传输速度,这就使用户在交换机之间有一个千兆端口以及3或4个100Mbps端口时有更多的选择,可以以负担得起的方式逐渐增加带宽。由于网络传输流被动态地分布到各个端口,因此在聚合链路中自动地完成了对实际流经某个端口的数据的管理。

    随着网络带宽需求不断地增长,可伸缩性至关重要。显然,它对于可以从添加更多千兆吞吐量中受益的骨干线路连接来说是件好事。我们不应忽视服务器的链路聚合,高性能服务器现在开始在千兆位范围内支持网络I/O。

    服务器不仅能正常地发送和接收如此巨量的数据,而且还有不少服务器具有剩余的CPU周期完成一些应用工作。在服务器功能变得更强、网络吞吐量需求变得更大的情况下,链路聚合为扩展留出了余地,最多可以支持8Gbps的全双工传输。

    802.3ad的另一个主要优点是可靠性。在链路速度可以达到8Gbps的情况下,链路故障将是一场灾难。关键任务交换机链路和服务器连接必须既具有强大的功能又值得信赖。即使一条电缆被误切断的情况下,它们也不会瘫痪,这正是802.3ad所具有的一个有趣的附带的好处。

    这项链路聚合标准在点到点链路上提供了固有的、自动的冗余性。换句话说,如果链路中所使用的多个端口中的一个端口出现故障的话,网络传输流可以动态地改向链路中余下的正常状态的端口进行传输。这种改向速度很快,当交换机得知媒体访问控制地址已经被自动地从一个链路端口重新分配到同一链路中的另一个端口时,改向就被触发。然后这台交换机将数据发送到新端口位置,并且在服务几乎不中断的情况下,网络继续运行。

    目前实际支持802.3ad的产品还不多,因此还不能对此期望太多。不过,在今后几个月中,许多制造商将推出支持链路聚合技术的产品。这正是许多网络管理人员在自己的网络中所希望有、应当有以及需要的东西。

    发表于 @ 2005年03月16日 11:11:00 | 评论( loading... ) | 编辑| 举报| 收藏

    旧一篇:IPv6技术原理 | 新一篇:DHCP协议说明书

    • 发表评论
    • 评论内容:
    •  
    Copyright © hust_wh
    Powered by CSDN Blog