老師文件OAM中ONU響應(yīng)OLT的過(guò)程將以太網(wǎng)包括本地_第1頁(yè)
老師文件OAM中ONU響應(yīng)OLT的過(guò)程將以太網(wǎng)包括本地_第2頁(yè)
老師文件OAM中ONU響應(yīng)OLT的過(guò)程將以太網(wǎng)包括本地_第3頁(yè)
老師文件OAM中ONU響應(yīng)OLT的過(guò)程將以太網(wǎng)包括本地_第4頁(yè)
老師文件OAM中ONU響應(yīng)OLT的過(guò)程將以太網(wǎng)包括本地_第5頁(yè)
已閱讀5頁(yè),還剩1頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

OAMONUOLT的過(guò)程:OLTOAMInformationOAMPDU(包括本地信息、遠(yuǎn)端信息和自定義信息)ONUOAM連接。以太網(wǎng)OAMDiscoveryOAMOLT發(fā)現(xiàn)遠(yuǎn)端設(shè)備的OAM實(shí)體ONU,并與之建立穩(wěn)定的過(guò)程。在這個(gè)階段中,OLT通過(guò)交互InformationOAMPDU向ONU通報(bào)各自的以太網(wǎng)OAM配置信息及本地節(jié)點(diǎn)支持的以太網(wǎng)OAM能力信息。ONU收到對(duì)鏈路檢測(cè)及鏈路的配置都通過(guò)檢查時(shí),以太網(wǎng)OAM協(xié)議將在鏈路層開(kāi)始正常工作。以太網(wǎng)OAM連接建立后,OLT與ONU之間通過(guò)發(fā)送InformationOAMPDU5秒鐘內(nèi)沒(méi)有收到對(duì)端OAM實(shí)體的InformationOAMPDU,則認(rèn)為連接超時(shí),需要重新建立OAM連接。一、功能:定義_OAM_HOAM一個(gè)普通的定義和申明模塊文件1"../PON/PON_software_expo.h"2、定義了模塊OAM:#define 二、OAM1shortintOAM_initializevoidOAMOAM_EXIT_OK。2shortintOAM_close(void)OAMOAM_EXIT_OK。3、調(diào)用函數(shù)boolOAM_is_oam_frame(constvoid*frame,constshortint *oam_code)unsigned code=-constunsigned char*function_log_header_s="FrameisnotOAMduetoitsoam_codeNULL,那么*oam_code=- R)),輸出printf("inputparameterserror\n"),返回FALSE。檢查即將成為OAM 有效幀的幀的大小,判斷if PON_OAM_FRAME_MINIMUM_SIZE)||(size>PON_OAM_FRAME_UM_SIZE)),再判斷ifOUT_FLAG_ENABLE_WITHOUT_OLTprintf("%sillegalsize(%d)\n",function_log_header_s,size)FALSEOAM幀的大小不正確。定義oam_frame=frame;序言和起始定界符不用檢查,硬件不包含它們。需要檢查的是與OAM_DESTINATION_MAC_ADDRESS相同的目的地址:執(zhí)行if PARE(&oam_frame[OAM_DESTINATION_ADDRESS_BEGINNING_CE],OAM_DESTINATION_MAC_ADDRESS)!=0),再執(zhí)行OUT_FLAG_ENABLE_WITHOUT_OLT,如果是則輸出printf("%sIllegaldestinationMACaddress\n",function_log_header_s)FALSE,OAM的目的幀地址不合法。沒(méi)有檢查源MAC地址,檢查OAM幀的類型:首先獲得type的值type=PE_END_CE],判斷如果 的值不為 OAM_TYPE,執(zhí)行 OUT_FLAG_ENABLE_WITHOUT_OLT,若為真輸出printf("%sframetype(%d)whichisnotOAMtype\n",function_log_header_s,type),返回FALSE,說(shuō)明此幀的類型不是OAM的類型。檢查幀的子類型是不是EFM(EthernetintheFirst )OAM幀的子類型:判斷如果 CE]不為OAM_SUB_TYPE_EFM,那么執(zhí)行ifOUT_FLAG_ENABLE_WITHOUT_OLT,為真則輸出printf("%sframesub-type(%d)whichisnotEFMOAM\n",function_log_header_s,oam_frame[OAM_SUBTYPE_ CE])說(shuō)明這個(gè)子類型的幀不是EFMOAM的。判斷這個(gè)OAM 版本是否是這個(gè)階段唯一支持的版本:執(zhí)行if CE]!=OAM_EFM_VERSION),若為真繼續(xù)執(zhí)行ifOUT_FLAG_ENABLE_WITHOUT_OLT,為真輸出printf("%sframeOAMversion(%d)whichnotsupported\n",function_log_header_s,oam_frame[OAM_VERSION_ 說(shuō)明此OAM版本不予支持。檢查OAM的幀是否是有效幀,及滿足(code>=0andcode<=OAM_CODE_LAST_CODE):執(zhí)行if(oam_frame[OAM_CODE_ CE]>OAM_CODE_LAST_CODE),為真則判斷是否已 為 (%d)\n",function_log_header_s,oam_frame[OAM_CODE_CE]),返回FALSE,說(shuō)明不滿足OAM有效幀。沒(méi)有檢查數(shù)據(jù),有可能作為新標(biāo)準(zhǔn)的一部分是全新的代碼。codeOAM_code_t)oam_frame[OAM_CODE_CE];判斷if(oam_code!=NULL)*oam_code=code;則返回TRUEOAM幀。4shortintParse_oam_frame_flagsconstvoid*frame,constshortintsize,constboolcheck_validity,OAM_1_2_flags_tflags),定義#defineFILL_FLAG(flag_name,flag_mask){flags[flag_name]=((flag_field&flag_mask)>0);}和constunsigned*oam_frame;unsigned flag_field;if(check_validity)(!OAM_is_oam_frame(frame,size,NULL/*oam_code*/)),為真返回(OAM_PARAMETER_ERROR);oam_frame=frame和flag_field=((oam_frame[OAM_FLAGS_CE_BEGINNING_CE])<<BITS_IN_BYTE) OAM_ZERO_FLAGS_STRUCT(flags),申明關(guān)于OAMFLAG的一些列函數(shù)。最后返回5、調(diào)用函數(shù)voidOAM_print_flags(const flags定義#definePRINT_OAM_FLAG_CODE(nameif(flagsnameENABLE){printf#name"flag,;foundboolfoundFALSEifflagsNULL)returnOAM_FLAG_CODE的有OAMflags");6、調(diào)用函數(shù)shortintOAM_parse_information_frame(constvoid*frame,constshortint mon_frame_data_t mon_data,*local_tlv_tuple,OAM_1_2_tlv_tuple_t*remote_tlv_tuple,bool*passave_originated定義constunsignedchar constunsignedchar 執(zhí)行if(Parse_oam_frame(frame, mon_data->oam_flags,&oam_code,&oam_data)!=OAM_EXIT_OK),為真返回OAM_PARSE_MSG_ERROR。執(zhí)行if(oam_code!= PON_PAS_LOG_FLAG_ERROR)),為真輸出printf("ErrorOAMcode(%d)\n",oam_code);返 CE]獲frame_dataTLV解析:執(zhí)行if(Parse_tlv_data(frame_data,"local",local_tlv_tuple)!=OAM_EXIT_OK),為真返回(OAM_PARSE_MSG_ERROR);確定Passave設(shè)備是否產(chǎn)生這個(gè)信息幀,AM路徑:如果代碼被激活,那么當(dāng)用ONU相關(guān)的發(fā)現(xiàn)序列時(shí),這個(gè)代碼將會(huì)出錯(cuò):passave_originated ATE_ENTERPRISE_NUMBER_PASSAVE_VALUE);TLV解析:ifParse_tlv_data(frame_data+OAM_INFORMATION_TLV_TOTAL_SIZE,"remote",remote_tlv_tuple)!=OAM_EXIT_OK)return(OAM_PARSE_MSG_ERROR)為真,OAM_PARSE_MSG_ERROR。7、調(diào)用函數(shù)staticshortintParse_tlv_data(constunsignedchar *tlv_beginning_ce,const *tlv_tuple)定義unsignedlongoampdu_configuration,upper_extension,判斷tlv_beginning_ce是否為NULLERROR_DEBUG如果ifR)),為真,輸出printf("Error%sTLVbeginningce\n",tlv_name),返回的情況下,執(zhí)行if PON_AS_LOG_FLAG_ERROR)) TLV_TYPE_VALUE)為真,在定義了ERROR_DEBUG的情況下,執(zhí)行ifR)),為真則輸出 TLV (%d)\n", , 如 NGTH_VALUE)為真,在定義了ERROR_DEBUG 的情況下,執(zhí)行if ,為真輸出 tlv_tuple8、調(diào)用函數(shù)shortintOAM_fill_olt_local_tlv_tuple(OAM_1_2_tlv_tuple_t *olt_tlv_tuple),如果olt_tlv_tuple得值為NULL,那么在定義了ERROR_DEBUG的情況下,執(zhí)行ifR)),為真輸出printf("Error,NULLinputparameter\n"),返回OAM_PARAMETER_ERROR定義構(gòu)建OLT的tlv_tuple的相關(guān)參數(shù),返回OAM_EXIT_OK。9、調(diào)用函數(shù)shortintOAM_construct_information_frame(constmac_address_tsource_address,constOAM_1_2_tlv_tuple_t *local_tlv_tuple,void*frame,shortint *frame_size,shortintoam_information_data_size=0;shortintunsignedlongoampdu_configuration=0x0,enterprise_identifier=0x0,=首先數(shù)據(jù)緩沖區(qū): 執(zhí)行 首先數(shù)據(jù)緩沖區(qū):=TLVoam_information_data中的有關(guān)數(shù)據(jù)。TLVoam_information_data10shortintOAM_parse_event_notification_frame(constvoid*frame,constshort mon_data,bool定義constunsignedchar 執(zhí)行if(Parse_oam_frame(frame,frame_size, mon_data->oam_flags,&oam_code,&oam_data)OAM_EXIT_OKoam_frameif那么在定義了ERROR_DEBUG的情況下輸出printf("ErrorOAMcode(%d)\n",oam_code), ENT_TLV_CE]!=OAM_EVENT_NOTIFICATION_TLV_NOT_EXIST_VALUE);返回11、調(diào)用函數(shù)shortintOAM_construct_loopback_control_frame(constmac_address_tsource_address,constunsignedshortloopback_time,void*frame,shortint*frame_size),ifdef_PON_ONU_ASIC_1_0_,那么執(zhí)行#defineLOOPBACK_TIME0xffff構(gòu)建回環(huán)控制幀:注意,回環(huán)定時(shí)器參數(shù)被忽略,LOOPBACK_TIME如果定義了_PON_ONU_ASIC_1_0_,則執(zhí)行USHORT_2_UBUFFER(LOOPBACK_TIME,loopback_data如果定義了_PON_ONU_ASIC_1_1_USHORT_2_UBUFFER(loopback_time,loopback_data)ERROR_DEBUG,則執(zhí)行if(PON_log_active_olt_state(PON_OLT_ID_NOT_AVAILABLE)),為真輸出printf("Error,unsupportedONUversiondefinition\n")OAM_NOT_IMPLEMENTEDConstruct_oam_frameframe_size));判斷,用語(yǔ)句if判斷函數(shù)Construct_variable_descr

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論