FTP upload – connection timed out

Миналата седмица се сблъсках с много интересен проблем. Всичко започна тривиално. Трябваше да осигуря ftp достъп за клиент. Имам си изграден навик да проверявам дали всичко работи след като създам акаунта, защото ми се е случвало да забравям по нещо (я права на директория, я нещо друго). Логнах се с акаунта на клиента, upload-нах няколко pdf-а, които ми бяха под ръка – всичко бе наред. Не знам защо този път реших да upload-на и някой по-голям файл, по стечение на обстоятелствата бях в / и тръгнах да upload-вам rhinstall-stage2.img. В началото всичко изглеждаше наред, но след 18MB скоростта започна да пада прогресивно, и в края последва connection timed out. Първоначално помислих, че е имало някакъв проблем по трасето, но след повторен опит, нещата бяха същите. И така започнах да отмятам възможни проблеми един по един.

Топологията от моята страна, която в случая е client е следната:
client side: LAN –> linux gateway –> Cisco Router
Топологията от среща:
ISP –> linux gateway –> servers (public IPs) (static routing)

Какво проверих:
client side:

  • смяна на ftp client-a – Тествах  upload с ncftp, curl, netcat – без никаква промяна, проблема беше налице
  • active / passive ftp – всеки, който е пускал FTP server и е имал клиенти зад NAT, знае че това е един от най-често срещаните проблеми – Но моят проблем, не зависеше от това
  • upload от друга машина с публично IP, която не е зад локалния linux gateway (за да избегна NAT-a) – проблемът все още си е налице
  • upload със спрян SACK – Петър Пенчев направи добро предложение в twitter – но и това не помогна
  • upload с промяна на keepalive – търсене в Google за подобни проблеми ме доводе до този пост в serverfault и съответно си поиграх с tcp keepalives – но отново без успех
  • upload при по-ниско MTU – друг често срещан проблем с MTU / PMTU-D – промяна на стойностите от моя страна отново не доведе до успех
  • upload от мрежи на други доставчици, до които имам достъп – мина без проблеми. На по-късен етап се оказа, че съм се заблудил (ще опиша защо малко по-надолу)
  • download на файл от сървъра – без проблеми
  • upload от самия cisco router – единственото у-во, което не бях проверил от моя страна бе cisco router-а, за това пробвах upload и от него – успешно upload-нах IOS файла.

Едновременно с това, накарах няколко приятели и познати администратори да тестват и от техни мрежи. Някои успяха да upload-нат файл, други не. Така че, въпреки успеха от рутера, нямаше логика проблема да е в него. Хората, които също не успяха да upload-нат файлове на FTP сървъра нямаха в мрежите си Cisco рутери. Освен това upload до други 10 ftp server-а от моя страна протичаха без никакъв проблем.

server side:

  • смяна на ftp server-a (pure-ftpd, vsftpd) – проблемът си остана
  • firewall – passive / active проблеми от страна на сървъра, спиране на филтрация по IP, отваряне на портове за passive mode и т.н., дори спиране на firewall-а – не доведе до никаква промяна
  • промяна на idle time и timeout на връзките на ftp server-а също не доведе до никаква промяна.
  • upload директно до машината която играе ролята на gateway за другите зад нея – проблемът беше налице и там
  • пускане на ftp server-а на друг порт – без промяна
  • на мрежовите интерфейси няма грешки или колизии
  • download на същия файл обратно, т.е. сървъра е клиент – без проблеми, така че проблемът бе само и единствено с upload-а

Същевременно с това, всичко с други протоколи си бе наред – icmp, smtp, ssh (файлът се upload-ваше по scp без никакъв проблем). Реших да направя tcpdump да видя какво става. На пръв поглед нещата изглеждаха нормално, макар че личеше, че има проблем. Нещата протичаха по следния начин:

Last Fragment Lost –> TCP Dup –> TCP Fast Retransmission –> TCP Dup –> TCP Fast Retransmission –> TCP Out of Order –> TCP Tetransmission –> TCP Window Full –> Connection Timed Out

С оглед на всичко това, в крайна сметка нещата сочеха за проблем с мрежово устройство по пътя, който се проявява само за FTP. След като бях проверил всичко при мен, оставаше да звънна на доставчика. Преди това обаче реших да попитам и други хора, работещи в областта на мрежите. И така, колегите от HWBG ме насочиха към евентуален проблем с media converter.

