ถ่ายโอนช้ากว่าระยะทาง


19

จาก NY Datacenter ของเราการถ่ายโอนไปยังสถานที่ที่อยู่ห่างออกไปจะมีประสิทธิภาพต่ำ

ด้วยการทดสอบความเร็วเพื่อทดสอบสถานที่ต่าง ๆ เราสามารถอัปลิงค์อัปลิงค์ 100 mbit ไปยังบอสตันและฟิลาเดลเฟียได้อย่างง่ายดาย เมื่อฉันใช้การทดสอบความเร็วไปยังตำแหน่งบนชายฝั่งตะวันตกของสหรัฐอเมริกาหรือยุโรปฉันมักจะเห็นเพียงประมาณ 9 mbit / s

ปฏิกิริยาแรกของฉันคือว่านี่เป็นปัญหาการปรับสเกลหน้าต่าง (Bandwidth Delay Product) อย่างไรก็ตามฉันได้ปรับด้วยพารามิเตอร์เคอร์เนล Linux บนเครื่องทดสอบบนชายฝั่งตะวันตกและใช้ iperf จนถึงจุดที่หน้าต่างมีขนาดเพียงพอที่จะรองรับ 100 เมกะไบต์ต่อวินาทีและยังคงมีความเร็วช้า (ตรวจสอบในการจับภาพ) ฉันได้ลองปิดการใช้งานอัลกอริทึม Nagle

เราได้รับประสิทธิภาพที่แย่จากทั้ง Linux และ Windows แต่มันแย่กว่ามาก (1 / 3rd) ความเร็วในการใช้ Windows

รูปร่างของการถ่ายโอน (ไม่มี Nagle) คือ:ป้อนคำอธิบายรูปภาพที่นี่

Dip ประมาณ 10 วินาทีมี Acks ซ้ำกันประมาณ 100 ครั้ง

ขนาดของรูปร่างของหน้าต่างขนาดเล็กของผู้รับเมื่อเวลาผ่านไปคือ:

ป้อนคำอธิบายรูปภาพที่นี่

มีความคิดเห็นเกี่ยวกับสถานที่ที่จะไปติดกับคอขวดของเราหรือไม่

ผลการทดสอบความเร็วบางส่วน (อัปโหลดโดยใช้ speedtest.net):

  • ฟิลาเดลเฟีย: 44 mbit (ผู้ที่ใช้เว็บไซต์ของเราใช้ส่วนที่เหลือ ;-))
  • ไมอามี: 15 mbit
  • ดัลลัส: 14 mbit
  • ซานโฮเซ: 9 mbit
  • เบอร์ลิน: 5 mbit
  • ซิดนีย์: 2.9 mbit

ข้อมูลเพิ่มเติม:
ไมอามี: 69.241.6.18

 2  stackoverflow-nyc-gw.peer1.net (64.34.41.57)  0.579 ms  0.588 ms  0.594 ms
 3  gig4-0.nyc-gsr-d.peer1.net (216.187.123.6)  0.562 ms  0.569 ms  0.565 ms
 4  xe-7-2-0.edge1.newyork1.level3.net (4.78.132.65)  0.634 ms  0.640 ms  0.637 ms
 5  vlan79.csw2.newyork1.level3.net (4.68.16.126)  4.120 ms  4.126 ms vlan89.csw3.newyork1.level3.net (4.68.16.190)  0.673 ms
 6  ae-81-81.ebr1.newyork1.level3.net (4.69.134.73)  1.236 ms ae-91-91.ebr1.newyork1.level3.net (4.69.134.77)  0.956 ms ae-81-81.ebr1.newyork1.level3.net (4.69.134.73)  0.600 ms
 7  ae-10-10.ebr2.washington12.level3.net (4.69.148.50)  6.059 ms  6.029 ms  6.661 ms
 8  ae-1-100.ebr1.washington12.level3.net (4.69.143.213)  6.084 ms  6.056 ms  6.065 ms
 9  ae-6-6.ebr1.atlanta2.level3.net (4.69.148.105)  17.810 ms  17.818 ms  17.972 ms
