লিনাক্স স্লো স্টার্ট: আইপ রুট পরিবর্তন করা প্রাথমিক উইন্ডোতে কোনও প্রভাব ফেলবে না


10

নীচে দেখানো হিসাবে আমি আমার মেশিনের টিসিপি প্রাথমিক উইন্ডোটি 10 ​​এ পরিবর্তন করেছি

[user@site etc]$ sudo ip route change default via 17.255.209.1 dev eth0  proto static initcwnd 10 

এবং tcp_slow_start_after_idleনীচে প্রদর্শিত হিসাবে পরিবর্তন করা হয়েছে

[user@site etc]$ sudo sysctl -a | grep tcp_slow_start_after_idle
net.ipv4.tcp_slow_start_after_idle = 0

একটি আইপি রুটের শোয়ের নিশ্চয়তা নীচে দেওয়া হয়েছে

[user@site etc]$ ip route show
default via 17.255.209.1 dev eth0  proto static  initcwnd 10
169.254.0.0/16 dev eth0  scope link  metric 1002
17.255.209.0/24 dev eth0  proto kernel  scope link  src 17.255.209.19

এখন যখন আমি ওয়েবসাইটে টিসিপিডাম্প করি তখন আমার উইন্ডো / এমএসএস 4 টি ডিফল্ট হিসাবে বাকি উইন্ডোতে প্রাথমিক উইন্ডোতে কোনও পরিবর্তন দেখা যায় বলে মনে হয় না । 5840/1460 = 4

[user@site etc]$ sudo tcpdump -n -i any 'tcp[tcpflags] & (tcp-syn|tcp-ack) == tcp-syn and port 80'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes
11:17:45.048174 IP 21.101.151.198.45873 > 17.255.209.19.http: Flags [S], seq 2008673341, win 5840, options [mss 1460,sackOK,TS val 1724223146 ecr 0,nop,wscale 6], length 0

ওয়েব পৃষ্ঠাগুলিতে যে কার্লটি হিট হয়েছে তা প্রায় 30 কেবি ডেটার অনুরোধ করেছে ।

[user@machine ~]$ curl http://www.site.com/js/main.js > /dev/null
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 88212  100 88212    0     0   179k      0 --:--:-- --:--:-- --:--:--  272k

আমার পদ্ধতির মধ্যে কী ভুল হতে পারে?

শাঁস

[user~]$ uname -r
3.0.4x86_64-linode21

আপডেট হিসাবে, আমি google.com চেষ্টা করার পরে এখানে ফলাফল রয়েছে

[user@site ~]$ sudo tcpdump -n -i any 'tcp[tcpflags] & (tcp-syn|tcp-ack) == tcp-syn and host www.google.com'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes
17:20:28.033236 IP 17.255.209.19.42799 > 74.125.127.106.http: Flags [S], seq 3148947324, win 14600, options [mss 1460,sackOK,TS val 193695310 ecr 0,nop,wscale 4], length 0

আপনি দেখতে পাচ্ছেন WIN / MSS এই ক্ষেত্রে 14600/1460 = 10 is

সার্ভার মেশিন থেকেই নিজের সাইটটি কার্লের মাধ্যমে হিট করার চেষ্টা করেছি এবং ফলাফলটি এখানে এসেছে:

[user@site ~]$ sudo tcpdump -n -i any 'tcp[tcpflags] & (tcp-syn|tcp-ack) == tcp-syn and host www.site.com'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes
17:25:14.584338 IP 17.255.209.19.35008 > 17.255.209.19.http: Flags [S], seq 3894567470, win 32792, options [mss 16396,sackOK,TS val 193981861 ecr 0,nop,wscale 4], length 0

WIN / MSS এই ক্ষেত্রে 32792/16396 = 2


মনে রাখবেন, আপনি যদি একটি লিনাক্স মেশিন থেকে এটি হিট করে থাকেন তবে আপনার 3.0 এও হওয়া উচিত, পরিবর্তনের সূচনা করে এমন 3 সংস্করণটি নিশ্চিত করার জন্য উত্স / ট্যাগগুলির মাধ্যমে খনন করবেন
স্যাম জাফরান

@ কুইন্টিনপার আপনি কি পরীক্ষা টেস্ট মেশিন থেকে বহির্গামী সংযোগের সাথে tcpdump আউটপুট যুক্ত করতে পারবেন?
কুপসন

@ কুপসন আমি প্রশ্নটি আপডেট করেছি
কুইন্টিন পার

