কেবলমাত্র একটি আইপি ঠিকানায় প্যাকেট বিলম্ব করতে টিসি ব্যবহার করা


20

আমি টিসি এবং নেট ব্যবহার করে নতুন । আমি নির্দিষ্ট আইপি ঠিকানায় প্যাকেট প্রেরণে বিলম্ব করতে চাই। তবে, নীচের কমান্ডগুলি কেবলমাত্র আইপি ঠিকানার পরিবর্তে 1.2.3.4 সিস্টেমের সমস্ত প্যাকেট বিলম্বিত করে:

tc qdisc del dev eth0 root
tc qdisc add dev eth0 root handle 1: prio
tc qdisc add dev eth0 parent 1:1 handle 2: netem delay 500ms
tc filter add dev eth0 parent 1:0 protocol ip pref 55 handle ::55 u32 match ip dst 1.2.3.4 flowid 2:1

আমার অনুমান যে আমার সমস্ত প্রান্তের ট্র্যাফিক নেট থেকে যাওয়া উচিত নয় তা নির্দিষ্ট করতে শেষে কিছু ধরণের ক্যাচ-অল ফিল্টার প্রয়োজন। তবে আমি কাজের কিছু পেতে পারি না। আমি কীভাবে এটি কাজ করব?

উত্তর:


14

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


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

13

নির্বাচিত উত্তরটি ভুল / অসম্পূর্ণ। আমি একটি অনুরূপ সমস্যার মুখোমুখি হয়েছি, নির্বাচিত উত্তরটি কিছু সহায়তা দিয়েছে, তবে যথেষ্ট নয়।

প্রথমত, নিম্নলিখিত কমান্ডটি সত্যই প্রয়োজন হয় না।

tc qdisc del dev eth0 root

এটি রুট qdisc 'মুছে ফেলবে' তবে ততক্ষণে একটি pfifo_رفাইস্ট দ্বারা প্রতিস্থাপিত হয় (যাতে আপনি সংযোগটি হারাবেন না)।

দ্বিতীয় আদেশ:

tc qdisc dev eth0 রুট হ্যান্ডেল 1: প্রিও যোগ করুন

Pfifo_fast qdisc কে প্রিওর সাথে প্রতিস্থাপন করবে। ডিফল্টরূপে, প্রিও সারিতে 3 টি ব্যান্ড রয়েছে (0, 1, 2) প্রতিটি এক শ্রেণি দ্বারা পরিচালিত (1: 1, 1: 2 এবং 1: 3)।

প্যাকেটগুলি আইপি প্যাকেজের টিওএস ক্ষেত্রটি ব্যবহার করে সেই ব্যান্ডগুলির মধ্যে একটিতে প্রেরণ করা হবে। আপনি কার্যকর করার সময় এই কনফিগারেশনটি প্রদর্শিত হয়:

tc qdisc ls

'priomap' মান দেখে।

তারপরে, আপনি একটি netem qdisc যুক্ত করুন:

tc qdisc dev eth0 প্যারেন্ট 1 যোগ করুন: 1 হ্যান্ডেল 2: নেটমেল বিলম্ব 500ms

এই আদেশের সাহায্যে আপনি 1: 1 ব্যান্ডে যাওয়ার সমস্ত ট্র্যাফিক বিলম্ব করবেন (ফিল্টারটি না হওয়া পর্যন্ত)।

তবে দুটি সতর্কতা রয়েছে:

  • আপনার ট্র্যাফিকের আলাদা আলাদা TOS মান থাকতে পারে এবং তারপরে অন্য একটি ব্যান্ডে প্রেরণ করা যায়।
  • প্রিও কিডিস্ক কনফিগার করা যায় তাই ট্র্যাফিক অন্য ব্যান্ডে যায়।

নিম্নলিখিতটি ফিল্টারটি প্রয়োগ না করা অবস্থায় নীটম দ্বারা প্রভাবিত না হওয়ার জন্য আমার সমস্যার সমাধান করেছে। উপরের পদক্ষেপের পরিবর্তে, আমি করেছি:

tc qdisc dev eth0 রুট হ্যান্ডেল 1 যোগ করুন: প্রিও প্রিওম্যাপ 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2

এটি সমস্ত ট্র্যাফিক ডিফল্টরূপে ব্যান্ড 1: 3 এ প্রেরণ করবে।

তারপরে, আমি ট্র্যাফিক বিলম্ব করতে নিয়মটি যুক্ত করেছি:

tc qdisc dev eth0 প্যারেন্ট 1 যোগ করুন 1: 1 হ্যান্ডেল 10: নেটমেট বিলম্ব 100ms 10ms

এটি 0 ব্যান্ডের কিউডিস্ক তৈরি করে, তবে যেহেতু সমস্ত ট্র্যাফিক 3 ব্যান্ডে যায় তাই এটি আমার উপর প্রভাব ফেলেনি।

এরপরে, আমি ফিল্টারটি যুক্ত করেছি:

টিসি ফিল্টার ডেথ ইথ0 প্রোটোকল আইপি প্যারেন্ট 1: 0 প্রিও 1 ইউ 32 টি ম্যাচ আইপি ডিস্ট 10.0.0.1/32 ম্যাচ আইপি dport 80 0xffff ফ্লোআইড 1: 1

