QoS專題-第3期-QoS實現之報文簡單分類與標記


QoS實現之報文簡單分類與標記

上一期專題我們講到,MQC中的流分類可以實現報文的分類,流行為可以對報文進行重標記,從而實現對流量的精細化差分服務。而優先級映射則可以根據802.1p優先級、DSCP優先級和本地優先級對報文進行分類,是另一種報文分類和標記的方法。本期專題我們將對其進行詳細介紹。

1      為什么要有優先級映射?

優先級映射用來實現報文攜帶的QoS優先級與設備本地優先級(即設備內部區分報文的服務等級)之間的轉換,然后設備根據本地優先級提供有差別的QoS服務。

攜帶QoS優先級的報文到達設備后,外部優先級(如802.1p、DSCP)被映射成設備的本地優先級,這樣設備才能夠識別出該如何處理報文。報文離開設備時,本地優先級又被映射成外部優先級,從而保證報文到達下一台設備時,設備能夠繼續根據報文中的優先級字段提供差分服務。也就是說,通過優先級映射對報文分類是基礎,是有區別地實施服務的前提。

用戶可以根據網絡規划在不同網絡中使用不同的QoS優先級字段,例如在二層網絡中使用802.1p優先級,三層網絡中使用DSCP優先級,MPLS網絡中使用EXP優先級。

本期專題主要介紹二層和三層網絡中的優先級映射。

2      QoS優先級字段

既然有優先級映射,那我們就有必要先來了解一下報文里的哪些字段可以用來標識優先級。

2.1      VLAN幀頭中的802.1p優先級

根據IEEE 802.1Q定義,VLAN幀頭中的PRI字段(即802.1p優先級),或稱為CoS(Class of Service)字段,標識了服務質量需求。VLAN幀中的PRI字段位置如圖1所示。

20161229140955144001.png

圖1 VLAN幀中的802.1p優先級

在802.1Q頭部中包含3比特長的PRI字段。PRI字段定義了8種業務優先級CoS,按照優先級從高到低順序取值為7、6、5、4、3、2、1和0。

2.2      IP報文頭中的IP Precedence字段和DSCP字段

RFC 791中將IP報文頭中的ToS域的最高3位稱為Precedence字段,標識8個IP優先級,從高到低順序取值為7、6、5、4、3、2、1和0。

RFC 791定義的ToS域中,除了Precedence字段外,ToS域中還包括D、T、R三個比特,分別表示延遲要求、吞吐量和可靠性。

RFC 1349重新定義了ToS域,增加了C比特,表示傳輸開銷。

RFC 2474又重新定義了ToS域,將0位~5位改名為DSCP字段,6位和7位是保留位(用於流控制)。

IP Precedence字段和DSCP字段在報文中的位置如圖2所示。

20161229140956448002.png

圖2 IP Precedence和DSCP字段

3      DiffServ域模型的優先級映射

3.1      原理介紹

在DiffServ域模型下,優先級映射利用DS域來管理和記錄QoS優先級與服務等級、顏色之間的映射關系,其過程如下:

1.      在報文進入設備時,報文攜帶的QoS優先級被映射到設備內部服務等級和顏色。

2.      設備根據報文的服務等級及顏色實現擁塞避免。

3.      在報文離開設備時,內部服務等級和顏色被映射為QoS優先級。設備根據內部服務等級與QoS優先級之間的映射關系確定報文進入的隊列,從而針對隊列進行流量整形、擁塞避免、隊列調度等處理。設備可以修改報文發送出去時所攜帶的QoS優先級,以便其他設備根據報文攜帶的優先級提供相應的QoS服務。

將QoS優先級映射到服務等級、顏色是對入方向的報文進行,而將服務等級、顏色映射為QoS優先級則是對出方向的報文進行,如圖3所示。

20161229140957365003.png

圖3 QoS優先級映射

這里提到了服務等級和顏色的概念,下面我們分別來介紹一下。

3.1.1        服務等級

服務等級,也叫本地優先級,是指報文在設備內部的服務質量,它決定了報文在設備內部所屬的隊列類型。服務等級以PHB(Per Hop Behavior)表示。

每一個DS節點上對報文的處理稱為PHB。PHB描述了DS節點對報文采用的外部可見的轉發行為。PHB可以用優先級來定義,也可以用一些可見的服務特征如報文延遲、抖動或丟包率來定義。PHB只定義了一些外部可見的轉發行為,沒有指定特定的實現方式。

