專利名稱:一種對寬帶網(wǎng)絡(luò)接入設(shè)備進行壓力測試的方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及對網(wǎng)絡(luò)接入設(shè)備進行壓力測試的技術(shù)領(lǐng)域,具體地說是一種對寬帶網(wǎng)絡(luò)接入設(shè)備進行壓力測試的方法及裝置。
背景技術(shù):
近年來,網(wǎng)絡(luò)數(shù)據(jù)業(yè)務(wù)發(fā)展迅速,寬帶用戶呈爆炸式的增長,運營商在采用xDSL、LAN、HFC、無線等多種接入方式的同時,為了構(gòu)建一個可運營、可管理、可盈利的寬帶網(wǎng)絡(luò),十分關(guān)心如何有效地完成用戶的管理,PPPoE就是隨之出現(xiàn)的多種認(rèn)證技術(shù)中的一種。
PPPoE(Point to Point Protocol over Ethernet,基于以太網(wǎng)的點對點通訊協(xié)議)技術(shù)問世于1998年后期,是由Redback網(wǎng)絡(luò)公司、客戶端軟件開發(fā)商RouterWare公司以及Worldcom的子公司UUNET Technologies公司在IETF(Internet Engineering Task Force,國際互聯(lián)網(wǎng)任務(wù)組)RFC(Request ForComments,請求注解)制的基礎(chǔ)上聯(lián)合開發(fā)的。該技術(shù)把以太網(wǎng)技術(shù)和點對點協(xié)議結(jié)合在一起,由于以太網(wǎng)技術(shù)十分成熟且使用廣泛,而PPP協(xié)議在傳統(tǒng)的撥號上網(wǎng)應(yīng)用中顯示出良好的可擴展性和優(yōu)質(zhì)的管理控制機制,網(wǎng)絡(luò)服務(wù)提供商和電信運營商便可利用可靠和熟悉的技術(shù)來加速部署高速互聯(lián)網(wǎng)業(yè)務(wù)。它使服務(wù)提供商在通過數(shù)字用戶線、電纜調(diào)制解調(diào)器或無線連接等方式提供支持多用戶的寬帶接入服務(wù)時更加簡便易行。同時該技術(shù)亦簡化了最終用戶在動態(tài)地選擇這些服務(wù)時的操作。
基于以上原因,越來越多的通信設(shè)備廠商開始推出自己的PPPoE寬帶接入設(shè)備。對于這些PPPoE寬帶接入設(shè)備性能要進行測試才能投入使用,目前的測試手段依賴于手工測試或者利用測試儀器產(chǎn)生的大批量PPPoE用戶進行單一的撥號上網(wǎng)或者離線下網(wǎng)的方式來實現(xiàn)向PPPoE接入設(shè)備提供簡單的大負(fù)荷壓力。這類儀器通常由專門開發(fā)的硬件系統(tǒng)構(gòu)成,一般其內(nèi)部運行的是專用的嵌入式操作系統(tǒng)。它們可以通過在PC機、工作站等通用平臺上運行的控制軟件操作。
現(xiàn)有的測試儀只能產(chǎn)生大批量PPPoE用戶進行單一的撥號上網(wǎng)或者離線下網(wǎng)的方式來實現(xiàn)向PPPoE接入設(shè)備提供簡單的大負(fù)荷壓力,而不能模擬實際網(wǎng)絡(luò)環(huán)境中用戶隨時上網(wǎng)和下網(wǎng)給PPPoE接入設(shè)備帶來的負(fù)荷沖擊,也不能模擬用戶以各種方式下網(wǎng),及測試各種下網(wǎng)方式對接入設(shè)備造成的影響。而且現(xiàn)有的測試儀是基于硬件系統(tǒng)的大容量撥號上網(wǎng)測試儀器,其價格極為昂貴,一般的中小網(wǎng)絡(luò)設(shè)備廠商都不敢問津。即使是在規(guī)模較大、實力較強網(wǎng)絡(luò)設(shè)備企業(yè)中,由于價格因素的制約,儀器的數(shù)量也不能完全滿足開發(fā)和測試的需求。
發(fā)明內(nèi)容
為了解決現(xiàn)有技術(shù)中測試儀器無法完全模擬真實情況下用戶隨時上下線且經(jīng)常異常下線,以及測試儀器成本高的缺點,本發(fā)明提供一種對寬帶網(wǎng)絡(luò)接入設(shè)備進行壓力測試的方法,以及實現(xiàn)該方法的裝置。
本發(fā)明的對寬帶網(wǎng)絡(luò)接入設(shè)備進行壓力測試的方法,包括步驟A.根據(jù)需要模擬出一定數(shù)量的用戶;B.配置壓力測試參數(shù);C.根據(jù)配置的壓力測試參數(shù)讓一定比例的用戶通過PPPoE撥號上線;D.隨機選擇一個用戶,根據(jù)該用戶的在線狀態(tài)和壓力測試參數(shù)執(zhí)行上線或離線操作。
所述配置的壓力測試參數(shù)包括離線速率、呼叫速率、振蕩時間和初始用戶上線數(shù)等參數(shù)。
所述步驟D具體包括隨機選擇一個用戶,判斷該用戶是否在線,如果該用戶狀態(tài)為在線,根據(jù)所配置的壓力測試參數(shù)判斷該用戶是否需要下線,如果需要,讓該用戶下線;如果該用戶狀態(tài)為離線,根據(jù)所配置的壓力測試參數(shù)判斷該用戶是否需要上線,如果需要,讓用戶向被測設(shè)備發(fā)送PADI(PPPoE ActiveDiscovery Initiation,PPPoE上網(wǎng)請求)報文撥號上線。
所述判斷用戶是否需要上線或下線的方法為如果被選擇的用戶狀態(tài)為在線,判斷在這一秒內(nèi)已經(jīng)下線的用戶數(shù)是否達到離線速率,如果達到,該用戶不需要下線,否則該用戶需要下線;如果被選擇的用戶狀態(tài)為離線,判斷在這一秒內(nèi)已經(jīng)撥號上線的用戶是否達到呼叫速率,如果達到,該用戶不需要上線,否則該用戶需要上線。
如果所述用戶在線,并且該用戶不需要下線,模擬用戶的在線的行為。
所述模擬用戶在線的行為包括發(fā)送流量、PING包。
被選擇用戶進行下線操作的一種方式是用戶首先向被測設(shè)備發(fā)送LCPTerminate(Link Control Protocol Terminate,鏈路控制協(xié)議終止)請求,獲得被測設(shè)備的Terminate應(yīng)答后發(fā)送PADT(PPPoE Active DiscoveryTerminate,PPPoE離線請求)報文斷開與被測設(shè)備的連接。
被選擇用戶進行下線操作的第二種方式是向被測設(shè)備直接發(fā)送PADT報文斷開與被測設(shè)備的連接。
被選擇用戶進行下線操作的第三種方式是用戶丟棄被測設(shè)備發(fā)來的基于該用戶的報文不做任何響應(yīng),斷開與被測設(shè)備的連接。
本發(fā)明的對寬帶網(wǎng)絡(luò)接入設(shè)備進行壓力測試的裝置,包括配置模塊,用于配置壓力測試參數(shù);用戶生成模塊,用于生成測試用的模擬用戶;管理模塊,用于控制用戶的上線和下線操作;模擬用戶在線行為;選擇模塊,用于從模擬用戶組中隨機選擇一個用戶;如果用戶需要下線,從下線方式中隨機選擇一種;判斷模塊,用于判斷用戶是否在線,根據(jù)用戶的在線狀態(tài)和壓力測試參數(shù)判斷是否上線或下線,并將判斷結(jié)果發(fā)送給管理模塊。
所述選擇模塊包括用戶選擇模塊,用于從模擬用戶組中隨機選擇一個用戶;下線方式選擇模塊,用于為在線的被選擇用戶選擇一種下線方式。
所述判斷模塊包括在線狀態(tài)判斷模塊,用于判斷被選擇用戶的在線狀態(tài),并將該在線狀態(tài)信息傳遞給上下線判斷模塊;上下線判斷模塊,用于接收在線狀態(tài)判斷模塊傳遞來的用戶的在線狀態(tài)信息,與配置的壓力測試參數(shù)比較,以確定該用戶是否需要上線或下線。
本發(fā)明的對寬帶網(wǎng)絡(luò)接入設(shè)備進行壓力測試的方法除了可以模擬用戶上線和下線來對寬帶網(wǎng)絡(luò)接入設(shè)備進行測試外,還可以模擬用戶通過各種異常方式下線,用來測試用各種下線方式對寬帶網(wǎng)絡(luò)接入設(shè)備造成的影響,還可以模擬用戶上線后的各種操作,例如發(fā)送流量、PING包等,用來測試寬帶網(wǎng)絡(luò)接入設(shè)備對在線用戶進行的各種請求的處理能力。通過這些模擬,可以全面的對寬帶網(wǎng)絡(luò)接入設(shè)備的性能及抗異常能力進行測試。另外,本發(fā)明的對寬帶網(wǎng)絡(luò)接入設(shè)備進行壓力測試的方法既可以通過專門的硬件設(shè)備來實現(xiàn),也可以在通用計算機上通過軟件實現(xiàn),實現(xiàn)方式靈活方便,解決了現(xiàn)有的測試方法對價格昂貴的專用測試儀器的依賴,大大降低了測試成本。
圖1為本發(fā)明的對寬帶網(wǎng)絡(luò)接入設(shè)備進行壓力測試的方法的流程圖;圖2為本發(fā)明的對寬帶網(wǎng)絡(luò)接入設(shè)備進行壓力測試的裝置的結(jié)構(gòu)框圖。
具體實施例方式
下面結(jié)合附圖和具體實施例對本發(fā)明做詳細(xì)地說明,但不作為對本發(fā)明的限定。
在通用計算機上建立以下模塊配置模塊201,用于配置壓力測試參數(shù);用戶生成模塊202,用于生成測試用的模擬用戶;管理模塊208,用于控制用戶的上線和下線操作;模擬用戶在線行為;用戶選擇模塊206,用于從模擬用戶組中隨機選擇一個用戶,并將選擇的結(jié)果發(fā)送給在線狀態(tài)判斷模塊205;下線方式選擇模塊209,用于為在線的被選擇用戶選擇一種下線方式;在線狀態(tài)判斷模塊205,用于判斷被選擇用戶的在線狀態(tài),并將該在線狀態(tài)信息傳遞給上下線判斷模塊203;上下線判斷模塊203,用于接收在線狀態(tài)判斷模塊205傳遞來的用戶的在線狀態(tài)信息,與配置的壓力測試參數(shù)比較,以確定該用戶是否需要上線或下線,并將判斷結(jié)果傳遞給下線方式選擇模塊209或管理模塊208。
其中用戶選擇模塊206和下線方式選擇模塊209共同組成選擇模塊204,在線狀態(tài)判斷模塊205和上下線判斷模塊203共同組成判斷模塊207。
將通用計算機與被測試的寬帶網(wǎng)絡(luò)接入設(shè)備連接,基于上述模塊組成的裝置,進行如下操作步驟101根據(jù)需要由用戶生成模塊202生成1000個模擬用戶;
步驟102通過配置模塊201設(shè)置壓力測試參數(shù),其配置為離線速率18個/秒;呼叫速率20個/秒;振蕩時間1小時;初始用戶上線數(shù)800個;這里各個參數(shù)可以由用戶根據(jù)需要自由設(shè)定,其中振蕩時間為測試過程需要的時間;步驟103由管理模塊208根據(jù)配置模塊201配置的初始用戶上線數(shù)控制800個模擬用戶通過PPPoE撥號上線,占模擬用戶總數(shù)的80%;步驟104由用戶選擇模塊206從1000個模擬用戶中隨機選擇出一個用戶A,將選擇的結(jié)果傳遞給在線狀態(tài)判斷模塊205;步驟105在線狀態(tài)判斷模塊205對用戶A進行判斷,結(jié)果為用戶A處于在線狀態(tài),在線狀態(tài)判斷模塊205將該判斷結(jié)果傳遞給上下線判斷模塊203,進行步驟106;步驟106上下線判斷模塊203經(jīng)比較發(fā)現(xiàn)這一秒內(nèi)已經(jīng)有15個用戶進行了下線操作,小于設(shè)定的離線速率(18個/秒),因此判斷用戶A需要進行下線操作,上下線判斷模塊203將此判斷結(jié)果傳遞給下線方式選擇模塊209,進行步驟108;步驟108由下線方式選擇模塊209隨機選擇一種下線方式,此次選擇了正常下線方式,下線方式選擇模塊209將選擇的結(jié)果發(fā)送給管理模塊208;步驟109管理模塊208控制用戶A發(fā)送LCP Terminate請求,在獲得被測設(shè)備返回的Terminate應(yīng)答后發(fā)送PADT報文斷開與被測設(shè)備的連接,模擬實際使用中用戶正常下線的情況,返回步驟104;步驟104由用戶選擇模塊206從1000個模擬用戶中隨機選擇出一個用戶B,將選擇的結(jié)果傳遞給在線狀態(tài)判斷模塊205;步驟105在線狀態(tài)判斷模塊205對用戶B進行判斷,結(jié)果為用戶B處于在線狀態(tài),在線狀態(tài)判斷模塊205將該判斷結(jié)果傳遞給上下線判斷模塊203,進行步驟106;步驟106上下線判斷模塊203經(jīng)比較發(fā)現(xiàn)這一秒內(nèi)已經(jīng)有16個用戶進行了下線操作,小于設(shè)定的離線速率(18個/秒),因此判斷用戶B需要進行下線操作,上下線判斷模塊203將此判斷結(jié)果傳遞給下線方式選擇模塊209,進行步驟108;步驟108由下線方式選擇模塊209隨機選擇一種下線方式,此次選擇了異常下線方式,下線方式選擇模塊209將選擇的結(jié)果發(fā)送給管理模塊208;步驟109管理模塊208控制用戶B丟棄被測設(shè)備發(fā)送來的基于用戶B的報文不做任何響應(yīng),斷開與被測設(shè)備的連接,模擬實際使用中用戶直接關(guān)機或者鏈路故障等不發(fā)出任何下網(wǎng)命令而斷開網(wǎng)絡(luò)鏈接的情況,返回步驟104;步驟104由用戶選擇模塊從1000個模擬用戶中隨機選擇出一個用戶C,將選擇的結(jié)果傳遞給在線狀態(tài)判斷模塊205;步驟105在線狀態(tài)判斷模塊205對用戶C進行判斷,結(jié)果為用戶C處于在線狀態(tài),在線狀態(tài)判斷模塊205將該判斷結(jié)果傳遞給上下線判斷模塊203,進行步驟106;步驟106上下線判斷模塊203經(jīng)比較發(fā)現(xiàn)這一秒內(nèi)已經(jīng)有17個用戶進行了下線操作,小于設(shè)定的離線速率(18個/秒),因此判斷用戶C需要進行下線操作,上下線判斷模塊203將此判斷結(jié)果傳遞給下線方式選擇模塊209,進行步驟108;步驟108由下線方式選擇模塊209隨機選擇一種下線方式,此次選擇了異常下線方式,下線方式選擇模塊209將選擇的結(jié)果發(fā)送給管理模塊208;步驟109管理模塊208控制用戶C直接向被測設(shè)備發(fā)送PADT報文斷開與被測設(shè)備的鏈接,模擬實際使用中不發(fā)LCP Terminate報文而直接發(fā)送PADT報文斷開鏈接的情況,返回步驟104;步驟104由用戶選擇模塊206從1000個模擬用戶中隨機選擇出一個用戶D,將選擇的結(jié)果傳遞給在線狀態(tài)判斷模塊205;步驟105在線狀態(tài)判斷模塊205對用戶D進行判斷,結(jié)果為用戶D處于在線狀態(tài),在線狀態(tài)判斷模塊205將該判斷結(jié)果傳遞給上下線判斷模塊203,進行步驟106;步驟106上下線判斷模塊203經(jīng)比較發(fā)現(xiàn)這一秒內(nèi)已經(jīng)有18個用戶進行了下線操作,已經(jīng)達到了設(shè)定的離線速率(18個/秒),因此判斷用戶D不需要進行下線操作,上下線判斷模塊203將此判斷結(jié)果傳遞給管理模塊208;步驟107管理模塊208控制用戶D模擬在線行為,例如發(fā)送流量、PING包等,返回步驟104;步驟104由用戶選擇模塊206從1000個模擬用戶中隨機選擇出一個用戶E,將選擇的結(jié)果傳遞給在線狀態(tài)判斷模塊205;
步驟105在線狀態(tài)判斷模塊205對用戶E進行判斷,結(jié)果為用戶E處于離線狀態(tài),在線狀態(tài)判斷模塊205將該判斷結(jié)果傳遞給上下線判斷模塊203,進行步驟110;步驟110上下線判斷模塊203經(jīng)比較發(fā)現(xiàn)這一秒內(nèi)已經(jīng)有19個用戶進行了上線操作,小于設(shè)定的呼叫速率(20個/秒),因此判斷用戶E需要上線,上下線判斷模塊203將結(jié)果傳遞給管理模塊208,進行步驟111;步驟111管理模塊208控制用戶E向被測設(shè)備發(fā)送PADI報文,撥號上網(wǎng),返回步驟104;步驟104由用戶選擇模塊206從1000個模擬用戶中隨機選擇出一個用戶F,將選擇的結(jié)果傳遞給在線狀態(tài)判斷模塊205;步驟105在線狀態(tài)判斷模塊205對用戶F進行判斷,結(jié)果為用戶F處于離線狀態(tài),在線狀態(tài)判斷模塊205將該判斷結(jié)果傳遞給上下線判斷模塊203,進行步驟110;步驟110上下線判斷模塊203經(jīng)比較發(fā)現(xiàn)這一秒內(nèi)已經(jīng)有20個用戶進行了上線操作,達到了設(shè)定的呼叫速率(20個/秒),因此判斷用戶F不需要上線,返回步驟104;重復(fù)以上步驟,持續(xù)一個小時(振蕩時間),測試完畢。
本發(fā)明也可以通過專門的測試儀器實現(xiàn),在通過專門的測試儀器實現(xiàn)時,在測試儀器中設(shè)置上述實施例中的各模塊,其測試過程與上述實施例相同。
本發(fā)明所舉實施例只是一種較佳的實施方式,本領(lǐng)域的技術(shù)人員在本發(fā)明技術(shù)方案范圍內(nèi)進行的通常變化和替換都應(yīng)包含在本發(fā)明的保護范圍內(nèi)。
權(quán)利要求
1.一種對寬帶網(wǎng)絡(luò)接入設(shè)備進行壓力測試的方法,其特征在于,所述方法包括以下步驟A.根據(jù)需要模擬出一定數(shù)量的用戶;B.配置壓力測試參數(shù);C.根據(jù)配置的壓力測試參數(shù)讓一定比例的用戶通過PPPoE撥號上線;D.隨機選擇一個用戶,根據(jù)該用戶的在線狀態(tài)和壓力測試參數(shù)執(zhí)行上線或離線操作。
2.根據(jù)權(quán)利要求1所述的對寬帶網(wǎng)絡(luò)接入設(shè)備進行壓力測試的方法,其特征在于,所述的壓力測試參數(shù)包括離線速率、呼叫速率、振蕩時間和初始用戶上線數(shù)。
3.根據(jù)權(quán)利要求1所述的對寬帶網(wǎng)絡(luò)接入設(shè)備進行壓力測試的方法,其特征在于,所述步驟D具體包括隨機選擇一個用戶,判斷該用戶是否在線,如果該用戶狀態(tài)為在線,根據(jù)所配置的壓力測試參數(shù)判斷該用戶是否需要下線,如果需要,讓該用戶下線;如果該用戶狀態(tài)為離線,根據(jù)所配置的壓力測試參數(shù)判斷該用戶是否需要上線,如果需要,讓用戶向被測設(shè)備發(fā)送PADI報文撥號上線。
4.根據(jù)權(quán)利要求3所述的對寬帶網(wǎng)絡(luò)接入設(shè)備進行壓力測試的方法,其特征在于,所述判斷用戶是否需要上線或下線的方法為如果被選擇的用戶狀態(tài)為在線,判斷在這一秒內(nèi)已經(jīng)下線的用戶數(shù)是否達到離線速率,如果達到,該用戶不需要下線,否則該用戶需要下線;如果被選擇的用戶狀態(tài)為離線,判斷在這一秒內(nèi)已經(jīng)撥號上線的用戶是否達到呼叫速率,如果達到,該用戶不需要上線,否則該用戶需要上線。
5.根據(jù)權(quán)利要求3所述的對寬帶網(wǎng)絡(luò)接入設(shè)備進行壓力測試的方法,其特征在于,如果所述用戶在線,并且該用戶不需要下線,模擬用戶的在線的行為。
6.根據(jù)權(quán)利要求5所述的對寬帶網(wǎng)絡(luò)接入設(shè)備進行壓力測試的方法,其特征在于,所述模擬用戶在線的行為包括發(fā)送流量、PING包。
7.根據(jù)權(quán)利要求3所述的對寬帶網(wǎng)絡(luò)接入設(shè)備進行壓力測試的方法,其特征在于,所述的被選擇用戶進行下線操作的方式是首先向被測設(shè)備發(fā)送LCPTerminate請求,獲得被測設(shè)備的Terminate應(yīng)答后發(fā)送PADT報文斷開與被測設(shè)備的連接。
8.根據(jù)權(quán)利要求3所述的對寬帶網(wǎng)絡(luò)接入設(shè)備進行壓力測試的方法,其特征在于,所述的被選擇用戶進行下線操作的方式是向被測設(shè)備直接發(fā)送PADT報文斷開與被測設(shè)備的連接。
9.根據(jù)權(quán)利要求3所述的對寬帶網(wǎng)絡(luò)接入設(shè)備進行壓力測試的方法,其特征在于,所述的被選擇用戶進行下線操作的方式是用戶丟棄被測設(shè)備發(fā)來的基于該用戶的報文不做任何響應(yīng),斷開與被測設(shè)備的連接。
10.一種對寬帶網(wǎng)絡(luò)接入設(shè)備進行壓力測試的裝置,其特征在于所述裝置包括配置模塊,用于配置壓力測試參數(shù);用戶生成模塊,用于生成測試用的模擬用戶;管理模塊,用于控制用戶的上線和下線操作;模擬用戶在線行為;選擇模塊,用于從模擬用戶組中隨機選擇一個用戶;如果用戶需要下線,從下線方式中隨機選擇一種;判斷模塊,用于判斷用戶是否在線,根據(jù)用戶的在線狀態(tài)和壓力測試參數(shù)判斷是否上線或下線,并將判斷結(jié)果發(fā)送給管理模塊。
11.根據(jù)權(quán)利要求10所述的對寬帶網(wǎng)絡(luò)接入設(shè)備進行壓力測試的裝置,其特征在于,所述選擇模塊包括用戶選擇模塊,用于從模擬用戶組中隨機選擇一個用戶;下線方式選擇模塊,用于為在線的被選擇用戶選擇一種下線方式。
12.根據(jù)權(quán)利要求10或11所述的對寬帶網(wǎng)絡(luò)接入設(shè)備進行壓力測試的裝置,其特征在于,所述判斷模塊包括在線狀態(tài)判斷模塊,用于判斷被選擇用戶的在線狀態(tài),并將該在線狀態(tài)信息傳遞給上下線判斷模塊;上下線判斷模塊,用于接收在線狀態(tài)判斷模塊傳遞來的用戶的在線狀態(tài)信息,與配置的壓力測試參數(shù)比較,以確定該用戶是否需要上線或下線。
全文摘要
本發(fā)明公開了一種對寬帶網(wǎng)絡(luò)接入設(shè)備進行壓力測試的方法及裝置,屬于網(wǎng)絡(luò)設(shè)備測試的技術(shù)領(lǐng)域。本發(fā)明是通過在模擬用戶中隨機選擇一個用戶,如果該用戶不在線,則讓其通過PPPoE撥號上線,如果在線,則讓其離線,離線可以選擇正常方式離線或異常方式離線等多種方式,模擬實際使用中大量用戶的隨機上網(wǎng)和下網(wǎng)及各種異常斷網(wǎng)對寬帶網(wǎng)絡(luò)接入設(shè)備造成的持續(xù)的大負(fù)荷沖擊,使測試更接近實際使用時的情況,考驗寬帶網(wǎng)絡(luò)接入設(shè)備的性能和抗異常能力。本發(fā)明除了可以通過專門設(shè)計的測試儀器實現(xiàn)外,還可以在通用計算機上實現(xiàn),解決了對昂貴的測試設(shè)備的依賴,大大降低了測試成本。
文檔編號H04L12/28GK1901482SQ200610090978
公開日2007年1月24日 申請日期2006年7月6日 優(yōu)先權(quán)日2006年7月6日
發(fā)明者秦光寧 申請人:華為技術(shù)有限公司