Người nhận giới hạn kích thước cửa sổ TCP đến 64,512


34

Sự kiện (vui lòng xác định bất kỳ tuyên bố sai):

  1. Tôi có kết nối 100 Mbps giữa hai trang web cách nhau 80 ms

  2. Đây là một kết nối chất béo dài có thể được hưởng lợi từ kích thước cửa sổ TCP lớn có thể lên tới 100 Mbps * 0,08 giây = 1.000.000 byte

  3. Cả hai máy đều đang chạy Windows Server 2012. "Nhận mức điều chỉnh tự động của cửa sổ" là bình thường trên cả hai. "Heuristic mở rộng cửa sổ" bị vô hiệu hóa trên cả hai.

  4. Tôi đã chạy "iperf -s" ở một bên và "iperf -c" ở bên kia. Việc chuyển tiền xảy ra ở mức 5 Mbps. Tôi nhận được kết quả tương tự đi theo hướng khác.

  5. Cả hai bên đều quảng cáo hỗ trợ cho các cửa sổ trượt TCP trong các SYN của họ.

  6. Người nhận đã yêu cầu kích thước cửa sổ TCP là 64.512 byte (0xFC00) trong toàn bộ quá trình chạy với giá trị tỷ lệ cửa sổ TCP là "không thay đổi" (0x000).

  7. Mạng có thể xử lý kích thước cửa sổ lớn hơn (xem sơ đồ trình tự bên dưới)

  8. Người nhận giữ cửa sổ nhỏ hơn mạng hỗ trợ

  9. Kết nối này đang diễn ra trong VPN IPSEC. MTU của giao diện đường hầm được giảm xuống còn 1400 byte theo cả hai hướng.

Câu hỏi

  • Tại sao máy thu giữ cửa sổ nhỏ?

Không trả lời

  • Mạng bị hỏng

    Các máy Linux chạy trên cùng một mạng mở cửa sổ TCP lên 1,5 megabyte và truyền dữ liệu với băng thông gấp 6 lần

  • Heuristic mở rộng cửa sổ được kích hoạt

    Các heuristic mở rộng cửa sổ bị vô hiệu hóa (xem đầu ra của "Netsh interface tcp show heuristic" bên dưới)

  • Nhận cửa sổ Điều chỉnh mức tự động không bình thường

    Nhận cửa sổ Mức tự động điều chỉnh là bình thường (xem đầu ra của "giao diện Netsh tcp hiển thị toàn cầu" bên dưới)

  • Điều này chỉ không hoạt động tốt trên một máy ảo trong ESXi

    Tôi có hiệu suất tốt hơn 6 lần trên một máy linux ảo chạy trên cùng một máy chủ.


Cập nhật ngày 1 tháng 6 năm 2015 4:30 chiều PDT

Tôi đã sửa đổi thử nghiệm bằng cách đặt linux vào một bên của kết nối. Chắc chắn, khi linux gửi dữ liệu tới Windows Server 2012, Windows cung cấp một cửa sổ nhận TCP quá nhỏ (64.512 byte).

Khi tôi gửi dữ liệu từ Windows sang linux, linux cung cấp cửa sổ nhận TCP đủ lớn (1.365.120 byte). Tuy nhiên, Windows hạn chế gửi tối đa ~ 60.000 byte trong chuyến bay.


Cập nhật ngày 2 tháng 6 năm 2015 3:00 chiều PDT

Một bước gần hơn với nguyên nhân gốc rễ. Trong thiết lập của tôi, cả SO_SNDBUF và SO_RCVBUF đều không được đặt (bởi iperf). Đây là các bộ đệm gửi và nhận có hiệu quả ràng buộc cửa sổ nhận. Khi không chỉ định các giá trị này, Windows Server 2012 cung cấp giá trị mặc định là 64 kB. Vì vậy, câu hỏi là bây giờ:

Câu hỏi

  • Khi một cái không được chỉ định, tại sao Windows Server 2012 không tự động tăng SO_SNDBUF / SO_RCVBUF để phù hợp với các ống mỡ dài như được mô tả tại MSDN ?

Không trả lời

  • "Netsh winock show autotuning" bị vô hiệu hóa

    Nó được kích hoạt.


Cập nhật ngày 3 tháng 8 năm 2015 4:00 chiều PDT

