Score:0

บรรลุปริมาณงาน DNS QPS สูง

ธง ru

ฉันกำลังพยายามค้นหา QPS (Query Per Second) สูงสุดของ DNS Resolver VM

เรามีโครงสร้างพื้นฐานของเราที่โฮสต์บน Azure โดยมี VM (ตามการผูก) ทำหน้าที่เป็นตัวแก้ไขการสืบค้น DNS เนทีฟของ Azure (168.63.129.16) เช่นเดียวกับ DNS ภายในองค์กร ฉันไม่ได้แคชแบบสอบถามใด ๆ บนตัวแก้ไข & บันทึก A แต่ละรายการมี TTL 300 วินาที

ฉันกำลังใช้ dnsperf & ตอบกลับ เพื่อทริกเกอร์โหลด (เฉพาะ A-records) ตอนนี้ฉันกำลังเตรียมตัวแก้ไข DNS เพื่อต้านทานการโจมตี DDOS สูงถึง 100,000 QPS ฉันประสบปัญหาเช่นการจำกัดอัตราการสืบค้นระหว่างตัวแก้ไขและตัวแก้ไข DNS เนทีฟสีฟ้า ด้วยเหตุนี้ เมื่อ QPS เพิ่มขึ้น ตัวแก้ไขจะส่งกลับ SERVFAIL ตอบกลับไปยังลูกค้า อย่างไรก็ตาม เราไม่เห็นอะไรเลย SERVFAIL การตอบสนองระหว่างตัวแก้ไขและ DNS ในสถานที่

QPS สูงสุดที่ฉันเห็นในขณะที่กำหนดเป้าหมาย Azure DNS อยู่ที่ประมาณ 2100 ฉันค้นหาทางออนไลน์เป็นจำนวนมากว่า Azure มีการจำกัดอัตราดังกล่าวหรือไม่ แต่ไม่พบสิ่งที่เกี่ยวข้อง ยังไงก็ตาม ฉันลางสังหรณ์ VM ประสบปัญหาคอขวดเนื่องจาก 2K QPS นั้นต่ำมากสำหรับโครงสร้างพื้นฐานของ Azure

บางสิ่ง (การเปลี่ยนแปลงเคอร์เนล sysctl) ฉันเปลี่ยนในตอนท้ายซึ่งปรับปรุงเล็กน้อย แต่ไม่มาก

การเปลี่ยนแปลง Config ของ Bind ::

  • ลูกค้าเรียกซ้ำ จาก 1000 -> 30000

บัฟเฟอร์ UDP เป็นค่าที่สูงกว่า 26214400 เพื่อหยุดความล้มเหลวของบัฟเฟอร์::

  • net.core.rmem_max
  • net.core.rmem_default

ช่วงพอร์ตท้องถิ่นจาก 32768 61000 ถึง 1024 61000 ให้มีสูงสุด พอร์ตสำหรับ DNS::

  • net.ipv4.ip_local_port_range

การเปลี่ยนแปลงเบ็ดเตล็ด::

  • txqueuelen จาก 1000 -> 20000

  • ขีด จำกัด เปลี่ยนเป็น 100,000

  • net.netfilter.nf_conntrack_max เปลี่ยนเป็นมูลค่าที่สูงขึ้นมาก

นอกเหนือจากข้างต้น ฉันได้เพิ่มขนาด VM จาก (1 คอร์, 2 GB RAM) -> (4 คอร์, 8 GB RAM)หลังจากเพิ่มขึ้น ข้อผิดพลาดของแพ็กเก็ตก็หายไป (ตรวจสอบแล้ว netstat -s) แต่ไม่ดีขึ้น SERVFAIL ข้อผิดพลาด

ฉันเปิดใช้งานแล้ว tcpdump เพื่อตรวจสอบรูปแบบของ SERVFAIL ข้อผิดพลาด ในกรณีที่เกิดความล้มเหลว ตัวแก้ไขจะพยายามส่งแบบสอบถามไปยัง Azure DNS 5 ครั้ง (แต่ละครั้งหลังจาก 1 วินาที) แต่ไม่ได้ยินอะไรเลยจาก DNS ของ Azure และด้วยเหตุนี้จึงส่ง SERVFAIL ตอบกลับไปยังลูกค้า โหลดมาแล้ว พีซีแคป ไฟล์ลงบน ไวร์ชาร์คฉันเห็น Azure DNS ส่งการตอบกลับกลับไป ตัวแก้ไข แต่ ตัวแก้ไข ได้ส่งของแล้ว SERVFAIL ตอบสนองต่อลูกค้า

เหตุใดการเชื่อมต่อจึงปิดก่อนที่จะมีการตอบกลับ ปัจจุบัน net.netfilter.nf_conntrack_udp_timeout ถูกทิ้งไว้โดยไม่มีใครแตะต้อง 30 วินาที แต่ ตัวแก้ไข ส่ง SERVFAIL หลังจาก 5 วินาทีถึงลูกค้า

ด้านล่างนี้คือ tcpdump บันทึกระหว่าง เซิร์ฟเวอร์ล้มเหลว::

