วิธีการตรวจสอบว่าเครือข่ายวางแพ็กเก็ต UDP หรือไม่


8

ฉันมีแอพพลิเคชั่นสตรีมมิ่งวิดีโอที่ทำงานได้ดีในสำนักงานของฉัน แต่ล้มเหลวอย่างน่าสมเพชที่ตำแหน่งของลูกค้า อาการคือทุกสองสามวินาทีฉันหยุดรับแพ็คเก็ต UDP เป็นเวลา 2 วินาทีจากนั้นกระแสก็จะกลับมาทำงานเหมือนไม่มีอะไรผิดปกติ

ฉันวิ่งhttp://www.pingtest.net/ที่ตำแหน่งลูกค้าและมันก็กลับมาเยี่ยมอีกครั้ง ไม่มีแพ็กเก็ตที่ถูกทิ้งและเวลาหน่วงต่ำ ข้อแตกต่างเดียวที่ฉันสังเกตเห็นระหว่างสถานที่สองแห่งของเราคือping google.caการหมดเวลาที่สถานที่ของพวกเขา แต่ใช้งานได้ในเหมือง

ฉันจะทดสอบว่าเครือข่ายที่ฉันใช้บล็อกแพ็คเก็ต UDP ขาเข้าได้อย่างไร มีวิธีให้ฉันแยกผู้ที่วางแพ็กเก็ตหรือไม่


เสียงเหมือนปัญหาไฟร์วอลล์ให้ฉัน คุณมีซอฟต์แวร์หรือฮาร์ดแวร์ไฟร์วอลล์หรือไม่
Pitto

คุณไม่สามารถถามลูกค้าว่าการตั้งค่าเครือข่ายของพวกเขาคืออะไร?
Ramhound

@ แรมฮาวด์นึกคิดไม่ได้ ฉันไม่ต้องการให้มีการขุดลงไปในการตั้งค่าเราเตอร์ลูกค้าที่มีศักยภาพของเวลาที่ฉันต้องการที่จะสาธิตสินค้าของฉันทุก :)
Gili

2
พวกโปรดอธิบายการโหวตลบของคุณมิฉะนั้นฉันไม่สามารถตอบกลับได้
Gili

คำตอบ:


4

netcatคุณสามารถพยายามที่จะสร้างการเชื่อมต่อกับ UDP

บนเครื่องA ที่อยู่นอกเครือข่ายของผู้ใช้บริการจะเรียกใช้:

nc -u -l -p 1234            # if using netcat-traditional
nc -u -l 1234               # if using netcat-openbsd (as pointed out by @JamesHaigh)

โปรดสังเกตสิ่ง-uที่สั่งให้ netcat ใช้ UDP (และโปรดทราบด้วยว่ามีรุ่นที่แตกต่างกันnetcatซึ่งจะต้องใช้-pพารามิเตอร์หรือไม่; รับเป็นตัวแปรสำหรับทั้งสองที่พบบ่อยที่สุด (?) ทั้งสองรวมอยู่ใน Debian.)

nc -u [addr of machine A] 1234สถานที่ตั้งของผู้บริโภค:

ลองส่งข้อความหรือใช้ไพพ์เพื่อส่งไฟล์ระหว่างทั้งสองตำแหน่งและทำสิ่งต่าง ๆ ในภายหลัง


คำสั่งระยะไกลของคุณล้มเหลวสำหรับฉัน manpage บอกว่า-lIt is an error to use this option in conjunction with the -p, -s, or -z options.” ดังนั้นฉันจึงแก้ไขคำสั่งให้เป็นแบบที่ฉันได้ทำการทดสอบแล้ว นอกจากนี้ฉันได้เปลี่ยน 'ip' เป็น 'addr' เพราะชื่อโฮสต์ยังสามารถใช้ได้และอยู่ในความหมาย 'ที่อยู่'
James Haigh

@JamesHaigh: ผมเห็นด้วยกับคุณบนaddrเทียบกับipจุด แต่ตอนนี้ด้วยคำสั่งของคุณฉันได้รับข้อผิดพลาด: listen needs -p arg(ฉันทดสอบคำสั่งของฉันในคำตอบด้วย;)) มี nc หลายอย่างถ้าคุณให้รายละเอียดเพิ่มเติมเช่น nc version และ / หรือ distro ของคุณฉันจะเพิ่มหมายเหตุในคำตอบของฉัน
mpy

โอ้ใช่มันเป็นความอัปยศที่พวกเขาไม่สามารถใช้งานร่วมกันได้! :-( โอเคดังนั้นเครื่องระยะไกลของฉันคือ Debian ncคำสั่งเริ่มต้นคือ symlink ที่/bin/nc -> /etc/alternatives/nc -> /bin/nc.openbsdจัดทำโดยแพ็คเกจ Debian netcat-openbsdเครื่อง Ubuntu ท้องถิ่นของฉันมีnc.openbsdค่าเริ่มต้นด้วยเช่นกันจะไม่ยอมรับ-l -pฉันยังได้ติดตั้งncatบนเครื่องทั้งสองจากnmapแพ็คเกจ Ubuntu / Debian เครื่อง Debian รุ่นเก่าncatปฏิเสธ-l -pแต่ncatใน Ubuntu ยอมรับทั้งสองวิธีแม้ว่ารุ่น Debian จะต้องเก่าเพราะมันไม่มี--sctpตัวเลือกที่น่ารำคาญ: - /
James Haigh

ป.ล. ของคุณคืออะไร distro และncตัวแปร? ฉันสังเกตเห็นว่ามีnetcat-traditionalแพ็คเกจ "" เช่นกัน แต่ฉันไม่ได้ลองเลย
James Haigh

@JamesHaigh: จริง ๆ แล้วฉันใช้netcat-traditional(v 1.10-38) ขณะที่มันมาพร้อมกับ debian ขอบคุณสำหรับคำใบ้ของคุณฉันได้รวมคำตอบทั้งสองไว้ในคำตอบแล้ว
mpy

13

ที่ฝั่งเซิร์ฟเวอร์ให้สร้างเซิร์ฟเวอร์ UPD ด้วย

iperf -s -u

ที่ฝั่งไคลเอ็นต์ตรวจสอบการเชื่อมต่อ UDP ด้วย

iperf -u -c <IP Address of Server>

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

0

netcatคำสั่งในคำตอบของ MPY มีประโยชน์สำหรับวัตถุประสงค์ในการวินิจฉัย แต่ฉันเมี่ยงคำตอบที่ว่าด้วยวิธีการอื่นในการแก้ไขปัญหาพื้นฐานของคุณ

มันอาจจะคุ้มค่าที่ทำให้แอปพลิเคชันของคุณถอยกลับไปที่SCTPหรือแม้แต่ TCP ฉันพบคำถามนี้จริง ๆ เพราะฉันกำลังมองหาวิธีปฏิเสธแพ็กเก็ต UDP ขาเข้าจากผู้ใช้ที่ใช้มากกว่า downlink เมื่อแออัดเนื่องจากต่างจาก SCTP และ TCP UDP ไม่มีการควบคุมความแออัดทำให้ยากที่จะจัดลำดับความสำคัญของ downlink การจราจร

ทั้ง SCTP และ TCP มีการควบคุมความแออัดและเล่นได้ดีกับ QoS แต่ SCTP มีประโยชน์เพิ่มเติมจาก TCP ที่ได้รับการออกแบบมาสำหรับแอปพลิเคชั่นการสตรีมแบบเรียลไทม์ทำให้เป็นการทดแทนที่ดีสำหรับทั้ง TCP และ UDP ด้วยเหตุนี้ SCTP จึงเป็นโปรโตคอลการส่งผ่านที่ดีที่สุดทั้งสองแบบ

มันเป็นความคิดที่ไม่ดีเลยที่จะมีทางเลือกแทนที่จะพึ่งพาเพียง UDP แม้ว่าคุณจะถอยกลับไปที่ TCP แต่อย่างน้อยคุณก็สามารถพูดได้ว่ามันใช้งานได้


0

เกี่ยวกับการใช้เซิร์ฟเวอร์

iperf -u -p <port> -s

ในการใช้งานฝั่งไคลเอ็นต์

iperf -u -p <port> -c <domain or ip>

ตรวจสอบให้แน่ใจว่าพอร์ตอนุญาตให้ใช้กับไฟร์วอลล์ นี่จะให้รายงาน ua เช่นนี้หลังการทดสอบ

[ ID] Interval       Transfer     Bandwidth        Jitter   Lost/Total Datagrams

[  1]  0.0-10.0 sec  1.25 MBytes  1.05 Mbits/sec   3.722 ms    1/  893 (0.11%)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.