最初,RFC定義了四種標准的PHB:

l  CS(Class Selector,選擇類器)

l  EF(Expedited Forwarding,加速轉發)

l  AF(Assured Forwarding,確保轉發)

l  BE(Best-Effort,盡力而為),為缺省的PHB

在RFC 2474中,CS又被划分為兩個等級,即CS6和CS7。

在RFC 2597中,AF又被划分為四個等級,即為AF1~AF4。每個等級又有3個丟棄優先級,其表達形式為:AF1x~AF4x(x代表丟棄優先級,按照從低到高的丟棄優先級,取值為1~3)。

至此,PHB共有8個細分級別,按優先級從高到低依次為CS7、CS6、EF、AF4、AF3、AF2、AF1、BE。RFC定義的與之對應的DSCP優先級如表1所示。

表1 RFC定義的PHB及與之對應的DSCP優先級

PHB

DSCP優先級

CS7

56

CS6

48

EF

46

AF4

34,36,38(對應AF41,AF42,AF43)

AF3

26,28,30(對應AF31,AF32,AF33)

AF2

18,20,22(對應AF21,AF22,AF23)

AF1

10,12,14(對應AF11,AF12,AF13)

BE

0

CS7和CS6,默認用於協議報文,如企業內部各個交換機之間的STP報文、LLDP報文、LACP報文等。如果這些報文無法接收會引起協議中斷。

EF用於承載VoIP語音的流量,或者企業內部視頻會議的數據流,因為語音業務的報文要求低延遲、低抖動、低丟包率,其重要程度僅次於協議報文。

AF4用來承載語音的信令流量,即VoIP業務的協議報文。

AF3可以用作遠端設備的Telnet、FTP等服務。這些業務對帶寬要求適當,但是對網絡時延、抖動都非常敏感,同時要求完全可靠的傳輸,不能出現丟包。

AF2可以用來承載企業內部IPTV的直播流量,可以保證在線視頻業務的流暢性。直播業務的實時性強,需要有連續性和大吞吐量的保證,但是允許小規模的丟包。

AF1用作企業內部普通數據流業務,例如E-Mail。普通數據對實時性和抖動等因素要求都不高,只要保證不丟包的傳達即可。

BE用於盡力而為的服務,用作不緊急、不重要、不需要負責的業務,如HTTP網頁瀏覽業務。

3.1.2        顏色

顏色是指報文在設備內部的丟棄優先級,用於決定當一個隊列發生擁塞時報文的丟棄順序,對本地優先級與隊列的映射關系沒有影響。顏色有3種取值,IEEE定義的優先級從低到高依次為Green、Yellow、Red。

丟棄優先級的高低實際取決於對應參數的配置。例如,配置Green最大只能使用50%緩存,Red最大可以使用100%緩存,則Green的丟棄優先級比Red高。所以並不是標記為Red的報文一定比標記為Green的報文丟棄優先級就高。

3.2      優先級映射關系

DiffServ域模型下,優先級映射的核心內容是配置優先級與PHB行為/顏色之間的映射關系。設備上有一個default域,它定義了缺省情況下報文的優先級和PHB行為/顏色之間的映射關系。default域可以修改,但不能刪除。除了default域外,用戶也可以根據需要創建新的DiffServ域,並指定報文的優先級和PHB行為/顏色之間的映射關系。

下面我們就來介紹default域中不同報文優先級與PHB行為/顏色之間的映射關系。

3.2.1        802.1p優先級的映射關系

在DiffServ域模型中,接口入方向上VLAN報文的802.1p優先級和PHB行為/顏色之間的缺省映射關系如表2所示。

表2 DiffServ域接口入方向802.1p優先級到PHB行為/顏色的缺省映射關系

802.1p優先級

PHB行為

顏色

0

BE

Green

1

AF1

Green

2

AF2

Green

3

AF3

Green

4

AF4

Green

5

EF

Green

6

CS6

Green

7

CS7

Green

在DiffServ域模型中,接口出方向上VLAN報文的PHB行為/顏色到802.1p優先級之間的缺省映射關系如表3所示。

表3 DiffServ域接口出方向PHB行為/顏色到802.1p優先級之間的缺省映射關系