10  ae-1-100.ebr2.atlanta2.level3.net (4.69.132.34)  18.014 ms  18.022 ms  18.661 ms
11  ae-2-2.ebr2.miami1.level3.net (4.69.140.141)  40.351 ms  40.346 ms  40.321 ms
12  ae-2-52.edge2.miami1.level3.net (4.69.138.102)  31.922 ms  31.632 ms  31.628 ms
13  comcast-ip.edge2.miami1.level3.net (63.209.150.98)  32.305 ms  32.293 ms comcast-ip.edge2.miami1.level3.net (64.156.8.10)  32.580 ms
14  pos-0-13-0-0-ar03.northdade.fl.pompano.comcast.net (68.86.90.230)  32.172 ms  32.279 ms  32.276 ms
15  te-8-4-ur01.northdade.fl.pompano.comcast.net (68.85.127.130)  32.244 ms  32.539 ms  32.148 ms
16  te-8-1-ur02.northdade.fl.pompano.comcast.net (68.86.165.42)  32.478 ms  32.456 ms  32.459 ms
17  te-9-3-ur05.northdade.fl.pompano.comcast.net (68.86.165.46)  32.409 ms  32.390 ms  32.544 ms
18  te-5-3-ur01.pompanobeach.fl.pompano.comcast.net (68.86.165.198)  33.938 ms  33.775 ms  34.430 ms
19  te-5-3-ur01.pompanobeach.fl.pompano.comcast.net (68.86.165.198)  32.896 ms !X * *

69.241.6.0/23 *[BGP/170] 1d 00:55:07, MED 3241, localpref 61, from 216.187.115.12
AS path: 3356 7922 7922 7922 20214 I
> to 216.187.115.166 via xe-0/0/0.0

ซานโฮเซ: 208.79.45.81

 2  stackoverflow-nyc-gw.peer1.net (64.34.41.57)  0.477 ms  0.549 ms  0.547 ms
 3  gig4-0.nyc-gsr-d.peer1.net (216.187.123.6)  0.543 ms  0.586 ms  0.636 ms
 4  xe-7-2-0.edge1.newyork1.level3.net (4.78.132.65)  0.518 ms  0.569 ms  0.566 ms
 5  vlan89.csw3.newyork1.level3.net (4.68.16.190)  0.620 ms vlan99.csw4.newyork1.level3.net (4.68.16.254)  9.275 ms vlan89.csw3.newyork1.level3.net (4.68.16.190)  0.759 ms
 6  ae-62-62.ebr2.newyork1.level3.net (4.69.148.33)  1.848 ms  1.189 ms ae-82-82.ebr2.newyork1.level3.net (4.69.148.41)  1.011 ms
 7  ae-2-2.ebr4.sanjose1.level3.net (4.69.135.185)  69.942 ms  68.918 ms  69.451 ms
 8  ae-81-81.csw3.sanjose1.level3.net (4.69.153.10)  69.281 ms ae-91-91.csw4.sanjose1.level3.net (4.69.153.14)  69.147 ms ae-81-81.csw3.sanjose1.level3.net (4.69.153.10)  69.495 ms
 9  ae-23-70.car3.sanjose1.level3.net (4.69.152.69)  69.863 ms ae-13-60.car3.sanjose1.level3.net (4.69.152.5)  69.860 ms ae-43-90.car3.sanjose1.level3.net (4.69.152.197)  69.661 ms
10  smugmug-inc.car3.sanjose1.level3.net (4.71.112.10)  73.298 ms  73.290 ms  73.274 ms
11  speedtest.smugmug.net (208.79.45.81)  70.055 ms  70.038 ms  70.205 ms

208.79.44.0/22 *[BGP/170] 4w0d 08:03:46, MED 0, localpref 59, from 216.187.115.12
AS path: 3356 11266 I
> to 216.187.115.166 via xe-0/0/0.0

