লিনাক্সে টিসিপি আরটিও মান পরিবর্তন করা


12

আমি কোনও সংযোগের জন্য টিসিপি আরটিও (পুনঃপ্রেরণ সময়সীমা) মানটি পরিবর্তন করতে চাই এবং আমি যে কিছু পাঠ্য করেছি তা বোঝায় যে আমি এটি করতে পেরেছি, তবে কোথায় এবং কীভাবে এটি পরিবর্তন করতে হবে তা প্রকাশ করে না।

আমি /proc/sys/net/ipv4ভেরিয়েবলগুলি দেখেছি , তবে ভেরিয়েবলগুলির কোনওটিই আরটিও সম্পর্কিত নয়। যদি কেউ আমাকে এই মানটি কীভাবে পরিবর্তন করতে হয় তা বলতে পারলে আমি এটির প্রশংসা করব।


এটি আমার পক্ষে কাজ করে না। আরটিও টাইম সহ 'এমএস' সহ খুব কমপক্ষে আমাকে একটি ত্রুটি দেয়! আমি কাজ করার কমান্ডটি পেয়েছি, তবে এসএস -i অন্যথায় বলে। তদ্ব্যতীত, 2 সিস্কিটল ভার্সের অস্তিত্ব নেই। আমি একটি ৪.৪ কার্নেলে চালাচ্ছি
মার্ক সেগার

আমি একটি সাম্প্রতিক ডিস্ট্রো চেষ্টা করেছিলাম এবং এর ip route replaceপরিবর্তে সাফল্য পেয়েছি - মনে হচ্ছে ip routeসিনট্যাক্সটি কিছুটা বদলেছে। আমি যদিও সফলভাবে পরিবর্তনটি করতে সক্ষম হয়েছি। শুধু খেয়াল করার জন্য, আপনার উত্তর সম্পর্কে মন্তব্য করা উচিত, আপনি যদি আমাকে পিং করতে চান তবে প্রশ্নটি নয় - আমি মূলত এটি দুর্ঘটনার দ্বারা দেখেছি, শুভ ভাগ্য যে এটি সাম্প্রতিক ছিল :)
অ্যাডাম সি

উত্তর:


30

আপনি আরটিওকে বিশেষত পরিবর্তন করতে পারবেন না কারণ এটি কোনও স্থির মান নয়। পরিবর্তে (প্রাথমিক 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+ হয়।

আমি আসলে এই পদ্ধতির পছন্দ করি - এটি আপনাকে বিশ্বব্যাপী তুলনায় উপযুক্ত রুটে কম মান সেট করতে দেয় যেখানে এটি অন্যান্য ট্র্যাফিকের কারণ হতে পারে। একইভাবে ( আইপি ম্যান পৃষ্ঠাটি দেখুন ) আপনি প্রাথমিক আরটিটি প্রাক্কলন এবং রুটের প্রাথমিক আরটিভিয়ারটি (গতিশীল আরটিও গণনার সময় ব্যবহৃত) টিচ করতে পারেন। এটি টুইট করার ক্ষেত্রে সম্পূর্ণ সমাধান না হলেও, আমি মনে করি বেশিরভাগ গুরুত্বপূর্ণ টুকরো রয়েছে। আপনি সর্বাধিক সেটিংটি টুইট করতে পারবেন না, তবে আমি মনে করি এটি কোনও ক্ষেত্রেই তেমন কার্যকর হবে না।


স্পষ্টতার জন্য @ অ্যাডাম সি ধন্যবাদ, তবে আপনি ন্যূনতম (200 মিলি) এবং সর্বাধিক (120 সিসি) উল্লেখ করেছেন, আমি কি এর (মিনিট বা সর্বোচ্চ) কোনও পরিবর্তন করতে পারি? যদি হ্যাঁ, কিভাবে? ...
obiigbe91

আমি বিশ্বাস করি যে তারা কোডে ধ্রুবক এবং আমি এগুলি গতিশীলভাবে সেট করার কোনও উপায় সম্পর্কে অবগত নই তবে কিছুটা খনন করে দেখব যেহেতু আমি কোডটি পরিবর্তন করে ধরে নিচ্ছি এবং আপনার নিজস্ব কার্নেল সংকলন করা অনেকটা :)
অ্যাডাম সি

কীভাবে আরটিও_মিনটি টুইট করবেন এবং এটি এবং উত্তর সম্পর্কিত আরও কয়েকটি যুক্ত জিনিস যুক্ত করবেন তা নির্ধারণ করেছেন :)
অ্যাডাম সি

কেন এমন কিছু নেই rto_max? আমরা কীভাবে বিশ্বব্যাপী সর্বাধিক সময়সীমা নির্ধারণ করব?
হল

আপনি যদি সর্বনিম্ন সেট করেন (বা ডিফল্ট গ্রহণ করুন) এবং তারপরে অনুমোদিত পুনরায় চেষ্টাগুলির সংখ্যা ( net.ipv4.tcp_retries1এবং net.ipv4.tcp_retries2বা অনুরূপ আইআইআরসি) পরিবর্তন করেন তবে আমি মনে করি আপনি একটি আরটিও সর্বাধিকের সমপরিমাণে পেতে পারেন।
আদম সি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.