專利名稱:話單數(shù)據(jù)的數(shù)據(jù)幀接收方法、裝置及計(jì)費(fèi)網(wǎng)關(guān)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及移動通信系統(tǒng)的計(jì)費(fèi)技術(shù),尤其涉及一種對話單數(shù)據(jù)的數(shù)據(jù)幀 處理技術(shù)。
背景技術(shù):
第三代移動通信標(biāo)準(zhǔn)化組織(3rd Generation Partnership Project, 3GPP )技 術(shù)規(guī)范制定了跨Gn和Gp接口的通用分組無線業(yè)務(wù)(General Packet Radio Service, GPRS)隧道協(xié)議(GPRS Tunnel Protocol, GTP)標(biāo)準(zhǔn)。GTP,協(xié)議是基 于GTP協(xié)議的計(jì)費(fèi)協(xié)議,在計(jì)費(fèi)網(wǎng)關(guān)(Charging Gateway, CG )和GPRS支持 節(jié)點(diǎn)(GPRS Support Node, GSN)節(jié)點(diǎn)之間的接口上定義。按照3GPP技術(shù)規(guī) 范,GTP,協(xié)i義可以基于傳輸控制協(xié)議(Transmission Control protocol, TCP)或 用戶數(shù)據(jù)報(bào)協(xié)議(User Datagram Protocol, UDP ),但通常情況下基于UDP協(xié) 議,數(shù)據(jù)的傳輸在基于UDP協(xié)議的情況下是不可靠的。按照GTP,協(xié)議的規(guī)定,GSN節(jié)點(diǎn)以GTP,協(xié)議數(shù)據(jù)幀方式向CG發(fā)送話單 數(shù)據(jù),以下筒稱"GTP,協(xié)議數(shù)據(jù)幀"為"數(shù)據(jù)幀",每個(gè)數(shù)據(jù)幀包括話單數(shù)據(jù) 和唯一的幀序列號,CG在接收并成功保存數(shù)據(jù)幀后向GSN節(jié)點(diǎn)發(fā)送已成功接 收該數(shù)據(jù)幀的響應(yīng)。如果GSN節(jié)點(diǎn)沒有接收到成功接收響應(yīng),將定時(shí)重發(fā)該 數(shù)據(jù)幀,并且重發(fā)時(shí)幀序列號和話單數(shù)據(jù)是不變的。如果CG已接收并成功保 存某個(gè)數(shù)據(jù)幀,但是沒有向GSN節(jié)點(diǎn)發(fā)送響應(yīng)或者發(fā)送成功接收響應(yīng)過晚或 者GSN節(jié)點(diǎn)沒有接收到成功接收響應(yīng),會導(dǎo)致CG接收到GSN節(jié)點(diǎn)重復(fù)發(fā)送 的該數(shù)據(jù)幀。CG保存的重復(fù)數(shù)據(jù)幀會浪費(fèi)存儲空間,應(yīng)該丟棄,丟棄重復(fù)數(shù) 據(jù)幀的過程稱為剔重。另外,CG存在網(wǎng)絡(luò)連接中斷、設(shè)備突發(fā)重啟、系統(tǒng)掉 電、軟件進(jìn)程異常退出等軟硬件故障,在CG發(fā)生故障時(shí),會丟失話單數(shù)據(jù)。
現(xiàn)有技術(shù)中提供了一種保存數(shù)據(jù)幀后剔重的方法,解決CG保存的重復(fù)數(shù) 據(jù)幀問題。處理流程為CG先接收并保存所有的數(shù)據(jù)幀到外部存儲單元,然后 對保存的重復(fù)數(shù)據(jù)幀進(jìn)行剔重操作?,F(xiàn)有技術(shù)提供的方法中接收過程和剔重過 程分離,剔重過程對外部存儲單元的IO訪問量較大,導(dǎo)致剔重速度緩慢,同時(shí)由于剔重時(shí)機(jī)滯后,4妄收到重復(fù)lt據(jù)幀后無法及時(shí)有效地響應(yīng)GSN端。 發(fā)明內(nèi)容本發(fā)明實(shí)施例提供了 一種話單數(shù)據(jù)的數(shù)據(jù)幀接收方法、裝置及計(jì)費(fèi)網(wǎng)關(guān), 在新接收到數(shù)據(jù)幀時(shí)能夠及時(shí)丟棄重復(fù)的數(shù)據(jù)幀,保證保存的話單數(shù)據(jù)不重 復(fù)。本發(fā)明實(shí)施例提供了 一種話單數(shù)據(jù)的數(shù)據(jù)幀接收方法,包括接收數(shù)據(jù)幀,所述數(shù)據(jù)幀包括話單數(shù)據(jù)和幀序列號;判斷是否已經(jīng)記錄了該到達(dá)的數(shù)據(jù)幀的幀序列號,如果是則丟棄該到達(dá)的數(shù)據(jù)幀,否則,接收該到達(dá)的數(shù)據(jù)幀,并記錄該到達(dá)的數(shù)據(jù)幀的幀序列號。 本發(fā)明實(shí)施例提供了 一種話單數(shù)據(jù)的數(shù)據(jù)幀接收裝置,包括 接收單元,用于接收數(shù)據(jù)幀,所述數(shù)據(jù)幀包括話單數(shù)據(jù)和幀序列號; 控制單元用于判斷是否已經(jīng)記錄了該到達(dá)的數(shù)據(jù)幀的幀序列號,如果是則丟棄該到達(dá)的數(shù)據(jù)幀,否則,接收該到達(dá)的數(shù)據(jù)幀,并記錄該到達(dá)的數(shù)據(jù)幀的幀序列號。本發(fā)明實(shí)施例還公開了一種計(jì)費(fèi)網(wǎng)關(guān),包括話單數(shù)據(jù)的數(shù)據(jù)幀接收裝置。 本發(fā)明實(shí)施例提供的話單數(shù)據(jù)的數(shù)據(jù)幀接收方法、裝置及計(jì)費(fèi)網(wǎng)關(guān),能夠在新接收到數(shù)據(jù)幀時(shí)及時(shí)丟棄重復(fù)數(shù)據(jù)幀,保證保存的話單數(shù)據(jù)不重復(fù),丟棄重復(fù)數(shù)據(jù)幀的時(shí)機(jī)合理,方法簡單高效。
圖1為本發(fā)明實(shí)施例中話單數(shù)據(jù)的數(shù)據(jù)幀接收裝置框圖2為本發(fā)明實(shí)施例中話單數(shù)據(jù)的數(shù)據(jù)幀接收方法流程圖; 圖3為本發(fā)明實(shí)施例中數(shù)據(jù)幀狀態(tài)遷移示意圖; 圖4為本發(fā)明實(shí)施例中數(shù)據(jù)幀剔重機(jī)制示意圖; 圖5為本發(fā)明實(shí)施例中話單數(shù)據(jù)存儲過程中的存儲保證方法流程圖; 圖6為本發(fā)明實(shí)施例中異常情況1和3下的數(shù)據(jù)包狀態(tài)持久化對象示意圖; 圖7、圖9和圖IO分別為本發(fā)明實(shí)施例中異常情況1、 2、 3發(fā)生前和數(shù)據(jù) 恢復(fù)后的已接收數(shù)據(jù)幀狀態(tài)隊(duì)列對比示意圖;圖8為本發(fā)明實(shí)施例中異常情況2下的數(shù)據(jù)包狀態(tài)持久化對象示意圖; 圖11為本發(fā)明實(shí)施例中已接收數(shù)據(jù)幀狀態(tài)隊(duì)列的長度控制方法示意圖; 圖12為本發(fā)明實(shí)施例中話單數(shù)據(jù)的數(shù)據(jù)幀接收裝置結(jié)構(gòu)示意圖。
具體實(shí)施方式
本發(fā)明實(shí)施例提供了一種話單數(shù)據(jù)的數(shù)據(jù)幀接收方法、裝置及計(jì)費(fèi)網(wǎng)關(guān), 在新接收到數(shù)據(jù)幀時(shí)進(jìn)行判斷,能夠及時(shí)丟棄重復(fù)數(shù)據(jù)幀,保證保存的話單數(shù) 據(jù)不重復(fù),進(jìn)一步在接收到的重復(fù)發(fā)送的數(shù)據(jù)幀時(shí)能及時(shí)向GSN返回響應(yīng), 更進(jìn)一步實(shí)現(xiàn)異常情況發(fā)生后的自動恢復(fù)。如圖l所示,本發(fā)明實(shí)施例首先提供了一種計(jì)費(fèi)網(wǎng)關(guān)100,包括數(shù)據(jù)幀接 收裝置101,數(shù)據(jù)幀接收裝置101可以實(shí)現(xiàn)在新接收到數(shù)據(jù)幀時(shí)進(jìn)行判斷并及 時(shí)丟棄重復(fù)數(shù)據(jù)幀,并進(jìn)一步在接收到的重復(fù)發(fā)送的數(shù)據(jù)幀能及時(shí)向GSN返 回已經(jīng)成功4妄收響應(yīng);計(jì)費(fèi)網(wǎng)關(guān)100還可以包括存儲保證裝置102和外部存儲裝置103,外部存 儲裝置103設(shè)置在計(jì)費(fèi)網(wǎng)關(guān)100外,外部存儲裝置103為硬盤、磁盤等永久性 存儲設(shè)備,存儲保證裝置102和外部存儲裝置103實(shí)現(xiàn)異常情況發(fā)生后的自動 恢復(fù)。其中數(shù)據(jù)幀接收裝置101:用于接收包括話單數(shù)據(jù)和幀序列號的數(shù)據(jù)幀,并判 斷是否已經(jīng)記錄了該到達(dá)的數(shù)據(jù)幀的幀序列號,如果是則丟棄該到達(dá)的數(shù)據(jù)幀,否則,接收該到達(dá)的數(shù)據(jù)幀,并記錄該到達(dá)的數(shù)據(jù)幀的幀序列號。采用數(shù)據(jù)幀接收裝置101已能夠?qū)崿F(xiàn)在新接收到數(shù)據(jù)幀時(shí)進(jìn)行判斷,及時(shí)丟棄重復(fù)數(shù)據(jù)幀,能夠保證保存的話單數(shù)據(jù)不重復(fù),增加存儲保證裝置102和 外部存儲裝置103為了實(shí)現(xiàn)話單數(shù)據(jù)的可靠、高效存儲,其中數(shù)據(jù)幀接收裝置101:還用于保存已接收的數(shù)據(jù)幀的幀序列號,提取至少 一個(gè)已接收的數(shù)據(jù)幀組成數(shù)據(jù)包,并為數(shù)據(jù)包生成唯一的包序列號,提交保存 組成該數(shù)據(jù)包的各數(shù)據(jù)幀,記錄包序列號與各數(shù)據(jù)幀的幀序列號之間的對應(yīng)關(guān) 系,并在得知該數(shù)據(jù)包中各數(shù)據(jù)幀的話單數(shù)據(jù)成功保存后,向GSN節(jié)點(diǎn)返回 已成功接收各數(shù)據(jù)幀的響應(yīng);每一個(gè)數(shù)據(jù)包中包括設(shè)定數(shù)據(jù)的數(shù)據(jù)幀,設(shè)定數(shù) 目例如一個(gè)或多個(gè);存儲保證裝置102:用于接收數(shù)據(jù)幀接收裝置101提交的數(shù)據(jù)包,將數(shù)據(jù) 包中各數(shù)據(jù)幀的話單數(shù)據(jù)保存到外部存儲裝置103,并在各數(shù)據(jù)幀的話單數(shù)據(jù) 成功保存后向數(shù)據(jù)幀接收裝置101返回已成功保存各數(shù)據(jù)幀的話單數(shù)據(jù)的響 應(yīng);外部存儲裝置103:用于保存存儲保證裝置102發(fā)送的話單凄史據(jù)。 本發(fā)明實(shí)施例提供了一種話單數(shù)據(jù)的數(shù)據(jù)幀接收方法,數(shù)據(jù)幀接收裝置記 錄有已接收的數(shù)據(jù)幀的幀序列號,如圖2所示,包括步驟5201、 GSN節(jié)點(diǎn)以數(shù)據(jù)幀方式向CG發(fā)送話單數(shù)據(jù),數(shù)據(jù)幀包括話單數(shù)據(jù) 和唯一的幀序列號;5202、 在數(shù)據(jù)幀到達(dá)時(shí),數(shù)據(jù)幀接收裝置根據(jù)到達(dá)的數(shù)據(jù)幀的幀序列號和 記錄的已接收的數(shù)據(jù)幀的幀序列號,判斷是否已經(jīng)記錄了該到達(dá)的數(shù)據(jù)幀的幀 序列號,如果是則丟棄該到達(dá)的數(shù)據(jù)幀;否則,接收該到達(dá)的數(shù)據(jù)幀,并記錄 其幀序列號。根據(jù)S201和S202能夠?qū)崿F(xiàn)在新接收數(shù)據(jù)幀時(shí)及時(shí)丟棄重復(fù)數(shù)據(jù)幀,保證 保存的話單數(shù)據(jù)不重復(fù),為了保證話單數(shù)據(jù)的可靠、高效存儲,還包括以下步 驟5203、 數(shù)據(jù)幀接收裝置提取至少一個(gè)已接收的數(shù)據(jù)幀組成數(shù)據(jù)包,并為所述數(shù)據(jù)包生成唯一的包序列號;應(yīng)當(dāng)理解,也可以是以數(shù)據(jù)幀為單位提交保存;5204、 數(shù)據(jù)幀接收裝置向存儲保證裝置提交保存該數(shù)據(jù)包,記錄該數(shù)據(jù)包的包序列號與各數(shù)據(jù)幀的幀序列號之間的對應(yīng)關(guān)系;5205、 存儲保證裝置將數(shù)據(jù)幀接收裝置提交保存的數(shù)據(jù)包中各數(shù)據(jù)幀的話 單數(shù)據(jù)保存到外部存儲裝置;5206、 存儲保證裝置在成功保存話單數(shù)據(jù)后向數(shù)據(jù)幀接收裝置返回已成功 保存各數(shù)據(jù)幀的話單數(shù)據(jù)的響應(yīng),通知數(shù)據(jù)幀接收裝置其提交保存的數(shù)據(jù)包中 各數(shù)據(jù)幀的話單數(shù)據(jù)已成功保存到外部存儲裝置;5207、 數(shù)據(jù)幀接收裝置得知其提交保存的數(shù)據(jù)包中各數(shù)據(jù)幀的話單數(shù)據(jù)保 存成功后向GSN節(jié)點(diǎn)發(fā)送各數(shù)據(jù)幀已成功接收的響應(yīng)。為了保證話單數(shù)據(jù)的數(shù)據(jù)幀能夠在接收時(shí)快速高效丟棄重復(fù)數(shù)據(jù)幀,并且 能夠可靠存儲已接收的數(shù)據(jù)幀的話單數(shù)據(jù),本發(fā)明實(shí)施例進(jìn)一步提供了以下解 決方法,下面將進(jìn)行詳細(xì)介紹。本發(fā)明實(shí)施例中將數(shù)據(jù)幀接收裝置接收的數(shù)據(jù)幀區(qū)分為以下四種數(shù)據(jù)幀 狀態(tài),包括未接收狀態(tài)、已接收但未提交保存狀態(tài)、已接收并已提交保存狀態(tài) 和已接收并已保存成功狀態(tài)。如圖3所示,提供了數(shù)據(jù)幀狀態(tài)遷移示意圖,對 于一個(gè)GSN節(jié)點(diǎn)新發(fā)送的數(shù)據(jù)幀來說,如果數(shù)據(jù)幀接收裝置從未接收過該數(shù) 據(jù)幀,則該數(shù)據(jù)幀為"未接收"狀態(tài);該數(shù)據(jù)幀被數(shù)據(jù)幀接收裝置接收后狀態(tài) 改變?yōu)?已接收但未提交保存"狀態(tài);數(shù)據(jù)幀接收裝置會定時(shí)將一定數(shù)量"已 接收但未提交保存,,狀態(tài)的數(shù)據(jù)幀組成數(shù)據(jù)包并提交到存儲保證裝置,當(dāng)數(shù)據(jù) 幀被提交后狀態(tài)改變?yōu)?已接收并已提交保存狀態(tài)"狀態(tài);當(dāng)存儲保證裝置成 功保存該數(shù)據(jù)幀的話單數(shù)據(jù)并通知數(shù)據(jù)幀接收裝置后,該數(shù)據(jù)幀的狀態(tài)改變?yōu)?"已接收并已保存成功"狀態(tài)。數(shù)據(jù)幀接收裝置中存在一個(gè)已接收數(shù)據(jù)幀狀態(tài)隊(duì)列,已接收數(shù)據(jù)幀狀態(tài)隊(duì) 列保存在CG的內(nèi)存空間,記錄所有已接收的數(shù)據(jù)幀的幀序列號和對應(yīng)該幀序
列號的數(shù)據(jù)幀狀態(tài)。已接收數(shù)據(jù)幀狀態(tài)隊(duì)列可以有多種實(shí)現(xiàn)方法, 一種較優(yōu)方 法是根據(jù)已接收的數(shù)據(jù)幀的狀態(tài),對應(yīng)幀序列號記錄已接收的數(shù)據(jù)幀的狀態(tài)信 息,狀態(tài)信息包括第一狀態(tài)信息,表示對應(yīng)數(shù)據(jù)幀的數(shù)據(jù)幀狀態(tài)為已接收但未提交保存狀態(tài);第二狀態(tài)信息,表示對應(yīng)凄t據(jù)幀的數(shù)據(jù)幀狀態(tài)為已接收且已 提交保存狀態(tài);第三狀態(tài)信息表示對應(yīng)數(shù)據(jù)幀的數(shù)據(jù)幀狀態(tài)為已接收且已保存 成功狀態(tài)。另一種較優(yōu)方法是根據(jù)已接收的數(shù)據(jù)幀的狀態(tài),將幀序列號分別記錄到三 個(gè)幀序列號隊(duì)列,第一幀序列號隊(duì)列,記錄已接收但未提交保存的數(shù)據(jù)幀的幀序列號;第二幀序列號隊(duì)列,記錄已接收并已提交保存的數(shù)據(jù)幀的幀序列號;第三幀序列號隊(duì)列,記錄已接收并已保存成功的數(shù)據(jù)幀的幀序列號。當(dāng)已接收的數(shù)據(jù)幀未提交保存時(shí),將該數(shù)據(jù)幀的幀序列號保存在第一幀序列號隊(duì)列;當(dāng) 已接收的數(shù)據(jù)幀被提交保存后,將該數(shù)據(jù)幀的幀序列號保存在第二幀序列號隊(duì) 列中,并在第一幀序列號隊(duì)列中刪除該數(shù)據(jù)幀的幀序列號;當(dāng)已接收的數(shù)據(jù)幀 的話單數(shù)據(jù)被成功保存后,將該數(shù)據(jù)幀的幀序列號保存在第三幀序列號隊(duì)列 中,并在第二幀序列號隊(duì)列中刪除該數(shù)據(jù)幀的幀序列號。基于已接收數(shù)據(jù)幀狀態(tài)隊(duì)列,本發(fā)明實(shí)施例提供了 一種話單數(shù)據(jù)的數(shù)據(jù)幀 接收方法,CG保存一定時(shí)間范圍或一定幀序列號范圍內(nèi)的已接收的數(shù)據(jù)幀的 幀序列號和對應(yīng)數(shù)據(jù)幀的數(shù)據(jù)幀狀態(tài),當(dāng)CG新接收到數(shù)據(jù)幀時(shí),根據(jù)該數(shù)據(jù) 幀的幀序列號判斷是否已經(jīng)記錄,如果是,則認(rèn)為該數(shù)據(jù)幀重復(fù),丟棄該數(shù)據(jù) 幀,并根據(jù)數(shù)據(jù)幀狀態(tài)采取相應(yīng)操作,否則接收該數(shù)據(jù)幀,如圖4所示,包括S401、當(dāng)接收到GSN節(jié)點(diǎn)發(fā)送的數(shù)據(jù)幀時(shí),根據(jù)幀序列號在巳接收數(shù)據(jù) 幀狀態(tài)隊(duì)列中查找該數(shù)據(jù)幀是否已經(jīng)記錄于該隊(duì)列中,并根據(jù)數(shù)據(jù)幀狀態(tài)采取 相應(yīng)處理,其中分為以下四種情況S402a、如果發(fā)現(xiàn)該數(shù)據(jù)幀的幀序列號沒有記錄于該隊(duì)列中,即該數(shù)據(jù)幀 為未接收狀態(tài),則接收并緩存該數(shù)據(jù)幀;S402b、如果發(fā)現(xiàn)該數(shù)據(jù)幀的幀序列號記錄于該隊(duì)列中且數(shù)據(jù)幀狀態(tài)為已
接收但未提交保存狀態(tài),則丟棄該數(shù)據(jù)幀;S402c、如果發(fā)現(xiàn)該數(shù)據(jù)幀的幀序列號記錄于該隊(duì)列中且數(shù)據(jù)幀狀態(tài)為已 接收且已提交保存狀態(tài),則丟棄該數(shù)據(jù)幀;S402d、如果發(fā)現(xiàn)該數(shù)據(jù)幀的幀序列號記錄于該隊(duì)列中且數(shù)據(jù)幀狀態(tài)為已 接收且已保存成功狀態(tài),則丟棄該數(shù)據(jù)幀,并向GSN節(jié)點(diǎn)返回已成功接收該 凄史據(jù)幀的響應(yīng)。根據(jù)已接收數(shù)據(jù)幀狀態(tài)隊(duì)列丟棄到達(dá)的重復(fù)數(shù)據(jù)幀的數(shù)據(jù)幀接收方法,在 新接收到數(shù)據(jù)幀時(shí)進(jìn)行判斷,能夠及時(shí)丟棄重復(fù)數(shù)據(jù)幀,保證保存的話單數(shù)據(jù) 不重復(fù),方法簡單高效;丟棄重復(fù)數(shù)據(jù)幀的時(shí)機(jī)合理,并且對接收到的重復(fù)數(shù) 據(jù)幀能及時(shí)有效地響應(yīng)GSN端。數(shù)據(jù)幀接收并緩存后,數(shù)據(jù)幀接收裝置定時(shí)將一定數(shù)量緩存的數(shù)據(jù)幀取 出,組合成一個(gè)包括至少一個(gè)數(shù)據(jù)幀的數(shù)據(jù)包,為每個(gè)數(shù)據(jù)包生成唯一的包序 列號。數(shù)據(jù)幀接收裝置以數(shù)據(jù)包形式向存儲保證裝置提交數(shù)據(jù)幀,數(shù)據(jù)包中各 數(shù)據(jù)幀的話單數(shù)據(jù)被存儲保證裝置順序地保存到外部存儲裝置,采用了兩種狀 態(tài)持久化對象,確保話單數(shù)據(jù)存儲的可靠性,狀態(tài)持久化對象保存在硬盤等永 久性存儲設(shè)備中,可以采用文件或數(shù)據(jù)庫的形式保存,兩種狀態(tài)持久化對象包 括數(shù)據(jù)包狀態(tài)持久化對象和數(shù)據(jù)包保存位置狀態(tài)持久化對象,其中數(shù)據(jù)包狀態(tài)持久化對象包含提交的數(shù)據(jù)包中各數(shù)據(jù)幀的幀序列號,每提交 一個(gè)數(shù)據(jù)包會生成一個(gè)數(shù)據(jù)包狀態(tài)持久化對象,且數(shù)據(jù)包狀態(tài)持久化對象的名 稱中包括包序列號;數(shù)據(jù)包保存位置狀態(tài)持久化對象包含已經(jīng)被存儲保證裝置成功保存的最 后一個(gè)凄t據(jù)包的包序列號?;谝呀邮諗?shù)據(jù)幀狀態(tài)隊(duì)列和兩種狀態(tài)持久化對象,本發(fā)明實(shí)施例提供了 一種話單數(shù)據(jù)的數(shù)據(jù)幀接收保存方法,如圖5所示,包括步驟
S501 、數(shù)據(jù)幀接收裝置從緩存的數(shù)據(jù)幀中提取至少 一個(gè)數(shù)據(jù)幀組成數(shù)據(jù) 包,可以采用定時(shí)揭j又的方式,并為數(shù)據(jù)包生成唯一的包序列號;S502、數(shù)據(jù)幀接收裝置將組成數(shù)據(jù)包的各數(shù)據(jù)幀的幀序列號記錄于一個(gè)數(shù) 據(jù)包狀態(tài)持久化對象,并將包序列號寫入該數(shù)據(jù)包狀態(tài)持久化對象的名稱中; S5(B、數(shù)據(jù)幀接收裝置將該數(shù)據(jù)包發(fā)送給存儲保證裝置;5504、 存儲保證裝置將數(shù)據(jù)包中各數(shù)據(jù)幀的話單數(shù)據(jù)保存到外部存儲裝 置,保存成功后將包序列號記錄于數(shù)據(jù)包保存位置狀態(tài)持久化對象,并向數(shù)據(jù) 幀接收裝置返回已成功保存各數(shù)據(jù)幀的話單數(shù)據(jù)的應(yīng)答響應(yīng);5505、 當(dāng)數(shù)據(jù)幀接收裝置接收到存儲保證裝置的應(yīng)答響應(yīng)后,可以依照應(yīng) 答響應(yīng)中的包序列號在對應(yīng)的數(shù)據(jù)包狀態(tài)持久化對象中查找已經(jīng)成功保存的 數(shù)據(jù)幀的幀序列號,并在已接收數(shù)據(jù)幀狀態(tài)隊(duì)列中將這些數(shù)據(jù)幀對應(yīng)數(shù)據(jù)幀狀 態(tài)刷新為已接收并已保存成功狀態(tài),并向GSN主機(jī)節(jié)點(diǎn)回復(fù)已成功接收該數(shù) 據(jù)幀的響應(yīng)。本發(fā)明實(shí)施例提供的話單數(shù)據(jù)的數(shù)據(jù)幀保存方法,保證了數(shù)據(jù)幀可靠地保 存到外部存儲裝置,無需進(jìn)行剔重,以及避免將重復(fù)數(shù)據(jù)存儲到外部存儲裝置 中,使得對外部存儲裝置的訪問量大大降低。本發(fā)明實(shí)施例同時(shí)提供了異常情況發(fā)生后的自動恢復(fù)方法。異常情況指一 些預(yù)期外的突發(fā)情況,例如網(wǎng)絡(luò)連接中斷、設(shè)備突發(fā)重啟、系統(tǒng)掉電、軟件進(jìn) 程異常退出等軟硬件故障。在異常情況發(fā)生后,由于已接收數(shù)據(jù)幀狀態(tài)隊(duì)列記 錄在CG的內(nèi)存空間,所以會丟失,CG需要在已接收數(shù)據(jù)幀狀態(tài)隊(duì)列中恢復(fù) 已接收并已成功保存狀態(tài)的數(shù)據(jù)幀對應(yīng)的幀序列號,避免GSN節(jié)點(diǎn)發(fā)送的重 復(fù)數(shù)據(jù)幀因?yàn)槿鄙俦容^信息而被重復(fù)接收。由于數(shù)據(jù)包狀態(tài)持久化對象和數(shù)據(jù) 包保存位置狀態(tài)持久化對象永久保存,所以可以根據(jù)數(shù)據(jù)包狀態(tài)持久化對象恢 復(fù)異常情況發(fā)生前的所有已接收并已成功保存的數(shù)據(jù)幀的幀序列號,將其加入 已接收數(shù)據(jù)幀狀態(tài)隊(duì)列,并將對應(yīng)數(shù)據(jù)幀的數(shù)據(jù)幀狀態(tài)設(shè)置為已接收且已保存 成功狀態(tài),方法包括 異常情況發(fā)生后,判斷數(shù)據(jù)包狀態(tài)持久化對象中包序列號的最大值與數(shù)據(jù) 包保存位置狀態(tài)持久化對象的包序列號是否相等,如果是,則將各數(shù)據(jù)包狀態(tài) 持久化對象中記錄的幀序列號重新加入已接收lt據(jù)幀狀態(tài)隊(duì)列,并將對應(yīng)凄t據(jù) 幀的數(shù)據(jù)幀狀態(tài)設(shè)置為已接收且已保存成功狀態(tài);如果否,則刪除包序列號的最大值對應(yīng)的數(shù)據(jù)包狀態(tài)持久化對象,并將其 余數(shù)據(jù)包狀態(tài)持久化對象中記錄的幀序列號重新加入已接收數(shù)據(jù)幀狀態(tài)隊(duì)列, 并將對應(yīng)數(shù)據(jù)幀的數(shù)據(jù)幀狀態(tài)設(shè)置為已接收且已保存成功狀態(tài)。針對異常情況發(fā)生的不同時(shí)機(jī),對本發(fā)明實(shí)施例提供的異常情況發(fā)生后的自動恢復(fù)方法加以描述異常情況1,當(dāng)提交數(shù)據(jù)包但未完成數(shù)據(jù)包持久化對象的記錄時(shí)發(fā)生異常 情況,如圖6所示,假設(shè)當(dāng)前系統(tǒng)中保存的數(shù)據(jù)包狀態(tài)持久化對象的最小的包 序列號為K,最大的包序列號為K+N,因?yàn)閿?shù)據(jù)包持久化對象的記錄沒有完成, 數(shù)據(jù)包保存位置持久化對象的記錄和最大的包序列號一致,即數(shù)據(jù)包保存位置 狀態(tài)持久化對象中記錄的包序列號也為K+N。可知,包序列號為K到K+N的 數(shù)據(jù)包均是已經(jīng)成功保存的數(shù)據(jù)包。這種情況下,話單數(shù)據(jù)恢復(fù)后的已接收數(shù) 據(jù)幀狀態(tài)隊(duì)列中相對于異常情況發(fā)生前,缺少了已接收但未提交保存狀態(tài)的數(shù) 據(jù)幀幀序列號,如圖7所示。異常情況2,當(dāng)已提交數(shù)據(jù)包但未完成數(shù)據(jù)包保存位置持久化對象的記錄 時(shí)發(fā)生異常情況,如圖8所示,假設(shè)當(dāng)前裝置中保存的數(shù)據(jù)包狀態(tài)持久化對象 的最小的包序列號為K,最大的包序列號為K+N,因?yàn)槟?據(jù)包保存位置持久化 對象的記錄沒有完成,數(shù)據(jù)包保存位置持久化對象的記錄和最大包序列號的前 一個(gè)序列號 一致,數(shù)據(jù)包保存位置狀態(tài)持久化對象中記錄的包序列號為 K+N-l??芍?,包序列號為K到K+N-l的數(shù)據(jù)包均是已經(jīng)成功保存的數(shù)據(jù)包, 話單數(shù)據(jù)恢復(fù)時(shí)需要先刪除數(shù)據(jù)包持久化對象K+N。這種情況下,話單數(shù)據(jù)恢 復(fù)后的數(shù)據(jù)幀狀態(tài)隊(duì)列中相對于異常情況發(fā)生前,缺少了已接收但未提交保存
異常情況3,當(dāng)已完成數(shù)據(jù)包保存位置持久化對象記錄但未刷新數(shù)據(jù)幀的 狀態(tài)時(shí)發(fā)生異常情況,如圖6所示,當(dāng)前裝置中保存的數(shù)據(jù)包狀態(tài)持久化對象的最小的包序列號為K,最大的包序列號為K+N,同時(shí),數(shù)據(jù)包保存位置狀態(tài) 持久化對象中記錄的包序列號為K+N。雖然已接收且已提交保存狀態(tài)的數(shù)據(jù)幀 的狀態(tài)沒有刷新為已接收且已保存成功狀態(tài),但此部分?jǐn)?shù)據(jù)幀已經(jīng)成功保存, 所以話單數(shù)據(jù)恢復(fù)后應(yīng)將其狀態(tài)刷新為已接收且已保存成功狀態(tài)??芍?,序列 號為K到K+N的數(shù)據(jù)包均是已經(jīng)成功保存的數(shù)據(jù)包。這種情況下,話單數(shù)據(jù) 恢復(fù)后的數(shù)據(jù)幀狀態(tài)隊(duì)列中相對于異常情況發(fā)生前,缺少了已接收但未提交保 存狀態(tài)的教:據(jù)幀的幀序列號信息,如圖IO所示。應(yīng)當(dāng)理解,幀序列號和包序 列號可采用遞增或遞減的方式表示,以增量為l為例子可實(shí)現(xiàn),其他情況也同 樣適用?;谝陨厦枋?,自動恢復(fù)后的數(shù)據(jù)幀狀態(tài)隊(duì)列中相對于異常情況發(fā)生前, 缺少了已接收但未提交保存狀態(tài)的數(shù)據(jù)幀的幀序列號信息和/或缺少了已接收 并已提交保存狀態(tài)的數(shù)據(jù)幀的幀序列號信息,但由于這部分?jǐn)?shù)據(jù)幀未回復(fù)響應(yīng) 幀,GSN節(jié)點(diǎn)會在一定時(shí)間后重發(fā)這部分?jǐn)?shù)據(jù)幀,避免了數(shù)據(jù)幀的丟失。同時(shí), 由于已接收并已保存成功狀態(tài)的幀序列號得到恢復(fù),避免了數(shù)據(jù)接收時(shí)重復(fù)接 收已經(jīng)保存成功的數(shù)據(jù)幀。本發(fā)明實(shí)施例提供的異常情況發(fā)生后的自動恢復(fù)方法極大地提高了數(shù)據(jù) 幀接收的正確性和可靠性。本發(fā)明實(shí)施例提供了 一種已接收數(shù)據(jù)幀狀態(tài)隊(duì)列的長度控制方法。已接收 數(shù)據(jù)幀狀態(tài)隊(duì)列的長度會影響查找?guī)蛄刑柡蛿?shù)據(jù)幀狀態(tài)的速度,隊(duì)列長度過 長,會使查找速度變慢,從而導(dǎo)致接收過程中丟棄重復(fù)數(shù)據(jù)幀的速度下降。另 一方面,保存大量的已成功保存的數(shù)據(jù)幀的序列號和數(shù)據(jù)幀狀態(tài)也會占用大量 的內(nèi)存空間和外存空間,已接收數(shù)據(jù)幀狀態(tài)隊(duì)列保存在內(nèi)存空間,數(shù)據(jù)包狀態(tài) 持久化對象保存在外存空間。因此,控制已接收數(shù)據(jù)幀狀態(tài)隊(duì)列的長度,及時(shí) 地清理掉過期的已接收且已保存成功狀態(tài)的數(shù)據(jù)幀的信息非常重要。
本發(fā)明實(shí)施例提供了一種已接收數(shù)據(jù)幀狀態(tài)隊(duì)列長度控制方法,如圖11 所示,假設(shè)當(dāng)前系統(tǒng)中,保存的數(shù)據(jù)包狀態(tài)持久化對象中最小的包序列號為K,數(shù)據(jù)包保存位置狀態(tài)持久化對象記錄的包序列號為K+N,該方法包括當(dāng)包序列號為K+N的數(shù)據(jù)包保存成功時(shí),計(jì)算數(shù)據(jù)包狀態(tài)持久化對象K+1 至K+N中包含的數(shù)據(jù)幀總數(shù);當(dāng)該數(shù)據(jù)幀總數(shù)超過設(shè)置的長度閾值L時(shí),L設(shè)置為大于GSN節(jié)點(diǎn)發(fā)送 窗口的長度,例如L為1500,則在已接收數(shù)據(jù)幀狀態(tài)隊(duì)列中刪除數(shù)據(jù)包狀態(tài) 持久化對象K中包括的幀序列號,即清理占用的內(nèi)存空間,并刪除數(shù)據(jù)包狀態(tài) 持久化對象K,即清理占用的外存空間。本發(fā)明實(shí)施例提供的已接收數(shù)據(jù)幀狀態(tài)隊(duì)列長度控制方法,可以有效控制 已接收數(shù)據(jù)幀狀態(tài)隊(duì)列的長度,保證了接收過程中的丟棄重復(fù)數(shù)據(jù)幀的速度, 并自動清理了過期的已接收且已保存成功狀態(tài)的數(shù)據(jù)幀占用的內(nèi)外存空間。如圖12所示,本發(fā)明實(shí)施例提供了話單數(shù)據(jù)的凄t據(jù)幀接收裝置的一種實(shí) 現(xiàn)結(jié)構(gòu),設(shè)置在計(jì)費(fèi)網(wǎng)關(guān)中,包括接收單元1200:用于接收數(shù)據(jù)幀,所述數(shù)據(jù)幀包括話單數(shù)據(jù)和幀序列號;控制單元1201:用于判斷是否已經(jīng)記錄了該到達(dá)的數(shù)據(jù)幀的幀序列號,如 果是則丟棄該到達(dá)的數(shù)據(jù)幀,否則,接收并緩存該到達(dá)的數(shù)據(jù)幀,并記錄該到 達(dá)的數(shù)據(jù)幀的幀序列號。上述兩個(gè)單元實(shí)現(xiàn)了接收并在接收過程中丟棄重復(fù)凄y居幀的功能,均設(shè)置 在數(shù)據(jù)幀接收裝置101中,后續(xù)提交保存數(shù)據(jù)幀的話單數(shù)據(jù)時(shí),數(shù)據(jù)幀接收裝 置101還包括幀序列號存儲單元1202,數(shù)據(jù)幀緩存單元1203,數(shù)據(jù)包提交單 元1204,數(shù)據(jù)包提交單元1204外接一個(gè)硬盤、磁盤等具有永久性存儲功能的 第一持久化存儲單元1205,存儲保證裝置102包括存儲保證單元1206,存儲 保證單元1206與話單數(shù)據(jù)存儲單元1207連接,第一持久化存儲單元1205和 話單數(shù)據(jù)存儲單元1207均位于外部存儲裝置103中,其中幀序列號存儲單元1202:用于保存該到達(dá)的數(shù)據(jù)幀的幀序列號; 數(shù)據(jù)幀緩存單元1203:用于緩存控制單元1201已接收的數(shù)據(jù)幀; 數(shù)據(jù)包提交單元1204:用于從數(shù)據(jù)幀緩存單元1203中提取至少一個(gè)數(shù)據(jù) 幀組成數(shù)據(jù)包,并為數(shù)據(jù)包生成唯一的包序列號,提交保存組成該數(shù)據(jù)包的各 數(shù)據(jù)幀,將包序列號與各數(shù)據(jù)幀的幀序列號之間的對應(yīng)關(guān)系記錄到第 一持久化 存儲單元1205;第一持久化存儲單元1205:用于保存已提交保存的數(shù)據(jù)包的包序列號與各 數(shù)據(jù)幀的幀序列號之間的對應(yīng)關(guān)系;存儲保證單元1206:用于接收數(shù)據(jù)包提交單元1204提交的數(shù)據(jù)包并將各 數(shù)據(jù)幀的話單數(shù)據(jù)保存到話單數(shù)據(jù)存儲單元1207,在各數(shù)據(jù)幀的話單數(shù)據(jù)成功 保存后,向控制單元1201返回已成功保存各數(shù)據(jù)幀的話單數(shù)據(jù)的響應(yīng);控制單元1201,還用于在接收到存儲保證單元1206返回的已成功保存各 數(shù)據(jù)幀的話單數(shù)據(jù)的響應(yīng)后,向GSN節(jié)點(diǎn)返回已成功接收各數(shù)據(jù)幀的響應(yīng);話單數(shù)據(jù)存儲單元1207:用于保存存儲保證單元1206發(fā)送的話單數(shù)據(jù)。為了在幀序列號存儲單元1202中進(jìn)一步保存幀序列號對應(yīng)數(shù)據(jù)幀的數(shù)據(jù) 幀狀態(tài),數(shù)據(jù)幀接收裝置101還包括第一管理指示單元1208,其中數(shù)據(jù)包提交單元1204:還用于在提交保存組成數(shù)據(jù)包的各數(shù)據(jù)幀時(shí)向第一 管理指示單元1208發(fā)送已接收并已提交保存的數(shù)據(jù)幀的幀序列號,在數(shù)據(jù)包 中的話單數(shù)據(jù)保存成功時(shí)向第一管理指示單元1208發(fā)送已接收并已保存成功 的數(shù)據(jù)幀的幀序列號;第一管理指示單元1208:所述控制單元1201將幀序列號輸出給第一管理 指示單元1208,第一管理指示單元1208將接收的幀序列號保存到幀序列號存 儲單元1202,并將對應(yīng)數(shù)據(jù)幀的狀態(tài)信息設(shè)置為第一狀態(tài)信息;將數(shù)據(jù)包提交 單元1204發(fā)送的已接收并已提交保存數(shù)據(jù)幀的幀序列號對應(yīng)數(shù)據(jù)幀的狀態(tài)信 息刷新為第二狀態(tài)信息;將數(shù)據(jù)包提交單元1204發(fā)送的已接收并已保存成功 的數(shù)據(jù)幀的幀序列號對應(yīng)數(shù)據(jù)幀的狀態(tài)信息刷新為第三狀態(tài)信息。第一管理指示單元1208實(shí)現(xiàn)以狀態(tài)信息的方式區(qū)分保存數(shù)據(jù)幀狀態(tài),如 101可以采用第二管理指示單元代替第一管理指示單元1208,圖12中是以第 一管理指示單元1208為例進(jìn)行說明的,其中第二管理指示單元所述控制單元1201將幀序列號輸出給第二管理指示 單元,第二管理指示單元將接收的所述幀序列號保存到幀序列號存儲單元1202 中的第 一幀序列號隊(duì)列;將數(shù)據(jù)包提交單元1204發(fā)送的已接收并已提交保存 數(shù)據(jù)幀的幀序列號在第 一幀序列號隊(duì)列中刪除并保存到幀序列號存儲單元 1202中的第二幀序列號隊(duì)列;將數(shù)據(jù)包提交單元發(fā)送的已接收并已保存成功數(shù) 據(jù)幀的幀序列號在第二幀序列號隊(duì)列中刪除并保存到幀序列號存儲單元1202 中的第三幀序列號隊(duì)列。當(dāng)控制單元1201判斷出到達(dá)的數(shù)據(jù)幀的狀態(tài)信息為第三狀態(tài)信息或者數(shù) 據(jù)幀的序列號保存在第三幀序列號隊(duì)列時(shí)時(shí),向GSN節(jié)點(diǎn)返回已成功接收該 數(shù)據(jù)幀的響應(yīng)。為了對已接收數(shù)據(jù)幀狀態(tài)隊(duì)列進(jìn)行長度控制,數(shù)據(jù)幀接收裝置101還包括 長度控制單元1209:用于根據(jù)第一持久化存儲單元1205保存的對應(yīng)關(guān)系 計(jì)算除包序列號的最小值之外其它包序列號對應(yīng)的數(shù)據(jù)幀總數(shù),并當(dāng)數(shù)據(jù)幀總 數(shù)超過設(shè)置的長度閾值時(shí),指示控制單元1201刪除幀序列號存儲單元1202中 保存的包序列號的最小值對應(yīng)的各幀序列號,并由數(shù)據(jù)包提交單元1204在第 一持久化存儲單元1205中刪除包序列號的最小值及其對應(yīng)的各數(shù)據(jù)幀的幀序 列號。更進(jìn)一步,為了應(yīng)對異常情況的發(fā)生,實(shí)現(xiàn)異常情況發(fā)生后幀序列號存儲 單元1202中恢復(fù)保存的幀序列號及數(shù)據(jù)幀狀態(tài),存儲保證單元1206外接一個(gè) 硬盤、磁盤等具有永久性存儲功能的第二持久化存儲單元1210,第二持久化存 儲單元1210也設(shè)置在外部存儲裝置103中,數(shù)據(jù)幀接收裝置101還包括第一 幀序列號恢復(fù)單元1211,其中存儲保證單元1206:還用于將已經(jīng)被成功保存話單數(shù)據(jù)的最后一個(gè)數(shù)據(jù)包
的包序列號記錄在第二持久化存儲單元1210;第二持久化存儲單元1210:用于保存已經(jīng)被成功保存話單數(shù)據(jù)的最后一個(gè) 數(shù)據(jù)包的包序列號;第一幀序列號恢復(fù)單元1211:用于在異常情況發(fā)生后,判斷第一持久化存 儲單元1205中保存的包序列號的最大值與所述第二持久化存儲單元1210中保 存的包序列號是否相等,如果是則將第一持久化存儲單元1205中保存的各幀 序列號重新保存到幀序列號存儲單元1202,并將各幀序列號對應(yīng)數(shù)據(jù)幀的狀態(tài) 信息設(shè)置為第三狀態(tài)信息,如果否則由數(shù)據(jù)包提交單元1204在第一持久化存 儲單元1205中刪除包序列號的最大值及其對應(yīng)的各it據(jù)幀的幀序列號,并將 第一持久化存儲單元1205中保存的其余各幀序列號重新保存到幀序列號存儲 單元1202,并將其余各幀序列號對應(yīng)數(shù)據(jù)幀的狀態(tài)信息設(shè)置為第三狀態(tài)信息。第一幀序列號恢復(fù)單元1211實(shí)現(xiàn)以狀態(tài)信息的方式恢復(fù)保存的數(shù)據(jù)幀狀 態(tài),如果采用不同的幀序列號的方式恢復(fù)保存的數(shù)據(jù)幀狀態(tài),則數(shù)據(jù)幀接收裝 置101可以采用第二幀序列號恢復(fù)單元代替第一幀序列號恢復(fù)單元1211,圖 12中是以第一幀序列號恢復(fù)單元1211為例進(jìn)行說明的,其中第二幀序列號恢復(fù)單元用于在異常情況發(fā)生后,判斷第一持久化存儲單 元1205中保存的包序列號的最大值與所述第二持久化存儲單元1210中保存的 包序列號是否相等,如果是則將第一持久化存儲單元1205中記錄的各幀序列 號重新保存到所述第三幀序列號隊(duì)列,如果否則指示數(shù)據(jù)包提交單元1204在 第一持久化存儲單元1205中刪除包序列號的最大值及其對應(yīng)的各數(shù)據(jù)幀的幀 序列號,并將第一持久化存儲單元1205中保存的其余各幀序列號重新保存到 所述第三幀序列號隊(duì)列。圖12所示的,第一持久化存儲單元1205、第二持久化存儲單元1210和話 單數(shù)據(jù)存儲單元1207可以位于一個(gè)外部存儲裝置中,也可以分別位于不同的 外部存儲裝置中,或者其中兩個(gè)位于一個(gè)外部存儲裝置中,另外一個(gè)位于其它 外部存儲裝置中。
本發(fā)明實(shí)施例提供的對話單數(shù)據(jù)的數(shù)據(jù)幀的各種處理方法、裝置及計(jì)費(fèi)網(wǎng) 關(guān),在新接收到數(shù)據(jù)幀時(shí)進(jìn)行判斷,能夠及時(shí)丟棄重復(fù)數(shù)據(jù)幀,保證保存的話單數(shù)據(jù)不重復(fù),并且對接收到的重復(fù)數(shù)據(jù)幀能及時(shí)有效地響應(yīng)GSN端,避免 重復(fù)發(fā)送;保存已接收的數(shù)據(jù)幀的話單數(shù)據(jù)時(shí),保證了數(shù)據(jù)幀安全可靠地保存 到外部存儲裝置,保存已接收的數(shù)據(jù)幀的話單數(shù)據(jù)時(shí),以數(shù)據(jù)包為單位,提高 了保存的速度,并且無需進(jìn)行剔重使得對外部存儲裝置的IO訪問量大大降低, 并且由于不再重復(fù)保存數(shù)據(jù)幀,使得數(shù)據(jù)存儲過程對外部存儲裝置的IO訪問 量大大降低,以及通過利用已接收數(shù)據(jù)幀狀態(tài)隊(duì)列中的已接收并已保存成功狀 態(tài)的數(shù)據(jù)幀序列號,便于從沒保存過的數(shù)據(jù)幀才會訪問外部存儲裝置,使得數(shù) 據(jù)恢復(fù)過程對外部存儲裝置的IO訪問量大大降低;針對掉電等異常情況的發(fā) 生,通過兩種狀態(tài)持久化對象能夠自動恢復(fù)已接收數(shù)據(jù)幀的幀序列號和狀態(tài)信 息,極大地提高了數(shù)據(jù)幀接收的正確性和可靠性;同時(shí),可以有效控制已接收 數(shù)據(jù)幀狀態(tài)隊(duì)列的長度,即從有效長度的已接收數(shù)據(jù)幀狀態(tài)隊(duì)列中查找是否存 在相同幀序列號的數(shù)據(jù)幀,從而減少了比較所花費(fèi)的時(shí)間,保證了接收過程中 的丟棄重復(fù)數(shù)據(jù)幀的速度,并自動清理了過期的已接收且已保存成功狀態(tài)的數(shù) 據(jù)幀占用的內(nèi)外存空間。應(yīng)當(dāng)理解的是,在本發(fā)明實(shí)施例中,可以提供更多的狀態(tài)信息種類來用于 丟棄重復(fù)數(shù)據(jù)幀即剔重,比較的范圍也可以加大??梢岳酶喾N類的狀態(tài)持 久化對象來用于數(shù)據(jù)恢復(fù),也可以將不同種類狀態(tài)持久化對象合一。可以使用 于其他用于控制已接收數(shù)據(jù)幀狀態(tài)隊(duì)列長度的方法,但實(shí)現(xiàn)均依賴于幾種狀態(tài) 信息對應(yīng)的數(shù)據(jù)幀的數(shù)量。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分步驟 是可以通過程序來指令相關(guān)的硬件來完成,所述的程序可以存儲于一計(jì)算機(jī)可 讀取存儲介質(zhì)中,該程序在執(zhí)行時(shí),包括上述實(shí)施例方法中的全部或部分步驟, 所述的存儲介質(zhì),如ROM/RAM、磁碟、光盤等。
明的精神和范圍。這樣,^^^i^^^^^ 其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。
權(quán)利要求
1、 一種話單數(shù)據(jù)的數(shù)據(jù)幀接收方法,其特征在于,包括 接收數(shù)據(jù)幀,所述數(shù)據(jù)幀包括話單數(shù)據(jù)和幀序列號;判斷是否已經(jīng)記錄了該到達(dá)的數(shù)據(jù)幀的幀序列號,如果是則丟棄該到達(dá)的 數(shù)據(jù)幀,否則,接收該到達(dá)的數(shù)據(jù)幀,并記錄該到達(dá)的數(shù)據(jù)幀的幀序列號。
2、 如權(quán)利要求l所述的方法,其特征在于,還包括提取至少一個(gè)已接收的數(shù)據(jù)幀組成數(shù)據(jù)包,并為所述數(shù)據(jù)包生成唯一的包 序列號;提交保存所述數(shù)據(jù)包,記錄所述包序列號與各數(shù)據(jù)幀的幀序列號之間的對 應(yīng)關(guān)系;并在所述各數(shù)據(jù)幀的話單數(shù)據(jù)成功保存后,向GSN節(jié)點(diǎn)返回已成功接收所 述各數(shù)據(jù)幀的響應(yīng)。
3、 如權(quán)利要求2所述的方法,其特征在于,所述向GSN節(jié)點(diǎn)返回已成功 接收所述各數(shù)據(jù)幀的響應(yīng),包括根據(jù)被成功保存話單數(shù)據(jù)的數(shù)據(jù)包的包序列號,在所述對應(yīng)關(guān)系中查詢對 應(yīng)的各數(shù)據(jù)幀的幀序列號;才艮據(jù)查詢到的各幀序列號向GSN節(jié)點(diǎn)返回已成功接收各數(shù)據(jù)幀的響應(yīng), 該響應(yīng)中攜帶有對應(yīng)的幀序列號。
4、 如權(quán)利要求2或3所述的方法,其特征在于,還包括根據(jù)所述已接 收的數(shù)據(jù)幀的狀態(tài),對應(yīng)數(shù)據(jù)幀的幀序列號記錄數(shù)據(jù)幀的狀態(tài)信息,其中當(dāng)所述已接收的數(shù)據(jù)幀未提交保存時(shí),該數(shù)據(jù)幀的狀態(tài)信息為所述第一狀 態(tài)信息,所述第一狀態(tài)信息用于指示所述已接收的數(shù)據(jù)幀為已接收但未提交保 存狀態(tài);當(dāng)所述已接收的數(shù)據(jù)幀被提交保存后,該數(shù)據(jù)幀的狀態(tài)信息刷新為第二狀 態(tài)信息,所述第二狀態(tài)信息用于指示所述已接收的數(shù)據(jù)幀為已接收并已提交保 存狀態(tài);當(dāng)所述已接收的數(shù)據(jù)幀的話單數(shù)據(jù)被成功保存后,該數(shù)據(jù)幀的狀態(tài)信息刷 新為第三狀態(tài)信息,所述第三狀態(tài)信息用于指示所述已接收的數(shù)據(jù)幀為已接收 并已保存成功狀態(tài)。
5、 如權(quán)利要求2或3所述的方法,其特征在于,根據(jù)所述已接收的數(shù)據(jù) 幀的狀態(tài),所述已接收的數(shù)據(jù)幀的幀序列號被分別記錄在不同的幀序列號隊(duì)列 中,其中當(dāng)所述已接收的數(shù)據(jù)幀未提交保存時(shí),將該數(shù)據(jù)幀的幀序列號保存在所述 第 一幀序列號隊(duì)列,所述第一幀序列號隊(duì)列用于記錄已接收但未提交保存的數(shù) 據(jù)幀的幀序列號;當(dāng)所述已接收的數(shù)據(jù)幀被提交保存后,將該數(shù)據(jù)幀的幀序列號保存在所述 第二幀序列號隊(duì)列中,所述第二幀序列號隊(duì)列用于記錄已接收并已提交保存的 數(shù)據(jù)幀的幀序列號;當(dāng)所述已接收的數(shù)據(jù)幀的話單數(shù)據(jù)被成功保存后,將該數(shù)據(jù)幀的幀序列號 保存在所述第三幀序列號隊(duì)列中,所述第三幀序列號隊(duì)列用于記錄已接收并已 保存成功的數(shù)據(jù)幀的幀序列號。
6、 如權(quán)利要求4所述的方法,其特征在于,如果到達(dá)的數(shù)據(jù)幀的狀態(tài)信 息為所述第三狀態(tài)信息,所述方法還包括向GSN節(jié)點(diǎn)返回表示已成功接收 該凄t據(jù)幀的響應(yīng)。
7、 如權(quán)利要求5所述的方法,其特征在于,如果到達(dá)的數(shù)據(jù)幀的幀序列 號記錄在所述第三幀序列號隊(duì)列中,所述方法還包括向GSN節(jié)點(diǎn)返回表示 已成功接收該數(shù)據(jù)幀的響應(yīng)。
8、 如權(quán)利要求2或3所述的方法,其特征在于,所述在各數(shù)據(jù)幀的話單 數(shù)據(jù)成功保存后,還包括根據(jù)所述對應(yīng)關(guān)系計(jì)算除包序列號的最小值之外其它包序列號對應(yīng)的數(shù) 據(jù)幀總數(shù);當(dāng)所述數(shù)據(jù)幀總數(shù)超過設(shè)置的長度閾值時(shí),在記錄的已接收的數(shù)據(jù)幀的幀序列號中刪除包序列號的最小值對應(yīng)的各幀序列號;并在所述對應(yīng)關(guān)系中刪除包序列號的最小值及其對應(yīng)的各數(shù)據(jù)幀的幀序列
9、 如權(quán)利要求4所述的方法,其特征在于,還包括記錄已經(jīng)被成功保存話單數(shù)據(jù)的最后一個(gè)數(shù)據(jù)包的包序列號; 異常情況發(fā)生后,當(dāng)判斷出所述對應(yīng)關(guān)系中記錄的包序列號的最大值與所述最后 一個(gè)數(shù)據(jù)包的包序列號不相等時(shí),在所述對應(yīng)關(guān)系中刪除包序列號的最大值及其對應(yīng)的各數(shù)據(jù)幀的幀序列號;將所述對應(yīng)關(guān)系中記錄的各幀序列號重新記錄在已接收的數(shù)據(jù)幀的幀序列號中,并將各幀序列號對應(yīng)的數(shù)據(jù)幀的狀態(tài)信息設(shè)置為第三狀態(tài)信息。
10、 如權(quán)利要求5所述的方法,其特征在于,還包括記錄已經(jīng)被成功保存話單數(shù)據(jù)的最后一個(gè)數(shù)據(jù)包的包序列號; 異常情況發(fā)生后,當(dāng)判斷出所述對應(yīng)關(guān)系中記錄的包序列號的最大值與所述最后 一個(gè)數(shù)據(jù)包的包序列號不相等時(shí),在所述對應(yīng)關(guān)系中刪除包序列號的最大值及其對應(yīng)的各數(shù)據(jù)幀的幀序列號;將所述對應(yīng)關(guān)系中記錄的各幀序列號重新記錄到所述第三幀序列號隊(duì)列。
11、 一種話單數(shù)據(jù)的數(shù)據(jù)幀接收裝置,其特征在于,包括 接收單元用于接收數(shù)據(jù)幀,所述數(shù)據(jù)幀包括話單數(shù)據(jù)和幀序列號; 控制單元用于判斷是否已經(jīng)記錄了該到達(dá)的數(shù)據(jù)幀的幀序列號,如果是則丟棄該到達(dá)的數(shù)據(jù)幀,否則,接收該到達(dá)的數(shù)據(jù)幀,并記錄該到達(dá)的數(shù)據(jù)幀 的幀序列號。
12、 如權(quán)利要求11所述的裝置,其特征在于,還包括 幀序列號存儲單元用于保存該到達(dá)的數(shù)據(jù)幀的幀序列號; 數(shù)據(jù)幀緩存單元用于緩存所述控制單元已接收的數(shù)據(jù)幀。
13、 如權(quán)利要求12所述的裝置,其特征在于,還包括數(shù)據(jù)包提交單元、 第一持久化存儲單元、存儲保證單元和話單數(shù)據(jù)存儲單元,其中所述數(shù)據(jù)包提交單元用于從數(shù)據(jù)幀緩存單元中提取至少一個(gè)數(shù)據(jù)幀組成 數(shù)據(jù)包,并為所述數(shù)據(jù)包生成唯一的包序列號,提交保存組成該數(shù)據(jù)包的各數(shù) 據(jù)幀,將所述包序列號與各數(shù)據(jù)幀的幀序列號之間的對應(yīng)關(guān)系記錄到所述第一持久化存儲單元;所述第一持久化存儲單元用于保存已提交保存的數(shù)據(jù)包的包序列號與各 數(shù)據(jù)幀的幀序列號之間的對應(yīng)關(guān)系;所述存儲保證單元用于接收所述數(shù)據(jù)包提交單元提交的數(shù)據(jù)包并將各數(shù) 據(jù)幀的話單數(shù)據(jù)保存到話單數(shù)據(jù)存儲單元,在所述各數(shù)據(jù)幀的話單數(shù)據(jù)成功保 存后,向控制單元返回已成功保存各數(shù)據(jù)幀的話單lt據(jù)的響應(yīng);所述控制單元還用于在接收到存儲保證單元返回的已成功保存各數(shù)據(jù)幀 的話單數(shù)據(jù)的響應(yīng)后,返回表示已成功接收各數(shù)據(jù)幀的響應(yīng);所述話單數(shù)據(jù)存儲單元用于保存所述存儲保證單元發(fā)送的話單數(shù)據(jù)。
14、 如權(quán)利要求13所述的裝置,其特征在于,還包括第一管理指示單元, 其中所述數(shù)據(jù)包提交單元還用于在提交保存組成數(shù)據(jù)包的各數(shù)據(jù)幀時(shí)向所述 第一管理指示單元發(fā)送已接收并已提交保存的數(shù)據(jù)幀的幀序列號,在數(shù)據(jù)包中 的話單數(shù)據(jù)保存成功時(shí)向所述第一管理指示單元發(fā)送已接收并已保存成功的 數(shù)據(jù)幀的幀序列號;所述控制單元將該到達(dá)的數(shù)據(jù)幀的幀序列號輸出給第 一管理指示單元,所 述第一管理指示單元將接收的所述幀序列號保存到幀序列號存儲單元,并將對 應(yīng)數(shù)據(jù)幀的狀態(tài)信息設(shè)置為第一狀態(tài)信息;將數(shù)據(jù)包提交單元發(fā)送的已接收并 已提交保存的數(shù)據(jù)幀的幀序列號對應(yīng)數(shù)據(jù)幀的狀態(tài)信息刷新為第二狀態(tài)信息; 將數(shù)據(jù)包提交單元發(fā)送的已接收并已保存成功的數(shù)據(jù)幀的幀序列號對應(yīng)數(shù)據(jù) 幀的狀態(tài)信息刷新為第三狀態(tài)信息。
15、 如權(quán)利要求13所述的裝置,其特征在于,還包括第二管理指示單元, 其中所述數(shù)據(jù)包提交單元還用于在提交保存組成數(shù)據(jù)包的各數(shù)據(jù)幀時(shí)向所述 第二管理指示單元發(fā)送已接收并已提交保存的數(shù)據(jù)幀的幀序列號,在數(shù)據(jù)包中 的話單數(shù)據(jù)保存成功時(shí)向所述第二管理指示單元發(fā)送已接收并已保存成功的數(shù)據(jù)幀的幀序列號;所述控制單元將該到達(dá)的數(shù)據(jù)幀的幀序列號輸出給第二管理指示單元,所 述第二管理指示單元將接收的所述幀序列號保存到幀序列號存儲單元中的第一幀序列號隊(duì)列;將數(shù)據(jù)包提交單元發(fā)送的已接收并已提交保存的數(shù)據(jù)幀的幀 序列號保存到幀序列號存儲單元中的第二幀序列號隊(duì)列;將數(shù)據(jù)包提交單元發(fā) 送的已接收并已保存成功的數(shù)據(jù)幀的幀序列號保存到幀序列號存儲單元中的 第三幀序列號隊(duì)列。
16、 如權(quán)利要求14所述的裝置,其特征在于,所述控制單元還用于當(dāng)判 斷出到達(dá)的數(shù)據(jù)幀的狀態(tài)信息為第三狀態(tài)信息時(shí),向GSN節(jié)點(diǎn)返回表示已成 功接收該數(shù)據(jù)幀的響應(yīng)。
17、 如權(quán)利要求15所述的裝置,其特征在于,所述控制單元還用于當(dāng)判 斷出到達(dá)的數(shù)據(jù)幀的幀序列號保存在第三幀序列號隊(duì)列時(shí),向GSN節(jié)點(diǎn)返回 表示已成功接收該數(shù)據(jù)幀的響應(yīng)。
18、 如權(quán)利要求13所述的裝置,其特征在于,還包括 長度控制單元用于根據(jù)所述第一持久化存儲單元保存的對應(yīng)關(guān)系計(jì)算除包序列號的最小值之外其它包序列號對應(yīng)的數(shù)據(jù)幀總數(shù),并當(dāng)所述數(shù)據(jù)幀總數(shù) 超過設(shè)置的長度闞值時(shí),由所述控制單元?jiǎng)h除幀序列號存儲單元中保存的包序 列號的最小值對應(yīng)的各幀序列號,并由所述數(shù)據(jù)包提交單元在第一持久化存儲 單元中刪除包序列號的最小值及其對應(yīng)的各數(shù)據(jù)幀的幀序列號。
19、 如權(quán)利要求14所述的裝置,其特征在于,還包括第二持久化存儲單 元和第一幀序列號恢復(fù)單元,其中所述存儲保證單元還用于將已經(jīng)被成功保存話單數(shù)據(jù)的最后一個(gè)數(shù)據(jù)包 的包序列號記錄在第二持久化存儲單元;數(shù)據(jù)包的包序列號;所述第一幀序列號恢復(fù)單元用于在異常情況發(fā)生后,判斷所述第一持久化 存儲單元中保存的包序列號的最大值與所述第二持久化存儲單元中保存的包 序列號是否相等,如果是則將第 一持久化存儲單元中保存的各幀序列號重新保 存到幀序列號存儲單元,并將各幀序列號對應(yīng)數(shù)據(jù)幀的狀態(tài)信息設(shè)置為第三狀 態(tài)信息,如果否則由該數(shù)據(jù)包提交單元在第一持久化存儲單元中刪除包序列號 的最大值及其對應(yīng)的各數(shù)據(jù)幀的幀序列號,并將第 一持久化存儲單元中保存的 其余各幀序列號重新保存到幀序列號存儲單元,并將其余各幀序列號對應(yīng)數(shù)據(jù) 幀的狀態(tài)信息設(shè)置為第三狀態(tài)信息。
20、 如權(quán)利要求15所述的裝置,其特征在于,還包括第二持久化存儲單 元和第二幀序列號恢復(fù)單元,其中所述存儲保證單元還用于將已經(jīng)被成功保存話單數(shù)據(jù)的最后一個(gè)數(shù)據(jù)包的包序列號記錄在第二持久化存儲單元;所述第二持久化存儲單元用于保存已經(jīng)被成功保存話單數(shù)據(jù)的最后一個(gè)數(shù)據(jù)包的包序列號;所述第二幀序列號恢復(fù)單元用于在異常情況發(fā)生后,判斷所述第一持久化 存儲單元中保存的包序列號的最大值與所述第二持久化存儲單元中保存的包 序列號是否相等,如果是則將第一持久化存儲單元中記錄的各幀序列號重新保 存到所述第三幀序列號隊(duì)列,如果否則由該數(shù)據(jù)包提交單元在第一持久化存儲 單元中刪除包序列號的最大值及其對應(yīng)的各數(shù)據(jù)幀的幀序列號,并將第 一持久 化存儲單元中保存的其余各幀序列號重新保存到所述第三幀序列號隊(duì)列。
21、 一種計(jì)費(fèi)網(wǎng)關(guān),其特征在于,包括權(quán)利要求13至20任一所述的裝置。
全文摘要
本發(fā)明涉及移動通信系統(tǒng)的計(jì)費(fèi)技術(shù),尤其涉及一種對話單數(shù)據(jù)的數(shù)據(jù)幀處理技術(shù)。本發(fā)明實(shí)施例公開了一種話單數(shù)據(jù)的數(shù)據(jù)幀接收方法、裝置及計(jì)費(fèi)網(wǎng)關(guān),在新接收到數(shù)據(jù)幀時(shí)能夠及時(shí)丟棄重復(fù)的數(shù)據(jù)幀,保證保存的話單數(shù)據(jù)不重復(fù)。其中,話單數(shù)據(jù)的數(shù)據(jù)幀接收方法,包括接收數(shù)據(jù)幀,所述數(shù)據(jù)幀包括話單數(shù)據(jù)和幀序列號;判斷是否已經(jīng)記錄了該到達(dá)的數(shù)據(jù)幀的幀序列號,如果是則丟棄該到達(dá)的數(shù)據(jù)幀,否則,接收該到達(dá)的數(shù)據(jù)幀,并記錄該到達(dá)的數(shù)據(jù)幀的幀序列號。話單數(shù)據(jù)的數(shù)據(jù)幀接收裝置包括幀序列號存儲單元、控制單元和數(shù)據(jù)幀緩存單元。本發(fā)明實(shí)施例還提供了一種計(jì)費(fèi)網(wǎng)關(guān),包括所述話單數(shù)據(jù)的數(shù)據(jù)幀接收裝置。
文檔編號H04L1/18GK101145893SQ20071016312
公開日2008年3月19日 申請日期2007年10月8日 優(yōu)先權(quán)日2007年10月8日
發(fā)明者嘯 孫, 奇 王, 鋒 王 申請人:華為技術(shù)有限公司