PHB行為

顏色

802.1p優先級

BE

Green、Yellow、Red

0

AF1

Green、Yellow、Red

1

AF2

Green、Yellow、Red

2

AF3

Green、Yellow、Red

3

AF4

Green、Yellow、Red

4

EF

Green、Yellow、Red

5

CS6

Green、Yellow、Red

6

CS7

Green、Yellow、Red

7

從表2和表3可以看出,缺省情況下:

l  VLAN報文在DiffServ域接口入方向上,802.1優先級(從低到高)與PHB行為(從BE到CS7)是一一對應的,且報文顏色全部是Green。

l  VLAN報文在DiffServ域接口出方向上,PHB行為(從BE到CS7)與802.1優先級(從低到高)是一一對應的,不管報文的顏色是Green、Yellow還是Red。

也許你已經發現,在入方向上,缺省情況下不管VLAN報文的802.1p優先級是多少,顏色始終都是Green,為什么在出方向上,會出現不同顏色的報文呢?這里我們先賣個關子,稍后再作解釋。

3.2.2        DSCP優先級的映射關系

在DiffServ域模型中,接口入方向上IP報文的DSCP優先級和PHB行為/顏色之間的缺省映射關系如表4所示。

表4 DiffServ域接口入方向DSCP優先級到PHB行為/顏色的缺省映射關系

DSCP優先級

PHB行為

顏色

DSCP優先級

PHB行為

顏色

8

AF1

Green

28

AF3

Yellow

10

AF1

Green

30

AF3

Red

12

AF1

Yellow

32

AF4

Green

14

AF1

Red

34

AF4

Green

16

AF2

Green

36

AF4

Yellow

18

AF2

Green

38

AF4

Red

20

AF2

Yellow

40

EF

Green

22

AF2

Red

48

CS6

Green

24

AF3

Green

56

CS7

Green

26

AF3

Green

0~63之間的其它優先級

BE

Green

在DiffServ域模型中,接口出方向上IP報文的PHB行為/顏色到DSCP優先級之間的缺省映射關系如表5所示。

表5 DiffServ域接口出方向PHB行為/顏色到DSCP優先級之間的缺省映射關系

PHB行為

顏色

DSCP優先級

BE

Green、Yellow、Red

0

AF1

Green

10

AF1

Yellow

12

AF1

Red

14

AF2

Green

18

AF2

Yellow

20

AF2

Red

22

AF3

Green

26

AF3

Yellow

28

AF3

Red

30

AF4

Green

34

AF4

Yellow

36

AF4

Red

38

EF

Green、Yellow、Red

46

CS6

Green、Yellow、Red

48

CS7

Green、Yellow、Red

56

3.3      本地優先級

前面我們提到一個疑問:在入方向上,缺省情況下不管VLAN報文的802.1p優先級是多少,顏色始終都是Green,為什么在出方向上,會出現不同顏色的報文呢?有兩種可能的原因:

l  在配置入方向優先級映射時,用戶可以根據需要通過命令8021p-inbound 8021p-value phb service-class [ green | yellow | red ]指定報文的顏色。如果不指定,則默認報文為Green。

l  報文經過入方向優先級映射進入設備之后,在經過出方向映射離開設備之前,還有一個設備本地的處理過程。在這個過程中,設備用本地優先級來標識報文。用戶可以根據需要通過命令remark local-precedence { local-precedence-namelocal-precedence-value } [green | yellow | red ]對報文在設備內部進行重新分類,也就是重標記報文的本地優先級,並且可以指定報文的顏色。因此,在出方向上,會出現不同顏色的報文。

在設備內部,報文的本地優先級與端口隊列也是一一對應的,如表6所示。

表6 本地優先級與各隊列之間的對應關系表(框式交換機的部分單板、盒式交換機)

本地優先級

隊列索引

BE

0

AF1

1

AF2

2

AF3

3

AF4

4

EF

5

CS6

6

CS7

7

對於框式交換機的一些單板(具體型號請參看產品文檔),報文的本地優先級與端口隊列的對應關系如表7所示。

表7本地優先級與各隊列之間的對應關系表(框式交換機的部分單板)

本地優先級

隊列索引

BE(非已知單播報文)

0

AF1(非已知單播報文)

1

AF2(非已知單播報文)

