版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
DHCP規(guī)范和現(xiàn)網(wǎng)案例分析陳曦2012年6月1本次課題DHCP簡介中國電信DHCP擴(kuò)展規(guī)范現(xiàn)網(wǎng)DHCP案例分析2DHCP簡介協(xié)議概述報文格式報文類型常用optionDHCP報文交互過程DHCP客戶端更新租約DHCPclient狀態(tài)機(jī)DHCP中繼工作過程處理DHCP中繼報文3協(xié)議概述DHCP動態(tài)主機(jī)配置協(xié)議(DynamicHostConfigurationProtocol)為網(wǎng)絡(luò)客戶機(jī)分配動態(tài)的IP地址提供安全、可靠的TCP/IP網(wǎng)絡(luò)配置保證IP地址不發(fā)生沖突,減少了在TCP/IP網(wǎng)絡(luò)上增添、移動和配置計算機(jī)的管理負(fù)擔(dān),使IP地址管理自動化。動態(tài)分配IP地址在某些情況下還可以解決IP不夠用的問題。4報文格式OP(1)Htype(1)Hlen(1)Hops(1)TransactionID(4)Seconds(2)Flags(2)Ciaddr(4)Yiaddr(4)Siaddr(4)Giaddr(4)Chaddr(16)Sname(64)File(128)Options(variable)5報文字段含義最左邊的bit位,0代表廣播,1代表單播。其余bit尚未使用flags由DHCPClient填充,從DHCPClient開始獲得地址或地址續(xù)借后所使用了的秒數(shù)。Seconds由DHCPClient選擇的一個隨機(jī)數(shù),被DHCPServer和DHCPClient用來在它們之間交流messages和responses。由客戶設(shè)置并由DHCPServer返回的32bit整數(shù)??蛻粲盟鼘φ埱蠛蛻?yīng)答進(jìn)行匹配。TransactionIDDHCPClient設(shè)置為0,也能被一個代理服務(wù)器設(shè)置hopshardwareaddresslength,6字節(jié)。hlenhardwareaddresstype,1表示以太網(wǎng),這和ARP請求或應(yīng)答中同名字段表示的含義相同。htypemessageopcode/messagetype“1“代表BOOTREQUEST”2“代表BOOTREPLYop含義字段6報文字段含義(續(xù))包含報文的類型、有效租期、DNS(DomainNameSystem,域名系統(tǒng))服務(wù)器的IP地址等配置信息,RFC2132中介紹了全部的option的定義optionsBootfilename,是一個空值終止串。DISCOVER中是“generic”名字或空字符,OFFER提供有效的目錄路徑全名。file“服務(wù)器主機(jī)名”字段是一個空值終止串,由服務(wù)器填寫。snameClienthardwareaddresschaddrDHCPRelay代理的IP地址。giaddrbootstrap中,下一個Server的IP地址。siaddr‘your’(Client)IPaddressyiaddrClientIPaddress,只有DHCPClient已經(jīng)獲得IP地址,并且能響應(yīng)ARPrequests時,才能被填充。ciaddr含義字段7報文類型報文類型主要功能DHCP-DISCOVERDHCP客戶端廣播發(fā)送的,用來查找網(wǎng)絡(luò)中可用的DHCP服務(wù)器DHCP-OFFERDHCP服務(wù)器用來響應(yīng)客戶端的DHCP-DISCOVER請求,并為客戶端指定相應(yīng)配置參數(shù)DHCP-REQUESTDHCP客戶端廣播發(fā)送給DHCP服務(wù)器,用來請求配置參數(shù)或者續(xù)借租期DHCP-ACKDHCP服務(wù)器通知客戶端可以使用分配的IP地址和配置參數(shù)DHCP-NAKDHCP服務(wù)器通知客戶端地址請求不正確或者租期已過期DHCP-RELEASEDHCP客戶端主動向DHCP服務(wù)器發(fā)送,告知服務(wù)器該客戶端不再需要分配的IP地址DHCP-DECLINEDHCP客戶端發(fā)現(xiàn)地址沖突或由于其它原因?qū)е碌刂凡荒苁褂茫瑒t發(fā)送DHCP-DECLINE報文,通知服務(wù)器所分配的IP地址不可用DHCP-INFORMDHCP客戶端已經(jīng)有IP地址,用它來向服務(wù)器請求其他的配置參數(shù)8常用optionOptionNameDescription1SubnetmaskSpecifiessubnetmaskfortheclient3GatewaysAlistofrouters,inpreferentialorder,fortheclienttouse.6DomainNameserversAlistofDomainNameserversinpreferentialorder.ADomainNameserverenablestheclienttolocateothercomputersonthenetworkbyname.50RequestedIPAddressThisoptionisusedinaclientrequest(DHCP-DISCOVER)toallowtheclienttorequestthataparticularIPaddressbeassigned.53DHCPMessageTypeUsedtoconveythetypeoftheDHCPmessage.55ParameterRequestListUsedbyaDHCPclienttorequestvaluesforspecifiedconfigurationparameters.60VendorclassidentifierUsedbyDHCPclientstooptionallyidentifythetypeandconfigurationofDHCPclient.82DHCPRelayAgentInformationOptionTheoptionisinsertedbytheDHCPrelayagentwhenforwardingclient-originatedDHCPpacketstoaDHCPserver,itincludea"circuitID"anda"remoteID".125Vendor-IdentifyingVendorOptionsDHCPclientsandserversmayusethisoptiontoexchangevendor-specificinformation.Eitherpartymaysendthisoption,asneeded.9DHCP報文交互過程10DHCP客戶端更新租約
DHCP服務(wù)器分配給客戶端的IP地址有一定的租借期限,當(dāng)租借期滿后服務(wù)器會收回該IP地址。為了延長DHCP客戶端使用該地址的期限,需要更新IP地址租約。11DHCP客戶端更新租約包交互12DHCPclient狀態(tài)機(jī)13DHCP中繼工作過程
由于DHCP請求報文采用廣播方式發(fā)送報文,因此當(dāng)DHCP客戶端和DHCP服務(wù)器處于不同子網(wǎng)時,必須要通過DHCP中繼進(jìn)行通信,最終獲取到IP地址。這樣,多個網(wǎng)絡(luò)上的DHCP客戶端可以使用同一個DHCP服務(wù)器,既節(jié)省了成本,又便于進(jìn)行集中管理。14處理DHCP中繼報文
DHCP中繼代理收到DHCP報文后首先識別該報文,再進(jìn)行相應(yīng)處理。如果DHCP報文的UDP目的端口號為67,且BOOTP報文頭中的“op”字段是BOOTREQUEST(1),即表示該報文是DHCP客戶機(jī)發(fā)給服務(wù)器的請求報文。DHCP中繼代理會檢查報文的“giaddr”字段,如果其值為0.0.0.0,則DHCP中繼代理設(shè)備用接受該報文的接口的IP地址填充此字段后,發(fā)送報文到指定的DHCP服務(wù)器組內(nèi)的所有DHCP服務(wù)器。如果DHCP報文的UDP目的端口號為67,且BOOTP報文頭中的“op”字段是BOOTREPLY(2),即表示該報文是DHCP服務(wù)器希望通過中繼代理轉(zhuǎn)發(fā)給DHCP客戶端的回應(yīng)報文。DHCP中繼代理會將該報文從“giaddr”字段所屬的接口發(fā)送到指定的DHCP客戶端。15中國電信DHCP擴(kuò)展規(guī)范發(fā)送discover報文的時間間隔續(xù)租機(jī)制終端ARP探測流程(福建電信地方規(guī)范)Option60擴(kuò)展Option125擴(kuò)展16發(fā)送discover報文的時間間隔如第一次DHCP的請求,未收到來自DHCP服務(wù)器的響應(yīng)后,需按照協(xié)議棧的要求在第4秒、第8秒、第16秒、第32秒、第64秒、第124秒、第184秒…第304秒分別發(fā)起地址請求,且每次只發(fā)送一個請求報文。如第304秒仍未收到DHCP服務(wù)器響應(yīng),則重啟DHCP會話,重復(fù)上述過程。其中福建電信要求:secondselapse字段需記錄本次DHCP流程中所發(fā)送DISCOVER的累計時間,以秒為單位。設(shè)備上電后,第一個DHCPDiscover包要在0~60秒之間隨機(jī)時延一段后發(fā)出。17discover報文的時間間隔實例18續(xù)租機(jī)制
上圖中T1.5(68.75%,5.5/8,11/16)和T2.5(93.75%,7.5/8,15/16)是中國電信的對標(biāo)準(zhǔn)規(guī)范的擴(kuò)展。19續(xù)租未響應(yīng)的抓包20在T1期間總是得到響應(yīng)的抓包21在T2期間才得到響應(yīng)的抓包22終端ARP探測(福建電信規(guī)范)23ARP探測流程
1)家庭網(wǎng)關(guān)正常獲取IP后,ARP探測機(jī)制開始探測。探測周期為每四分鐘一次,探測包為全FF廣播包,探測三層地址為本接口網(wǎng)關(guān)IP地址。2)探測包發(fā)送后,等待超時時間為五秒。若五秒內(nèi)收到ARP回復(fù),本次探測結(jié)束。若五秒超時未收到ARP回復(fù),則:發(fā)送以廣播形式發(fā)送Request發(fā)(包中攜帶本接口之前正常獲取的IP地址)續(xù)租。3)若未收到DHCPserver回應(yīng)的ACK報文。重復(fù)本過程發(fā)送Request報文(重復(fù)發(fā)送間隔為2s)。任何一次收到ACK報文后,本次探測結(jié)束。若2)中三次Request續(xù)租報文均無回應(yīng),則重啟DHCP會話。(如同重新開機(jī)DHCP流程)24ARP鏈路檢測總是正常的抓包25ARP探測異常發(fā)request抓包26ARP探測異常且無法恢復(fù)抓包27Option60字段名長度內(nèi)容Code8固定值,60Length8整個報文長度EnterpriseCode16企業(yè)代碼(參照e8規(guī)范)Fieldtype8擴(kuò)展屬性,固定值31FieldLength8擴(kuò)展域的長度FieldValue認(rèn)證加密信息
012301234567890123456789012345678901+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|code(60)|Length|EnterpriseCode|+---------------+---------------+---------------+---------------+|Fieldtype|FieldLength|FieldValue|+-------------------------------+-------------------------------+28Option60Option60字段鑒權(quán)規(guī)劃參照《中國電信“我的e家”技術(shù)規(guī)范——e家終端(e8)》文中標(biāo)準(zhǔn)設(shè)計。擴(kuò)充FiledType31-60為IPTV機(jī)頂盒專用,其中FieldType31定義為IPTV機(jī)頂盒DHCP認(rèn)證的鑒權(quán)信息(具體為:接入層用戶名、密碼等信息加密后的密文,加密算法見本文相關(guān)內(nèi)容)。29Option60加密算法
在家庭網(wǎng)關(guān)啟動后,如果FLASH中沒有儲存VOIP用戶名和密碼信息,則OPTION60相關(guān)信息如下:Type為34;Value為24位家庭網(wǎng)關(guān)序列號+默認(rèn)VOIP賬號字符串(固定為”admin/admin”)。如果VOIP賬號已保存到家庭網(wǎng)關(guān)的FLASH中,Option60字段相關(guān)信息如下:Type值為34,Value值為24位家庭網(wǎng)關(guān)序列號+VoIP賬號的加密字符串DHCP平臺對網(wǎng)關(guān)OPTION60字段進(jìn)行驗證,對驗證通過的返回OFFER報文,沒有通過的丟棄該報文不做任何處理。30Option60加密算法家庭網(wǎng)關(guān)從FLASH中讀取出VoIP/IPTV賬號信息:用戶名(UserID)、密碼(Password)家庭網(wǎng)關(guān)生成隨機(jī)數(shù)R,R長度為64bit,8字節(jié)。家庭網(wǎng)關(guān)生成時間戳TS,TS定義為距離格林威志時間1970年0點秒數(shù)的64bit整型,強(qiáng)制轉(zhuǎn)換8字節(jié)長整型,如位數(shù)不夠高位補(bǔ)0。家庭網(wǎng)關(guān)生成密文C=EnCry(R+TS+64Bit,UserID),例如C的長度為128bit,UserID為120bit(15字符),EnCry為3DES對稱加密算法,密鑰為R+TS后用64位0補(bǔ)足192bit。家庭網(wǎng)關(guān)生成密鑰Key=Hash(R+Password+TS),其中Key為128bit,Hash()為哈希算法,這里定義為MD5;R+Password+TS就是Byte的直接拼接。家庭網(wǎng)關(guān)生成發(fā)送消息Message=O+R+TS+Key+C,其中O描述使用的對稱加密算法8bit,O=1:表示為上述描述的加密算法,O=其他數(shù)字:保留。31Option60字段舉例CToption60全字段(UserId[ad66133512@iptv]Password[123456])3C3500001F31010ADAA13C130D336A0E0000
00
00
00
00
0053BE31310F1F5FC8538E6770773219DEA4EDBABF98501ED16CBFDE0D0EA50FF9Type......:60(0x3C)
Length.....:53(0x35)EnterpriseCode:0(0x000x00)Fieldtype...:31(0x1F)FieldLength..:49(0x31)
加密方式....:1(0x01)加密計算:隨機(jī)數(shù):0ADAA13C130D336A時間戳:0E0000
00
00
00
00
00密鑰Key:53BE31310F1F5FC8538E6770773219DE密文C:A4EDBABF98501ED16CBFDE0D0EA50FF932Option125OPTION125功能是對標(biāo)準(zhǔn)DHCP協(xié)議一個補(bǔ)充標(biāo)準(zhǔn),該功能的標(biāo)準(zhǔn)定義在RFC3925中。DHCP服務(wù)器在完成驗證將客戶端的IP地址等信息封裝成DHCPOFFER包的時候,將OPTION125信息封裝進(jìn)DHCPOFFER包中再發(fā)送給客戶端。DHCP服務(wù)器在收到Request包后,同樣也會在回給機(jī)頂盒的ACK包中添加OPTION125的信息??蛻舳耸盏絆FFER/ACK包以后,首先查看該OFFER/ACK包中OPTION125中的約定的信息,并與預(yù)先存儲的信息進(jìn)行比對。比對結(jié)果為相同則使用此OFFER/ACK,如果比對信息不同則將此OFFER/ACK丟棄。33Option125格式
34Option125舉例舉例:Option-code=125Option-len=DHCP服務(wù)器廠商自定義Enterprise-number1=DHCP服務(wù)器廠商自定義data-len1=16vendor-class-data1=SHCTCIPTVDHCPAAA35中國電信Option125擴(kuò)展功能Option125特定字段內(nèi)容定義enterprise-number1:待定,暫用0。option-data1:DHCPSERVER特定信息(根據(jù)需要添加,總字節(jié)數(shù)不可超過250)36Option125擴(kuò)展字段定義
subopt-codesubopt-lensub-option-dataDescriptionofsub-option-data11-32設(shè)備的生產(chǎn)廠商名稱字符串格式,建議使用英文或拼音21-32DHCPserver的設(shè)備種類或分類字符串格式,如:
HGW-CT
STBDHCPSERVER
DHCPSERVERNo.531-32DHCPserver的設(shè)備型號字符串格式,如DS-8000102上網(wǎng)類業(yè)務(wù)的VLANID2個字節(jié)十六進(jìn)制數(shù)(高字節(jié)在前),值0x2000表示untag112IPTV業(yè)務(wù)的VLANID2個字節(jié)十六進(jìn)制數(shù)(高字節(jié)在前),值0x2000表示untag122IMS業(yè)務(wù)的VLANID2個字節(jié)十六進(jìn)制數(shù)(高字節(jié)在前),值0x2000表示untag132VOICE業(yè)務(wù)的VLANID2個字節(jié)十六進(jìn)制數(shù)(高字節(jié)在前),值0x2000表示untag13~60(預(yù)留)83保留原有IPTV通道DHCPserver專用其它(待定)37Option125舉例說明0000
7d1c0000
00
001702064847572d435403
}........HGW-CT.0010
0944503630372d4756390b020064
.DP607-GV9...d7d(option125)1c(length28)0000
00
00(enterprise-number1:待定,暫用0)17(data-len1=23)02(subopt-code2)06(subopt-len)4847572d4354(HGW-CT)03(subopt-code3)09(subopt-len)44503630372d475639(DP607-GV9)0b(subopt-code11)02(subopt-len)0064(IPTV業(yè)務(wù)的VLANID=100)38現(xiàn)網(wǎng)DHCP案例分析福州語音問題通過option60實現(xiàn)對A/B業(yè)務(wù)平面的訪問39福州語音問題現(xiàn)網(wǎng)現(xiàn)象描述接福建大亞現(xiàn)場技術(shù)支持工程師(FAE)黃紅慈報道,SVN:5571的軟件版本,在福州幾個本地網(wǎng)多出現(xiàn)語音不能使用,到現(xiàn)場看了一下,發(fā)現(xiàn)PINGSBC地址無法通,查看路由表有IP存在,局方數(shù)據(jù)查詢說該ONU無發(fā)續(xù)約包過來,導(dǎo)致半個小時后語音不能正常使用,但在現(xiàn)場發(fā)現(xiàn)是有IP地址的。另外只要重新設(shè)置一下WAN口連接(就是點擊一下VLAN:45按確認(rèn)后)設(shè)備在上報IP請求,IP就可以通了。40現(xiàn)網(wǎng)現(xiàn)象初步分析和定位初步分析:可能是續(xù)租包沒有發(fā)出來,目前網(wǎng)關(guān)在續(xù)租到期未續(xù)租成功的情況下,IP地址可繼續(xù)使用(符合前面的“查看路由表有IP存在”),但無法ping通SBC(因為地址已經(jīng)被回收)。另外重新設(shè)置一下WAN口連接,這是會重新開始DISCOVER的過程,就又能拿到server分配的IP了(符合前面的“IP就可以通了”)。通過大亞FAE在現(xiàn)場的抓包,確實沒有發(fā)現(xiàn)發(fā)續(xù)租包,包括單播和廣播續(xù)租包。41在公司內(nèi)的驗證
升級為同樣的版本,同樣的組網(wǎng)環(huán)境,在公司內(nèi)驗證,發(fā)現(xiàn)DHCP所有過程一切正常,包括續(xù)租過程。DHCP續(xù)租包總是在租約期的一半時間向DHCPserver準(zhǔn)時發(fā)出。42初步懷疑方向
因為是在VOIPWAN連接上發(fā)生了DHCP無法續(xù)租成功,而VOIPWAN連接是使用的獨立的路由表(與INTERNET路由表不一樣)。根據(jù)以往的經(jīng)驗,DHCP單播續(xù)租包無法發(fā)出的一種可能是路由表不正確,導(dǎo)致單播包無法找到路由而發(fā)送失敗。根據(jù)負(fù)責(zé)組網(wǎng)模塊的工程師說法,福建那邊有一個特殊需求,從offer包提供的網(wǎng)關(guān)地址和網(wǎng)段掩碼,無論掩碼長度為多少,都加一個8位地址的掩碼的路由。根據(jù)為福建電信定制功能而寫的代碼,例如會添加了一條以下的路由:iprouteaddto10.8.0.0/8deveth4.46_1tablet31實際上這條路由添加是不會成功的,經(jīng)過路由表查看,這樣的路由沒有添加成功的,因為子網(wǎng)和掩碼長度不匹配,需要修改成以下這樣的路由才能添加成功。iprouteaddto10.0.0.0/8deveth4.46_1tablet31因此懷疑路由沒有添加成功導(dǎo)致單播DHCP續(xù)租包未能成功發(fā)出,經(jīng)過修改代碼,修正了以上的bug,發(fā)送版本給前方驗證。43對初步懷疑的驗證
經(jīng)過前方驗證,故障依舊,雖然前面bug得到了修正,但DHCP的問題與此bug無關(guān)。44再次分析驗證(1)因為在公司環(huán)境里測試一切正常,在福建現(xiàn)網(wǎng)環(huán)境不正常,因此懷疑與網(wǎng)絡(luò)環(huán)境是有很大關(guān)系的。查看DHCP模塊代碼的歷史修訂記錄,在今年2月份時未福建電信增加了DHCPARP探測的功能,是否與此有關(guān)?因為ARP探測功能可以單獨關(guān)閉,不啟用ARP探測功能,經(jīng)前方驗證,問題依舊。把DHCP模塊的代碼倒退到2月份之前的版本,重新編譯,發(fā)給前方驗證,問題消失??磥硎茿RP探測功能加入后引入的bug。45再次分析驗證(2)為了證明推論,關(guān)掉NTP服務(wù),重啟設(shè)備,續(xù)租包能夠正常發(fā)出,證明確實與NTP服務(wù)有關(guān)。并進(jìn)一步分析出以下過程:
1)開機(jī)DHCP首先拿到地址,根據(jù)當(dāng)前的系統(tǒng)時間+租期/2得到開始發(fā)續(xù)租包的時間(在2000年)
2)NTP在WAN口得到地址后開始啟動,更新系統(tǒng)時間到2012年
3)DHCP進(jìn)程檢查發(fā)續(xù)租包的時間永遠(yuǎn)無法滿足,由于時間坐標(biāo)系不一致,續(xù)租時間是按2000年為基準(zhǔn),當(dāng)前時間按NTP更新后的時間2012年為基準(zhǔn),導(dǎo)致發(fā)續(xù)租包的時間條件不滿足,永遠(yuǎn)發(fā)不出續(xù)租包。46再次分析驗證(3)需要在代碼中加入debug信息,看為何到了租期的一半時間DHCP續(xù)租為何不能發(fā)出。根據(jù)實現(xiàn)的原理,需要有兩個定時器,一個定時器檢查租期是否過半,一個檢查ARP探測定時器是否到時間,這兩個定時器每秒鐘分別檢查一次。定時器的檢查是基于系統(tǒng)時間秒數(shù),以1970年1月1日0時0秒為基準(zhǔn)點,取當(dāng)前時間距基準(zhǔn)點的秒數(shù),與預(yù)計租期到一半的時間點進(jìn)行比較,如果等于這個時間點,續(xù)租包就發(fā)出。經(jīng)過分析debug信息,發(fā)現(xiàn)續(xù)租時間和當(dāng)前時間差別巨大,差值在12年左右。
因為續(xù)租時間是在當(dāng)前時間+租期/2上得出的,不會差別這么大,推測與NTP服務(wù)開啟有關(guān),系統(tǒng)默認(rèn)時間是2000年,NTP更新后在2012年,正好差別12年。47再次分析驗證(4)通過以上分析,需要在NTP更新時間后,調(diào)整以前續(xù)租時間的坐標(biāo)系才能校準(zhǔn)時間,滿足發(fā)續(xù)租包的時間條件。修改代碼,在檢查到續(xù)租時間和當(dāng)前時間差值大于一個租期時(這種情況只有NTP修改時間才可能發(fā)生),立刻調(diào)整續(xù)租時間為當(dāng)前時間。通過驗證,能夠解決此問題。根據(jù)代碼修改記錄,同樣可以解釋SVN5399的版本無問題,SVN5711版本存在此問題。在此兩個版本之間,增加了DHCP模塊每4分鐘ARP檢查的功能,修改了有關(guān)定時器的機(jī)制,以同時滿足定時器對續(xù)租和ARP檢查兩個功能的同時支持,定時器在正常情況下本身無問題,但沒有考慮到NTP服務(wù)刷新系統(tǒng)時間帶來的影響,導(dǎo)致了這個差別。48再次分析驗證(5)根據(jù)代碼修改記錄,同樣可以解釋SVN5399的版本無問題,SVN5711版本存在此問題。在此兩個版本之間,增加了DHCP模塊每4分鐘ARP檢查的功能,修改了有關(guān)定時器的機(jī)制,以同時滿足定時器對續(xù)租和ARP檢查兩個功能的同時支持定時器在正常情況下本身無問題,但沒有考慮到NTP服務(wù)刷新系統(tǒng)時間帶來的影響,導(dǎo)致了這個差別。49多定時器實現(xiàn)機(jī)制50現(xiàn)網(wǎng)問題的解決方法針對前面出現(xiàn)的問題,解決現(xiàn)網(wǎng)存在問題的方法有如下幾種:1)升級到最新版本
2)退回到版本5399,但此版本無ARP檢查的功能
3)關(guān)閉NTP的功能,重啟設(shè)備?;蛘咦岆娦抨P(guān)掉NTP服務(wù)器51更優(yōu)化的解決方案經(jīng)過前面的分析,此問題的實質(zhì)是因為系統(tǒng)時間發(fā)生漂移,導(dǎo)致定時器無法按預(yù)期時間點觸發(fā)原定任務(wù)的處理,雖然前面的解決辦法可以在偵測到故障發(fā)生時能夠自行恢復(fù),但畢竟屬于事后補(bǔ)救的方法,能否做到徹底解決呢?考慮到系統(tǒng)啟動后先設(shè)置系統(tǒng)默認(rèn)時間(例如2010年1月1日0時0分),然后DHCP獲得地址后,再通過SNTP服務(wù)取得當(dāng)前的實際時間,實際時間與系統(tǒng)默認(rèn)時間肯定是不同的。這幾個過程的時序都是固定的,無法在此基礎(chǔ)上做任何改進(jìn)。后來想到了取系統(tǒng)自上電以來的秒數(shù)(uptime),這個應(yīng)該與系統(tǒng)時間無直接關(guān)系,并且在修改系統(tǒng)時間后,理論上也不會發(fā)生任何突變。經(jīng)過驗證,的確如此。以系統(tǒng)上電的時間作為參考點,取當(dāng)前的uptime作為時間比較點,經(jīng)過驗證,可以徹底解決此問題。52更優(yōu)化的解決方案之關(guān)鍵代碼在系統(tǒng)頭文件中的定義struct
sysinfo{ longuptime; /*Secondssinceboot*/ …}/*封裝了一個函數(shù),能夠返回系統(tǒng)自啟動以來的秒數(shù)*/longget_uptime(){
struct
sysinfo
s_info;
interror; error=sysinfo(&s_info);
if(error!=0) {
printf("get_uptimecodeerror=%d\n",error); return0; } returns_info.uptime;}53一些經(jīng)驗教訓(xùn)
研發(fā)寫代碼時需要仔細(xì)考慮各種情況下代碼的邏輯是否正確。本案例中因為忽略了系統(tǒng)時間可能變化,導(dǎo)致基準(zhǔn)時間變化,導(dǎo)致定時器不準(zhǔn)。概率雖然看似很小,但一旦條件滿足,就百分之百地出現(xiàn)故障。不完整的測試會放過一些bug在本案例中,因為以前的每次測試(包括自測,測試人員測試,現(xiàn)網(wǎng)測試,發(fā)行測試),都未能開啟SNTP服務(wù),導(dǎo)致無法測試出此bug。而且即使開啟SNTP服務(wù),普通的測試無法測試出此bug。要測試出此bug,還需要滿足以下條件:
1)測試時間足夠長,要大于租期的一半時間以上
2)局端設(shè)備(OLT,DHCPserver等)要對未續(xù)租成功的設(shè)備回收IP地址,取消到此設(shè)備的路由因此,需要包括研發(fā),測試,F(xiàn)AE在內(nèi)的人都需要提高警覺,每個環(huán)節(jié)都不能放松。54一些技巧總結(jié)
為了快速測試,可以把DHCP租期時間盡量設(shè)置短一些,以便盡早完成整個測試過程。在現(xiàn)網(wǎng)中,由于無法修改局端的DHCPserver的租期,可以在代碼中修改,例如在現(xiàn)網(wǎng)中DHCP租期時間是30分鐘,在代碼中把租期時間直接修改為100秒,不影響此問題的本質(zhì)。在過50秒沒有發(fā)出續(xù)租包,即可認(rèn)為存在問題??梢酝ㄟ^使用更改系統(tǒng)時間的命令來模擬SNTP服務(wù)的效果,這樣可以簡化和加快自測的效果。55通過DHCP實現(xiàn)對A/B平面的訪問應(yīng)用背景方案設(shè)計方案驗證結(jié)果個別現(xiàn)網(wǎng)問題的解決方案進(jìn)一步優(yōu)化—LAN側(cè)VLAN綁定56應(yīng)用背景在2009年底,上海電信欲推出一種新集上網(wǎng),看IPTV業(yè)務(wù)于一體的無線終端設(shè)備-魔屏,此設(shè)備的特點是能夠同時訪問A/B平面。所謂的A平面是指INTERNET網(wǎng)絡(luò),B平面是IPTV平面,B平面與A平面不能互相訪問,完全由中國電信經(jīng)營維護(hù),完全獨立的IP地址空間。以往通過家庭網(wǎng)關(guān)接入的設(shè)備,由端口綁定決定這個設(shè)備要么只能訪問A平面,要么只能訪問B平面,無法同時訪問A/B平面。訪問A平面相當(dāng)于PC的行為,訪問B平面相當(dāng)于IPTV機(jī)頂盒的行為。57A/B平面組網(wǎng)示意圖58方案設(shè)計(初步)為了使魔屏使用簡單,魔屏是使用DHCP方式獲得地址。研究了B平面DHCP的電信規(guī)范,發(fā)現(xiàn)B平面對DHCP有特殊要求,其中一個要求是在option60中可以識別IPTV機(jī)頂盒,即在option60中有IPTV機(jī)頂盒的特征字段。因為A/B平面IP地址空間是獨立的,要同時訪問這兩個平面一定需要兩個獨立的IP地址,對于魔屏而言,需要在兩個平面分別DHCP獲取IP。由于端口綁定的原因,在正常情況下,哪怕發(fā)出兩次不同的DHCP請求,只能
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學(xué)年高中歷史第六單元中國社會主義的政治建設(shè)與祖國統(tǒng)一單元總結(jié)學(xué)案含解析岳麓版必修1
- 2025合同樣例pos機(jī)合作協(xié)定范本
- 新課標(biāo)2024高考英語一輪復(fù)習(xí)課時作業(yè)164-1Womenofachievement新人教版必修4
- 2025的學(xué)校食堂用工合同范本
- 2025抵押房產(chǎn)轉(zhuǎn)讓合同
- 2025醫(yī)療服務(wù)合同范本醫(yī)療服務(wù)合同樣本
- 2025年六盤水貨運上崗證考試
- 2025年北京資格證模擬考試
- 2025年青島交通運輸從業(yè)資格證怎樣考試
- 2025年云浮貨運考試
- 酒駕后雙方賠償收據(jù)范本
- 受性侵犯的女生的心理輔導(dǎo)方案
- (施工單位)投標(biāo)人承擔(dān)項目優(yōu)勢
- 白酒行業(yè)生產(chǎn)數(shù)字化的方案課件
- 北京豐臺2023-2024學(xué)年四年級數(shù)學(xué)第一學(xué)期期末質(zhì)量跟蹤監(jiān)視試題含答案
- 預(yù)算與預(yù)算法課件
- 電梯使用單位電梯安全日管控、周排查、月調(diào)度制度和電梯安全總監(jiān)職責(zé)及電梯安全員守則
- 法蘭球閥壓力試驗作業(yè)指導(dǎo)書
- 2023年藥學(xué)考試-執(zhí)業(yè)藥師(西藥)考試歷年真題集錦加答案
- 幼兒園優(yōu)質(zhì)課件-中班社會《電話禮儀》
- 2023年盛京銀行校園招聘人員筆試歷年難、易錯考點試題含答案解析-1
評論
0/150
提交評論