আমি যতদূর জানি আপনি আগত সংযোগগুলিতে প্রাথমিক উইন্ডোকে প্রভাবিত করতে পারবেন না । গুগলের সাথে আপনার সংযোগটি দেখায় যে আপনি আইডব্লিউ 10 তে সেট করেছেন Lo লুপব্যাক ইনফারফেসটি সেই বিশাল এমটিইউর সাথে বেশ বিশেষ, সম্ভবত কার্নেলের উত্সে প্রাথমিক উইন্ডোতে কিছু ক্যাপ রয়েছে।
কুপসন

মনে রাখবেন, 2 টি জিনিস আইডাব্লু নির্ধারণ করবে। ক্লায়েন্ট সর্বাধিক প্রাথমিক যানজট উইন্ডো এবং সার্ভারস আইডাব্লু। ছোট জয়। 2 টি মেশিন থেকে পরীক্ষা চালান, সার্ভারের 3.0 এ ডিফল্টরূপে আইডাব্লু সেট থাকা উচিত ... এবং এক্সপি / ভিস্তা / উইন 7 ক্লায়েন্টগুলি আইডব্লিকে সীমাবদ্ধ করে না তাই পরীক্ষার জন্য ভাল ক্লায়েন্ট তৈরি করতে পারে। Linux.০ লিনাক্স ক্লায়েন্টগুলিও কাজ করে তবে একটি পৃথক মেশিন হতে হবে।
স্যাম জাফরন

উত্তর:


9

আমি মনে করি আপনি টিসিপি কীভাবে কাজ করে তা ভুল বুঝে চলেছেন।

প্রেরিত প্রতিটি প্যাকেট সর্বদা একটি রিসিভার উইন্ডো (ওরফে। আরডবিন) এবং একটি alচ্ছিক স্কেলিং ফ্যাক্টর বিজ্ঞাপন করবে, দেখুন আরএফসি 1323

প্রেরককে স্বীকৃতি না দিয়ে RWIN এ নির্দিষ্ট করা তথ্যের পরিমাণের চেয়ে বেশি পাঠানোর অনুমতি নেই । যানজট উইন্ডোর উপর নির্ভর করে প্রেরক RWIN পূরণ করার সিদ্ধান্ত নিতে পারেন।

সুতরাং, টিসিপি প্যাকেটে প্রকাশিত দুটি বিট রয়েছে। সার্ভারে RWIN এবং ক্লায়েন্টের উপর RWIN। উভয় প্রান্তে কনজেশন উইন্ডোর সর্বাধিক আকার কী হতে পারে তা এই উভয় চিত্রই নির্দেশ করে।

যখন আমরা ফাইল আপলোডগুলি বলার জন্য পারফরম্যান্স অনুকূল করতে চেষ্টা করি তখন সার্ভারে থাকা RWIN আকর্ষণীয়।

যখন আমরা ডাউনলোডের গতি নির্ধারণ করার চেষ্টা করছি তখন ক্লায়েন্টের উপরের RWIN আকর্ষণীয়।

এই সংখ্যার কোনওটিই অন্য প্রান্তে যানজট উইন্ডোটিকে সর্বজনীন করে না

সুতরাং যদি আমি 64K একজন RWIN আছে, সার্ভারে কনজেশন উইন্ডো হতে পারে কোন সংখ্যা 64K কম।

প্যাকেটগুলি গণনা করা প্রকৃত ভিড় উইন্ডো কি তা নির্ধারণ করার একমাত্র উপায়।

আমি যদি জানি:

  1. আমার রাউন্ড ট্রিপ সময় (আরটিটি) 200 মিলিয়ন ডলার।
  2. আমি স্রেফ 100k এমন একটি সংস্থান অনুরোধ করেছি।
  3. আমার কাছে 64k এর একটি আরডব্লিন রয়েছে।

যদি আমি সার্ভার থেকে 2 প্যাকেট ফিরে পাই যা 2005 ডলারের মধ্যে 1452 বাইট দীর্ঘ, এটি সম্ভবত সার্ভারের কনজেশন উইন্ডোটি 4356 এর চেয়ে ছোট, কারণ এটি যদি বড় 3 প্যাকেট প্রেরণ করা হত। আইডাব্লু 10 টি সেট করা থাকলে 200 মাইলের চিহ্নের চারপাশে 10 টি প্যাকেটের ফাটল দেখতে পাব।

আপনি যদি নিজের আইডাব্লু পরিবর্তন করেন এবং পরিবর্তিত কাজটি নিশ্চিত করতে চান তবে সার্ভারে কনজেশন উইন্ডো আকারের একটি অনুমান পেতে আপনাকে প্যাকেটগুলি গণনা করতে হবে।