1

AF3(非已知單播報文)

1

AF4(非已知單播報文)

2

EF(非已知單播報文)

2

CS6(非已知單播報文)

6

CS7(非已知單播報文)

6

BE(已知單播報文)

0

AF1(已知單播報文)

1

AF2(已知單播報文)

2

AF3(已知單播報文)

3

AF4(已知單播報文)

4

EF(已知單播報文)

5

CS6(已知單播報文)

6

CS7(已知單播報文)

7

說明:

l  VLAN報文和IP報文都可以進行本地優先級重標記。

l  重標記報文的本地優先級,僅會影響當前設備對報文的QoS處理。

l  重標記報文本地優先級的同時,報文的調度隊列也會被修改。

l  重標記報文本地優先級僅對設備入方向的報文生效。

4      qos map-table模型下的優先級映射

4.1      原理介紹

在qos map-table模型下,優先級映射實現從IP優先級到802.1p、IP優先級的映射,以及從DSCP到802.1p、丟棄優先級、DSCP優先級的映射,其過程如下:

1.      在報文進入設備時,在端口信任報文攜帶的DSCP或者IP優先級的情況下,DSCP或者IP根據map-table被映射為802.1p優先級。

2.      設備根據802.1p與本地優先級之間默認的映射關系確定報文進入的隊列,從而針對隊列進行流量整形、擁塞避免、隊列調度等處理。

3.      在報文離開設備時,設備修改報文發送出去時所攜帶的優先級,以便其他設備根據報文的優先級提供相應的QoS服務。

說明:僅部分盒式交換機不支持DiffServ域模型下的優先級映射,只支持qos map-table模型下的優先級映射。

qos map-table模型下,優先級映射配置的核心內容是配置DSCP優先級/IP優先級與其他優先級之間的映射關系。設備上定義了缺省的qos map-table映射關系表,下面我們就來介紹一下這些缺省映射關系表。

4.2      DSCP優先級與其他優先級的映射

qos map-table模型下,DSCP優先級可以映射成802.1p優先級、丟棄優先級(DP)或DSCP優先級。

DSCP到802.1p、DP優先級的缺省映射關系如表8所示。

表8 DSCP到802.1p、DP優先級的缺省映射關系表

Input DSCP優先級

Output 802.1p優先級

Output DP優先級

0~7

0

0

8~15

1

0

16~23

2

0

24~31

3

0

32~39

4

0

40~47

5

0

48~55

6

0

56~63

7

0

缺省情況下,DSCP到DSCP的優先級映射關系是一一對應的。

4.3      IP優先級與其他優先級的映射

qos map-table模型下,IP優先級可以映射成802.1p優先級或IP優先級。IP優先級到802.1p、IP優先級的缺省映射關系如表9所示。

表9 IP到802.1p、IP優先級的缺省映射關系表

Input IP優先級

Output 802.1p優先級

Output IP優先級

0

0

0

1

1

1

2

2

2

3

3

3

4

4

4

5

5

5

6

6

6

7

7

7

4.4      802.1p優先級到本地優先級的映射

從直觀上來看,qos map-table模型下,設備是將進入設備的報文中攜帶的DSCP優先級、IP優先級,映射成了離開設備時報文攜帶的另一種優先級。

而實際上,在設備內部,也有一個本地處理的過程。所有進入設備的報文,其外部優先級字段都是先被映射為802.1p優先級,再根據802.1p優先級映射為本地優先級;設備根據本地優先級進行隊列調度的QoS處理。

缺省情況下,802.1p優先級到本地優先級的映射關系如表10所示。

表10 802.1p優先級到本地優先級的映射關系

802.1p優先級

本地優先級

0

BE

1

AF1

2

AF2

3

AF3

4

AF4

5

EF

6

CS6

7

CS7

說明:設備采用缺省的802.1p優先級到本地優先級的映射關系,且該映射關系不可修改。

5      優先級映射配置舉例

前面我們詳細介紹了優先級映射的原理及設備上的缺省映射關系。下面我們結合具體的示例,來看一下兩種模型下優先級映射的配置。

5.1      DiffServ域模型下的配置舉例

用戶需求

如圖4所示,SwitchA通過接口GE0/0/3與SwitchB互連,SwitchB與路由器互連。部門1和部門2可經由SwitchA、SwitchB和路由器訪問網絡。部門1和部門2分別屬於VLAN 100和VLAN 200。

