อะไรทำให้เกิดการบันทึก ACK ซ้ำกัน


19

เรากำลังตรวจสอบ Wireshark ที่รวบรวมจากเครื่องไคลเอนต์ไม่กี่เครื่องที่แสดงเร็กคอร์ด ACK ที่ซ้ำกันหลายชุดซึ่งจะทริกเกอร์การส่งซ้ำและแพ็กเก็ตที่ล้าสมัย

เหล่านี้จะแสดงในภาพหน้าจอต่อไปนี้ .26 เป็นลูกค้าและ. 252 เป็นเซิร์ฟเวอร์

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

อะไรทำให้บันทึก ACK ซ้ำกัน

พื้นหลังเพิ่มเติมถ้ามันช่วย:

เรากำลังตรวจสอบข้อกังวลเกี่ยวกับปริมาณงานของเครือข่ายที่ไซต์ลูกค้าหนึ่งแห่ง ปัญหาที่รับรู้จากมุมมองส่วนต่อประสานผู้ใช้คือข้อมูลกำลังถูกส่งช้าแม้จะมีการเชื่อมต่อ WAN ขนาด 1gbps ที่ต่ำกว่ามาตรฐาน

เครื่องไคลเอนต์เกือบทั้งหมดมีปัญหาเดียวกันทดสอบที่มากกว่า 20 เครื่อง เราพบสองเครื่องที่ไม่มีปัญหา เราอยู่ในขั้นตอนการระบุสิ่งที่แตกต่างในการกำหนดค่า เราสังเกตเห็นว่าในสองเครื่องที่ไม่มีปัญหาเราเคยเห็นระเบียน ACK ที่ซ้ำกันมากที่สุดเพียงหนึ่งรายการ เครื่องที่มีปัญหามักจะมีระเบียน ACK ที่ซ้ำกันสามรายการ ข้อแตกต่างที่น่าสังเกตอย่างหนึ่งคือเครื่องจักรที่ทำงานได้ดีทั้งหมดนั้นเป็นของสมาชิกของทีมปฏิบัติการเครือข่ายและเครื่องอื่น ๆ ทั้งหมดสำหรับพนักงาน "ปกติ" เครื่องควรจะเป็นมาตรฐาน แต่ผู้ดูแลระบบเครือข่ายอาจทำการเปลี่ยนแปลงในระบบท้องถิ่นของพวกเขาซึ่งเป็นอีกแง่มุมหนึ่งที่เรากำลังทำการวิจัย

เราพยายามเปลี่ยนการตั้งค่าTcpMaxDupAcksบนเซิร์ฟเวอร์ แต่ค่าที่เราต้องการจริงๆคือ 5 และช่วงที่ถูกต้องคือ 1-3 เท่านั้น

เซิร์ฟเวอร์คือ Windows Server 2003 ลูกค้าคือองค์กรทั้งหมดที่จัดการ Windows XP ลูกค้าทั้งหมดรวมถึงคนทำงานสองคนได้ติดตั้งระบบป้องกันไวรัสของ Symantec

นี่เป็นเว็บไซต์ลูกค้าเพียงแห่งเดียวจากหลายร้อยที่แสดงปัญหานี้

pathping แสดง RTMS 56ms และการสูญเสียแพ็กเก็ต 0/100 ที่สม่ำเสมอแม้จากเครื่องที่มีปัญหา

ขอบคุณ

แซม


ฮาร์ดแวร์การเปลี่ยนเส้นทางชนิดใดอยู่ระหว่างสองจุดปลาย
SpacemanSpiff

@SpacemanSpiff มีเราเตอร์ Cisco ASR 1006
Sam

พนักงานไอทีและลูกค้าอยู่บนอุปกรณ์สวิตชิ่งเดียวกันหรือไม่? คุณสามารถนำหนึ่งในเครื่องจักรของพวกเขาไปยังพื้นที่ไอทีและดูปัญหาหายไปได้หรือไม่?
SpacemanSpiff

คำตอบ:


25

หมายเหตุ: ฉันสมมติว่าการจับภาพนี้เกิดขึ้นในเครื่องไคลเอ็นต์

สรุปโดยย่อเกี่ยวกับการเรียงลำดับ TCP: TCP ส่งกระแสข้อมูลของไบต์ระหว่างสองแอปพลิเคชันอย่างเชื่อถือได้ "เชื่อถือได้" ในกรณีนี้หมายความว่า TCP รับรองว่าจะไม่ส่งข้อมูลคำสั่งซื้อไปยังแอปพลิเคชั่นการฟัง