Netsh rõ ràng đã được thay thế bằng Set-NetTCPSding và gia đình. Get-NetTCPSding kết hợp với Get-NetTCPConnection cho thấy tôi đang hoạt động ở chế độ 'Internet' cung cấp cho tôi các cài đặt này:

SettingName                   : Internet
MinRto(ms)                    : 300
InitialCongestionWindow(MSS)  : 4
CongestionProvider            : CTCP
CwndRestart                   : False
DelayedAckTimeout(ms)         : 50
MemoryPressureProtection      : Enabled
AutoTuningLevelLocal          : Normal
AutoTuningLevelGroupPolicy    : NotConfigured
AutoTuningLevelEffective      : Local
EcnCapability                 : Enabled
Timestamps                    : Disabled
InitialRto(ms)                : 3000
ScalingHeuristics             : Disabled
DynamicPortRangeStartPort     : 49152
DynamicPortRangeNumberOfPorts : 16384

Cài đặt TCP người gửi

PS C:\Users\acs> netsh interface tcp show global
Querying active state...

TCP Global Parameters
----------------------------------------------
Receive-Side Scaling State          : enabled
Chimney Offload State               : disabled
NetDMA State                        : disabled
Direct Cache Access (DCA)           : disabled
Receive Window Auto-Tuning Level    : normal
Add-On Congestion Control Provider  : none
ECN Capability                      : enabled
RFC 1323 Timestamps                 : disabled
Initial RTO                         : 3000
Receive Segment Coalescing State    : enabled

PS C:\Users\acs> netsh interface tcp show heuristics
TCP Window Scaling heuristics Parameters
----------------------------------------------
Window Scaling heuristics         : disabled
Qualifying Destination Threshold  : 3
Profile type unknown              : normal
Profile type public               : normal
Profile type private              : normal
Profile type domain               : normal

PS C:\Users\acs> Get-NetTCPSetting

SettingName                   : Automatic
MinRto(ms)                    : 
InitialCongestionWindow(MSS)  : 
CongestionProvider            : 
CwndRestart                   : 
DelayedAckTimeout(ms)         : 
MemoryPressureProtection      : 
AutoTuningLevelLocal          : 
AutoTuningLevelGroupPolicy    : 
AutoTuningLevelEffective      : 
EcnCapability                 : 
Timestamps                    : 
InitialRto(ms)                : 
ScalingHeuristics             : 
DynamicPortRangeStartPort     : 
DynamicPortRangeNumberOfPorts : 

SettingName                   : Custom
MinRto(ms)                    : 20
InitialCongestionWindow(MSS)  : 4
CongestionProvider            : DCTCP
CwndRestart                   : True
DelayedAckTimeout(ms)         : 10
MemoryPressureProtection      : Enabled
AutoTuningLevelLocal          : Normal
AutoTuningLevelGroupPolicy    : NotConfigured
AutoTuningLevelEffective      : Local
EcnCapability                 : Enabled
Timestamps                    : Disabled
InitialRto(ms)                : 3000
ScalingHeuristics             : Disabled
DynamicPortRangeStartPort     : 49152
DynamicPortRangeNumberOfPorts : 16384

SettingName                   : Compat
MinRto(ms)                    : 300
InitialCongestionWindow(MSS)  : 2
CongestionProvider            : Default
CwndRestart                   : False
DelayedAckTimeout(ms)         : 200
MemoryPressureProtection      : Enabled
AutoTuningLevelLocal          : Normal
AutoTuningLevelGroupPolicy    : NotConfigured
AutoTuningLevelEffective      : Local
EcnCapability                 : Enabled
Timestamps                    : Disabled
InitialRto(ms)                : 3000
ScalingHeuristics             : Disabled
DynamicPortRangeStartPort     : 49152
DynamicPortRangeNumberOfPorts : 16384

SettingName                   : Datacenter
MinRto(ms)                    : 20
InitialCongestionWindow(MSS)  : 4
CongestionProvider            : DCTCP
CwndRestart                   : True
DelayedAckTimeout(ms)         : 10
MemoryPressureProtection      : Enabled
AutoTuningLevelLocal          : Normal
AutoTuningLevelGroupPolicy    : NotConfigured
AutoTuningLevelEffective      : Local
EcnCapability                 : Enabled
Timestamps                    : Disabled
InitialRto(ms)                : 3000
ScalingHeuristics             : Disabled
DynamicPortRangeStartPort     : 49152
DynamicPortRangeNumberOfPorts : 16384