來自部門1和2的報文802.1p優先級均為0,但是部門1的服務等級高,需要得到更好的QoS保證。通過定義DiffServ域,將來自部門1的數據報文優先級映射為4,將來自部門2的數據報文優先級映射為2,以提供差分服務。

20161229140958970004.png

圖4 優先級映射組網圖(DiffServ域模型)

配置思路

采用如下的思路配置優先級映射:

1.      創建VLAN,並配置各接口,部門1和部門2都能夠通過Switch訪問網絡。

2.      創建DiffServ域,將802.1p優先級映射為PHB行為和顏色。

3.      在SwitchA入接口GE0/0/1和GE0/0/2上綁定DiffServ域。

配置過程

SwitchA上的關鍵配置:

# 在SwitchA上創建DiffServ域domain1、domain2,並配置將部門1和部門2的802.1p優先級映射到本地優先級。

[SwitchA] diffserv domain domain1

[SwitchA-dsdomain-domain1] 8021p-inbound 0 phb af4 green

[SwitchA-dsdomain-domain1] quit

[SwitchA] diffserv domain domain2

[SwitchA-dsdomain-domain2] 8021p-inbound 0 phb af2 green

[SwitchA-dsdomain-domain2] quit

# 將DiffServ域domain1和domain2分別綁定到接口GE0/0/1、GE0/0/2。

[SwitchA] interface gigabitethernet 0/0/1

[SwitchA-GigabitEthernet0/0/1] trust upstream domain1

[SwitchA-GigabitEthernet0/0/1] quit

[SwitchA] interface gigabitethernet 0/0/2

[SwitchA-GigabitEthernet0/0/2] trust upstream domain2

[SwitchA-GigabitEthernet0/0/2] quit

配置完成后,可以通過命令display diffserv domain [ all | name ds-domain-name ]查看配置。

配置驗證

使用測試儀,分別模擬部門1和部門2向SwitchA的接口GE0/0/1和GE0/0/2發送報文。發送的報文分別屬於VLAN 100和VLAN 200,攜帶的802.1p優先級為0。

接口GE0/0/1上接收到的報文如下圖所示:

20161229140959973005.png

接口GE0/0/2接口上接收到的報文如下圖所示:

20161229141000211006.png

報文到達接口,設備對報文進行優先級映射,然后通過接口GE0/0/3向SwitchB轉發。在SwitchB上對接收到的報文進行抓包,可以看到:

l  VLAN 100的報文其802.1p優先級被映射為4

20161229141000897007.png

l  VLAN200的報文其802.1p優先級被映射為2

20161229141001581008.png

后續用戶可以根據報文的802.1p優先級,配置其他QoS功能,實現差分服務。

現在,我們以SwitchA上接口GE0/0/1接收到的報文為例,再重新回顧一下設備對報文進行優先級映射的整個過程:

1.      接口GE0/0/1接收到來自VLAN 100、802.1p優先級為0的報文。根據8021p-inbound 0 phb af4 green命令,將其PHB映射成AF4。

2.      由於沒有修改本地優先級與各隊列之間的對應關系,SwitchA使用缺省的映射關系,因此報文進入隊列4。

3.      SwitchA通過接口GE0/0/3的隊列4將報文向SwitchB轉發,可以在SwitchA上通過執行命令display qos queue statistics加以驗證。這里只給出SwitchA上接口GE0/0/3隊列4的顯示信息,display回顯中的其他隊列的顯示信息省略。

[SwitchA] display qos queue statistics interface GigabitEthernet 0/0/3

————————————————————

Queue ID          : 4

CIR(kbps)         : 0

PIR(kbps)         : 1,000,000

Used Length(byte) : 0

Passed Packets    : 123,706,860

Passed Rate(pps)  : 412,356

Passed Bytes      : 12,865,511,178

Passed Rate(bps)  : 343,080,272

Dropped Packets   : 0

Dropped Rate(pps) : 0

Dropped Bytes     : 0

Dropped Rate(bps) : 0

————————————————————

可以看出,SwitchA的接口GE0/0/3通過隊列4向SwitchB發送的報文數量,與SwitchA的接口GE0/0/1接收到的測試儀發送的報文數量基本一致。

