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