SettingName                   : Internet
MinRto(ms)                    : 300
InitialCongestionWindow(MSS)  : 4
CongestionProvider            : CTCP
CwndRestart                   : False
DelayedAckTimeout(ms)         : 50
MemoryPressureProtection      : Enabled
AutoTuningLevelLocal          : Normal
AutoTuningLevelGroupPolicy    : NotConfigured
AutoTuningLevelEffective      : Local
EcnCapability                 : Enabled
Timestamps                    : Disabled
InitialRto(ms)                : 3000
ScalingHeuristics             : Disabled
DynamicPortRangeStartPort     : 49152
DynamicPortRangeNumberOfPorts : 16384

Người gửi SYN

No.     Time           Source                Destination           Protocol Length Delta      Sequence number Acknowledgment number Bytes in flight Calculated window size Info
    814 5.036577000    10.10.0.21            10.11.0.1             TCP      66     0.000000000 0               0                                     64512                  49758→5001 [SYN, ECN, CWR] Seq=0 Win=64512 Len=0 MSS=1460 WS=1 SACK_PERM=1

Frame 814: 66 bytes on wire (528 bits), 66 bytes captured (528 bits) on interface 0
Ethernet II, Src: 00:11:22:33:44:55, Dst: aa:bb:cc:dd:ee:ff
Internet Protocol Version 4, Src: 10.10.0.21 (10.10.0.21), Dst: 10.11.0.1 (10.11.0.1)
Transmission Control Protocol, Src Port: 49758 (49758), Dst Port: 5001 (5001), Seq: 0, Len: 0
    Source Port: 49758 (49758)
    Destination Port: 5001 (5001)
    [Stream index: 73]
    [TCP Segment Len: 0]
    Sequence number: 0    (relative sequence number)
    Acknowledgment number: 0
    Header Length: 32 bytes
    .... 0000 1100 0010 = Flags: 0x0c2 (SYN, ECN, CWR)
    Window size value: 64512
    [Calculated window size: 64512]
    Checksum: 0x1451 [validation disabled]
    Urgent pointer: 0
    Options: (12 bytes), Maximum segment size, No-Operation (NOP), Window scale, No-Operation (NOP), No-Operation (NOP), SACK permitted
        Maximum segment size: 1460 bytes
        No-Operation (NOP)
        Window scale: 0 (multiply by 1)
            Kind: Window Scale (3)
            Length: 3
            Shift count: 0
            [Multiplier: 1]
        No-Operation (NOP)
        No-Operation (NOP)
        TCP SACK Permitted Option: True

Phối cảnh người gửi của biểu đồ trình tự nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

Cài đặt TCP nhận

PS C:\Users\acs> netsh interface tcp show global
Querying active state...

TCP Global Parameters
----------------------------------------------
Receive-Side Scaling State          : enabled
Chimney Offload State               : disabled
NetDMA State                        : disabled
Direct Cache Access (DCA)           : disabled
Receive Window Auto-Tuning Level    : normal
Add-On Congestion Control Provider  : none
ECN Capability                      : enabled
RFC 1323 Timestamps                 : disabled
Initial RTO                         : 3000
Receive Segment Coalescing State    : enabled

PS C:\Users\acs> netsh interface tcp show heuristics
TCP Window Scaling heuristics Parameters
----------------------------------------------
Window Scaling heuristics         : disabled
Qualifying Destination Threshold  : 3
Profile type unknown              : normal
Profile type public               : normal
Profile type private              : normal
Profile type domain               : normal

PS C:\Users\acs> Get-NetTCPSetting

SettingName                   : Automatic
MinRto(ms)                    : 
InitialCongestionWindow(MSS)  : 
CongestionProvider            : 
CwndRestart                   : 
DelayedAckTimeout(ms)         : 
MemoryPressureProtection      : 
AutoTuningLevelLocal          : 
AutoTuningLevelGroupPolicy    : 
AutoTuningLevelEffective      : 
EcnCapability                 : 
Timestamps                    : 
InitialRto(ms)                : 
ScalingHeuristics             : 
DynamicPortRangeStartPort     : 
DynamicPortRangeNumberOfPorts : 