การจัดส่งที่เชื่อถือได้จะดำเนินการผ่านการใช้หมายเลขลำดับ ทุกแพ็กเก็ตในแต่ละสตรีมจะได้รับหมายเลขลำดับ 32 บิต (โปรดจำไว้ว่า TCP เป็นสตรีมข้อมูลที่เป็นอิสระสองรายการคือ A-> B และ B-> A) ถ้า A ส่ง ACK ไป B ค่าในฟิลด์ ACK คือหมายเลขลำดับถัดไปที่ A คาดว่าจะเห็นจาก B

จากด้านบนปรากฏว่าอย่างน้อยหนึ่งเซ็กเมนต์ TCP ที่ส่งจากเซิร์ฟเวอร์ไปยังไคลเอนต์นั้นหายไป สาม ACKs ที่ซ้ำกันในลำดับที่มีความพยายามโดยลูกค้าที่จะเรียกการส่งอีกครั้งอย่างรวดเร็ว เมื่อผู้ส่ง TCP ได้รับการตอบรับซ้ำกัน 3 ครั้งสำหรับข้อมูลชิ้นเดียวกัน (เช่น 4 ACK สำหรับส่วนเดียวกันซึ่งไม่ใช่ชิ้นส่วนของข้อมูลที่ส่งล่าสุด) ก็สามารถสันนิษฐานได้ว่ากลุ่มทันทีหลังจากส่วนที่ ACKed หายไป ในเครือข่ายและส่งผลให้ส่งใหม่ทันที

ในกรณีนี้การส่งซ้ำจะผ่านและถูกระบุโดย Wireshark ว่าไม่เรียบร้อย

ตามที่กล่าวไว้โดยjoeqwertyการสูญเสียแพ็กเก็ตมักเกิดจากความแออัด มันอาจเป็นผลมาจาก CRC หรือข้อผิดพลาดอื่น ๆ บนลิงก์เนื่องจากการ์ดอินเตอร์เฟสไม่ดี, สายเคเบิลหลวม ฯลฯ ฉันจะดูสถิติของทุกลิงก์ตามเส้นทางเพื่อดูว่ามีการใช้งานสูงและ / หรือ พบข้อผิดพลาดจำนวนมาก

หากคุณไม่เห็นผู้สมัครที่เห็นได้ชัดใด ๆ ให้ดำเนินการจับแพ็คเก็ตพร้อมกันในหลาย ๆ จุดตามเส้นทางเพื่อลองแยกแยะจุดที่เกิดการสูญเสีย

การเชื่อมต่อ WAN ชนิดใดที่ใช้งานอยู่ที่นี่ มันเป็นสายเฉพาะหรือไม่? ลิงค์ MPLS VPN? IPsec VPN ผ่านอินเทอร์เน็ตสาธารณะ? อื่น ๆ อีก?


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

WAN คือ "จุดต่อจุดสองจุด" ระหว่างสามไซต์บนชายฝั่งตะวันออกและสหรัฐอเมริกาตะวันตกกลาง
Sam

ถูกต้อง; DUPACKs เป็นอาการของการสูญเสียแพ็กเก็ต สำหรับสาเหตุที่ทำให้เกิดปัญหากับลูกค้าบางรายและไม่ใช่ผู้อื่นคุณต้องจัดการกับสิ่งที่เกิดขึ้นกับลูกค้าที่ได้รับผลกระทบ พวกเขาทั้งหมดอยู่ในสำนักงานเดียวกันหรือไม่ จะผ่านโครงสร้างพื้นฐานเครือข่ายทั่วไปหรือไม่ (สวิทช์หรือลิงค์?) สิ่งหนึ่งที่ควรทำคือการใช้mtr(หรือpathpingบน Windows) ในแต่ละเครื่องที่ได้รับผลกระทบและดูว่ามีฮ็อพทั่วเส้นทางไปยังเซิร์ฟเวอร์ซึ่งดูเหมือนว่าจะประสบปัญหาแพ็คเก็ตสูญหาย คุณมีระบบตรวจสอบเครือข่ายที่คุณสามารถใช้เพื่อดูข้อมูลสวิตช์ของพอร์ตหรือไม่
Murali Suriar

4

ในขณะที่คุณกำลังแยกว่าปัญหาอยู่ที่ใดให้นึกถึงการถ่ายโอนข้อมูลแพ็กเก็ตเป็นเพียงหนึ่งในอาการ ... เมื่อเปรียบเทียบกันถ้ามีคนเดินเข้าไปในสำนักงานแพทย์ด้วยอาการเจ็บหน้าอกหน้าอกหมอจะไม่ใช้เวลาสามชั่วโมงในการตรวจสอบลักษณะของ ความเจ็บปวด. เขาใช้เวลาประมาณสองนาทีจากนั้นก็รู้ว่าสาเหตุ 95% นั้นเป็นอาการเสียดท้องหรือปวดร้าว ... ในทำนองเดียวกันถ้าคุณเห็น ACK ที่ซ้ำกันอย่าหนูหลุมในวัชพืชของร่องรอยทันที .

