আপনি আরটিওকে বিশেষত পরিবর্তন করতে পারবেন না কারণ এটি কোনও স্থির মান নয়। পরিবর্তে (প্রাথমিক SYN ব্যতীত স্বাভাবিকভাবেই) এটি প্রতিটি সংযোগের জন্য আরটিটি (রাউন্ড ট্রিপ সময়) এর উপর ভিত্তি করে। প্রকৃতপক্ষে, এটি আরটিটি এবং একটি মিশ্রণে ফেলে দেওয়া কিছু ধ্রুবকগুলির সাথে আরটিটি ভেরিয়েন্সের একটি স্মুথ সংস্করণ ভিত্তিক। সুতরাং, এটি প্রতিটি টিসিপি সংযোগের জন্য একটি গতিশীল, গণনা করা মান, এবং আমি এই নিবন্ধটি সুপারিশ করি যা সাধারণভাবে গণনা এবং আরটিও সম্পর্কে আরও বিশদে যায়।
আরএফসি 6298 যা প্রাসঙ্গিক তাও প্রাসঙ্গিক (অন্যান্য অনেক কিছুর মধ্যে):
যখনই আরটিও গণনা করা হয়, এটি যদি 1 সেকেন্ডের চেয়ে কম হয় তবে আরটিওকে 1 সেকেন্ড পর্যন্ত গোল করা উচিত।
কার্নেলটি কি সবসময় আরটিওকে 1 সেকেন্ডে সেট করে? ভাল, লিনাক্সের সাহায্যে আপনি ss -i
কমান্ডটি চালিয়ে আপনার মুক্ত সংযোগের জন্য বর্তমান আরটিও মানগুলি প্রদর্শন করতে পারেন :
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 0 10.0.2.15:52861 216.58.219.46:http
cubic rto:204 rtt:4/2 cwnd:10 send 29.2Mbps rcv_space:14600
ESTAB 0 0 10.0.2.15:ssh 10.0.2.2:52586
cubic rto:201 rtt:1.5/0.75 ato:40 cwnd:10 send 77.9Mbps rcv_space:14600
ESTAB 0 0 10.0.2.15:52864 216.58.219.46:http
cubic rto:204 rtt:4.5/4.5 cwnd:10 send 26.0Mbps rcv_space:14600
উপরেরটি কোনও ভিএম থেকে আউটপুট যা আমি এসএসএইচে লগ ইন করেছি এবং গুগল.কম এ বেশ কয়েকটি সংযোগ খোলা আছে। আপনি দেখতে পাচ্ছেন, আরটিও আসলে 200-ইশ (মিলিসেকেন্ড) এ সেট করা আছে। আপনি লক্ষ করবেন যে এটি আরএফসি থেকে 1 সেকেন্ডের মানকে গোল করে না, এবং আপনি এটিও খানিকটা উচ্চ বলে মনে করতে পারেন। এটি কারণ লিনাক্সের আরটিওর ক্ষেত্রে যখন মিনিট (200 মিলি সেকেন্ড) এবং সর্বাধিক (120 সেকেন্ড) সীমা রয়েছে তখন (উপরে বর্ণিত নিবন্ধটিতে এটির একটি দুর্দান্ত ব্যাখ্যা রয়েছে)।
সুতরাং, আপনি সরাসরি আরটিও মান পরিবর্তন করতে পারবেন না, তবে ক্ষতিকারক নেটওয়ার্কগুলির জন্য (ওয়্যারলেস জাতীয়) আপনি এফ-আরটিও টুইট করার চেষ্টা করতে পারেন (এটি ইতিমধ্যে আপনার ডিসট্রোর উপর নির্ভর করে সক্ষম করা যেতে পারে)। এফ-আরটিও সম্পর্কিত দুটি সম্পর্কিত বিকল্প রয়েছে যা আপনি টুইট করতে পারেন (ভাল সংক্ষিপ্তসার এখানে ):
net.ipv4.tcp_frto
net.ipv4.tcp_frto_response
আপনি কীটির জন্য অপ্টিমাইজ করার চেষ্টা করছেন তার উপর নির্ভর করে এগুলি কার্যকর হতে পারে বা নাও পারে।
সম্পাদনা করুন: মন্তব্যগুলি থেকে টিসিপির জন্য rto_min / সর্বাধিক মানগুলি টুইঙ্ক করার ক্ষমতা সম্পর্কে অনুসরণ করুন।
আপনি টিসিপি-র জন্য সর্বনিম্ন ন্যূনতম আরটিও পরিবর্তন করতে পারবেন না (একদিকে যেমন আপনি এসসিটিপি-এর জন্য এটি করতে পারেন - সেগুলি সিসেক্টল-এ প্রকাশিত হয়) তবে সুসংবাদটি হ'ল আপনি প্রতি রুটে আরটিওর ন্যূনতম মানটি টুইঙ্ক করতে পারেন ভিত্তিতে। আমার সেন্টোস ভিএম-এ আমার রাউটিং টেবিলটি এখানে রয়েছে:
ip route
10.0.2.0/24 dev eth0 proto kernel scope link src 10.0.2.15
169.254.0.0/16 dev eth0 scope link metric 1002
default via 10.0.2.2 dev eth0
আমি ডিফল্ট রুটে rto_min মানটি নিম্নরূপে পরিবর্তন করতে পারি:
ip route change default via 10.0.2.2 dev eth0 rto_min 5ms
এবং এখন, আমার রাউটিং টেবিলটি এমন দেখাচ্ছে:
ip route
10.0.2.0/24 dev eth0 proto kernel scope link src 10.0.2.15
169.254.0.0/16 dev eth0 scope link metric 1002
default via 10.0.2.2 dev eth0 rto_min lock 5ms
অবশেষে, একটি সংযোগ শুরু করি এবং ss -i
এটি সম্মানিত হয়েছে কিনা তা পরীক্ষা করে দেখুন:
ss -i
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 0 10.0.2.15:ssh 10.0.2.2:50714
cubic rto:201 rtt:1.5/0.75 ato:40 cwnd:10 send 77.9Mbps rcv_space:14600
ESTAB 0 0 10.0.2.15:39042 216.58.216.14:http
cubic rto:15 rtt:5/2.5 cwnd:10 send 23.4Mbps rcv_space:14600
সফল! এইচটিটিপি সংযোগের (পরিবর্তনের পরে) আরটিও 15 মিমি, যেখানে এসএসএইচ সংযোগ (পরিবর্তনের আগে) আগের মত 200+ হয়।
আমি আসলে এই পদ্ধতির পছন্দ করি - এটি আপনাকে বিশ্বব্যাপী তুলনায় উপযুক্ত রুটে কম মান সেট করতে দেয় যেখানে এটি অন্যান্য ট্র্যাফিকের কারণ হতে পারে। একইভাবে ( আইপি ম্যান পৃষ্ঠাটি দেখুন ) আপনি প্রাথমিক আরটিটি প্রাক্কলন এবং রুটের প্রাথমিক আরটিভিয়ারটি (গতিশীল আরটিও গণনার সময় ব্যবহৃত) টিচ করতে পারেন। এটি টুইট করার ক্ষেত্রে সম্পূর্ণ সমাধান না হলেও, আমি মনে করি বেশিরভাগ গুরুত্বপূর্ণ টুকরো রয়েছে। আপনি সর্বাধিক সেটিংটি টুইট করতে পারবেন না, তবে আমি মনে করি এটি কোনও ক্ষেত্রেই তেমন কার্যকর হবে না।