Всичко изглеждаше логично, но ме глождеше едно, как така от някои мрежи успявам да upload-на файл. Ако проблемът в конвертора, то няма логика да работи избирателно. Това можеше да значи, че проблемът не е със самия конвертор на място, а някъде по пътя между мен и него, нормално от други мрежи пътя е друг и upload-а върви. Реших да направя няколко последни теста и установих, че по-рано съм направил грешно предположение. За съжаление не винаги ползвах един и същи тестов файл ( това би ми спестило един ден „блъскане“), но късметът не е бил на моя страна. Естествено, бях се сетил, че проблемът всъщност може да е във файла, но това че други хора също не успяваха да качат големи файлове, значеше, че проблемът не е в самия файл. Оказа се обаче, че проблемът съществува само за точно определени файлове/разширения:

  • с големи .avi .zip .rar – всичко бе ОК
  • с големи .iso .img .eps – проблемът бе налице

Това, а и факта, че upload-а спираше винаги на точно едно и също място, значеше че конверторите имат проблем с точно определени символи, вероятно заради data stuffing. Ето hexdump за отделните файлове.

  • .img
Remote write failed after 18808832 bytes had been sent: Connection timed out.
hexdump -C -s 18808800 -n 128 -v rhinstall-stage2.img
011effe0  b3 d1 36 4c 4d 4d 7a 32  92 95 1c c4 93 8b 9f a2  |..6LMMz2........|
011efff0  6d 9b 9a 9c 4c e4 4e 76  f5 3e 7f 22 ff 9e d7 79  |m...L.Nv.>."...y|
011f0000  83 d7 a2 ed 9e 69 29 93  fd fd 7a 7e 3e e1 ff 78  |.....i)...z~>..x|
011f0010  3e a1 3e 9a 50 df 49 a8  ef 45 af 75 f3 bc 15 6d  |>.>.P.I..E.u...m|
011f0020  33 d5 c7 92 5e 7d a3 eb  fd ea d7 dc cd e7 bc 10  |3...^}..........|
011f0030  6d 6b e5 2f 45 db 96 a8  8d 68 3b ac a6 e3 97 ff  |mk./E....h;.....|
011f0040  c4 eb 60 ad f9 36 71 17  ab d9 c8 6e 0e 71 98 63  |..`..6q....n.q.c|
011f0050  5c e0 21 5e e0 79 f6 f3  3a 9f 72 0b cb 58 ce 0a  |\.!^.y..:.r..X..|
011f0060
 
hexdump -s 18808800 -n 128 -v rhinstall-stage2.img
11effe0 d1b3 4c36 4d4d 327a 9592 c41c 8b93 a29f
11efff0 9b6d 9c9a e44c 764e 3ef5 227f 9eff 79d7
11f0000 d783 eda2 699e 9329 fdfd 7e7a e13e 78ff
11f0010 a13e 9a3e df50 a849 45ef 75af bcf3 6d15
11f0020 d533 92c7 7d5e eba3 eafd dcd7 e7cd 10bc
11f0030 6b6d 2fe5 db45 a896 688d ac3b e3a6 ff97
11f0040 ebc4 ad60 36f9 1771 d9ab 6ec8 710e 6398
11f0050 e05c 5e21 79e0 f3f6 9f3a 0b72 58cb 0ace
11f0060
hexdump -C -s 26968000 -n 128 -v rhinstall-stage2.img
019b7fc0  2c 3d 2c 03 2c 23 2c 13  2c 33 2c 0b 2c 2b 2c 1b  |,=,.,#,.,3,.,+,.|
019b7fd0  2c 3b 2c 07 2c 27 2c 17  2c 37 2c 0f 2c 2f 2c 1f  |,;,.,',.,7,.,/,.|
019b7fe0  2c 3f ac 00 ac 20 ac 10  ac 30 ac 08 ac 28 ac 18  |,?... ...0...(..|
019b7ff0  ac 38 ac 04 ac 24 ac 14  ac 34 ac 0c ac 2c ac 1c  |.8...$...4...,..|
019b8000  ac 3c ac 02 ac 22 ac 12  ac 32 ac 0a ac 2a ac 1a  |.<..."...2...*..|
019b8010  ac 3a ac 06 ac 26 ac 16  ac 36 ac 0e ec 5f 58 5d  |.:...&...6..._X]|
019b8020  58 3d 58 7d 58 03 58 43  58 23 58 63 58 13 58 53  |X=X}X.XCX#XcX.XS|
019b8030  58 33 58 73 58 0b 58 4b  58 2b 58 6b 58 1b 58 5b  |X3XsX.XKX+XkX.X[|
019b8040
 
hexdump -s 18808800 -n 128 -v rhinstall-stage2.img
11effe0 d1b3 4c36 4d4d 327a 9592 c41c 8b93 a29f
11efff0 9b6d 9c9a e44c 764e 3ef5 227f 9eff 79d7
11f0000 d783 eda2 699e 9329 fdfd 7e7a e13e 78ff
11f0010 a13e 9a3e df50 a849 45ef 75af bcf3 6d15
11f0020 d533 92c7 7d5e eba3 eafd dcd7 e7cd 10bc
11f0030 6b6d 2fe5 db45 a896 688d ac3b e3a6 ff97
11f0040 ebc4 ad60 36f9 1771 d9ab 6ec8 710e 6398
11f0050 e05c 5e21 79e0 f3f6 9f3a 0b72 58cb 0ace
11f0060
  • .eps
hexdump -C -s 46497764 -n 128 -v BACB-Standard-170x230.eps
02c57fe4  f8 20 f8 f8 f8 20 f8 f8  f8 f8 f8 f8 f8 f8 f8 f8  |. ... ..........|
02c57ff4  f8 f8 f8 f8 f8 f8 f8 f8  f8 27 f8 f8 f8 27 f8 f8  |.........'...'..|
02c58004  f8 27 f8 f8 f8 20 f8 f8  f8 04 f8 f8 f8 26 f8 f8  |.'... .......&..|
02c58014  f8 26 f8 f8 f8 04 f8 f8  f8 05 f8 04 f8 27 f8 f8  |.&...........'..|
02c58024  f8 26 f8 f8 f8 05 f8 f8  f8 27 f8 f8 f8 27 f8 f8  |.&.......'...'..|
02c58034  f8 f8 f8 f8 f8 26 f8 04  f8 27 f8 f8 f8 04 f8 f8  |.....&...'......|
02c58044  f8 f8 f8 f8 f8 f8 f8 f8  f8 f8 f8 f8 f8 f8 f8 f8  |................|
02c58054  f8 f8 f8 f8 f8 f8 f8 f8  f8 f8 f8 f8 f8 f8 f8 f8  |................|
02c58064
 
hexdump -s 46497764 -n 128 -v BAC-170x230.eps
2c57fe4 20f8 f8f8 20f8 f8f8 f8f8 f8f8 f8f8 f8f8
2c57ff4 f8f8 f8f8 f8f8 f8f8 27f8 f8f8 27f8 f8f8
2c58004 27f8 f8f8 20f8 f8f8 04f8 f8f8 26f8 f8f8
2c58014 26f8 f8f8 04f8 f8f8 05f8 04f8 27f8 f8f8
2c58024 26f8 f8f8 05f8 f8f8 27f8 f8f8 27f8 f8f8
2c58034 f8f8 f8f8 26f8 04f8 27f8 f8f8 04f8 f8f8
2c58044 f8f8 f8f8 f8f8 f8f8 f8f8 f8f8 f8f8 f8f8
2c58054 f8f8 f8f8 f8f8 f8f8 f8f8 f8f8 f8f8 f8f8
2c58064
  • .iso
hexdump -C -s 163800 -n 128 -v ADRIANE-KNOPPIX_V6.2.1CD-2010-01-31-EN.iso
00027fd8  06 3a 66 27 c1 d2 6a 21  b9 6e fa 2f a1 70 24 79  |.:f'..j!.n./.p$y|
00027fe8  1e 35 01 a1 b5 99 04 e0  60 05 6a 05 0e 8c b6 1d  |.5......`.j.....|
00027ff8  05 28 50 63 1b 45 48 6c  38 01 c1 8c 5d 26 0e aa  |.(Pc.EHl8...]&..|
00028008  01 14 60 6e 64 23 06 a5  20 a9 3b 1e 9d 11 e9 10  |..`nd#.. .;.....|
00028018  b6 28 ec dc c0 59 0f 3d  e8 c6 70 f7 26 20 5c 8d  |.(...Y.=..p.& \.|
00028028  ff 03 2b e8 ab 17 86 58  08 b4 37 00 73 ac d1 40  |..+....X..7.s..@|
00028038  0b 1f 83 35 84 36 6d 68  41 56 d5 1f e8 fe f6 51  |...5.6mhAV.....Q|
00028048  8a ac 6c 7e 55 1d b7 ef  0e 26 7d c8 d0 16 cd be  |..l~U....&}.....|
00028058
 
hexdump -s 163800 -n 128 -v ADRIANE-KNOPPIX_V6.2.1CD-2010-01-31-EN.iso
0027fd8 3a06 2766 d2c1 216a 6eb9 2ffa 70a1 7924
0027fe8 351e a101 99b5 e004 0560 056a 8c0e 1db6
0027ff8 2805 6350 451b 6c48 0138 8cc1 265d aa0e
0028008 1401 6e60 2364 a506 a920 1e3b 119d 10e9
0028018 28b6 dcec 59c0 3d0f c6e8 f770 2026 8d5c
0028028 03ff e82b 17ab 5886 b408 0037 ac73 40d1
0028038 1f0b 3583 3684 686d 5641 1fd5 fee8 51f6
0028048 ac8a 7e6c 1d55 efb7 260e c87d 16d0 becd
0028058

Вече беше 100% сигурно, че проблемът е в конвертор. Оставаше да намерим кой. След съдействие от страна на доставчика подменихме първо този на място. Разлика нямаше. След това дойде ред и на този преди него, и воала. Всичко вече работи както трябва.

Census Jedi

Census 2011

jedi master

Rock in Peace, Master

Nikon D3100

Добрият старец ме зарадва по-рано, намина днес и ми остави ето това:

Надявам се скоро да имам и снимки, които да заслужават внимание.

Tron: Legacy – от един различен ъгъл

Не успях да се класирам за премиерата, но понеже се бях настроил на Tron вълна днес се отправих към CCS. Още по времето на Avatar, реших че по-добрата 3D технология за моите очи на този етап е RealD, което донякъде определи избора ми. Може би след Нова година, когато предполагам първоначалния интерес е поотминал, ще ида да го видя и в Imax и ще направя сравнение.

Ако все още не сте гледали филма, то се смятайте за предупредени, защото след постера има Спойлери.


Честно казано, когато излезе първият трейлър не бях толкова очарован. Дори (тъй като не познавах оригинала) се чудех на целия шум. Следващите трейлъри обаче ме грабнаха. Може би направих грешка че попрочетох някое друго ревю преди да ида да го гледам и изглежда попаднах в капана на свръхочакванията. За това и останах с впечатлението, че на филма нещо му липсваше, не ме грабна както очаквах. Това съвсем не означава, че не ми е харесал, дори напротив. Визуалните ефекти, както всеки може да предположи дори от трейлърите са изключителни. Саундтрака в допълнение към тях също. Хареса ми и Olivia Wilde (позната като 13 от House M.D.) в едно доста интересно и различно амплоа, в което бих казал че се справи много добре. Но нещото, което ме грабна най-много е използването на няколко реални unix команди. И това е и нещото, за което ще напиша малко повече.

Нека започнем с това, че очевидно и Kevin Flynn, и синът му Sam са фенове на свободния софтуер. Да проникнеш в собствената си компания, за да откраднеш новата версия на операционната система, която трябва да излезе на пазара и да я пуснеш онлайн е доста показателно и същевременно е интересен намек към някои компании :)

Точно в този момент е ѝ първата поява на Unix команда, за съжаление не си спомням, какво точно написа авторът на новата 12-та версия на Flynn OS. След това обаче, когато Sam отива в скривалището на баща си и намира прашасалата му конзола, виждаме следното:

top

клик за по-голям размер

Очевидно изход от командата top, който показва, че има 2-ма users и uptime от 9 дни (което малкo не се връзва и е една от грешките, във филма, които забелязах), 2GB RAM и 4GB Swap . Изглежда всички приложения са стартирани като root :),спокойно се виждат watchdog и ksoftirqd (който се появява за пръв път в ядро 2.3.15 през 2000г.). Сякаш има и отворен текстов редактор (навява асоциации на vi), Интересно е, че се ползва touch screen. След като позабърсва прахта, Sam използва последователно „whoami„, „uname -a“ и history, след което стартира приложението, което задейства лазера и се озовава в „Мрежата“. Изхода от uname връща Solar OS 4.0.1, с generic kernel, а машината е с i386 процесор (Solar OS 4.0.1 Generic_50203….um4 i386 Unknown.Unknown). Та хората от Sun, които загиват под крилото на Oracle може би трябва да се чувства горди :) Вижда се, че има и два sata диска – sda и sdb, каквито определено е нямало през 80-тте, когато би трябвало да  е произведена въпросната машина. Та така, в общи линии използването на реални unix команди ме зарадва много, но както се вижда не са изпипали всичко в детайли :)

Оценка: 7/10

Снимки: wikip(m)edia, Victor Ruiz @ flickr

Stop ACTA