Үлкен жүктеулер және VPN: жолды сұраныс кезінде таңдаңыз
Маршрутизатор жауап келмей тұрып оның өлшемін өлшей алмайды. Тапсырма бойынша бағыттау қолданбадағы шешім нүктесін немесе қазіргі жолды сақтайтын кезек саясатын қажет етеді.
«Үлкен жүктеулерді VPN-нен тысқары жібер, ал кіші жауаптарды оның үстінде ұста» деген сөз маршруттау саясатына ұқсайды, бірақ ол ондай емес. Маршрутизатор сол сәтте қолжетімді ақпаратпен шешім қабылдайды: мекенжайлар, порттар, протокол, firewall белгілері, анықталған ағын. Жауаптың түпкілікті өлшемі бұл жиынтықта жоқ, өйткені ол әлі келген жоқ, ал маршрутизатор байттарды өлшей алатын кезде ол оларды қазірдің өзінде тасымалдап жүр. Егер тапсырма бойынша бағыттағыңыз келсе, шешім тапсырманы білетін нүктеге ауысуы керек, ал төмендегі тізім сіздің жобаңызда сондай нүкте бар-жоғын көрсетеді.
Неліктен маршрутизатор жауапты өлшей алмайды
Пакетке маршрут қажет болған сәтте маршрутизатор ағынның ең көбі алғашқы бірнеше пакетін көрген. Ол кім кіммен сөйлесіп жатқанын, қай протоколмен, қай белгімен және осы уақытқа дейін қанша байт өткенін айта алады. Осы уақытқа дейінгі байттар өткенді сипаттайды. Жауаптың өлшемі әлі жасалмаған жауаптың қасиеті, ал бөлшектелген немесе ағынды жауаптарда ол алдын ала ешқашан белгісіз болуы мүмкін.
Тіпті протоколдың өз метадеректері де көрінгеннен әлсіз. HTTP ұзындығы денеге дейін жарияланбайтын жауаптарға рұқсат береді, ал бір пайдаланушы әрекеті жиынтық құны ешбір тақырыпша мәніне ұқсамайтын көптеген сұраныс тудыруы мүмкін. Тақырыпшаны тапсырманың өлшемі деп санау — маршруттау қатесінен бұрын модельдеу қатесі.
Тексеру 1: жолды таңдай алатын шешім нүктесі бар ма?
Таңдауды жасайтын құрамдасты атаңыз, содан кейін таңдау сәтінде оның нені білетінін атаңыз. Құжатталған хосттар жиынтығынан жүктейтін жаңартқыш өз мақсатын тасымалдау басталмай тұрып біледі. Метадеректерді қарап, содан кейін сұранысты ашатын жүктеу қызметі тапсырманы байланыс пайда болмай тұрып біледі. Ынтымақтасатын proxy өзін маршрутизатор деп көрсетпей-ақ сұраныс деңгейіндегі саясатты қолдана алады немесе жауапты кэште сақтай алады.
Егер жауап «шлюз» болса, тізім әлдеқашан сәтсіз аяқталды. Шлюз белгілі ағындарды меже, белгі немесе клиент сегменті бойынша жіктеп, оларды бірінші пакеттен бастап белгіленген жолмен жібере алады, бұл мақұлданған жаңартқыш үшін жиі жеткілікті, ал белгісіз жауап өлшемі үшін ешқашан жеткіліксіз.
Тексеру 2: метадеректер сізге шын мәнінде не дейді?
Қолданбаны танитын бағыттау оқитын өрістері қаншалықты жақсы болса, соншалықты жақсы. HTTP семантикасы ішіндегі жауап ұзындығы ережелері ұзындық басында қолжетімсіз болатын жағдайларға жол береді, ал мазмұн кодтаулары тасымалданатын байт санын көрсетілім өлшемінен әрі қарай ерекшелендіреді. Сондықтан тақырыпша шектен асқанда жолды ауыстыратын саясат дәйексіз әрекет етеді, әсіресе дәл ұстауға тиіс болған үлкен тасымалдауларда.
Қолданба метадеректері қолдай алатыны — тапсырма туралы шешім: бұл жұмыс ағыны жаппай синхрондау, бұл интерактивті, бұл белгілі көзден бағдарламалық жаңарту. Бұл ниет тілінде жазылған саясат және сынауға жеткілікті тұрақты. «Бұл жауап қырық мегабайттан үлкен болады» ондай саясат емес.
Тексеру 3: ағын әлдеқашан бар ма?
Маршруттау ағын үшін байланыстың бірегейлігін өзгертпей-ақ өзгеруі мүмкін, және бұл айырмашылықты дәл сақтаған жөн. TCP байланысы өз ұштарының мекенжайлары мен порттарымен айқындалады, ал маршруттау кестесі олардың астында өзгерсе, пакеттер басқа жолмен жүруі мүмкін. Көзге көрінбей өзгере алмайтыны — желілік мекенжайларды аудару күйі: трафикті басқа шығысқа жылжыту әдетте жария бастауыш кортежін өзгертеді, ал алыс жақ сәйкес күйі жоқ басқа серіктесті көреді.
conntrack -L -p tcp --dport 443 | head -5
ip route get 203.0.113.10
ss -tn state established dst 203.0.113.10
Сондықтан практикалық ереже — байланыстың ортасында бір шығыстан екіншісіне көшу жаңа қатынас, миграция емес. Егер жоба сол байланыстың жалғасуын талап етсе, шешім бірінші SYN-ге дейін қабылдануы керек еді, ал кейін қосылған ешбір пакет ережесі оны таза қайта құра алмайды.
Тексеру 4: шынайы талап кідіріс пе, шығыс емес пе?
«Жаппай трафикті басқа жерге жібер» деген сұраныстардың көбі шын мәнінде үлкен тасымалдау интерактивті жұмысты баяу сезіндіреді деген шағым. Бұл жоспарлау мәселесі және оның жоспарлау жауабы бар: қазіргі жолдағы әділ кезек немесе қолдау көрсетілген өткізу қабілеті саясаты жаппай ағынның чат хабарламасын аштыққа ұшыратуына жол бермейді, екеуін де жылжытпай.
tc qdisc replace dev eth0 root cake bandwidth 100mbit
Симптоммен осылай жұмыс істеу шығыс шешімін қауіпсіздік саясаты қойған жерде қалдырады және оны бір пәрменмен қайтаруға болады. Бүкіл трафик класы үшін шығысты өзгерту — аутентификация, журналдау және қатынау ережелерінің салдары бар саясат өзгерісі, сондықтан ол кідіріс шағымында бірінші құрал болмауы керек.
Егер талап шынымен басқа интернет шығысы болса, оны дәл сол сөздермен айтыңыз және қолдау көрсетілген шекарада жүзеге асырыңыз: мақұлданған жұмыс ағынынан жаңа байланыс немесе таңдалған шығыс арқылы өз сұранысын ашатын қолданба. Содан кейін қай тапсырмалар қай шығысты пайдаланатынын жазып қойыңыз, келесі адам оны маршруттау кестесінен болжамауы үшін.
Тізімді өзгеріс жазбасында ұстаңыз: шешім нүктесі, оны қозғайтын өріс немесе тапсырма, ағынның әлдеқашан бар-жоғы және өлшенген симптом кідіріс пе әлде шығыс па. Төрт сұрақ, ал төртеуіне де жауап беретін саясат — қорғауға емес, басқаруға болатын саясат.