মনে রাখবেন, আপনি সম্ভবত কথোপকথনের মাঝামাঝি দিকে নজর রাখছেন না (যেখানে কনজেশন উইন্ডোটি ইতিমধ্যে বেড়ে উঠতে পারে) তা নিশ্চিত করার জন্য আপনি সরাসরি কথোপকথনটি এসওয়াইএন, এসওয়াইএন-এসি, এসি-র পরে সরাসরি দেখতে চান।


1
কনজেশন উইন্ডো এবং টিসিপি উইন্ডোর মধ্যে পার্থক্যটি টিসিপি / আইপি এর 20.6 (ধীরে শুরু) এর মধ্যে বর্ণিত হয়েছে: "ধীর শুরু প্রেরকের টিসিপিতে একটি অন্য উইন্ডো যুক্ত করে : কনজেশন উইন্ডো, নাম cwnd" (সাহসী আমার)। 20.7 এ একটি সিকোয়েন্স ডায়াগ্রাম রয়েছে যা এটি বাল্ক স্থানান্তরের সময় খেলতে দেখায়।
কাইল ব্র্যান্ড্ট

7

উইন্ডোর আকার যেকোন ছোট হবে: সার্ভার আরম্ভ উইন্ডোর আকার বা ক্লায়েন্ট আরডবিন। যেহেতু 5840 লিনাক্স 2.6 এর জন্য ডিফল্ট আরডবিন, তাই মনে হচ্ছে আপনার ক্লায়েন্টটি এখানে সীমিতকরণের কারণ।

একটি উইন্ডোজ বক্স থেকে চেষ্টা করুন। উইন্ডোজ এক্সপি-র একটি আরডব্লিন 64৪ কে, আরও নতুন সংস্করণ k কে।

সূত্র: http://www.cdnplanet.com/blog/tune-tcp-initcwnd-for-optimum-performance/ (আকর্ষণীয় অংশটি ভিডিওটির নীচে রয়েছে)

সম্পাদনা: উত্তরটি আরও পরিষ্কার করার জন্য প্রসারিত করা:

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

সম্পাদনা 2: প্রশ্নের সাথে যুক্ত টিসিপিডাম্পগুলি গুগলে সার্ভার খোলার সংযোগগুলি দেখায় এবং নিজেই ক্লায়েন্ট হিসাবে কাজ করে।


প্রাথমিক উইন্ডো (এসওয়াইএন প্যাকেটে প্রস্তাবিত) হ'ল 5840 It's
কুপসন

উহ, 17.255.209.0 আপনার সার্ভার সাবনেট, ডান? আপনি যে প্যাকেটটি দেখছেন তা হ'ল 21.101.151.198.45873 থেকে 17.255.209.19.http। আমি tcpdump আউটপুট সম্পর্কে কোনও বিশেষজ্ঞ নই, তবে আমার কাছে এটি হ'ল: হ্যালো সার্ভার, আমি আপনার ক্লায়েন্ট, আমি 5840 বাইট উইন্ডো পছন্দ করি। :) পরবর্তী প্যাকেটটি হবে এসিকে দিয়ে সার্ভারে সাড়া দেওয়া, 5840 দুর্দান্ত, চিয়ার্স। :)
কেউ

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

1
আমি এই প্রশ্নের মূল লেখক নই। আমি এটি নিজের পরীক্ষার পরিবেশে এটি পরীক্ষা করেছি (অনুরূপ ফলাফল সহ) এবং এটিও পরিবর্তন করতে পারি না। প্রাথমিক কনজেশন উইন্ডো আকার (initcwnd) এর অন্য সংযোগের সাথে কোনও সম্পর্ক নেই।
কুপসন

আমি আপনার সেটআপ জানি না। মূল পোস্টারটি জিজ্ঞাসা করেছিল যে কেন সার্ভারে প্রাথমিক উইন্ডোর আকার বাড়ানো সত্ত্বেও তার পরীক্ষার সংযোগটিতে কেবল উইন্ডোর আকার 5840 বাইট রয়েছে। উত্তরটি হ'ল: কারণ তিনি যে ক্লায়েন্টটির সাথে পরীক্ষা করেছেন সেটি বড় উইন্ডো আকারের অনুমতি দেয় না। আমি সাধারণভাবে ধারণাটি নিয়ে অন্যান্য সেটআপ বা সম্ভবত অন্যান্য সমস্যা / বাগ সম্পর্কে মন্তব্য করতে পারি না।
কেউ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.