ঠিক কখন পিএমটিইউডি করা হয়? (পাথ এমটিইউ আবিষ্কার)


21

আলোচনা থেকে উত্সাহিত করেছে অন্য কোন প্রশ্ন উপর এই সাইটের বুঝলাম থাকেন আমি একটি কঠিন বোঝার আছে না যে যখন পথ MTU আবিষ্কার (PMTUD) সঞ্চালিত হয়।

আমি জানি এটি কী করে - ক্লায়েন্ট থেকে সার্ভারের পথে সর্বনিম্ন এমটিইউ আবিষ্কার করুন)। এটি কীভাবে হয় তা
আমি জানি - তাদের "ডোন্ট ফ্রেগমেন্ট" বিট সেট সহ প্রগতিশীল বৃহত্তর প্যাকেটগুলি প্রেরণ করুন এবং দেখুন "আইসিএমপি নিড টু ফ্রেগমেন্ট" ত্রুটি না পেয়ে আপনি কতটা প্যাকেট পেতে পারেন।

আমার প্রশ্নটি তখন বিশেষত, যখন কোনও হোস্ট পিএমটিইউডি সঞ্চালন করবেন?

আমি সুনির্দিষ্ট মামলা খুঁজছি "যখন কোনও হোস্ট এমটিইউ পথটি আবিষ্কার করতে চায়" এর মতো সাধারণ কিছু হয় না। বোনাস পয়েন্টস যদি আপনি কোনও হোস্ট এটি করছেন এমন প্যাকেট ক্যাপচার সরবরাহ করতে পারেন বা এই জাতীয় প্যাকেট ক্যাপচার তৈরির জন্য নির্দেশনা সরবরাহ করতে পারেন।

এছাড়াও, আমি বিশেষত IPv4 উল্লেখ করছি। আমি জানি আইপিভি 6 তে ক্ষণস্থায়ী রাউটারগুলি খণ্ড খণ্ডনের জন্য দায়ী নয় এবং ভাবতে পারি যে পিএমটিইউডি অনেক বেশি ঘটে। তবে আপাতত, আমি আইপিভি 4-তে পিএমটিইউডির নির্দিষ্ট উদাহরণগুলি সন্ধান করছি। (যদিও আপনি যদি পিএমটিইউডি একত্রে প্যাকেট ক্যাপচার করতে পারেন তবে এটি আইভিভি 6 এ রয়েছে তবে আমি এটি দেখতে খুব পছন্দ করব)


পিএমটিইউডি সর্বনিম্ন সমর্থিত এমটিইউ থেকে সর্বোচ্চ পর্যন্ত করা হয়? অথবা পিএমটিইউড সম্পাদনকারী ডিভাইসটি কি সর্বদা বৃহত্তম এমটিইউ চেষ্টা করে এবং তারপরে প্যাকেটটি পাস না হওয়া পর্যন্ত একটি বড় ইনক্রিমেন্টে পদক্ষেপ নেবে এবং তারপরে ছোট ইনক্রিমেন্টে পদক্ষেপ নেওয়া হবে, তারপরে চূড়ান্ত সিদ্ধান্ত গ্রহণ না করা পর্যন্ত বিকল্প পিছনে পিছনে?
সিপিটি_ফিংক

@ সিপিটি_ফিংক, কয়েকটি কৌশল রয়েছে। আইসিএমপি ফ্রেগমেন্টেশন প্রয়োজনীয় বার্তার আধুনিক বাস্তবায়নগুলির মধ্যে আইসিএমপি পে-লোড নিজেই সেই লিঙ্কটির এমটিইউ অন্তর্ভুক্ত করে যার জন্য খণ্ডন প্রয়োজন। এটি সহজ করে তোলে, যেহেতু প্রারম্ভিক হোস্টটি এমটিইউয়ের পাথটি কী তাড়াতাড়িই জানেন। পুরানো বাস্তবায়নের জন্য সঠিক এমটিইউ ব্যবহারের জন্য 'অনুসন্ধান' করতে বিভিন্ন কৌশল ব্যবহার করতে হবে। এই কৌশলগুলি বিভাগ 5-এ আরএফসি 1191-তে বর্ণিত হয়েছে এগুলি স্বয়ংক্রিয়ভাবে ডিফল্ট হওয়া থেকে আইপি ন্যূনতম (576) অবধি, আরও কার্যকরভাবে অনুসন্ধানের জন্য 'সাধারণ' এমটিইউ'র একটি সারণী ব্যবহার করে (আরএফসি 1191 বিভাগ 7.1 দেখুন) range
এডি 16

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

উত্তর:


15

উত্তরটি সহজ: যখনই হোস্ট খুশি হয়। সত্যিই। এটা খুব সহজ।

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

কোনও হোস্ট যখন পাথ এমটিইউ আবিষ্কার করেন তখন পরিচালনা করে এমন কোনও কঠোর নিয়ম নেই। পিএমটিইউডি যে কারণে প্রকাশিত হয়েছিল তা হ'ল খণ্ডনকে বিভিন্ন কারণে ক্ষতিকারক মনে করা হয় । প্যাকেটের খণ্ডন এড়ানোর জন্য, পিএমটিইউডির ধারণাটি কার্যতালিকা হিসাবে জীবন্ত করা হয়েছিল। অবশ্যই, খণ্ড খণ্ডকে হ্রাস করতে একটি দুর্দান্ত অপারেটিং সিস্টেমের PMTUD ব্যবহার করা উচিত

সুতরাং, প্রাকৃতিকভাবে, যখন পিএমটিইউডি ব্যবহৃত হয় তার সঠিক শব্দার্থবিদ্যা প্রেরকের অপারেটিং সিস্টেমের উপর নির্ভর করে - বিশেষত, সকেট বাস্তবায়ন। আমি কেবল লিনাক্সের নির্দিষ্ট ক্ষেত্রে বলতে পারি, তবে অন্যান্য ইউনিক্স রূপগুলি খুব আলাদা নয়।

লিনাক্সে, পিএমটিইউডি IP_MTU_DISCOVERসকেট বিকল্প দ্বারা নিয়ন্ত্রিত হয় । getsockopt(2)স্তর IPPROTO_IPএবং IP_MTU_DISCOVERবিকল্পটি উল্লেখ করে আপনি এর বর্তমান অবস্থা পুনরুদ্ধার করতে পারেন । এই বিকল্পটি SOCK_STREAMকেবল SOCK_STREAMসকেটের জন্য বৈধ (কোনও সকেট দ্বি-মুখী, সংযোগ-ভিত্তিক, নির্ভরযোগ্য সকেট; বাস্তবে এটি একটি টিসিপি সকেট, যদিও অন্যান্য প্রোটোকলগুলি সম্ভব), এবং সেট করার পরে, লিনাক্স আরটিএফসি ঠিক ঠিক হিসাবে সংজ্ঞায়িতভাবে পিএমটিইউডি সম্পাদন করবে 1191।

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

আপনি যদি সেট না করেন IP_MTU_DISCOVER?

একটি ডিফল্ট মান আছে। ডিফল্টরূপে, সকেটে IP_MTU_DISCOVERসক্ষম করা হয় SOCK_STREAM। এটি পড়ার দ্বারা পড়া বা পরিবর্তন করা যেতে পারে /proc/sys/net/ipv4/ip_no_pmtu_disc। একটি শূন্য মান মানে IP_MTU_DISCOVERনতুন সকেটে ডিফল্টরূপে সক্ষম করা হয়; একটি অ-শূন্য মানে বিপরীত।

সংযোগহীন সকেট সম্পর্কে কী?

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

তলদেশের সরুরেখা

  • হোস্ট সিদ্ধান্ত নেয় কখন (এবং যদি) পিএমটিইউডি ব্যবহার করতে হয়
  • এটি যখন পিএমটিইউডি ব্যবহার করে, এটি কোনও সংযোগের বৈশিষ্ট্যের মতো, ক্রমাগত ঘটে (তবে যে কোনও মুহূর্তে বাস্তবায়ন এটি করা বন্ধ করে)
  • বিভিন্ন অপারেটিং সিস্টেমগুলি বিভিন্ন পদ্ধতির ব্যবহার করে তবে সাধারণত নির্ভরযোগ্য, সংযোগ-ভিত্তিক সকেটগুলি ডিফল্টরূপে পিএমটিইউডি সম্পাদন করে, যেখানে অবিশ্বাস্য, সংযোগবিহীন সকেটগুলি করে না

4

সাধারণত, পাথ সর্বাধিক সংক্রমণ ইউনিট আবিষ্কার (পিএমটিইউডি) ঘটে যখনই কোনও হোস্ট মনে হয় একটি প্যাকেট খুব বড় হওয়ার কারণে বাদ পড়েছিল।

এটি আইসিএমপি বিভাজনের প্রয়োজনীয়তার জবাবে হতে পারে (টাইপ 3, কোড 4) স্পষ্টভাবে ইঙ্গিত করে যে প্যাকেটটি বাদ পড়েছিল। সাধারণ অনুশীলনে সমস্ত আইপিভি 4 প্যাকেটগুলি "না ফ্রেগমেন্ট" (ডিএফ) পতাকা সেট দিয়ে সেট করা থাকে, সুতরাং এমটিইউর বেশি কোনও প্যাকেট এ জাতীয় প্রতিক্রিয়া প্রকাশ করে। আইপিভি 6 মোটে টুকরো টুকরো সমর্থন করে না।

কিছু রাউটার বা হোস্ট ফায়ারওয়াল সমস্ত আইসিএমপি প্রায়শই ফেলে দেয় কারণ একটি নিরীহ প্রশাসক আইসিএমপি একটি সুরক্ষা ঝুঁকি বলে বিশ্বাস করে । অথবা, কিছু লিঙ্ক একীকরণ প্রকল্পগুলি আইসিএমপি বিতরণ ভঙ্গ করতে পারে । এমটিইউ আবিষ্কার করার জন্য একটি বিকল্প প্রক্রিয়া ছাড়িয়ে গেছে যা আরপিসি 4821 এ প্রস্তাবিত আইসিএমপি-র উপর নির্ভর করে না ।

tracepathএমটিইউ অনুসন্ধানের জন্য আমার প্রিয় লিনাক্স সরঞ্জাম। LAN এ 9001 এমটিইউ সহ হোস্টের একটি উদাহরণ এখানে রয়েছে, তবে 10.33.32.157 এ পৌঁছানোর জন্য অবশ্যই একটি আইপিসিপি ভিপিএন অতিক্রম করতে হবে:

$ tracepath -n 10.33.32.157
 1?: [LOCALHOST]                                         pmtu 9001
 1:  10.1.22.1                                             0.122ms pmtu 1500
 1:  169.254.3.1                                           1.343ms pmtu 1422
 1:  10.255.254.61                                        23.790ms 
 2:  no reply
^C [this host won't return an ICMP port unreachable, so tracepath won't terminate]

আইসিএমপি ত্রুটিগুলি এর সাথে লক্ষ্য করা যায় tcpdump:

$ sudo tcpdump -p -ni eth0 'icmp and icmp[0] == 3 and icmp[1] == 4'
14:46:57.313690 IP 10.1.22.1 > 10.1.22.194: ICMP 10.33.32.157 unreachable - need to frag (mtu 1500), length 36
14:46:57.315080 IP 169.254.3.1 > 10.1.22.194: ICMP 10.33.32.157 unreachable - need to frag (mtu 1422), length 556

এমটিইউ আবিষ্কারগুলি ক্যাশে করা হয়। লিনাক্সে এটি পর্যবেক্ষণ এবং ফ্লাশ করা যায় ip( লিনাক্স 3.6 সাল থেকে পরিবর্তনের বিষয়ে সাবধান থাকুন ):

$ ip route get 10.33.32.157
10.33.32.157 via 10.1.22.1 dev eth0  src 10.1.22.194 
    cache  expires 591sec mtu 1422
$ sudo ip route flush cache
$ ip route get 10.33.32.157
10.33.32.157 via 10.1.22.1 dev eth0  src 10.1.22.194 
    cache

টিসিপি-র ক্ষেত্রে, এমটিইউ ছাড়িয়ে যাওয়া সংযোগ সেটআপের অংশ হিসাবে এড়ানো যেতে পারে। প্রতিটি প্রান্তে প্রেরিত এসওয়াইএন অন্তর্ভুক্ত করা হয় সর্বাধিক সেগমেন্টের আকার (এমএসএস)। টিসিপি শিরোনাম ( বিকল্পগুলি বাদ দিয়ে 20 বাইট ) এবং আইপি শিরোনাম (20 বাইট) মানে এমএসএস এবং এমটিইউ 40 বাইটের পার্থক্যের সাথে সম্পর্কিত।

এর সাথে একটি বৃহত ফাইল স্থানান্তর করার সময় এই দুটি হোস্টের মধ্যে সংযোগ স্থাপনের উদাহরণ রয়েছে scp:

$ sudo tcpdump -p -ni eth0 'host 10.33.32.157 and tcp[13]&2 == 2'
IP 10.1.22.194.45853 > 10.33.32.157.22: Flags [S], seq 634040018, win 26883, options [mss 8961,sackOK,TS val 10952240 ecr 0,nop,wscale 7], length 0
IP 10.33.32.157.22 > 10.1.22.194.45853: Flags [S.], seq 1371736848, ack 634040019, win 26847, options [mss 1379,sackOK,TS val 10824267 ecr 10952240,nop,wscale 7], length 0

প্রথম প্যাকেটে, স্থানীয় হোস্টটি 8961 এর এমএসএসের প্রস্তাব দেয় This এটি কনফিগার করা 9001 এমটিইউ, কম 40 বাইট। ফিরে আসা এসওয়াইএন / এসিএকে 1379 এর এমএসএস রয়েছে, এটি 1419 এর এমটিইউ বোঝায় I আমি জানি এই নেটওয়ার্কে দূরবর্তী হোস্টটি 8961 প্রেরণ করেছে, তবে রাউটার দ্বারা মানটি সংশোধন করা হয়েছে কারণ এটি জানে যে পথটিতে একটি ইন্টারনেট পাথ রয়েছে ( এমটিইউ 1500) একটি আইপিসি টানেলের একটি ওভারহেড। এই রাউটারটি অন্য হোস্টে 1419 হিসাবে উপস্থিত হতে আমাদের 8961 এর প্রেরিত এমএসএসও পরিবর্তন করেছে। এটিকে এমএসএস ক্ল্যাম্পিং বলা হয় ।

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


-3

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

http://www.juniper.net/techpubs/en_US/junos12.1/topics/usage-guidelines/routing-configuring-mtu-discovery-for-bgp-sessions.html

ধন্যবাদ।


2
আমি বিশ্বাস করি তার অর্থ "কখন এটি ট্রিগার হয়?"।
জর্ডান হেড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.