20161229141002547009.png

如果SwitchA上通過命令qos local-precedence-queue-map local-precedence queue-index改變本地優先級與隊列之間的對應關系,則在接口GE0/0/3上報文的隊列將被改變。例如SwitchA上配置qos local-precedence-queue-map af4 7后,SwitchA會通過接口GE0/0/3的隊列7將報文向SwitchB轉發。

[SwitchA] display qos queue statistics interface GigabitEthernet 0/0/3

————————————————————

Queue ID          : 7

CIR(kbps)         : 0

PIR(kbps)         : 1,000,000

Used Length(byte) : 0

Passed Packets    : 124,574,406

Passed Rate(pps)  : 349,039

Passed Bytes      : 15,928,667,594

Passed Rate(bps)  : 290,400,352

Dropped Packets   : 0

Dropped Rate(pps) : 0

Dropped Bytes     : 0

Dropped Rate(bps) : 0 ————————————————————

可以看出,SwitchA的接口GE0/0/3通過隊列7向SwitchB發送的報文數量,與SwitchA的接口GE0/0/1接收到的測試儀發送的報文數量基本一致。

20161229141003395010.png

5.2      qos map-table模型下的配置舉例

用戶需求

如圖5所示,SwitchC與路由器互連,部門1和部門2可經由SwitchA和SwitchB訪問網絡。部門1和部門2分別屬於VLAN 100和VLAN 200。

部門1需要得到更好的QoS保證,因此將來自部門1的數據報文DSCP優先級映射為45,將來自部門2的數據報文DSCP優先級映射為30。設備信任報文的DSCP優先級。當擁塞發生時,優先處理DSCP優先級高的報文。

20161229141004440011.png

圖5 優先級映射組網圖(qos map-table模型)

配置思路

采用如下的思路配置優先級映射:

1.      創建VLAN,並配置各接口,使企業都能夠訪問網絡。

2.      配置優先級映射,將來自部門1的數據報文DSCP優先級映射為45,將來自部門2的數據報文DSCP優先級映射為30。

配置過程

SwitchA上的關鍵配置:

# 配置接口信任報文的DSCP優先級。

[SwitchA] interface gigabitethernet 0/0/1

[SwitchA-GigabitEthernet0/0/1] trust dscp

[SwitchA-GigabitEthernet0/0/1] quit

[SwitchA] interface gigabitethernet 0/0/2

[SwitchA-GigabitEthernet0/0/2] trust dscp

[SwitchA-GigabitEthernet0/0/2] quit

# 配置優先級映射。

[SwitchA] qos map-table dscp-dscp

[SwitchA-dscp-dscp] input 0 to 63 output 45

[SwitchA-dscp-dscp] quit

SwitchB上的關鍵配置:

# 配置接口信任報文的DSCP優先級。

[SwitchB] interface gigabitethernet 0/0/1

[SwitchB-GigabitEthernet0/0/1] trust dscp

[SwitchB-GigabitEthernet0/0/1] quit

[SwitchB] interface gigabitethernet 0/0/2

[SwitchB-GigabitEthernet0/0/2] trust dscp

[SwitchB-GigabitEthernet0/0/2] quit

# 配置優先級映射。

[SwitchB] qos map-table dscp-dscp

[SwitchB-dscp-dscp] input 0 to 63 output 30

[SwitchB-dscp-dscp] quit

配置完成后可以通過命令display qos map-table dscp-dscp查看配置的映射關系表。

配置驗證

使用測試儀,分別模擬部門1和部門2向SwitchA、SwitchB的接口GE0/0/1發送報文。發送的報文分別屬於VLAN 100和VLAN 200,攜帶的DSCP優先級為0。

在SwitchA、SwitchB的接口GE0/0/2上可以看到,報文的DSCP優先級分別被改成45和30。

驗證過程與“5.1 DiffServ域模型下的配置舉例”中的驗證過程類似,通過抓包查看報文的DSCP優先級即可,具體過程不再贅述。

6      小結

優先級映射配置采用何種模型,取決於設備款型對模型的支持情況。

通過優先級映射對報文進行分類之后,就可以根據需要配置其他的QoS功能,如流量監管、流量整形、隊列調度等,從而提供差分服務。

下一期專題,我們就將詳細介紹流量監管、流量整形和接口限速。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM