OpenVPN د TCP له لارې: rto_min د قطار په سر کې خنډ نه لیرې کوي
بهرنی بایټ جریان په ترتیب سره رسوي، نو یو ورک شوی برخه کولای شي هر داخلي جریان ودروي. اوږد داخلي ټایمر ساعت بدلوي، نه هغه محدودیت۔
د تونل له سره یو تعاملي شیل د فایل کاپي پرمهال څو ثانیې کنګل کیږي، بیا داسې دوام کوي لکه څه چې نه دي شوي۔ ستونزه یوازې ډاونلوډ لري، خو شیل هم انتظار کوي، او دواړه په یو وخت کې رغیږي۔ دا بڼه د یو باوري جریان نښه ده چې ډېرې خبرې اړوي، او لږ تر لږه هره هغه تنظیم چې خلک لومړی آزموي، ترې تېریږي۔
نښه باید په دقت سره ولوستل شي ځکه چې د تنظیم پرځای میکانزم ته اشاره کوي: تمځای شریک دی، نو سبب هم شریک دی، او شریک شی بهرنۍ اړیکه ده۔ په دې موده کې په لاګ کې نور هر څه نورمال ښکاري۔
نښه: هر څه په یو وخت ودریږي
دوه داخلي اړیکې چې یو ځای ودریږي، هماغه نښه ده۔ ورو ډاونلوډ او ورو شیل جلا TCP خبرې دي چې جلا ترتیبي شمېرې او جلا ګڼې حالت لري، نو په یوه کې خرابي باید بل ته ونه رسیږي۔ کله چې دواړه په یوه تال ودریږي، د دوی پورته یو څه د دوی بایټونه ترتیبوي۔
هغه څه د تونل د لېږد طبقه ده۔ په TCP حالت کې OpenVPN پوښل شوي پاکټونه په یوه TCP اړیکه کې ملګري ته لیکي، او د TCP تړون د یو بایټ جریان په ترتیب سره رسول دي۔ وروسته بایټونه د ورکو نه شویو بایټونو دمخه اپلیکیشن ته نه ورکول کیږي، که هرې داخلي خبرې پورې اړه ولري۔
پام وکړئ چې نښه څه نه وایي۔ نه وایي چې لار ماتې ده، سرور زیات بار لري، یا کوډ کول ورو دي۔ هغوی بل شکلونه جوړوي: یو شان ټیټ throughput، د وخت پای، یا هغه خرابۍ چې یوازې یو لوري ته زیان رسوي۔ شریک تمځای چې د ورک شوې برخې په بیا لېږلو پای ته رسیږي، هماغه د ترتیب اثر دی۔
یو بهرنی بایټ جریان، ډېرې داخلي خبرې
تصور وکړئ تونل په یو وخت کې ډاونلوډ او شیل اړوي۔ د بهرنۍ اړیکې یوه برخه ورکیږي۔ راتلونکې برخې کولای شي ترلاسه کوونکي هوسټ ته ورسي، او ترلاسه کوونکې TCP طبقه به یې ومني، خو تر هغو پورته نشي رسولای چې سوری ډک شي۔ نو OpenVPN د شیل لپاره د لوستلو څه نه لري، که څه هم د شیل خپل بایټونه ډېر پخوا رسېدلي۔
دا د یوې اړیکې دننه د قطار په سر خنډ دی، او اړتیا نه لري چې دواړه اپلیکیشنونه یوه داخلي اړیکه شریکه کړي۔ دوی بهرنۍ شریکوي، او همدا کافي ده۔
د دویم ترتیب اثر دا نور خرابوي۔ داخلي لېږونکی چې تصدیقونه نه ویني، کولای شي هغه ډاټا بیا ولېږي چې بهرنۍ طبقه یې رسولو هڅه کوي۔ هغه بیا لېږل په داسې لار کې اضافي تونل ټرافیک کیږي چې همدا اوس یې ثابته کړه چې برخې بایللای شي، نو د بیا رغولو کار د مهم بیا رغولو سره سیالي کوي۔
د دې له جملې هېڅ یو هم نسکوریدل تضمین نه کوي۔ په پاکه لار کې چې لنډ ګرځېدل او پراخ قطارونه ولري، دا ترتیب کېدای شي کلونه کلونه بشپړ کاروړ وي۔ خرابي هغه وخت ښکاري چې ضایعه، ځنډ او د قطار ژوروالی یو ځای شي، او له همدې کبله راپورونه د ښه سمبال دفترونو پرځای د ګڼو پورتنو لینکونو او موبایل لینکونو شاوخوا غونډیږي۔
ولې اوږد داخلي ټایمر مرسته نشي کولای
په یوه لار کې د rto_min په واسطه د بیا لېږلو لږترلږه وخت لوړول، د هغې لارې کاروونکي سیمه ییز جوړ شوي TCP ټرافیک لپاره د ټایمر پر بنسټ بیا لېږل ځنډوي۔ دا ریښتینی اثر لرونکی ریښتینی بټن دی، او لومړي پرځای دویم ترتیب ستونزه حل کوي۔
ip route show
ip route show cache 2>/dev/null | head
ss -tin dst 10.70.0.1
هغه څه چې نه شي کولای: بهرني بایټونه له ترتیبه بهر خوشې کړي، ورکه برخه ژر بیا رغوي، یا لرې اپلیکیشن سرور ته هماغه ټایمر منلو ته مجبور کړي۔ ترلاسه کوونکې طبقه لا هم په ترتیب سره رسوي، او لرې پای لېږونکی لا هم خپل ګرځېدلو اندازه اخیستنې کاروي۔
همدارنګه نور ټول د ضایعې بیا رغولو میکانزمونه نه بندوي۔ چېرې چې ریښتینې ضایعه ټایمر پر بنسټ بیا رغول غواړي، لوی لږترلږه اپلیکیشن اړباسي چې له عمل دمخه ډېر انتظار وکړي، چې د ځنډ ته حساسې غونډې د اړتیا خلاف دی۔
د دولسو ثانیو ثابته پلې د دې موضوع په مشورو کې داسې ښکاري لکه د TCP تونل شتون یې لازم کړی وي۔ د بیا لېږلو ټایمر چې په RFC 6298 کې تشریح شوی له اندازې شوي ګرځېدلو وخت څخه د شاتګ سره اخیستل کیږي، نو ثابته پلې د یوې ځانګړې لار لپاره د تګلارې غوره توب دی، د پروتوکول غوښتنه نه۔ په پراخه توګه پلي شي، نښه پټوي او هماغه وخت د هغې لارې لاندې هر جریان بیا رغول بدلوي۔
tcp-nodelay څه کوي او څه نه کوي
هغه تونل انتخاب چې د لېږد ساکټ باندې د Nagle بڼې بفرنګ بندوي، تنګ هدف لري: کوچني لیکنې له لېږلو دمخه د نورو ډاټا انتظار کولو څخه منع کوي۔ دا تعاملي ټرافیک سره مرسته کوي چې په بل ډول روغه لار کې له اضافي ځنډ څخه ډډه وکړي۔
لېږد بې ترتیبه نه جوړوي، او د ورکې برخې وروسته بیا رغول لنډ نه کوي۔ هغه شیل چې د بیا لېږلو وخت پای ته رسېدو انتظار کوي، د هغه انتخاب د فعالیدو سره هم ودریږي، ځکه انتخاب هیڅکله د ترتیب قاعده ونه لمسوله۔
دواړه یو له بله سره ګډول اسانه دي ځکه دواړه د ځنډ سمون په توګه تشریح کیږي۔ یو د بفرنګ راوړل شوی مصنوعي انتظار لیرې کوي، بل به بدل کړي چې لېږد څه تضمینوي، او دا هیڅ ساکټ انتخاب نه کوي۔
د لېږد طبقاتو منصفانه پرتله څنګه کوو
که چېرې چلوونکی اجازه ورکړي او دواړه خدمتونه موجود وي، نو هغه UDP خدمت او TCP خدمت چې یو شان بار اړوي د هماغه سرور تر هماغې لاسرسي لارې پرتله کړئ۔ د دوو ازموینو ترمنځ هېواد، برابرونکی یا د سرور نسل بدلول داسې متغیر راولي چې پر نتیجه به واکمن شي۔
د throughput له شمېرې پرځای شریک تمځای ته وګورئ۔ د بهرنۍ ضایعې په جریان کې څو داخلي اپلیکیشنونه یو ځای ودریدل هماغه مشاهده ده چې د قطار په سر خنډ پېژني; د سرعت ازموینې یوه ټیټه شمېره دا نه کوي۔
د تونل انټرفیس او فزیکي انټرفیس باندې اجازه لرونکي نیول دواړه طبقې پاکې جلا کوي، ځکه داخلي او بهرنۍ بیا لېږنې د جلا ترتیبي سیمو لرونکو جلا اړیکو دي۔ د بهرني جریان په سوري ښودلو وخت کې داخلي بیا لېږنې لیدل مستقیم ثبوت دی۔
UDP ته تلل اضافي باوري جریان لیرې کوي او داخلي TCP ته خپله بیا رغول پرېږدي۔ صفر ضایعه یا ټیټ ځنډ ژمنه نه کوي، او ډک پورته لینک، ډېر لوی قطارونه یا د MTU ستونزه به لا هم سمول غواړي۔ د تونل بهر ټرافیک هیڅکله د تونل د ترتیب سوري شاته نه ساتل کیږي، که څه هم کله چې دواړه لارې یو ګڼ لینک شریک کړي، لاهم زيانمن کیدای شي، او هغه شریکه تنګي په دې کې تاشولدو پرځای خپله جلا څیړنه لایق ده۔