LINUX.ORG.RU
ФорумAdmin

Amazon VPS, длинные UDP видны сниффером, но не доходят в приложение

 , ,


0

1

Тип инстанса - l3.large, на t2.micro то же самое.

Шлём (обязательно с другого хоста) датаграмму так, например:

import socket
 
UDP_IP = "123.123.123.123"
UDP_PORT = 33333
MESSAGE = """
.....0010......0020......0030......0040......0050......0060......0070......0080......0090......0100
.....0110......0120......0130......0140......0150......0160......0170......0180......0190......0200
.....0210......0220......0230......0240......0250......0260......0270......0280......0290......0300
.....0310......0320......0330......0340......0350......0360......0370......0380......0390......0400
.....0410......0420......0430......0440......0450......0460......0470......0480......0490......0500
.....0510......0520......0530......0540......0550......0560......0570......0580......0590......0600
.....0610......0620......0630......0640......0650......0660......0670......0680......0690......0700
.....0710......0720......0730......0740......0750......0760......0770......0780......0790......0800
.....0810......0820......0830......0840......0850......0860......0870......0880......0890......0900
.....0910......0920......0930......0940......0950......0960......0970......0980......0990......1000
.....1010......1020......1030......1040......1050......1060......1070......1080......1090......1100
.....1110......1120......1130......1140......1150......1160......1170......1180......1190......1200
.....1210......1220......1230......1240......1250......1260......1270......1280......1290......1300
.....1310......1320......1330......1340......1350......1360......1370......1380......1390......1400
.....1410......1420......1430......1440......1450......1460......1470......1480......1490......1500
.....1510......1520......1530......1540......1550......1560......1570......1580......1590......1600
.....1610......1620......1630......1640......1650......1660......1670......1680......1690......1700
.....1710......1720......1730......1740......1750......1760......1770......1780......1790......1800
.....1810......1820......1830......1840......1850......1860......1870......1880......1890......1900
.....1910......1920......1930......1940......1950......1960......1970......1980......1990......2000"""
 
print "UDP target IP:", UDP_IP
print "UDP target port:", UDP_PORT
print "message:", MESSAGE
 
sock = socket.socket(socket.AF_INET, # Internet
                     socket.SOCK_DGRAM) # UDP
sock.sendto(MESSAGE, (UDP_IP, UDP_PORT))

принимаем таким «сервачком», например:

import socket

UDP_IP = "172.31.4.102"
UDP_PORT = 33333

sock = socket.socket(socket.AF_INET, # Internet
                     socket.SOCK_DGRAM) # UDP
sock.bind((UDP_IP, UDP_PORT))

while True:
    data, addr = sock.recvfrom(0x10000)
    print "received message:", data

Параллельно мониторим сниффером это дело (часть после «or» кажет сегменты после первого):

ngrep -t -e -d any -W byline -O large_udp.pcap port 33333 or '(ip[6:2]' '&' '0x1fff)' '!=' '0'

О хосте:

 # uname -a
Linux hostname 3.16.0-30-generic #40~14.04.1-Ubuntu SMP Thu Jan 15 17:43:14 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

Что имеем: сниффер видит данные, но в сокет приложения эти данные не поступают. То есть совсем не поступают. Тот же тест стабильно работает на пятибаксовой VPS от DigitalOcean.

Один раз dmesg сказал такое:

[  102.161679] UDP: bad checksum. From ойпишнег:56439 to 172.31.4.102:33333 ulen 2008

Один добрый человек подкинул ссылку на эту жалобу: https://forums.aws.amazon.com/thread.jspa?messageID=597165 . Там речь тоже о контрольных суммах.

Кто-нибудь сталкивался? Идеи?

★★

Последнее исправление: Krieger_Od (всего исправлений: 2)

Какие-то косяки с фрагментацией пакетов на амазоне?

no-dashi ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.