
أداة لتكرار الطلبات عبر الإنترنت وإعادة تشغيل تدفقات TCP، مثالية للاختبار الحقيقي، اختبار الأداء، اختبار الاستقرار، اختبار الإجهاد، اختبار الحمل، اختبار التدخين، والمزيد.
TCPCopy هي أداة إعادة تشغيل تدفق TCP للاختبار الواقعي لتطبيقات خوادم الإنترنت.
نظرة عامة على TCPCopy للمبتدئين
نظرة عامة عامة على بنية TCPCopy
أمثلة التسخين المسبق لـ TCPCopy
على الرغم من أن حركة المرور الحية الحقيقية ضرورية لاختبار تطبيقات خوادم الإنترنت، إلا أن محاكاتها بدقة يمثل تحديًا بسبب تعقيد البيئات عبر الإنترنت. لتمكين اختبار أكثر واقعية، تم تطوير TCPCopy كأداة إعادة إنتاج التدفق الحي لتوليد أحمال عمل اختبارية تشبه إلى حد كبير أحمال العمل الإنتاجية. يستخدم TCPCopy على نطاق واسع من قبل الشركات في الصين.
يؤثر TCPCopy بشكل طفيف على نظام الإنتاج، حيث يستهلك فقط وحدة معالجة مركزية إضافية وذاكرة وعرض نطاق ترددي. يعكس عبء العمل المُعاد إنتاجه بيئة الإنتاج من حيث تنوع الطلبات وزمن وصول الشبكة واستخدام الموارد.

الشكل 1. نظرة عامة على بنية TCPCopy.
كما هو موضح في الشكل 1، يتكون TCPCopy من مكونين: tcpcopy و intercept. يعمل مكون tcpcopy على الخادم عبر الإنترنت، حيث يلتقط الطلبات الحية، بينما يعمل intercept على خادم المساعد، ويقوم بمهام مثل تمرير معلومات الاستجابة إلى tcpcopy. يعمل تطبيق الاختبار نفسه على الخادم الهدف.
افتراضيًا، يستخدم tcpcopy مآخذ توصيل خام لالتقاط الحزم في طبقة الشبكة (كما هو موضح بالسهام البرتقالية في الشكل). يتعامل مع عمليات مثل محاكاة تفاعل TCP، والتحكم في زمن وصول الشبكة، ومحاكاة التفاعل في الطبقة العليا. ثم يرسل الحزم إلى الخادم الهدف باستخدام مآخذ توصيل خام للإخراج (كما هو موضح بالسهام الحمراء الفاتحة في الشكل).
المهمة الوحيدة المطلوبة على الخادم الهدف هي تكوين قواعد التوجيه لتوجيه حزم الاستجابة (كما هو موضح بالسهام الخضراء الفاتحة في الشكل) إلى خادم المساعد.
دور مكون intercept هو إعادة توجيه رأس الاستجابة (افتراضيًا) إلى tcpcopy. يلتقط حزم الاستجابة، ويستخرج معلومات رأس الاستجابة، ويرسل هذه المعلومات إلى tcpcopy عبر قناة مخصصة (ممثلة بالسهام الزرقاء الفاتحة في الشكل). عند استلام رأس الاستجابة، يستخدم tcpcopy المعلومات لتعديل سمات الحزم عبر الإنترنت ويواصل إرسال الحزم اللاحقة.
من المهم ملاحظة أن الاستجابات من الخادم الهدف يتم توجيهها إلى خادم المساعد، الذي يعمل بمثابة ثقب أسود.
بالنسبة لـ intercept، لديك خياران:
git clone git://github.com/session-replay-tools/intercept.git.بالنسبة لـ tcpcopy، لديك أيضًا خياران
git clone git://github.com/session-replay-tools/tcpcopy.git.intercept:cd intercept./configure makeintercept:make installintercept--single
تشغيل intercept في الوضع غير الموزع.
--with-pfring=PATH
تحديد مسار مكتبات مصدر PF_RING.
--with-debug
تجميع intercept مع دعم التصحيح، مع حفظ السجلات في ملف.
tcpcopy على الخادم عبر الإنترنتtcpcopy:cd tcpcopy./configure maketcpcopy:make installtcpcopy--offline
إعادة تشغيل تدفقات TCP من ملف pcap.
--pcap-capture
التقاط الحزم في طبقة ارتباط البيانات.
--pcap-send
إرسال الحزم في طبقة ارتباط البيانات بدلاً من طبقة IP.
--with-pfring=PATH
تحديد مسار مكتبات مصدر PF_RING.
--set-protocol-module=PATH
تعيين tcpcopy للعمل مع وحدة بروتوكول خارجية.
--single
إذا تم تكوين كل من intercept و tcpcopy باستخدام الخيار --single، فسيعمل نسخة واحدة فقط من tcpcopy مع intercept، مما يؤدي إلى أداء أفضل.
--with-tcmalloc
استخدام tcmalloc بدلاً من malloc.
--with-debug
تجميع tcpcopy مع دعم التصحيح، مع حفظ السجلات في ملف.
افترض أنه تم تكوين كل من tcpcopy و intercept باستخدام ./configure.
على الخادم الهدف الذي يعمل عليه تطبيقات الخادم:
قم بتكوين قواعد التوجيه لتوجيه حزم الاستجابة إلى خادم المساعد. على سبيل المثال، إذا كان 61.135.233.161 هو عنوان IP لخادم المساعد، استخدم أمر التوجيه التالي لتوجيه جميع الاستجابات من العملاء في نطاق 62.135.200.x إلى خادم المساعد:
route add -net 62.135.200.0 netmask 255.255.255.0 gw 61.135.233.161
على خادم المساعد الذي يعمل عليه intercept (مطلوب صلاحية الجذر أو صلاحية CAP_NET_RAW):
./intercept -F <filter> -i <device>
لاحظ أن تنسيق المرشح هو نفس تنسيق مرشح pcap. على سبيل المثال:
./intercept -i eth0 -F 'tcp and src port 8080' -d
في هذا المثال، سيلتقط intercept حزم الاستجابة من تطبيق يعتمد على TCP يستمع على المنفذ 8080، باستخدام جهاز الشبكة eth0.
يرجى ملاحظة أن ip_forward غير ممكّن على خادم المساعد.
على خادم المصدر عبر الإنترنت (مطلوب صلاحية الجذر أو صلاحية CAP_NET_RAW):
./tcpcopy -x localServerPort-targetServerIP:targetServerPort -s <intercept server> [-c <ip range>]
على سبيل المثال (بافتراض أن 61.135.233.160 هو عنوان IP للخادم الهدف):
./tcpcopy -x 80-61.135.233.160:8080 -s 61.135.233.161 -c 62.135.200.x
في هذا المثال، يلتقط tcpcopy الحزم على المنفذ 80 من الخادم الحالي، ويغير عنوان IP للعميل إلى عنوان من نطاق 62.135.200.x، ويرسل هذه الحزم إلى المنفذ 8080 على الخادم الهدف (61.135.233.160). كما يتصل بـ 61.135.233.161 لطلب intercept لإعادة توجيه حزم الاستجابة. على الرغم من أن معامل -c اختياري، إلا أنه يستخدم هنا لتبسيط قواعد التوجيه.
CAP_NET_RAW (مثل setcap CAP_NET_RAW=ep tcpcopy)../configure --with-resp-payload لـ intercept مع خيار ./configure لـ tcpcopy.ip_forward على خادم المساعد../tcpcopy -h أو ./intercept -h.