ফিল্টার সহ এখন কেবলমাত্র নির্বাচিত আইপি / পোর্ট প্রভাবিত হবে, যেহেতু আমরা নির্বাচিত ট্র্যাফিকটিকে ব্যান্ড 0 এ পুনঃনির্দেশ করি।

এটি অন্যান্য ব্যান্ড 3-এ প্রবাহিত হওয়ার পরে অন্য সমস্ত ট্র্যাফিক অকার্যকর অব্যাহত রয়েছে।


"আইপিএসটি 10.0.0.1/32" কী? এটা কি গন্তব্য আইপি? তার মানে কি এখানে একটি "আইপিএসসিআর xxx.yyy.zz.www / এএ" আছে?
জ্যাচ ফলউইক 20'17

হ্যাঁ, এটি আমার উদাহরণের গন্তব্য আইপি। এবং হ্যাঁ, একটি 'আইপিএসসিআরসি' বিকল্প রয়েছে।
টেলিগ্রাফার

প্রথম কমান্ডের (টিসি কিডিস্ক ডেল) কারণটি পূর্ববর্তী যে কোনও রাজ্য পরিষ্কার করা - যেমন আপনি যদি এই কাজটি করার চেষ্টা করছেন পরীক্ষা করে থাকেন। FWIW গৃহীত উত্তর আমার জন্য কাজ করেছে the
ড্যান প্রিটস

ধন্যবাদ, এই উত্তরটি সত্যই সহায়ক ছিল।
পেপেহ্যান্ডস

1

Https://wiki.linuxfoundation.org/netering/netem এর সাধারণ উদাহরণ যা আপনাকে অন্য কোনও ট্র্যাফিককে প্রভাবিত না করে প্যাকেটগুলি বিলম্ব করতে দেয় এমনকি কনফিগারেশনের সময়ও:

tc qdisc del dev eth0 root # Ensure you start from a clean slate
tc qdisc add dev eth0 root handle 1: prio
tc qdisc add dev eth0 parent 1:3 handle 30: netem delay 500ms
tc filter add dev eth0 protocol ip parent 1:0 prio 3 u32 \
   match ip dst 192.168.1.2 flowid 1:3

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

0

এই থ্রেডে বর্ণিত পদ্ধতিটি দিয়ে আমি অন্য আইপি-তে ট্র্যাফিক স্বাভাবিক রাখার সময় একটি আইপিতে ট্র্যাফিক বিলম্ব করতে পরিচালিত করি না।

তবে, আমি নিম্নলিখিত কমান্ডগুলি ব্যবহার করে এটি পরিচালনা করি manage

tc qdisc add dev eth0 root handle 1: prio priomap 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
tc qdisc add dev eth0 parent 1:2 handle 20: netem delay 0ms
tc filter add dev eth0 parent 1:0 protocol ip u32 match ip src `hostname -I` flowid 1:2
tc qdisc add dev eth0 parent 1:1 handle 10: netem delay 15001ms
tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip dst 1.2.3.4 flowid 1:1

কমান্ড কার্যকর করা হয় যেখানে হোস্ট থেকে 15001msআইপি ট্র্যাফিক বিলম্ব করতে 1.2.3.4। কমান্ডটি hostname -Iহোস্টের মূল আইপি পেতে ব্যবহৃত হয় তবে কমান্ডের মধ্যেই মানটি প্রতিস্থাপন করা যায়।

0msহোস্ট থেকে আগত ট্র্যাফিকের সাথে মেলে তুলতে আমাকে বিলম্বের সাথে আরও একটি ফিল্টার যুক্ত করতে হয়েছিল। নিশ্চিতভাবেই এটি মার্জিত নয় তবে আমি ভাল কিছু কাজ করতে সক্ষম হইনি।

একক পোর্টের সাথে মিলের জন্য শেষ কমান্ডটি প্রতিস্থাপন করা যেতে পারে।

tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip dport 18583 0xffff flowid 1:1

18583আইপি এর পরিবর্তে পোর্টে ট্র্যাফিক বিলম্ব করা 1.2.3.4


অন্যান্য ট্র্যাফিকের কোনও প্রভাব ছাড়াই ট্র্যাফিক বিলম্ব করার জন্য আমি এই উত্তরের একটি দ্বিতীয় পদ্ধতিও পেয়েছি ।1.2.3.4:18583

tc qdisc add dev eth0 root handle 1: prio
tc filter add dev eth0 protocol ip  parent 1: prio 1 u32 match ip dst 1.2.3.4 match ip dport 18583 0xffff flowid 1:1
tc filter add dev eth0 protocol all parent 1: prio 2 u32 match ip dst 0.0.0.0/0 flowid 1:2
tc filter add dev eth0 protocol all parent 1: prio 2 u32 match ip protocol 1 0xff flowid 1:2
tc qdisc add dev eth0 parent 1:1 handle 10: netem delay 10ms
tc qdisc add dev eth0 parent 1:2 handle 20: sfq
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.