Philly: 68.87.64.49

 2  stackoverflow-nyc-gw.peer1.net (64.34.41.57)  0.578 ms  0.576 ms  0.570 ms
 3  gig4-0.nyc-gsr-d.peer1.net (216.187.123.6)  0.615 ms  0.613 ms  0.602 ms
 4  xe-7-2-0.edge1.newyork1.level3.net (4.78.132.65)  0.584 ms  0.580 ms  0.574 ms
 5  vlan79.csw2.newyork1.level3.net (4.68.16.126)  0.817 ms vlan69.csw1.newyork1.level3.net (4.68.16.62)  9.518 ms vlan89.csw3.newyork1.level3.net (4.68.16.190)  9.712 ms
 6  ae-91-91.ebr1.newyork1.level3.net (4.69.134.77)  0.939 ms ae-61-61.ebr1.newyork1.level3.net (4.69.134.65)  1.064 ms ae-81-81.ebr1.newyork1.level3.net (4.69.134.73)  1.075 ms
 7  ae-6-6.ebr2.newyork2.level3.net (4.69.141.22)  0.941 ms  1.298 ms  0.907 ms
 8  * * *
 9  comcast-ip.edge1.newyork2.level3.net (4.71.186.14)  3.187 ms comcast-ip.edge1.newyork2.level3.net (4.71.186.34)  2.036 ms comcast-ip.edge1.newyork2.level3.net (4.71.186.2)  2.682 ms
10  te-4-3-ar01.philadelphia.pa.bo.comcast.net (68.86.91.162)  3.507 ms  3.716 ms  3.716 ms
11  te-9-4-ar01.ndceast.pa.bo.comcast.net (68.86.228.2)  7.700 ms  7.884 ms  7.727 ms
12  te-4-1-ur03.ndceast.pa.bo.comcast.net (68.86.134.29)  8.378 ms  8.185 ms  9.040 ms

68.80.0.0/13 *[BGP/170] 4w0d 08:48:29, MED 200, localpref 61, from 216.187.115.12
AS path: 3356 7922 7922 7922 I
> to 216.187.115.166 via xe-0/0/0.0

เบอร์ลิน: 194.29.226.25

 2  stackoverflow-nyc-gw.peer1.net (64.34.41.57)  0.483 ms  0.480 ms  0.537 ms
 3  oc48-po2-0.nyc-telx-dis-2.peer1.net (216.187.115.133)  0.532 ms  0.535 ms  0.530 ms
 4  oc48-so2-0-0.ldn-teleh-dis-1.peer1.net (216.187.115.226)  68.550 ms  68.614 ms  68.610 ms
 5  linx1.lon-2.uk.lambdanet.net (195.66.224.99)  81.481 ms  81.463 ms  81.737 ms
 6  dus-1-pos700.de.lambdanet.net (82.197.136.17)  80.767 ms  81.179 ms  80.671 ms
 7  han-1-eth020.de.lambdanet.net (217.71.96.77)  97.164 ms  97.288 ms  97.270 ms
 8  ber-1-eth020.de.lambdanet.net (217.71.96.153)  89.488 ms  89.462 ms  89.477 ms
 9  ipb-ber.de.lambdanet.net (217.71.97.82)  104.328 ms  104.178 ms  104.176 ms
10  vl506.cs22.b1.ipberlin.com (91.102.8.4)  90.556 ms  90.564 ms  90.553 ms
11  cic.ipb.de (194.29.226.25)  90.098 ms  90.233 ms  90.106 ms

194.29.224.0/19 *[BGP/170] 3d 23:14:47, MED 0, localpref 69, from 216.187.115.15
AS path: 13237 20647 I
> to 216.187.115.182 via xe-0/1/0.999

ปรับปรุง:

ขุดลึกลงไปอีกเล็กน้อยกับ Tall Jeff เราพบสิ่งที่แปลก ตาม tcpdump บนที่ผู้ส่งด้านมันส่งแพ็กเก็ตเป็น 65k แพ็คเก็ตผ่านทางอินเทอร์เน็ต เมื่อเราดูที่ทิ้งทางด้านรับพวกเขามาถึงส่วน 1448 ตามที่คุณคาดหวัง

นี่คือลักษณะของการถ่ายโอนข้อมูลแพ็คเก็ตที่ด้านผู้ส่ง:ป้อนคำอธิบายรูปภาพที่นี่

สิ่งที่เกิดขึ้นคือผู้ส่งคิดว่ามันเป็นเพียงการส่งแพ็คเก็ต 64k แต่ในความเป็นจริงเท่าที่ผู้รับมีความกังวลก็คือการส่งแพ็คเก็ต ผลลัพธ์ที่ได้คือการควบคุมความแออัด คุณสามารถดูนี่เป็นกราฟของความยาวของแพ็คเก็ตของแพ็กเก็ตข้อมูลที่ผู้ส่งส่งมา:

ป้อนคำอธิบายรูปภาพที่นี่

