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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

OAMONUOLT的過程:OLTOAMInformationOAMPDU(包括本地信息、遠端信息和自定義信息)ONUOAM連接。以太網OAMDiscoveryOAMOLT發(fā)現遠端設備的OAM實體ONU,并與之建立穩(wěn)定的過程。在這個階段中,OLT通過交互InformationOAMPDU向ONU通報各自的以太網OAM配置信息及本地節(jié)點支持的以太網OAM能力信息。ONU收到對鏈路檢測及鏈路的配置都通過檢查時,以太網OAM協議將在鏈路層開始正常工作。以太網OAM連接建立后,OLT與ONU之間通過發(fā)送InformationOAMPDU5秒鐘內沒有收到對端OAM實體的InformationOAMPDU,則認為連接超時,需要重新建立OAM連接。一、功能:定義_OAM_HOAM一個普通的定義和申明模塊文件1"../PON/PON_software_expo.h"2、定義了模塊OAM:#define 二、OAM1shortintOAM_initializevoidOAMOAM_EXIT_OK。2shortintOAM_close(void)OAMOAM_EXIT_OK。3、調用函數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的目的幀地址不合法。沒有檢查源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,說明此幀的類型不是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])說明這個子類型的幀不是EFMOAM的。判斷這個OAM 版本是否是這個階段唯一支持的版本:執(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_ 說明此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,說明不滿足OAM有效幀。沒有檢查數據,有可能作為新標準的一部分是全新的代碼。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),申明關于OAMFLAG的一些列函數。最后返回5、調用函數voidOAM_print_flags(const flags定義#definePRINT_OAM_FLAG_CODE(nameif(flagsnameENABLE){printf#name"flag,;foundboolfoundFALSEifflagsNULL)returnOAM_FLAG_CODE的有OAMflags");6、調用函數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設備是否產生這個信息幀,AM路徑:如果代碼被激活,那么當用ONU相關的發(fā)現序列時,這個代碼將會出錯: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、調用函數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、調用函數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定義構建OLT的tlv_tuple的相關參數,返回OAM_EXIT_OK。9、調用函數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,=首先數據緩沖區(qū): 執(zhí)行 首先數據緩沖區(qū):=TLVoam_information_data中的有關數據。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、調用函數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構建回環(huán)控制幀:注意,回環(huán)定時器參數被忽略,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));判斷,用語句if判斷函數Construct_variable_descr

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論