SettingName                   : Custom
MinRto(ms)                    : 20
InitialCongestionWindow(MSS)  : 4
CongestionProvider            : DCTCP
CwndRestart                   : True
DelayedAckTimeout(ms)         : 10
MemoryPressureProtection      : Enabled
AutoTuningLevelLocal          : Normal
AutoTuningLevelGroupPolicy    : NotConfigured
AutoTuningLevelEffective      : Local
EcnCapability                 : Enabled
Timestamps                    : Disabled
InitialRto(ms)                : 3000
ScalingHeuristics             : Disabled
DynamicPortRangeStartPort     : 49152
DynamicPortRangeNumberOfPorts : 16384

SettingName                   : Compat
MinRto(ms)                    : 300
InitialCongestionWindow(MSS)  : 2
CongestionProvider            : Default
CwndRestart                   : False
DelayedAckTimeout(ms)         : 200
MemoryPressureProtection      : Enabled
AutoTuningLevelLocal          : Normal
AutoTuningLevelGroupPolicy    : NotConfigured
AutoTuningLevelEffective      : Local
EcnCapability                 : Enabled
Timestamps                    : Disabled
InitialRto(ms)                : 3000
ScalingHeuristics             : Disabled
DynamicPortRangeStartPort     : 49152
DynamicPortRangeNumberOfPorts : 16384

SettingName                   : Datacenter
MinRto(ms)                    : 20
InitialCongestionWindow(MSS)  : 4
CongestionProvider            : DCTCP
CwndRestart                   : True
DelayedAckTimeout(ms)         : 10
MemoryPressureProtection      : Enabled
AutoTuningLevelLocal          : Normal
AutoTuningLevelGroupPolicy    : NotConfigured
AutoTuningLevelEffective      : Local
EcnCapability                 : Enabled
Timestamps                    : Disabled
InitialRto(ms)                : 3000
ScalingHeuristics             : Disabled
DynamicPortRangeStartPort     : 49152
DynamicPortRangeNumberOfPorts : 16384

SettingName                   : Internet
MinRto(ms)                    : 300
InitialCongestionWindow(MSS)  : 4
CongestionProvider            : CTCP
CwndRestart                   : False
DelayedAckTimeout(ms)         : 50
MemoryPressureProtection      : Enabled
AutoTuningLevelLocal          : Normal
AutoTuningLevelGroupPolicy    : NotConfigured
AutoTuningLevelEffective      : Local
EcnCapability                 : Enabled
Timestamps                    : Disabled
InitialRto(ms)                : 3000
ScalingHeuristics             : Disabled
DynamicPortRangeStartPort     : 49152
DynamicPortRangeNumberOfPorts : 16384

Nhận tín hiệu

No.     Time           Source                Destination           Protocol Length Delta      Sequence number Acknowledgment number Bytes in flight Calculated window size Info
    817 5.110501000    10.11.0.1             10.10.0.21            TCP      70     0.073924000 0               1                                     64512                  5001→49758 [SYN, ACK, ECN] Seq=0 Ack=1 Win=64512 Len=0 MSS=1460 WS=1 SACK_PERM=1 [ETHERNET FRAME CHECK SEQUENCE INCORRECT]

Frame 817: 70 bytes on wire (560 bits), 70 bytes captured (560 bits) on interface 0
Ethernet II, Src: aa:bb:cc:dd:ee:ff, Dst: 00:11:22:33:44:55
Internet Protocol Version 4, Src: 10.11.0.1 (10.11.0.1), Dst: 10.10.0.21 (10.10.0.21)
Transmission Control Protocol, Src Port: 5001 (5001), Dst Port: 49758 (49758), Seq: 0, Ack: 1, Len: 0
    Source Port: 5001 (5001)
    Destination Port: 49758 (49758)
    [Stream index: 73]
    [TCP Segment Len: 0]
    Sequence number: 0    (relative sequence number)
    Acknowledgment number: 1    (relative ack number)
    Header Length: 32 bytes
    .... 0000 0101 0010 = Flags: 0x052 (SYN, ACK, ECN)
    Window size value: 64512
    [Calculated window size: 64512]
    Checksum: 0xb5bb [validation disabled]
    Urgent pointer: 0
    Options: (12 bytes), Maximum segment size, No-Operation (NOP), Window scale, No-Operation (NOP), No-Operation (NOP), SACK permitted
        Maximum segment size: 1460 bytes
        No-Operation (NOP)
        Window scale: 0 (multiply by 1)
            Kind: Window Scale (3)
            Length: 3
            Shift count: 0
            [Multiplier: 1]
        No-Operation (NOP)
        No-Operation (NOP)
        TCP SACK Permitted Option: True
    [SEQ/ACK analysis]

Phối cảnh thu của đồ thị trình tự nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây

Cửa sổ TCP nhập mô tả hình ảnh ở đây


1
Bạn có thể vui lòng thêm cấu hình chính xác - phần mềm VÀ phần cứng liên quan (card mạng) cho cả hai bên không?
TomTom

1
Âm thanh như điều chỉnh cửa sổ bị hạn chế .
David Schwartz

@TomTom Cả hai máy đều là máy ảo bên trong ESXi chạy trên HP Proliant DL380 G5. Bộ điều hợp ethernet ảo là Intel 82574L. Bộ điều hợp ethernet phần cứng là BCM5719.
Chris Stankevitz

@David Schwartz "nhận mức điều chỉnh tự động của cửa sổ" là bình thường trên cả hai và "heuristic mở rộng cửa sổ" bị vô hiệu hóa (xem cấu hình cập nhật trong OP). Tôi tin rằng điều này chỉ ra rằng điều chỉnh không bị hạn chế .
Chris Stankevitz

2
Tôi không nghĩ câu hỏi này sẽ dựa trên quan điểm, tôi nghĩ rằng vấn đề thực sự với nó là việc trả lời tốt sẽ yêu cầu gỡ lỗi các hệ thống / mạng của OP, chỉ có thể được thực hiện bởi anh ấy chứ không phải bởi chúng tôi .
peterh nói phục hồi Monica

Câu trả lời:


1

Tôi đã xem đây là một vấn đề cụ thể của trình điều khiển; trong trường hợp của tôi với bộ điều khiển mạng QLogic đang cố sử dụng TCPChimney. Liên kết này mô tả chức năng TCPChimney được thêm vào Windows 2008 - nhưng tôi khá chắc chắn rằng nó vẫn được áp dụng: https://support.microsoft.com/en-us/kb/951037

Tôi sẽ khuyên bạn nên thử nghiệm sau đây, theo thứ tự; sau mỗi lần kiểm tra, khởi động lại và xem liệu người nhận có bắt đầu tăng TCP RWIN như mong đợi hay không.

1) Tải các phiên bản mới nhất của trình điều khiển cho bộ điều hợp mạng trên máy tính nhận. 1) Vô hiệu hóa TCPChimney trên máy tính nhận 2) Vô hiệu hóa tất cả việc giảm tải 'Nhận TCP'. Điều này sẽ được tìm thấy trong Cài đặt nâng cao của Thuộc tính bộ điều hợp mạng (cùng khu vực sẽ đặt Tốc độ & song công) 3) Tắt tất cả giảm tải 'Gửi TCP' (cũng trong thuộc tính Nâng cao của Bộ điều hợp mạng)

(Và trái với nhận xét "Và kích thước cửa sổ TCP lớn hơn 65 nghìn là không tốt cho máy chủ, vì khi đó nhu cầu bộ nhớ cho các kết nối tăng lên. Chỉ riêng 65k cũng có thể không khiến bạn hài lòng. - user303507 ngày 6 tháng 8 '15 lúc 11:30", TCP lớn Nhận Windows không phải là xấu cho máy chủ. Trong trường hợp băng thông cao, liên kết có độ trễ cao (như rơle vệ tinh), các giá trị RWIN lớn là cần thiết để chúng tôi có thêm dữ liệu TCP "trong đường ống". Kết nối 600 Mbps với độ trễ 3000 ms, liên kết băng thông cao sẽ bị giới hạn ở khoảng 20 KBps, vì chỉ có 65 KB dữ liệu TCP không được truy cập có thể "ở trong đường ống" tại một thời điểm.)


0