ใครรู้ว่าสิ่งที่อาจทำให้ผู้ส่งคิดว่ามี 64k MTU? บางทีบาง/proc, ethtoolหรือifconfig parameter? ( ifconfigแสดง MTU คือ 1500) การคาดเดาที่ดีที่สุดของฉันตอนนี้คือการเร่งฮาร์ดแวร์บางประเภท - แต่ฉันไม่แน่ใจว่าเฉพาะเจาะจง

Subedit 2-2 IV:
เพิ่งมีความคิดเนื่องจากแพ็คเก็ต 64k เหล่านี้มี DF bit set อาจเป็นเพราะผู้ให้บริการของฉันแยกส่วนพวกมันต่อไปและทำให้การค้นพบอัตโนมัติของ MSS! หรือบางทีไฟร์วอลล์ของเราได้รับการกำหนดค่าผิดพลาด ...

Adjunct Edit 9.73.4 20-60:
สาเหตุที่ฉันเห็นแพ็คเก็ต 64k เป็นเพราะการถ่ายเซ็กเมนต์ (tso และ gso, ดู ethtool -K) เปิดอยู่ หลังจากปิดไปแล้วฉันไม่เห็นการปรับปรุงความเร็วในการโอน รูปร่างมีการเปลี่ยนแปลงเพียงเล็กน้อยและการส่งสัญญาณใหม่นั้นอยู่ในส่วนที่เล็กกว่า:ป้อนคำอธิบายรูปภาพที่นี่

ฉันได้ลองอัลกอริทึมความแออัดที่แตกต่างกันทั้งหมดบน Linux โดยไม่มีการปรับปรุง ผู้ให้บริการ NY ของฉันลองอัปโหลดไฟล์ไปยังเซิร์ฟเวอร์ทดสอบ ftp ในหรือจากสถานที่ที่เราอยู่และกำลังเพิ่มขึ้น 3 เท่า

รายงาน MTR ที่ร้องขอจาก NY ไปยัง OR:

root@ny-rt01:~# mtr haproxy2.stackoverflow.com -i.05 -s 1400 -c 500 -r
HOST: ny-rt01.ny.stackoverflow.co Loss%   Snt   Last   Avg  Best  Wrst StDev
  1. stackoverflow-nyc-gw.peer1.n  0.0%   500    0.6   0.6   0.5  18.1   0.9
  2. gig4-0.nyc-gsr-d.peer1.net    0.0%   500    0.6   0.6   0.5  14.8   0.8
  3. 10ge.xe-0-0-0.nyc-telx-dis-1  0.0%   500    0.7   3.5   0.5  99.7  11.3
  4. nyiix.he.net                  0.0%   500    8.5   3.5   0.7  20.8   3.9
  5. 10gigabitethernet1-1.core1.n  0.0%   500    2.3   3.5   0.8  23.5   3.8
  6. 10gigabitethernet8-3.core1.c  0.0%   500   20.1  22.4  20.1  37.5   3.6
  7. 10gigabitethernet3-2.core1.d  0.2%   500   72.2  72.5  72.1  84.4   1.5
  8. 10gigabitethernet3-4.core1.s  0.2%   500   72.2  72.6  72.1  92.3   1.9
  9. 10gigabitethernet1-2.core1.p  0.4%   500   76.2  78.5  76.0 100.2   3.6
 10. peak-internet-llc.gigabiteth  0.4%   500   76.3  77.1  76.1 118.0   3.6
 11. ge-0-0-2-cvo-br1.peak.org     0.4%   500   79.5  80.4  79.0 122.9   3.6
 12. ge-1-0-0-cvo-core2.peak.org   0.4%   500   83.2  82.7  79.8 104.1   3.2
 13. vlan5-cvo-colo2.peak.org      0.4%   500   82.3  81.7  79.8 106.2   2.9
 14. peak-colo-196-222.peak.org    0.4%   499   80.1  81.0  79.7 117.6   3.3

ประสิทธิภาพต่ำของคุณใน Windows 2008 r2 หรือไม่
Jim B

Windows 2008 R2 นั้นแย่กว่า Linux แต่ด้วย Linux ฉันยังสามารถดึง 20-30mbit ได้เท่านั้น ฉันลองปรับแต่ง Windows ทุกประเภทโดยเฉพาะอย่างยิ่งกับสิ่งต่าง ๆ ที่มีผลต่อการปรับขนาดหน้าต่าง แต่ทฤษฎีของฉันก็คือการเชื่อมต่อนั้นกำลังดูดและลีนุกซ์ก็จัดการกับการเชื่อมต่อที่ดีขึ้นเล็กน้อย
Kyle Brandt