อ่านจากไฟล์ dns4.pcap ประเภทลิงก์ EN10MB (Ethernet)
10.0.0.10.57710 > 10.0.0.11.domain: [udp sum ok] 1612+ A? SZxvvdyDYy.ns.westeurope.xx.yy.zz.net (66)
10.0.0.11.44513 > 168.63.129.16.domain: [bad udp cksum 0xbecd -> 0x8cfd!] 52637+% [1au] A? SZxvvdyDYy.ns.westeurope.xx.yy.zz.net อาร์: . OPT UDPsize=4096 DO (77)
10.0.0.11.32378 > 168.63.129.16.domain: [udp cksum 0xbecd ไม่ถูกต้อง -> 0x3950!] 20672+% [1au] A? SZxvvdyDYy.ns.westeurope.xx.yy.zz.net อาร์: . OPT UDPsize=512 DO (77)
10.0.0.11.59973 > 168.63.129.16.domain: [udp cksum 0xbecd ไม่ถูกต้อง -> 0xe2e5!] 15199+% [1au] A? SZxvvdyDYy.ns.westeurope.xx.yy.zz.net อาร์: . OPT UDPsize=512 DO (77)
10.0.0.11.29976 > 168.63.129.16.domain: [udp cksum 0xbec2 ไม่ถูกต้อง -> 0x051b!] 47104+ A? SZxvvdyDYy.ns.westeurope.xx.yy.zz.net (66)
10.0.0.11.43442 > 168.63.129.16.domain: [udp cksum 0xbec2 ไม่ถูกต้อง -> 0xe791!] 41199+ A? SZxvvdyDYy.ns.westeurope.xx.yy.zz.net (66)
10.0.0.11.domain > 10.0.0.10.57710: [udp cksum 0x2a89 ไม่ถูกต้อง -> 0x5e30!] 1612 ServFail q: A? SZxvvdyDYy.ns.westeurope.xx.yy.zz.net 0/0/0 (66)

ดังที่คุณเห็นจากบรรทัดล่างสุด เซิร์ฟเวอร์ล้มเหลว ถูกส่งหลังจากพยายาม 5 ครั้ง

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

โพสต์ครั้งแรกที่ superuser ที่นี่

Patrick Mevzek avatar
cn flag
"udp cksum ไม่ถูกต้อง" อาจเป็นสิ่งที่คุณต้องการตรวจสอบ อาจเป็นสัญญาณของอุปกรณ์/การเชื่อมต่อเครือข่ายที่ผิดพลาด ณ ที่ใดที่หนึ่ง หรือจุดบกพร่องในไดรเวอร์เคอร์เนล/การ์ดเครือข่าย (มีโอกาสน้อยกว่า) นอกจากนี้เนมเซิร์ฟเวอร์แบบเรียกซ้ำที่คุณใช้สามารถจำกัดอัตราของคุณได้ ไม่แน่ใจจริงๆ ที่จะเข้าใจว่าคุณกำลังตั้งค่าเนมเซิร์ฟเวอร์ที่เชื่อถือได้หรือไม่ เพราะเหตุใดคุณจึงต้องพึ่งพาเซิร์ฟเวอร์แบบเรียกซ้ำ และหากคุณตั้งค่าเซิร์ฟเวอร์แบบเรียกซ้ำ เหตุใดจึงไม่มีแคชและขึ้นอยู่กับเซิร์ฟเวอร์อื่นด้วย
harshavmb avatar
ru flag
สวัสดี @PatrickMevzek ขอบคุณสำหรับการตอบกลับของคุณ ฉันสงสัยเหมือนกันกับการจำกัดอัตราจากเซิร์ฟเวอร์ที่เชื่อถือได้ของ Azure `168.63.129.16` แม้จะมีการทดสอบซ้ำแล้วซ้ำเล่า แต่ QPS ก็ไม่เกิน `2100`ฉันไม่ได้ตั้งค่า `authoritative ns` เป็นเพียง `recursive ns` อาศัย `azure` สำหรับบันทึกสีฟ้า อยู่ในองค์กรสำหรับบันทึกในองค์กร ไม่มีการแคชที่ระดับ ns แบบเรียกซ้ำ...
harshavmb avatar
ru flag
เกี่ยวกับ `bad udp cksum` ฉันมีสิ่งนี้ในเกือบทุกข้อความค้นหา ฉันจำเป็นต้องตรวจสอบว่าทำไมมันถึงอาละวาดนัก.. ส่วนใหญ่ฉันไม่คิดว่ามันเป็นสาเหตุหลักของ `ServFail` นี้..
Score:0
ธง ru

ดังนั้นฉันจะตอบคำถามของฉัน

อัตรา Azure แท้จริงจำกัดการสืบค้นต่อวินาทีเป็น 1000 ต่อ VM

มันเป็นเอกสาร ที่นี่. ไม่ว่าอะไรก็ตาม ระบบ ปรับแต่ง ฉันยังมีปัญหาจาก Azure เนื่องจากการจำกัดอัตรานี้

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา