專利名稱:一種psn數(shù)據(jù)包處理方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)處理技術(shù),尤其涉及一種PSN數(shù)據(jù)包處理方法及裝置。
背景技術(shù):
IETF(Internet Engineering Task Force,互聯(lián)網(wǎng)工程任務(wù)組)下屬的 PWE3 (Pseudo-Wire Emulation Edge to Edge,端到端的偽線仿真)工作組專門致力于在分組交換網(wǎng)絡(luò)上仿真一層和二層業(yè)務(wù)的研究。PWE3機(jī)制為在分組網(wǎng)絡(luò)中傳送TDM(Time Division Multiplexing,時(shí)分復(fù)用)業(yè)務(wù)提供了可能。TDMoIP (Time Division Multiplexing over IP,在 IP 網(wǎng)上傳輸 TDM)是 PWE3 機(jī)制下的一種具體實(shí)現(xiàn)技術(shù),該技術(shù)實(shí)現(xiàn)了在分組交換網(wǎng)絡(luò)上傳輸TDM業(yè)務(wù)的電路仿真功能,可以在以太網(wǎng)、MPLS(Multi-Protocol Label Switching,多協(xié)議標(biāo)簽交換)分組網(wǎng)、 MEF(Metro Ethernet Forum,域以太網(wǎng))等網(wǎng)絡(luò)上進(jìn)行PDH/SDH(準(zhǔn)同步/同步數(shù)字體系) 等TDM業(yè)務(wù)的傳輸。PWE3網(wǎng)絡(luò)參考模型如圖1所示,PWE3設(shè)備完成電路仿真功能。它將接入的TDM 業(yè)務(wù)分配到不同的bundle (束)中在分組網(wǎng)上進(jìn)行傳輸。每個(gè)bundle可以獨(dú)立的配置 CESoPSN(Structure-Aware Time Division Multiplexed Circuit Emulation Service over Packet Switched Network,有結(jié)構(gòu)的時(shí)分復(fù)用業(yè)務(wù)在分組交換網(wǎng)上傳輸)和 SAToP(Structure-Agnostic Time Division Multiplexing over Packet,無結(jié)構(gòu)的時(shí)分復(fù)用業(yè)務(wù)在報(bào)文中傳輸)中的任一種協(xié)議標(biāo)準(zhǔn)以及該協(xié)議支持的各種業(yè)務(wù),PWE3設(shè)備可以提供多個(gè)bundle。每個(gè)bundle有一個(gè)源地址和目的地址。該設(shè)備支持無結(jié)構(gòu)和有結(jié)構(gòu)兩種類型的El接入業(yè)務(wù)。對(duì)于無結(jié)構(gòu)的E1,一個(gè) bundle通道承載一個(gè)整個(gè)的El鏈路數(shù)據(jù)。對(duì)于有結(jié)構(gòu)的El業(yè)務(wù),一個(gè)bundle通道承載一個(gè)El中的任意個(gè)數(shù)時(shí)隙。例如,如圖2所示,在一條El數(shù)據(jù)鏈路中有32個(gè)時(shí)隙,可以使得時(shí)隙2/3/4/5組成bundleO (圖2中用BO表示),使得時(shí)隙觀/29/30組成bundlel (圖2中用Bl表示)。PWE3設(shè)備支持收發(fā)雙向功能,如圖3所示,該設(shè)備進(jìn)行業(yè)務(wù)處理的過程包括步驟S301、PWE3發(fā)送側(cè)設(shè)備接收TDM業(yè)務(wù);步驟S302、PWE3發(fā)送側(cè)設(shè)備將接入的TDM業(yè)務(wù)分配到指定的bundle通道;步驟S303、PWE3發(fā)送側(cè)設(shè)備將TDM業(yè)務(wù)流按照對(duì)應(yīng)bundle的配置封裝成PSN分組數(shù)據(jù)包;步驟S304、PWE3發(fā)送側(cè)設(shè)備將封裝的分組包發(fā)送到PSN網(wǎng)絡(luò);步驟S305、PWE3接收側(cè)設(shè)備從PSN網(wǎng)絡(luò)接收TDMoIP包;步驟S306、PWE3接收側(cè)設(shè)備識(shí)別接收的TDMoIP包并提取對(duì)應(yīng)的bundle通道號(hào);步驟S307、PWE3接收側(cè)設(shè)備按照bundle的配置從TDMoIP分組包中解出TDM數(shù)據(jù);步驟S308、PWE3接收側(cè)設(shè)備按照bundle將解出TDM數(shù)據(jù)進(jìn)行消除抖動(dòng)和恢復(fù)時(shí)鐘;步驟S309、PWE3接收側(cè)設(shè)備按照bundle將消除抖動(dòng)和恢復(fù)時(shí)鐘的TDM數(shù)據(jù)送入 TDM網(wǎng)絡(luò)。在步驟S308中,可以通過緩存數(shù)據(jù)的方式來消除抖動(dòng),由電路仿真設(shè)備中抖動(dòng)緩存補(bǔ)償由分組網(wǎng)帶來的PDVPacket Delay Variation,包延時(shí)變化),緩存比預(yù)期來的早的包,重排序比預(yù)期來的晚的包,防止包的丟棄。同時(shí)可以按照TDM網(wǎng)絡(luò)的速率為TDM端口提供數(shù)據(jù)。但是,在向抖動(dòng)緩存中寫入數(shù)據(jù)時(shí),如果在緩存的起始位置中寫入了錯(cuò)誤的數(shù)據(jù), 即容易引起后續(xù)寫入緩存中的數(shù)據(jù)出現(xiàn)較大錯(cuò)誤。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供一種PSN數(shù)據(jù)包處理方法及裝置,以避免將錯(cuò)誤的數(shù)據(jù)寫入到緩存中的起始位置中導(dǎo)致后續(xù)正確的報(bào)文無法恢復(fù)。一種PSN數(shù)據(jù)包處理方法,包括接收到分組交換網(wǎng)絡(luò)PSN數(shù)據(jù)包后,確定所述PSN數(shù)據(jù)包的寫入地址;當(dāng)確定所述PSN數(shù)據(jù)包的寫入地址為緩存的起始地址時(shí),檢測(cè)PSN數(shù)據(jù)包的包頭是否正確,并在確定所述PSN數(shù)據(jù)包的包頭正確時(shí),寫入所述PSN數(shù)據(jù)包的數(shù)據(jù),否則以復(fù)幀或者以PSN數(shù)據(jù)包為單位丟棄所述PSN數(shù)據(jù)包。一種PSN數(shù)據(jù)包處理裝置,包括確定單元,用于接收到分組交換網(wǎng)絡(luò)PSN數(shù)據(jù)包后,確定所述PSN數(shù)據(jù)包的寫入地址;處理單元,用于當(dāng)確定所述PSN數(shù)據(jù)包的寫入地址為緩存的起始地址時(shí),檢測(cè)PSN 數(shù)據(jù)包的包頭是否正確,并在確定所述PSN數(shù)據(jù)包的包頭正確時(shí),寫入所述PSN數(shù)據(jù)包的數(shù)據(jù),否則以復(fù)幀或者以PSN數(shù)據(jù)包為單位丟棄所述PSN數(shù)據(jù)包。本發(fā)明實(shí)施例提供一種PSN數(shù)據(jù)包處理方法及裝置,在接收到數(shù)據(jù)包后,確定該數(shù)據(jù)包的寫入地址,并當(dāng)確定所述PSN數(shù)據(jù)包的寫入地址為緩存的起始地址時(shí),檢測(cè)PSN數(shù)據(jù)包的包頭是否正確,并在正確時(shí),寫入PSN數(shù)據(jù)包的數(shù)據(jù),否則以復(fù)幀或者PSN數(shù)據(jù)包為單位丟棄PSN數(shù)據(jù)包。由于在包頭出現(xiàn)錯(cuò)誤時(shí),丟棄數(shù)據(jù)包,從而避免寫入錯(cuò)誤的數(shù)據(jù)對(duì)后續(xù)緩存中的數(shù)據(jù)包的影響,同時(shí)也便于下一幀數(shù)據(jù)能夠較好的寫入到緩存的起始位置中, 防止錯(cuò)誤延伸和正確報(bào)文無法恢復(fù)。
圖1為現(xiàn)有技術(shù)中TDMoIP傳輸網(wǎng)絡(luò)結(jié)構(gòu)示意圖;圖2為現(xiàn)有技術(shù)中bundle通道示意圖;圖3為現(xiàn)有技術(shù)中TDMoIP收發(fā)數(shù)據(jù)流程圖;圖4為本發(fā)明實(shí)施例提供的PSN數(shù)據(jù)包處理方法流程圖;圖5為本發(fā)明實(shí)施例提供的向緩存中寫入數(shù)據(jù)的方法流程圖;圖6為本發(fā)明實(shí)施例提供的從緩存中讀取數(shù)據(jù)的方法流程圖;圖7為本發(fā)明實(shí)施例提供的PSN數(shù)據(jù)包處理裝置結(jié)構(gòu)示意圖。
具體實(shí)施例方式本發(fā)明實(shí)施例提供一種PSN數(shù)據(jù)包處理方法及裝置,在接收到數(shù)據(jù)包后,確定該數(shù)據(jù)包的寫入地址,并當(dāng)確定所述PSN數(shù)據(jù)包的寫入地址為緩存的起始地址時(shí),檢測(cè)PSN數(shù)據(jù)包的包頭是否正確,并在正確時(shí),寫入PSN數(shù)據(jù)包的數(shù)據(jù),否則以復(fù)幀或者PSN數(shù)據(jù)包為單位丟棄PSN數(shù)據(jù)包。由于在包頭出現(xiàn)錯(cuò)誤時(shí),丟棄數(shù)據(jù)包,從而避免寫入錯(cuò)誤的數(shù)據(jù)對(duì)后續(xù)緩存中的數(shù)據(jù)包的影響,同時(shí)也便于下一幀數(shù)據(jù)能夠較好的寫入到緩存的起始位置中, 防止錯(cuò)誤延伸。如圖4所示,本發(fā)明實(shí)施例提供的PSN數(shù)據(jù)包處理方法,包括步驟S401、接收到分組交換網(wǎng)絡(luò)PSN數(shù)據(jù)包后,確定PSN數(shù)據(jù)包的寫入地址;步驟S402、當(dāng)確定PSN數(shù)據(jù)包的寫入地址為緩存的起始地址時(shí),檢測(cè)PSN數(shù)據(jù)包的包頭是否正確,并在確定PSN數(shù)據(jù)包的包頭正確時(shí),寫入PSN數(shù)據(jù)包的數(shù)據(jù),否則以復(fù)幀或者以PSN數(shù)據(jù)包為單位丟棄PSN數(shù)據(jù)包。由于每個(gè)PSN數(shù)據(jù)包的寫入位置都是根據(jù)緩存的起始位置中寫入的PSN數(shù)據(jù)包來計(jì)算的,所以需要保證該位置的PSN數(shù)據(jù)包包頭的正確性,如果包頭不正確,以復(fù)幀或者以 PSN數(shù)據(jù)包為單位丟棄PSN數(shù)據(jù)包,可以使得后續(xù)的包頭正確的PSN數(shù)據(jù)包寫入到緩存的起始位置中,防止了數(shù)據(jù)寫入錯(cuò)誤對(duì)后續(xù)數(shù)據(jù)包的影響。在步驟S401中,對(duì)于每個(gè)PSN數(shù)據(jù)包,都可以根據(jù)PSN數(shù)據(jù)包的SN號(hào)、PSN數(shù)據(jù)包的大小以及緩存的起始地址存儲(chǔ)的數(shù)據(jù)包的SN號(hào),確定該P(yáng)SN數(shù)據(jù)包的寫入地址,當(dāng)確定該P(yáng)SN數(shù)據(jù)包的寫入地址超出緩存范圍時(shí),即可確定該P(yáng)SN數(shù)據(jù)包應(yīng)當(dāng)寫入到緩存的起始地址中。例如,假設(shè)緩存大小為100個(gè)寫入單位,每個(gè)PSN數(shù)據(jù)包占用一個(gè)寫入單位,當(dāng)前緩存的起始位置中寫入的PSN數(shù)據(jù)包的SN號(hào)為1,則當(dāng)SN號(hào)為58的PSN數(shù)據(jù)包應(yīng)該寫入到第58個(gè)寫入單位中,當(dāng)接收到第101個(gè)PSN數(shù)據(jù)包時(shí),則確定該P(yáng)SN數(shù)據(jù)包應(yīng)當(dāng)寫入到緩存的起始地址中,若該P(yáng)SN數(shù)據(jù)包的包頭正確,則將其寫入到緩存的起始地址,并更新當(dāng)前緩存的起始地址中寫入的數(shù)據(jù)包的SN號(hào)為101,在接收到后續(xù)PSN數(shù)據(jù)包時(shí),則以SN 號(hào)為101確定該P(yáng)SN數(shù)據(jù)包應(yīng)該寫入的位置。在步驟S402中,確定PSN數(shù)據(jù)包的包頭正確,具體包括若當(dāng)前傳輸?shù)臄?shù)據(jù)結(jié)構(gòu)為復(fù)幀結(jié)構(gòu),則當(dāng)PSN數(shù)據(jù)包的包頭中具有復(fù)幀頭且包頭及復(fù)幀頭均符合格式要求時(shí),確定PSN數(shù)據(jù)包的包頭正確;若當(dāng)前傳輸?shù)臄?shù)據(jù)結(jié)構(gòu)為單幀結(jié)構(gòu),則當(dāng)PSN數(shù)據(jù)包的包頭中具有單幀頭且包頭及單幀頭均符合格式要求時(shí),確定PSN數(shù)據(jù)包的包頭正確;若當(dāng)前傳輸?shù)臄?shù)據(jù)結(jié)構(gòu)為無幀結(jié)構(gòu),則當(dāng)PSN數(shù)據(jù)包的包頭符合格式要求時(shí),確定PSN數(shù)據(jù)包的包頭正確。通常來講,對(duì)于復(fù)幀結(jié)構(gòu),通常一個(gè)復(fù)幀中包括一個(gè)或多個(gè)PSN數(shù)據(jù)包,而對(duì)于單幀結(jié)構(gòu),通常一個(gè)PSN數(shù)據(jù)包中包括一個(gè)或者多個(gè)單幀。在以復(fù)幀或者以數(shù)據(jù)包為單位丟棄所述PSN數(shù)據(jù)包時(shí),若當(dāng)前傳輸?shù)臄?shù)據(jù)結(jié)構(gòu)為復(fù)幀結(jié)構(gòu),則丟棄當(dāng)前PSN數(shù)據(jù)包以及當(dāng)前復(fù)幀中的其它PSN數(shù)據(jù)包,其中,當(dāng)前復(fù)幀中的其它PSN數(shù)據(jù)包具體為SN號(hào)與當(dāng)前PSN數(shù)據(jù)包的SN號(hào)的差值小于一個(gè)復(fù)幀中包括的PSN 數(shù)據(jù)包個(gè)數(shù)的PSN數(shù)據(jù)包;若當(dāng)前傳輸?shù)臄?shù)據(jù)結(jié)構(gòu)為單幀結(jié)構(gòu)或者無幀結(jié)構(gòu),則丟棄當(dāng)前PSN數(shù)據(jù)包。如果所丟棄的復(fù)幀中,已經(jīng)有部分PSN數(shù)據(jù)包寫入到緩存中,則可以不進(jìn)行擦除, 在寫入下一幀數(shù)據(jù)時(shí),已經(jīng)寫入的數(shù)據(jù)即會(huì)被覆蓋掉。以復(fù)幀結(jié)構(gòu)為例,假設(shè)復(fù)幀結(jié)構(gòu)中,每個(gè)幀包括16個(gè)PSN數(shù)據(jù)包,第一個(gè)PSN數(shù)據(jù)包為幀頭,那么若檢測(cè)到SN號(hào)為51的PSN數(shù)據(jù)包需要寫入到緩存中的起始位置,則需要確定該P(yáng)SN數(shù)據(jù)包中的包頭中是否包括復(fù)幀頭,并且包頭格式和復(fù)幀頭格式是否正確,如果包括復(fù)幀頭,且包頭和復(fù)幀頭格式均正確,則可以正常將SN號(hào)為51-66的PSN數(shù)據(jù)包寫入到緩存中的前16個(gè)寫入單位;若檢測(cè)到PSN數(shù)據(jù)包中的包頭中不包括復(fù)幀頭,或者包頭或復(fù)幀頭存在錯(cuò)誤時(shí),則丟棄SN號(hào)為51-66的PSN數(shù)據(jù)包。進(jìn)一步,為了防止在寫入數(shù)據(jù)量較大的情況下,寫入的數(shù)據(jù)覆蓋掉尚未被讀取的數(shù)據(jù),則在寫入PSN數(shù)據(jù)包的數(shù)據(jù)之前,還可以先確定緩存中未被讀取的數(shù)據(jù)量小于預(yù)先設(shè)定的第一閾值。如果確定緩存中未被讀取的數(shù)據(jù)量大于或等于預(yù)先設(shè)定的第一閾值時(shí),以復(fù)幀或者以PSN數(shù)據(jù)包為單位丟棄PSN數(shù)據(jù)包。通常情況下,為較充分的利用緩存空間,第一閾值設(shè)置為較接近緩存大小的值較佳。一般情況下,在分組網(wǎng)絡(luò)中有PSN數(shù)據(jù)包到達(dá)PWE3設(shè)備時(shí),該設(shè)備才開始進(jìn)行寫入操作,而該由于TDM網(wǎng)絡(luò)要求連續(xù)不斷的發(fā)送數(shù)據(jù),所以該設(shè)備需要從緩存中連續(xù)讀取數(shù)據(jù)并向TDM網(wǎng)絡(luò)中發(fā)送。讀取操作和寫入操作可以通過時(shí)分復(fù)用的方式進(jìn)行,也可以通過調(diào)度的方式進(jìn)行。在通過時(shí)分復(fù)用的方式進(jìn)行時(shí),在為讀取操作分配的時(shí)隙中,讀取緩存中的數(shù)據(jù)并發(fā)送,在為寫入操作分配的時(shí)隙中,將PSN數(shù)據(jù)包中的數(shù)據(jù)寫入緩存;在通過調(diào)度的方式進(jìn)行時(shí),則對(duì)于每個(gè)時(shí)隙,通過調(diào)度方式確定進(jìn)行讀取操作或者進(jìn)行寫入操作。當(dāng)對(duì)于每個(gè)時(shí)隙,通過調(diào)度方式確定進(jìn)行讀取操作或者進(jìn)行寫入操作時(shí),若在一個(gè)時(shí)隙中,只接收到寫入請(qǐng)求,則只執(zhí)行寫入操作,若只接收到讀取請(qǐng)求,則只執(zhí)行讀取操作,若同時(shí)接收到讀取請(qǐng)求和寫入請(qǐng)求時(shí),則執(zhí)行寫入操作,將該讀操作延遲到下一次接收到讀取請(qǐng)求時(shí)進(jìn)行。由于向TDM網(wǎng)絡(luò)發(fā)送數(shù)據(jù)是連續(xù)的,而分組網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)則是突發(fā)的,所以當(dāng)同時(shí)接收到讀取請(qǐng)求和寫入請(qǐng)求時(shí),執(zhí)行寫入操作可以提高讀寫效率,同時(shí)保證盡量少的丟棄數(shù)據(jù)包。同時(shí)由于在數(shù)據(jù)讀取后可以將數(shù)據(jù)先存儲(chǔ)在內(nèi)部緩存中,該內(nèi)部緩存中存儲(chǔ)的數(shù)據(jù)至少可以持續(xù)0. 5ms數(shù)據(jù)給TDM鏈路發(fā)送,所以將讀操作推遲到下一次接收到讀取請(qǐng)求時(shí)進(jìn)行,通常不影響向TDM網(wǎng)絡(luò)發(fā)送數(shù)據(jù)的連續(xù)性。為了防止由于緩存中的數(shù)據(jù)過少,導(dǎo)致讀取操作不能連續(xù)執(zhí)行,在每次讀取緩存中的數(shù)據(jù)并發(fā)送之前,可以先確定緩存中未被讀取的數(shù)據(jù)量大于或等于預(yù)先設(shè)定的第二閾值,若確定緩存中未被讀取的數(shù)據(jù)量小于預(yù)先設(shè)定的第二閾值,即說明緩存中的數(shù)據(jù)過少, 可能會(huì)被讀空,此時(shí)可以先向TDM網(wǎng)絡(luò)發(fā)送用于代替從緩存中讀取的數(shù)據(jù)的填充數(shù)據(jù),直到緩存中的數(shù)據(jù)量達(dá)到第二閾值時(shí),再正常讀取緩存中的數(shù)據(jù)。在發(fā)送填充數(shù)據(jù)時(shí),同樣可以在當(dāng)前傳輸幀為復(fù)幀時(shí),以復(fù)幀為單位發(fā)送填充數(shù)據(jù);在當(dāng)前傳輸幀為單幀時(shí),以4個(gè)單幀為單位發(fā)送填充數(shù)據(jù);在當(dāng)前傳輸數(shù)據(jù)為無結(jié)構(gòu)數(shù)據(jù)時(shí),以0. 5毫秒為單位發(fā)送填充數(shù)據(jù)。具體的,在接收分組網(wǎng)絡(luò)的數(shù)據(jù)包,并向緩存中寫入數(shù)據(jù)時(shí),如圖5所示,具體包括如下步驟步驟S501、確定檢測(cè)到包頭sop,并且可以執(zhí)行寫入操作;步驟S502、進(jìn)行包頭處理,提取bundle號(hào)和SN號(hào),計(jì)算該P(yáng)SN數(shù)據(jù)包的寫入地址;步驟S503、根據(jù)SN號(hào)判斷該P(yáng)SN數(shù)據(jù)包是否為正常順序的包,如果是,執(zhí)行步驟 S504,否則執(zhí)行步驟S509 ;具體的,當(dāng)該P(yáng)SN數(shù)據(jù)包的SN號(hào)大于已經(jīng)寫入緩存中的PSN數(shù)據(jù)包的最大SN號(hào)時(shí),可以確定該P(yáng)SN數(shù)據(jù)包為正常順序的包,若小于已經(jīng)寫入緩存中的PSN 數(shù)據(jù)包的最大SN號(hào),則可以確定該P(yáng)SN數(shù)據(jù)包為晚到的包;步驟S504、判斷該P(yáng)SN數(shù)據(jù)包是否可以接收,如果是,執(zhí)行步驟S504,否則執(zhí)行步驟S508 ;具體的,當(dāng)該P(yáng)SN數(shù)據(jù)包對(duì)應(yīng)的幀頭已經(jīng)被丟棄時(shí),該P(yáng)SN數(shù)據(jù)包即不可以被接收;步驟S505、判斷該P(yáng)SN數(shù)據(jù)包的寫入地址是否為緩存的起始地址,如果是,執(zhí)行步驟S506,否則執(zhí)行步驟S507 ;步驟S506、判斷該P(yáng)SN數(shù)據(jù)包的包頭是否正確,如果是,執(zhí)行步驟S507,否則執(zhí)行步驟S508 ;步驟S507、將該P(yáng)SN數(shù)據(jù)包寫入抖動(dòng)緩存,更新緩存的起始地址中寫入的PSN數(shù)據(jù)包的SN號(hào)、未被讀取的數(shù)據(jù)量、最大SN號(hào)以及其存儲(chǔ)地址;步驟S508、以復(fù)幀或者PSN數(shù)據(jù)包為單位丟棄PSN數(shù)據(jù)包;步驟S509、判斷該P(yáng)SN數(shù)據(jù)包對(duì)應(yīng)的寫入地址中的數(shù)據(jù)是否已經(jīng)被讀出,如果是, 執(zhí)行步驟S508,否則,執(zhí)行步驟S510 ;步驟S510、當(dāng)確定該P(yáng)SN數(shù)據(jù)包的寫入地址不是緩存的起始地址時(shí),將該P(yáng)SN數(shù)據(jù)包寫入對(duì)應(yīng)的寫入地址中,替換該地址中的數(shù)據(jù),并當(dāng)確定該P(yáng)SN數(shù)據(jù)包的寫入地址為緩存的起始地址時(shí),檢測(cè)PSN數(shù)據(jù)包的包頭是否正確,并在確定所述PSN數(shù)據(jù)包的包頭正確時(shí),寫入所述PSN數(shù)據(jù)包的數(shù)據(jù),否則以復(fù)幀或者以PSN數(shù)據(jù)包為單位丟棄PSN數(shù)據(jù)包。在步驟S510中,還可以在確定該P(yáng)SN數(shù)據(jù)包的寫入地址不是緩存的起始地址時(shí), 直接將該P(yáng)SN數(shù)據(jù)包寫入對(duì)應(yīng)的寫入地址中,替換該地址中的數(shù)據(jù),計(jì)時(shí)確定該P(yáng)SN數(shù)據(jù)包的寫入地址為緩存的起始地址,也不進(jìn)行PSN數(shù)據(jù)包包頭正確性的檢測(cè),從而提高寫入效率。相應(yīng)的,在讀取緩存中的數(shù)據(jù),并向TDM網(wǎng)絡(luò)中發(fā)送時(shí),如圖6所示,具體包括如下步驟步驟S601、確定有bundle通道需要讀取數(shù)據(jù),并且可以執(zhí)行讀取操作;步驟S602、提取 bundle 號(hào);步驟S603、判斷當(dāng)前時(shí)隙是否為該bundle的起始時(shí)隙,如果是,執(zhí)行步驟S604,否則執(zhí)行步驟S607 ;步驟S604、通過bundle號(hào)查找讀取地址表,查找數(shù)據(jù)起始地址;步驟S605、判斷是否可以讀取該起始地址中的數(shù)據(jù),如果是,執(zhí)行步驟S606,否則執(zhí)行步驟S608 ;步驟S606、從緩存中讀取數(shù)據(jù),更新該bundle的讀取地址以及緩存中未讀取的數(shù)據(jù)量;步驟S607、判斷該bundle的數(shù)據(jù)讀取狀態(tài)是否為填充狀態(tài),如果是,執(zhí)行步驟 S606,否則執(zhí)行步驟S608 ;步驟S608、向TDM網(wǎng)絡(luò)發(fā)送填充數(shù)據(jù)。在步驟S608中,填充狀態(tài)是指,在進(jìn)行數(shù)據(jù)寫入和讀取的初始化過程中,首先應(yīng)當(dāng)向緩存中寫入一定的數(shù)據(jù)量,才允許從緩存中讀取數(shù)據(jù),在初始化過程中,緩存中存儲(chǔ)的數(shù)據(jù)量可以保證后續(xù)讀取的連續(xù)性。在緩存中的數(shù)據(jù)量未達(dá)到可以開始進(jìn)行讀取的量時(shí), 則使得數(shù)據(jù)讀取狀態(tài)是否為填充狀態(tài),不允許從緩存中讀取數(shù)據(jù),此時(shí),可以向TDM網(wǎng)絡(luò)發(fā)送填充數(shù)據(jù),以保證向TDM網(wǎng)絡(luò)發(fā)送數(shù)據(jù)的連續(xù)性。本發(fā)明實(shí)施例還相應(yīng)提供一種PSN數(shù)據(jù)包處理裝置,該裝置可以具體為PWE3設(shè)備,如圖7所示,該裝置中包括確定單元701,用于接收到分組交換網(wǎng)絡(luò)PSN數(shù)據(jù)包后,確定PSN數(shù)據(jù)包的寫入地址;處理單元702,用于當(dāng)確定PSN數(shù)據(jù)包的寫入地址為緩存的起始地址時(shí),檢測(cè)PSN 數(shù)據(jù)包的包頭是否正確,并在確定PSN數(shù)據(jù)包的包頭正確時(shí),寫入PSN數(shù)據(jù)包的數(shù)據(jù),否則以復(fù)幀或者以PSN數(shù)據(jù)包為單位丟棄PSN數(shù)據(jù)包。其中,確定單元701具體用于接收到分組交換網(wǎng)絡(luò)PSN數(shù)據(jù)包后,根據(jù)PSN數(shù)據(jù)包的SN號(hào)、PSN數(shù)據(jù)包的大小以及所述緩存的起始地址存儲(chǔ)的數(shù)據(jù)包的SN號(hào),確定PSN數(shù)據(jù)包的寫入地址。處理單元702確定所述PSN數(shù)據(jù)包的包頭正確,具體包括若當(dāng)前傳輸?shù)臄?shù)據(jù)結(jié)構(gòu)為復(fù)幀結(jié)構(gòu),則當(dāng)PSN數(shù)據(jù)包的包頭中具有復(fù)幀頭且包頭及復(fù)幀頭均符合格式要求時(shí),確定PSN數(shù)據(jù)包的包頭正確;若當(dāng)前傳輸?shù)臄?shù)據(jù)結(jié)構(gòu)為單幀結(jié)構(gòu),則當(dāng)PSN數(shù)據(jù)包的包頭中具有單幀頭且包頭及單幀頭均符合格式要求時(shí),確定PSN數(shù)據(jù)包的包頭正確;若當(dāng)前傳輸?shù)臄?shù)據(jù)結(jié)構(gòu)為無幀結(jié)構(gòu),則當(dāng)PSN數(shù)據(jù)包的包頭符合格式要求時(shí),確定PSN數(shù)據(jù)包的包頭正確。處理單元702以復(fù)幀或者以數(shù)據(jù)包為單位丟棄PSN數(shù)據(jù)包,具體包括若當(dāng)前傳輸?shù)臄?shù)據(jù)結(jié)構(gòu)為復(fù)幀結(jié)構(gòu),則丟棄當(dāng)前PSN數(shù)據(jù)包以及當(dāng)前復(fù)幀中的其它PSN數(shù)據(jù)包,所述當(dāng)前復(fù)幀中的其它PSN數(shù)據(jù)包具體為SN號(hào)與當(dāng)前PSN數(shù)據(jù)包的SN號(hào)的差值小于一個(gè)復(fù)幀中包括的PSN數(shù)據(jù)包個(gè)數(shù)的PSN數(shù)據(jù)包;若當(dāng)前傳輸?shù)臄?shù)據(jù)結(jié)構(gòu)為單幀結(jié)構(gòu)或者無幀結(jié)構(gòu),則丟棄當(dāng)前PSN數(shù)據(jù)包。處理單元702還用于 在以復(fù)幀或者以PSN數(shù)據(jù)包為單位丟棄PSN數(shù)據(jù)包之后,將所丟棄的復(fù)幀或者PSN 數(shù)據(jù)包之后,且包頭正確的數(shù)據(jù)包寫入緩存的起始地址,并更新緩存的起始地址存儲(chǔ)的數(shù)據(jù)包的SN號(hào)。進(jìn)一步,為了防止在寫入數(shù)據(jù)量較大的情況下,寫入的數(shù)據(jù)覆蓋掉尚未被讀取的數(shù)據(jù),處理單元702還用于在寫入PSN數(shù)據(jù)包的數(shù)據(jù)之前,確定緩存中未被讀取的數(shù)據(jù)量小于預(yù)先設(shè)定的第
一閾值。
并且,處理單元702還用于當(dāng)確定緩存中未被讀取的數(shù)據(jù)量大于或等于預(yù)先設(shè)定的第一閾值時(shí),以復(fù)幀或者以PSN數(shù)據(jù)包為單位丟棄PSN數(shù)據(jù)包。處理單元702還用于讀取緩存中的數(shù)據(jù)并發(fā)送。為了防止由于緩存中的數(shù)據(jù)過少,導(dǎo)致讀取操作不能連續(xù)執(zhí)行,處理單元702還用于在讀取緩存中的數(shù)據(jù)并發(fā)送之前,確定緩存中未被讀取的數(shù)據(jù)量大于或等于預(yù)先設(shè)定的第二閾值。處理單元702還用于當(dāng)確定緩存中未被讀取的數(shù)據(jù)量小于預(yù)先設(shè)定的第二閾值時(shí),則在當(dāng)前傳輸幀為復(fù)幀時(shí),以復(fù)幀為單位發(fā)送填充數(shù)據(jù);在當(dāng)前傳輸幀為單幀時(shí),以4個(gè)單幀為單位發(fā)送填充數(shù)據(jù);在當(dāng)前傳輸數(shù)據(jù)為無結(jié)構(gòu)數(shù)據(jù)時(shí),以0. 5毫秒為單位發(fā)送填充數(shù)據(jù)。當(dāng)不能同時(shí)向緩存中寫入數(shù)據(jù)和從緩存中讀取數(shù)據(jù)時(shí),處理單元702還用于在為讀取操作分配的時(shí)隙中,讀取緩存中的數(shù)據(jù)并發(fā)送,在為寫入操作分配的時(shí)隙中,將PSN數(shù)據(jù)包中的數(shù)據(jù)寫入緩存;或者對(duì)于每個(gè)時(shí)隙,通過調(diào)度方式確定進(jìn)行讀取操作或者進(jìn)行寫入操作。當(dāng)對(duì)于每個(gè)時(shí)隙,通過調(diào)度方式確定進(jìn)行讀取操作或者進(jìn)行寫入操作時(shí),處理單元702還用于在同時(shí)接收到讀取請(qǐng)求和寫入請(qǐng)求時(shí),執(zhí)行寫入操作。本發(fā)明實(shí)施例提供一種PSN數(shù)據(jù)包處理方法及裝置,在接收到數(shù)據(jù)包后,確定該數(shù)據(jù)包的寫入地址,并當(dāng)確定所述PSN數(shù)據(jù)包的寫入地址為緩存的起始地址時(shí),檢測(cè)PSN數(shù)據(jù)包的包頭是否正確,并在正確時(shí),寫入PSN數(shù)據(jù)包的數(shù)據(jù),否則以復(fù)幀或者PSN數(shù)據(jù)包為單位丟棄PSN數(shù)據(jù)包。由于在包頭出現(xiàn)錯(cuò)誤時(shí),丟棄數(shù)據(jù)包,從而避免寫入錯(cuò)誤的數(shù)據(jù)對(duì)后續(xù)緩存中的數(shù)據(jù)包的影響,同時(shí)也便于下一幀數(shù)據(jù)能夠較好的寫入到緩存的起始位置中, 防止錯(cuò)誤延伸。顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
權(quán)利要求
1.一種PSN數(shù)據(jù)包處理方法,其特征在于,包括接收到分組交換網(wǎng)絡(luò)PSN數(shù)據(jù)包后,確定所述PSN數(shù)據(jù)包的寫入地址; 當(dāng)確定所述PSN數(shù)據(jù)包的寫入地址為緩存的起始地址時(shí),檢測(cè)PSN數(shù)據(jù)包的包頭是否正確,并在確定所述PSN數(shù)據(jù)包的包頭正確時(shí),寫入所述PSN數(shù)據(jù)包的數(shù)據(jù),否則以復(fù)幀或者以PSN數(shù)據(jù)包為單位丟棄所述PSN數(shù)據(jù)包。
2.如權(quán)利要求1所述的方法,其特征在于,所述確定所述PSN數(shù)據(jù)包的寫入地址,具體為根據(jù)所述PSN數(shù)據(jù)包的SN號(hào)、所述PSN數(shù)據(jù)包的大小以及所述緩存的起始地址存儲(chǔ)的數(shù)據(jù)包的SN號(hào),確定所述PSN數(shù)據(jù)包的寫入地址。
3.如權(quán)利要求1所述的方法,其特征在于,所述確定所述PSN數(shù)據(jù)包的包頭正確,具體包括若當(dāng)前傳輸?shù)臄?shù)據(jù)結(jié)構(gòu)為復(fù)幀結(jié)構(gòu),則當(dāng)所述PSN數(shù)據(jù)包的包頭中具有復(fù)幀頭且包頭及復(fù)幀頭均符合格式要求時(shí),確定所述PSN數(shù)據(jù)包的包頭正確;若當(dāng)前傳輸?shù)臄?shù)據(jù)結(jié)構(gòu)為單幀結(jié)構(gòu),則當(dāng)所述PSN數(shù)據(jù)包的包頭中具有單幀頭且包頭及單幀頭均符合格式要求時(shí),確定所述PSN數(shù)據(jù)包的包頭正確;若當(dāng)前傳輸?shù)臄?shù)據(jù)結(jié)構(gòu)為無幀結(jié)構(gòu),則當(dāng)所述PSN數(shù)據(jù)包的包頭符合格式要求時(shí),確定所述PSN數(shù)據(jù)包的包頭正確。
4.如權(quán)利要求1所述的方法,其特征在于,所述以復(fù)幀或者以數(shù)據(jù)包為單位丟棄所述 PSN數(shù)據(jù)包,具體包括若當(dāng)前傳輸?shù)臄?shù)據(jù)結(jié)構(gòu)為復(fù)幀結(jié)構(gòu),則丟棄當(dāng)前PSN數(shù)據(jù)包以及當(dāng)前復(fù)幀中的其它 PSN數(shù)據(jù)包,所述當(dāng)前復(fù)幀中的其它PSN數(shù)據(jù)包具體為SN號(hào)與當(dāng)前PSN數(shù)據(jù)包的SN號(hào)的差值小于一個(gè)復(fù)幀中包括的PSN數(shù)據(jù)包個(gè)數(shù)的PSN數(shù)據(jù)包;若當(dāng)前傳輸?shù)臄?shù)據(jù)結(jié)構(gòu)為單幀結(jié)構(gòu)或者無幀結(jié)構(gòu),則丟棄當(dāng)前PSN數(shù)據(jù)包。
5.如權(quán)利要求1所述的方法,其特征在于,在以復(fù)幀或者以PSN數(shù)據(jù)包為單位丟棄所述 PSN數(shù)據(jù)包之后,還包括將所丟棄的復(fù)幀或者PSN數(shù)據(jù)包之后,且包頭正確的數(shù)據(jù)包寫入所述緩存的起始地址,并更新所述緩存的起始地址存儲(chǔ)的數(shù)據(jù)包的SN號(hào)。
6.如權(quán)利要求1所述的方法,其特征在于,在寫入所述PSN數(shù)據(jù)包的數(shù)據(jù)之前,還包括確定所述緩存中未被讀取的數(shù)據(jù)量小于預(yù)先設(shè)定的第一閾值; 當(dāng)確定所述緩存中未被讀取的數(shù)據(jù)量大于或等于預(yù)先設(shè)定的第一閾值時(shí),以復(fù)幀或者以PSN數(shù)據(jù)包為單位丟棄所述PSN數(shù)據(jù)包。
7.如權(quán)利要求1所述的方法,其特征在于,還包括 讀取所述緩存中的數(shù)據(jù)并發(fā)送。
8.如權(quán)利要求7所述的方法,其特征在于,在讀取所述緩存中的數(shù)據(jù)并發(fā)送之前,還包括確定所述緩存中未被讀取的數(shù)據(jù)量大于或等于預(yù)先設(shè)定的第二閾值; 當(dāng)確定所述緩存中未被讀取的數(shù)據(jù)量小于預(yù)先設(shè)定的第二閾值時(shí),則在當(dāng)前傳輸幀為復(fù)幀時(shí),以復(fù)幀為單位發(fā)送用于代替從緩存中讀取的數(shù)據(jù)的填充數(shù)據(jù);在當(dāng)前傳輸幀為單幀時(shí),以4個(gè)單幀為單位發(fā)送用于代替從緩存中讀取的數(shù)據(jù)的填充數(shù)據(jù);在當(dāng)前傳輸數(shù)據(jù)為無結(jié)構(gòu)數(shù)據(jù)時(shí),以0. 5毫秒為單位發(fā)送用于代替從緩存中讀取的數(shù)據(jù)的填充數(shù)據(jù)。
9.如權(quán)利要求7所述的方法,其特征在于,還包括在為讀取操作分配的時(shí)隙中,讀取所述緩存中的數(shù)據(jù)并發(fā)送,在為寫入操作分配的時(shí)隙中,將PSN數(shù)據(jù)包中的數(shù)據(jù)寫入緩存;或者對(duì)于每個(gè)時(shí)隙,通過調(diào)度方式確定進(jìn)行讀取操作或者進(jìn)行寫入操作。
10.如權(quán)利要求9所述的方法,其特征在于,當(dāng)對(duì)于每個(gè)時(shí)隙,通過調(diào)度方式確定進(jìn)行讀取操作或者進(jìn)行寫入操作時(shí),還包括在同時(shí)接收到讀取請(qǐng)求和寫入請(qǐng)求時(shí),執(zhí)行寫入操作。
11.一種PSN數(shù)據(jù)包處理裝置,其特征在于,包括確定單元,用于接收到分組交換網(wǎng)絡(luò)PSN數(shù)據(jù)包后,確定所述PSN數(shù)據(jù)包的寫入地址;處理單元,用于當(dāng)確定所述PSN數(shù)據(jù)包的寫入地址為緩存的起始地址時(shí),檢測(cè)PSN數(shù)據(jù)包的包頭是否正確,并在確定所述PSN數(shù)據(jù)包的包頭正確時(shí),寫入所述PSN數(shù)據(jù)包的數(shù)據(jù), 否則以復(fù)幀或者以PSN數(shù)據(jù)包為單位丟棄所述PSN數(shù)據(jù)包。
12.如權(quán)利要求11所述的裝置,其特征在于,所述確定單元具體用于接收到分組交換網(wǎng)絡(luò)PSN數(shù)據(jù)包后,根據(jù)所述PSN數(shù)據(jù)包的SN號(hào)、所述PSN數(shù)據(jù)包的大小以及所述緩存的起始地址存儲(chǔ)的數(shù)據(jù)包的SN號(hào),確定所述PSN數(shù)據(jù)包的寫入地址。
13.如權(quán)利要求11所述的裝置,其特征在于,所述處理單元確定所述PSN數(shù)據(jù)包的包頭正確,具體包括若當(dāng)前傳輸?shù)臄?shù)據(jù)結(jié)構(gòu)為復(fù)幀結(jié)構(gòu),則當(dāng)所述PSN數(shù)據(jù)包的包頭中具有復(fù)幀頭且包頭及復(fù)幀頭均符合格式要求時(shí),確定所述PSN數(shù)據(jù)包的包頭正確;若當(dāng)前傳輸?shù)臄?shù)據(jù)結(jié)構(gòu)為單幀結(jié)構(gòu),則當(dāng)所述PSN數(shù)據(jù)包的包頭中具有單幀頭且包頭及單幀頭均符合格式要求時(shí),確定所述PSN數(shù)據(jù)包的包頭正確;若當(dāng)前傳輸?shù)臄?shù)據(jù)結(jié)構(gòu)為無幀結(jié)構(gòu),則當(dāng)所述PSN數(shù)據(jù)包的包頭符合格式要求時(shí),確定所述PSN數(shù)據(jù)包的包頭正確。
14.如權(quán)利要求11所述的裝置,其特征在于,所述處理單元以復(fù)幀或者以數(shù)據(jù)包為單位丟棄所述PSN數(shù)據(jù)包,具體包括若當(dāng)前傳輸?shù)臄?shù)據(jù)結(jié)構(gòu)為復(fù)幀結(jié)構(gòu),則丟棄當(dāng)前PSN數(shù)據(jù)包以及當(dāng)前復(fù)幀中的其它 PSN數(shù)據(jù)包,所述當(dāng)前復(fù)幀中的其它PSN數(shù)據(jù)包具體為SN號(hào)與當(dāng)前PSN數(shù)據(jù)包的SN號(hào)的差值小于一個(gè)復(fù)幀中包括的PSN數(shù)據(jù)包個(gè)數(shù)的PSN數(shù)據(jù)包;若當(dāng)前傳輸?shù)臄?shù)據(jù)結(jié)構(gòu)為單幀結(jié)構(gòu)或者無幀結(jié)構(gòu),則丟棄當(dāng)前PSN數(shù)據(jù)包。
15.如權(quán)利要求11所述的裝置,其特征在于,所述處理單元還用于在以復(fù)幀或者以PSN數(shù)據(jù)包為單位丟棄所述PSN數(shù)據(jù)包之后,將所丟棄的復(fù)幀或者PSN 數(shù)據(jù)包之后,且包頭正確的數(shù)據(jù)包寫入所述緩存的起始地址,并更新所述緩存的起始地址存儲(chǔ)的數(shù)據(jù)包的SN號(hào)。
16.如權(quán)利要求11所述的裝置,其特征在于,所述處理單元還用于在寫入所述PSN數(shù)據(jù)包的數(shù)據(jù)之前,確定所述緩存中未被讀取的數(shù)據(jù)量小于預(yù)先設(shè)定的第一閾值;當(dāng)確定所述緩存中未被讀取的數(shù)據(jù)量大于或等于預(yù)先設(shè)定的第一閾值時(shí),以復(fù)幀或者以PSN數(shù)據(jù)包為單位丟棄所述PSN數(shù)據(jù)包。
17.如權(quán)利要求11所述的裝置,其特征在于,所述處理單元還用于 讀取所述緩存中的數(shù)據(jù)并發(fā)送。
18.如權(quán)利要求17所述的裝置,其特征在于,所述處理單元還用于在讀取所述緩存中的數(shù)據(jù)并發(fā)送之前,確定所述緩存中未被讀取的數(shù)據(jù)量大于或等于預(yù)先設(shè)定的第二閾值;當(dāng)確定所述緩存中未被讀取的數(shù)據(jù)量小于預(yù)先設(shè)定的第二閾值時(shí),則在當(dāng)前傳輸幀為復(fù)幀時(shí),以復(fù)幀為單位發(fā)送用于代替從緩存中讀取的數(shù)據(jù)的填充數(shù)據(jù);在當(dāng)前傳輸幀為單幀時(shí),以4個(gè)單幀為單位發(fā)送用于代替從緩存中讀取的數(shù)據(jù)的填充數(shù)據(jù);在當(dāng)前傳輸數(shù)據(jù)為無結(jié)構(gòu)數(shù)據(jù)時(shí),以0. 5毫秒為單位發(fā)送用于代替從緩存中讀取的數(shù)據(jù)的填充數(shù)據(jù)。
19.如權(quán)利要求17所述的裝置,其特征在于,所述處理單元還用于在為讀取操作分配的時(shí)隙中,讀取所述緩存中的數(shù)據(jù)并發(fā)送,在為寫入操作分配的時(shí)隙中,將PSN數(shù)據(jù)包中的數(shù)據(jù)寫入緩存;或者對(duì)于每個(gè)時(shí)隙,通過調(diào)度方式確定進(jìn)行讀取操作或者進(jìn)行寫入操作。
20.如權(quán)利要求19所述的裝置,其特征在于,當(dāng)對(duì)于每個(gè)時(shí)隙,通過調(diào)度方式確定進(jìn)行讀取操作或者進(jìn)行寫入操作時(shí),所述處理單元還用于在同時(shí)接收到讀取請(qǐng)求和寫入請(qǐng)求時(shí),執(zhí)行寫入操作。
全文摘要
本發(fā)明公開了一種PSN數(shù)據(jù)包處理方法及裝置,涉及數(shù)據(jù)處理技術(shù),在接收到數(shù)據(jù)包后,確定該數(shù)據(jù)包的寫入地址,并當(dāng)確定所述PSN數(shù)據(jù)包的寫入地址為緩存的起始地址時(shí),檢測(cè)PSN數(shù)據(jù)包的包頭是否正確,并在正確時(shí),寫入PSN數(shù)據(jù)包的數(shù)據(jù),否則以復(fù)幀或者PSN數(shù)據(jù)包為單位丟棄PSN數(shù)據(jù)包。由于在包頭出現(xiàn)錯(cuò)誤時(shí),丟棄數(shù)據(jù)包,從而避免寫入錯(cuò)誤的數(shù)據(jù)對(duì)后續(xù)緩存中的數(shù)據(jù)包的影響,同時(shí)也便于下一幀數(shù)據(jù)能夠較好的寫入到緩存的起始位置中,防止錯(cuò)誤延伸。
文檔編號(hào)H04L1/00GK102457441SQ20121001320
公開日2012年5月16日 申請(qǐng)日期2012年1月16日 優(yōu)先權(quán)日2012年1月16日
發(fā)明者王德明, 郭志惠 申請(qǐng)人:瑞斯康達(dá)科技發(fā)展股份有限公司