2
การเดาครั้งแรกของฉันจะเป็นเส้นทางที่ไม่ดี / ช้าใน ISP แห่งใดแห่งหนึ่งระหว่างที่ตั้งของคุณกับชายฝั่งตะวันตก / ยุโรป
xeon

1
เนื่องจากเส้นทาง AS แตกต่างกันไปสำหรับพื้นที่ที่มีประสิทธิภาพต่ำดูเหมือนว่าจะเป็นเส้นทางต้นน้ำ
Kyle Brandt

1
หากคุณไม่ได้รับผลลัพธ์ที่ดีกับ UDP แล้ว TCP จะไม่ช่วยแน่นอน (แน่นอนให้แน่ใจว่าคุณสามารถเรียกใช้ความเร็วในการเชื่อมโยงภายในกับ UDP ได้มิฉะนั้นฮาร์ดแวร์ทดสอบ iperf ของคุณอาจมีข้อบกพร่อง)
Jed Daniels

คำตอบ:


5

ตรวจสอบให้แน่ใจว่าหน้าต่าง TCP เปิดกว้างพอที่จะครอบคลุมผลิตภัณฑ์ที่มีความล่าช้าในแบนด์วิดท์จะเป็นครั้งแรกที่ฉันเดาเช่นกัน สมมติว่ามีการกำหนดค่าอย่างถูกต้อง (และรองรับทั้งสองด้าน) ฉันจะตรวจสอบการติดตามแพ็คเก็ตต่อไปเพื่อให้แน่ใจว่าหน้าต่างกำลังเปิดขึ้นจริงและฮอปส์อันใดอันหนึ่งในพา ธ ไม่ได้ปรับขนาดหน้าต่าง ถ้านั่นเป็นสิ่งที่ดีและคุณมั่นใจว่าคุณไม่ได้ต่อสู้กับแบนด์วิดท์ที่ จำกัด ในเส้นทางสาเหตุที่เป็นไปได้สำหรับปัญหาของคุณคือแพ็คเก็ตแบบสุ่มลดลง สมมติฐานนี้ได้รับการสนับสนุนโดยการระบุ ACK ที่ซ้ำกันที่คุณกล่าวถึง (ACK ที่ซ้ำกันโดยทั่วไปเป็นผลโดยตรงของข้อมูลที่สูญหาย) โปรดทราบด้วยผลิตภัณฑ์ที่มีแบนด์วิดท์ล่าช้าขนาดใหญ่ดังนั้นหน้าต่างบานเลื่อนแบบเปิดขนาดใหญ่

หมายเหตุด้านข้าง: สำหรับการถ่ายโอนข้อมูลจำนวนมากผ่าน TCP และผ่านการเชื่อมต่อ WAN multi-hop ไม่จำเป็นต้องมีหรือเหตุผลในการปิดการใช้งาน Nagle ในความเป็นจริงแล้วสถานการณ์ที่แน่นอนคือสาเหตุที่ Nagle มีอยู่จริง โดยทั่วไปแล้ว Nagle จะต้องปิดการใช้งานสำหรับการเชื่อมต่อแบบอินเทอร์แอคทีฟซึ่งดาต้าแกรมขนาดย่อยของ MTU จำเป็นต้องถูกบังคับให้ออกโดยไม่ล่าช้า เช่น: สำหรับการถ่ายโอนจำนวนมากคุณต้องการข้อมูลมากที่สุดในแต่ละแพ็กเก็ตให้มากที่สุด


1

คุณปรับแต่งแพ็กเก็ตที่เรียงลำดับใหม่หรือไม่? ตรวจสอบบน tcp_reordering ที่ / proc บน Linux ในท่อยาวมันเป็นเรื่องธรรมดาที่จะเกิดเอฟเฟกต์ multipath ทำให้เกิดการสูญเสียแพ็กเก็ตปลอมการส่งสัญญาณซ้ำและความเร็วที่คุณส่งในแผนภูมิลดลง มันทำให้ Acks ซ้ำซ้อนมากดังนั้นจึงควรตรวจสอบ อย่าลืมว่าคุณต้องปรับจูนทั้งสองด้านของท่อเพื่อให้มีตัวต้านทานที่ดีและต้องใช้ลูกบาศก์อย่างน้อย โพรโทคอลแบบโต้ตอบเช่น ftp สามารถเป็นอันตรายต่อ tcp ใด ๆ สำหรับการเพิ่มประสิทธิภาพไพพ์แบบยาวที่คุณสามารถทำได้ ถ้าคุณไม่ถ่ายโอนไฟล์ขนาดใหญ่เท่านั้น