หลังจากสร้างการเชื่อมต่อแล้วประสิทธิภาพของ TCP ที่ช้าอาจไม่ได้เกิดจากปัญหาเครือข่ายการขนส่ง บางครั้งมันมาเป็นผลมาจากเซิร์ฟเวอร์ CPU หรือข้อ จำกัด ของดิสก์ ... และบางครั้งเนื่องจากปัญหาบางอย่างบนเครื่องพีซีของลูกค้า ฉันได้ไล่ล่าหางของฉันเป็นเวลาหลายสัปดาห์ในการขุดหาร่องรอยของวัชพืช wireshark เพียงเพื่อยอมแพ้และค้นหาปัญหาที่ค่อนข้างรวดเร็วด้วยmtrหรือโดยการดูตัวชี้วัดโฮสต์อื่น ๆ เช่น CPU และดิสก์ I / O

งานแรกของคุณคือการพิสูจน์ว่าเป็นปัญหาเครือข่ายหรือปัญหาระดับโฮสต์ มุ่งเน้นไปที่การส่งปริมาณการใช้งานจริงผ่านเครือข่ายของคุณและพิสูจน์ว่าคุณกำลังเข้าคิว / การสูญเสีย / สั่งซื้อใหม่หมายเหตุ 1มัน; ที่มักจะเป็นด้านล่างบรรทัดสำหรับปัญหาเครือข่ายที่มีศักยภาพเช่นนี้

ฉันจะทำการpingสุ่มตัวอย่างเป็นระยะเวลานาน (โดยทั่วไปจะเป็นชั่วโมงสำหรับฉัน) ระหว่างไคลเอนต์และเซิร์ฟเวอร์ในขณะที่ปัญหาปริมาณงานกำลังเกิดขึ้น คุณสามารถใช้ฟรีแวร์mtrหรือping plotterสำหรับสิ่งนี้ หากคุณสูญเสียแพ็คเก็ตอย่างต่อเนื่องในบาง hop และกระโดดหลังจากนั้นหลวมมากหรือมากกว่านั้นคุณมีผู้ต้องสงสัยเครือข่ายที่อาจเกิดขึ้น โปรดทราบว่าอุปกรณ์ที่ จำกัด อัตรา ICMP อาจทำให้ฮ็อพบางตัวปรากฏว่าพวกเขาทำแพ็กเก็ตที่หลวม ... นั่นเป็นเหตุผลที่คุณต้องการค้นหาแนวโน้มที่เริ่มต้นจากการฮ็อปและสิ่งต่อไปนี้


หมายเหตุ 1หากคุณกำลังสั่งซื้อการรับส่งข้อมูลอีกครั้งนั่นจะปรากฏขึ้นอย่างรวดเร็วในฟิลด์ข้อมูลผู้เชี่ยวชาญที่ wireshark มีให้


ยอมรับว่าการตำหนิเครือข่ายโดยค่าเริ่มต้นนั้นไม่ใช่วิธีการที่ดี การใช้เครื่องมือทั่วทั้งกองเป็นวิธีที่ดีเสมอ อย่างไรก็ตามในกรณีนี้เซ็กเมนต์ DUPACK, out-of-order และ retransmitted ดูเหมือนจะบ่งบอกถึงการสูญเสียของเครือข่ายระหว่างจุดปลายทั้งสอง
Murali Suriar

@Murali Suriar ไปกับการยืนยันของคุณ (ซึ่งมีโอกาสดีที่จะพูดถูก) ... แล้วจะทำอะไรต่อไป คุณต้องแยกสาเหตุที่ทำให้แพ็กเก็ตสูญหาย คนไอทีเราตกหลุมรักอย่างลึกลับwiresharkจนถึงจุดที่เราชอบดูกล้องจุลทรรศน์นานเกินไป จุดที่ฉันทำคือมองอย่างรวดเร็วpcapหลังจากนั้นคุณจะดีกว่าใช้วงจรในการทำแพ็กเก็ตสูญเสียวงจรซีพียูและดิสก์ I / O มากกว่าที่จะเจาะลึกเข้าไปในพงศาวดารของ TCP มีเวลาทำเช่นนั้น แต่โดยปกติจะไม่อยู่ในขั้นตอนการวิเคราะห์นี้
Mike Pennington