Trông giống như một lỗi tự động Windows đối với tôi, có lẽ phải làm gì với điều này? https://support.microsoft.com/en-us/kb/932170

Bạn đã thử yêu cầu giá trị SO_RCVBUF lớn hơn bằng tay bằng cách sử dụng WskControlSocket chưa?


Về mặt kỹ thuật, các bộ đệm không có mối quan hệ với kích thước Cửa sổ TCP: stackoverflow.com/questions/14381303/increasing-tcp-window-size
Mary

Phil: Tôi đang chạy Windows Server 2012 ở cả hai phía để liên kết đó không được áp dụng, nhưng tôi nghi ngờ có lỗi nào đó. Tôi có thể yêu cầu SO_RCVBUF lớn hơn - và điều đó có ích - nhưng điều đó không giúp tôi hiểu những gì bị hỏng (xem "Cập nhật 2").
Chris Stankevitz

Mary: bộ đệm có liên quan gián tiếp đến kích thước cửa sổ. Ngăn xếp mạng sẽ nhận ra các bộ đệm nhỏ và do đó không làm tăng kích thước cửa sổ. Tôi mô tả điều này bằng cách sử dụng handwaving trong "Cập nhật 2".
Chris Stankevitz

0

Sử dụng trình tối ưu hóa mạng như Cisco WAAS hoặc Riverbed. Họ thực hiện nhanh chóng cục bộ, do đó bạn không cần quan tâm đến cài đặt máy chủ. Trong mạng lớn hơn, dù sao bạn cũng không có ảnh hưởng đến thiết lập máy chủ vì đây là các nhóm khác hoặc điều này được thuê ngoài.


Và kích thước cửa sổ TCP lớn hơn 65 nghìn có hại cho máy chủ, khi đó nhu cầu bộ nhớ cho các kết nối tăng lên. 65k một mình cũng có thể không làm bạn đủ hạnh phúc.
dùng303507

user303507: Tôi muốn hiểu những gì đang xảy ra với ngăn xếp mạng Windows Server 2012. Tôi không quan tâm đến việc che giấu vấn đề với một thiết bị mạng. Nhưng tôi đồng ý rằng việc mua một thiết bị mạng hoặc di chuyển các văn phòng của tôi gần nhau hơn sẽ giải quyết được vấn đề này.
Chris Stankevitz

Nhận xét của user303507 có thể đang đi đúng hướng - Tôi tự hỏi liệu mối quan tâm bộ nhớ có khiến các cửa sổ giới hạn kích thước cửa sổ dựa trên một số cài đặt đăng ký hoặc heuristic vô hình. Không phải đó là hành vi phù hợp, giả sử bạn đúng về tài liệu.
Dan Pritts

0

Dưới đây là một số thông tin tôi phát hiện ra có thể là câu trả lời bạn đang tìm kiếm. Lưu ý rằng việc đề cập đến giới hạn 64kb ở chế độ bị tắt có thể là đầu mối cho các giới hạn tương tự ở chế độ bình thường không được ghi lại.

Hãy thử bật chế độ "thử nghiệm" cho các mức Tự động Điều chỉnh thiên văn.

Khi cài đặt cấp độ Tự động điều chỉnh của Windows, các cài đặt có thể có như sau:

  • bình thường: giá trị mặc định, cho phép cửa sổ nhận phát triển để phù hợp với hầu hết các điều kiện
  • bị vô hiệu hóa: sử dụng một giá trị cố định cho cửa sổ nhận tcp. Giới hạn ở mức 64KB (giới hạn ở 65535).
  • highrestricted: cho phép cửa sổ nhận phát triển vượt quá giá trị mặc định của nó, rất bảo thủ
  • bị hạn chế: phần nào tăng trưởng bị hạn chế của cửa sổ nhận tcp vượt quá giá trị mặc định của nó
  • thử nghiệm: cho phép cửa sổ nhận phát triển để phù hợp với các kịch bản cực đoan (không được khuyến nghị, nó có thể làm giảm hiệu suất trong các tình huống phổ biến, chỉ dành cho mục đích nghiên cứu. Nó cho phép các giá trị RWIN trên 16 MB)

Điều đó sẽ có ý nghĩa nhưng OP cho thấy anh ta giới hạn ở mức 64 nghìn, thậm chí không ở mức 1024.
Jim B
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.