-2

สิ่งที่คุณเห็นเป็นเรื่องปกติสำหรับฉันโดยขึ้นอยู่กับความล่าช้าที่คุณรายงานไปยังเว็บไซต์ต่างๆของคุณ ความหน่วงแฝงจะส่งผ่านปริมาณงานเกือบทุกการเชื่อมต่อโดยไม่คำนึงถึงแบนด์วิดท์ที่มีอยู่อย่างรวดเร็ว

Silver Peak เสนอตัวประมาณค่าอย่างรวดเร็วและสกปรกสำหรับปริมาณงานที่คุณคาดว่าจะเห็นด้วยจำนวนแบนด์วิดท์ที่กำหนดในระดับเวลาแฝงที่กำหนดที่นี่: http://www.silver-peak.com/calculator/

เสียบการเชื่อมต่อ 100mbit ด้วยเวลาในการตอบสนองที่เหมาะสมและคุณจะพบว่าความเร็วของคุณนั้นเข้ากันได้ (โดยประมาณ) กับสิ่งที่คุณควรเห็น

สำหรับ Windows ที่ให้ประสิทธิภาพที่แย่กว่า Linux ฉันไม่สามารถให้คำแนะนำที่ดีได้ ฉันคิดว่าคุณกำลังทำการเปรียบเทียบแอปเปิ้ลกับแอปเปิ้ลกับฮาร์ดแวร์ที่เหมือนกัน (NICs โดยเฉพาะ) หรือไม่?


1
ฉันไม่เห็นว่าเหตุใดเวลาแฝงจะส่งผลต่อปริมาณงานในช่วงเวลาที่ผ่านมาหากมีหน้าต่างขนาดใหญ่พอที่จะรองรับผลิตภัณฑ์หน่วงเวลาแบนด์วิดท์
Kyle Brandt

มันเป็นเพียงลักษณะของสัตว์ร้ายเมื่อใช้งานด้วยการเชื่อมต่อเพียงครั้งเดียว หากคุณเริ่มการเชื่อมต่อหลาย ๆ ครั้งพร้อมกันไปยังปลายทางเดียวกันให้แบนด์วิดท์ที่มีอยู่ในปลายทั้งสองคุณจะกรอกมันได้รับการเชื่อมต่อพร้อมกันมากพอ ได้อ่านของrouterjockey.com/2009/05/07/how-does-latency-effect-throughput
Layn

2
@ Layn: สูตรนั้นในลิงค์นั้นเป็นวิธีการคำนวณแบนด์วิดท์ของผลิตภัณฑ์ล่าช้า ด้วยขนาดของหน้าต่างที่ใหญ่พอมันไม่สำคัญ การเชื่อมต่อ TCP จากตะวันออกไปตะวันตกไม่ได้มีข้อ จำกัด ที่ 9 บิตต่อวินาที - นั่นอาจเป็นเรื่องโง่
Kyle Brandt

1
@ Layn: คุณควรสำรองงบอย่างนั้นด้วยวิทยาศาสตร์เล็กน้อย (หรือข้อมูล ... ) ฉันรับรองว่าคุณเข้าใจผิด เรามีสำนักงานอยู่ทั่วโลกและเราสามารถทำได้ดีกว่าสิ่งที่คุณให้เป็นตัวอย่าง ฉันเพิ่งทำการทดสอบ scp จากมอนทรีออลถึงบัวโนสไอเรส (ความล่าช้า 145ms) ที่ 28.8 mbps
DictatorBob

2
@ เลย์น: คุณควรจะเข้าใกล้ความอิ่มตัวของลิงค์ 100Mbps ด้วย UDP โดยไม่คำนึงถึงความล่าช้าดังนั้นข้อโต้แย้งของคุณก็ไม่ได้เกิดขึ้นจริง
Jed Daniels
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.