@ ไมค์เห็นด้วยซึ่งเป็นเหตุผลที่ฉันแนะนำให้ค้นหาข้อมูลข้อผิดพลาด / การใช้ประโยชน์สำหรับอุปกรณ์ตามเส้นทางเป็นขั้นตอนแรก ฉันไม่ใช่แฟนตัวยงของการวินิจฉัยตาม ICMP นอกเหนือจากการเข้าถึง ดังที่คุณกล่าวอัตรา จำกัด และ ACLs / ไฟร์วอลล์ที่กำหนดค่าไม่ถูกต้องอาจทำให้ไม่น่าเชื่อถือ แม้ว่าในเครือข่ายองค์กร (ซึ่งฟังดูเหมือน), MTR มักจะชี้คุณไปในทิศทางที่ถูกต้อง ปัญหาอื่น ๆ ของ MTR ก็คือมันมักจะชี้ไปที่ปัญหาเดียว เป็นไปได้ทั้งหมดว่ามีข้อผิดพลาดหลายอย่างตามเส้นทางซึ่งคุณจะไม่สามารถค้นหาได้จนกว่าคุณจะแก้ไขข้อผิดพลาดแรก
Murali Suriar

เราไม่เห็นด้วย ICMP ด้วย TTL-stepping ไม่ใช่ยาครอบจักรวาลและอาจมีข้อบกพร่องหลายประการ อย่างไรก็ตามสำหรับข้อบกพร่องทั้งหมดที่เกี่ยวข้องกับไฟร์วอลล์และตัวโหลดบาลานซ์ ICMP คือการวินิจฉัยระยะไกลที่ดีที่สุดที่เรามีเว้นแต่คุณจะสามารถเรียกใช้เซสชัน TCP / UDP ที่เป็นเครื่องมือในระดับโฮสต์บนพอร์ตแอปพลิเคชันที่ต้องการ ... ซ็อกเก็ตนี้กำลังส่งสัญญาณอีกมาก ... แต่ทำไม 70% ของเวลาฉันถูกดึงออกมาmtrหรือเป็นเรื่องเลวร้ายและฉันก็แก้ปัญหาในลักษณะเดียวกันในช่วง 15 ปีที่ผ่านมา เมื่อฉันมุ่งเน้นไปที่อุปกรณ์เฉพาะแล้วเราสามารถดูเคาน์เตอร์วาง
Mike Pennington

1
@ Sam: เพียงจุดที่เกี่ยวข้องกับการแก้ไขปัญหาเครือข่าย: ทุกเครือข่ายมี "ปัญหา" กุญแจสำคัญคือการตรวจสอบว่าปัญหาเหล่านั้นก่อให้เกิดปัญหาประสิทธิภาพและ / หรือการเชื่อมต่อ คุณจะพบ ACK, TCP Retransmits, Broadcasts, โปรโตคอลผิดพลาด ฯลฯ ที่ซ้ำซ้อนในทุกเครือข่าย คุณควรมุ่งเน้นไปที่ปริมาณของ ACK ที่ซ้ำกันและโฮสต์ที่เกี่ยวข้องมากที่สุดในการส่ง ACK ที่ซ้ำกันเพื่อตรวจสอบว่านั่นเป็นอาการที่แท้จริงของปัญหาที่มีขนาดใหญ่กว่าหรือเพียงแค่การดำเนินการตามธรรมชาติของเครือข่าย ถ้าฉันเห็น ACK ที่ซ้ำกัน 5 จาก 1,000 แพ็คเก็ตฉันจะไม่ให้ความคิดที่สอง
joeqwerty

3

โดยเห็นจำนวนมาก[ส่วนของ TCP ประกอบ PDU]โดยไม่ต้อง ACKs - ผมว่า ACKs เหล่านี้จะแสดงให้เห็นว่าน่าจะเป็น[TCP Dup ACK ... ]เนื่องจากการเลือกรับทราบ (aka SACK) พฤติกรรม

ตัวอย่าง:

  • ลูกค้าส่งชิ้นส่วนข้อมูล (... , 0,1,2,3,4,5,6, ... )

  • เซิร์ฟเวอร์ acked (0), จากนั้นได้รับ (2,4,3), (5), จากนั้น (6) และไม่เคยได้รับ (1)

ในสถานการณ์ข้างต้น - เซิร์ฟเวอร์สามารถเลือกช่วง ack (2-4) อย่างถูกต้องก่อนจากนั้นช่วง (2-5) จากนั้นช่วง (2-6) ในขณะที่สร้างแพ็กเก็ต "(AB) ช่วง ack" - เซิร์ฟเวอร์จะต้องระบุส่วนสุดท้ายที่รับ (0) ในส่วนหัว TCP Wireshark ทำเครื่องหมาย range-acks (SACKs) เป็น[TCP Dup ACK ... ]เนื่องจาก range-acks ทั้งหมดนั้นมีค่าชิ้นส่วนสุดท้ายที่เหมือนกันในส่วนหัว TCP (Ack = 872619 ในกรณีของคุณ)


1

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

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