NameCheap-Hosting

استفد من الخصومات على خدمات الاستضافة بمختلف انواعها

VPS hosting: up to 30% off!

الثلاثاء، 11 نوفمبر 2014

بروتوكول ARP

 بروتوكول Address Resolution Protocol

تعلمنا سابقا أن البيانات المراد ارسالها تدخل في عملية التغليف encapsulation قبل ارسالها والتي يتم فيها اضافة معلومات ضرورية على البيانات الأصلية وذلك لتتمكن أجهزة الشبكة لنقلها وكذلك ليتمكن الجهاز المستقبل من استرجاع البيانات. من هذه المعلومات المضافة عنواني الطبقة الثالثة layer 3 للمرسل والمستقبل IP addresses أي العنوان المتغير، كما يجب اضافة عنواني الطبقة الثانية layer 2 للمرسل والمستقبل MAC addresses وهو العنوان الثابت.
عندما يريد جهاز ارسال البيانات يكون عنوان المستقبل المتغير IP address معلوم للمرسل لكنه بالعادة يجهل عنوان المستقبل الثابت MAC address. وهنا يحتاج المرسل معرفة العنوان المفقود destination MAC address ويتم ذلك من خلال بروتوكول ARP.
مبدأ عمل بروتوكول ARP
يقوم الجهاز المرسل بارسال بيانات متعلقة بالسؤال عن عنوان MAC address لجهاز معلوم عنوانه الآخر IP address وتسمى هذه بـ ARP request. اذ يقوم المرسل بتغليف encapsulation باكيت خاصة ببروتوكول الـ ARP يكون مصدرها عنوان IP address للجهاز المرسل وعنوان المستقبل فيكون العنوان المخصص للجميع global broadcast وقيمته (255.255.255.255)، وبعد الانتهاء من اضافة باقي المعلومات الاخرى ترسل الـ packet للطبقة الثانية لاستكمال عملية التغليف ويتم اضافة عنوان MAC address للجهاز المرسل اما عنوان المستقبل فيكون ايضا العنوان المخصص للجميع broadcast وتكون قيمته (FFFF.FFFF.FFF). ثم ترسل هذه الـ ARP request لتمر على جهاز switch الذي يقوم بارسالها عبر جميع المنافذ التي لديه كونه broadcast frame أي مرسل لجميع الأجهزة الموجودة بنفس الشبكة المحلية LAN. فتصل ARP request للأجهزة الطرفية الموجودة في الشبكة المحلية، حيث يقوم الجهاز المعني باجابة الطلب ويشكل ARP reply يحتوي على العنوان المطلوب MAC address.
مثال توضيحي
لنفرض أن الجهاز (10.1.1.1) يريد ارسال بيانات للجهاز (10.1.1.10)، فكونه لا يملك العنوان الثابت  (layer 2 address) للجهاز صاحب العنوان (10.1.1.10)، فإنه سيأجل عملية ارسال البيانات لحين معرفة العنوان المفقود. لذا سيقوم بارسال رسالة جديدة ARP request يطلب فيها معرفة العنوان المفقود ليصل هذا الطلب لجميع الأجهزة الموجودة داخل الشبكة المحلية broadcast message. عند استلام الطلب يقوم الجهاز المعني (10.1.1.10) بتجهيز الرد بتشكيل ARP reply ترسل للجهاز (10.1.1.1) وتحمل الاجابة على السؤال بخصوص قيمة الـ MAC address للجهاز (10.1.1.10).
بعد وصول الرد سيتمكن الجهاز (10.1.1.1) من استمكال عملية التغليف encapsulation وبالتالي ارسال البيانات للجهاز (10.1.1.10). يقوم الجهاز (10.1.1.1) بتخزين قيمة الـ MAC address مع ما يقابله من الـ IP address داخل الـ ARP table. لكي يتجنب ارسال طلب ARP request مرة أخرى. يتم الاحتفاظ بمكونات الـ ARP table في الذاكرة العشوائية RAM.
 

فحال كان الجهاز المستقبل للبيانات في شبكة أخرى ما الذي سيحدث ؟
لنتابع في الجزء التالي
مبدأ  ARP Proxy
لو أراد الجهاز PC1 ارسال بيانات للجهاز PC2 ولم يكن لديه العنوان الثابت الخاص به، فإن الجهاز PC1 سيقوم بارسال ARP request ليسأل عن العنوان المفقود وسيقوم الجهاز PC2 باجابة الطلب بارسال ARP reply للجهاز الأول PC1 كما تعلمنا سابقا.
لكن ماذا لو كان البيانات سترسل لجهاز في شبكة أخرى يفصل بينهما الراوتر، هنا ستظهر مشكلة كون ال ARP request يرسل بطريقة الـ broadcast وحيث أن جهاز الراوتر لا يمرر مثل هذه الارساليات للأطراف (المنافذ) الأخرى التي لديه مما يعني أن هذا الارسالية (الطلب) لن يصل للجهاز المعني.
لنأخذ المثال التالي، يريد الجهاز PC1 ارسال بيانات للجهاز PC3 ولديه عنوانه المتغير IP address ولكنه لا يعرف عنوانه الثابت MAC address، عندها سيقوم الجهاز PC1 بارسال ARP request ليسأل عن عنوان PC3 لكن هذا الطلب لن يصله كون الراوتر يمنع ال broadcast messages من العبور لمنافذ أخرى لديه، فهو يقوم بالكشف عن ماهية الرسالة ويقوم هو بمعالجة مضمون الرسالة وتقديم خدمة تتماشى من المضمون إن كانت لديه القدرة على فعل ذلك، أي إن كان لديه خدمة فعّالة enabled service ينطبق عليها محتوى الرسالة من نوع الـ broadcast.
في حالتنا فإن مضمون الرسالة هي ARP request اي السؤال عن العنوان الثابت MAC address لجهاز معلوم عنوانه المتغير IP address. من خلال قراءة محتوى الرسالة من قبل الراواتر فإنه سيدرك بأن الجهاز PC1 يريد معرفة العنوان الثابت للجهاز موجود بشبكة أخرى، لذا سيقوم الراوتر باجابة الطلب بدلا من الجهاز PC3 ويريد على الطلب الوارد من الجهاز PC1 وسيحمل الرد العنوان الثابت لمنفذ الراوترFa0/0 وهذا الرد يسمى Proxy ARP.


الاثنين، 22 سبتمبر 2014

تجميع وصلات بين عدة أنظمة (Multi System Link Aggregation)



تكلمنا سابقا عن موضوع EtherChannel ودوره في تجميع الوصلات (links) التي تربط بين طرفين لتصبح كأنها وصلة (link)  واحدة.  وهذا يؤدي لزيادة سرعة نقل البيانات وتحقيق توافرية أفضل (high availability) دون من الخوف من وجود دوامات  (loops)بين السويتشات وبالتالي لا حاجة لتفعيل بروتوكولات (Spanning Tree Protocol).
تعمل EtherChannel على تجميع الوصلات الموجودة بين طرفين فقط وليس أكثر، لكنها تكون قاصرة عن العمل في حال كانت الوصلات بين أكثر من طرفين كما هو موضح في الصورة في الأسفل. السويتش في اسفل الصورة (C) وهو (edge switch) يرتبط مع السويتشين (A) و (B) وهما (core switches) من خلال وصلتين، والأمر ينطبق ايضا على السويتش الآخر في أعلى الصورة (D).


هنا لا يجدي نفعا استخدام EtherChannel لجمع الوصلتين بين السويتش (C) من جهة والسويتشين (A,B) من جهة أخرى. حيث أنه لا يوجد بروتوكول (open standard) لمعالجة مثل هذه الحالات وإنما يوجد بروتوكولات انتجتها شركات معينة مثل بروتوكول vPC من شركة سيسكو، وبروتوكول (SMLT) من شركة افايا، وبروتوكول (M-LAG) من شركة (ExtremeNetworks).
في الشبكة التالية يتم استخدام EtherChannel لجمع الوصلات بين السويتش (Nexus7010-1) والسويتش (Nexus7010-2)، بينما استخدم (vPC) للجميع الوصلات الموجودة بين السويتشات الثلاث. 


الأحد، 14 سبتمبر 2014

تشغيل حساب SIP على جهاز سيسكو CME

يعتبر بروتوكول SIP واحد من بروتوكولات VoIP والتي تقوم بوظيفة تهيئة الاتصال (call setup) قبل بدء المكالمة. يوفر هذا البروتوكول مزايا أكثر من نظرائه ومرونة أكبر إذ أنه يستخدم لكلا النوعين من المكالمات: المكالمات الصوتية فقط ومكالمات الصوت والصورة، هذا بالاضافة للقدرة على ارسال الرسائل النصية.

يوفر بروتوكول SIP امكانية انشاء اسم استخدام لكل مستخدم وتحديد رقم أو ارقام هاتف لكل اسم استخدام. حيث يعمل هذا البروتوكول بنظام (client/server) إذ يقوم كل مستخدم بانهاء عملية التسجيل (registration) قبل الاستفادة من الخدمات المحددة له. وتكون الرسائل المتناقلة بين المستخدم والخادم لعملية التسجيل وكذلك عملية تهيئة الاتصال عبارة عن رسائل نصية غير مشفرة (clear-text) مشابهة للطريقة المتبعة في بروتوكول (HTTP). بحيث تكون المعلومات المرسلة بين الطرفين تحمل عناوين الخوادم واسم الاستخدام وكلمة المرور للمستخدم ومعلومات عن رقم المتصل والرقم المتصل   به وتفاصيل أخرى عديدة.
هيئة عناوين SIP
 قد تتخذ العناوين المخصصة لمستخدمي أنظمة SIP عدة اشكال لكنها تكون على هيئة واحدة شبيهة بتلك المستخدمة في عناوين حسابات البريد الالكتروني. وتسمى هذه العناوين (Uniform Resource Identifier URI) وهي عناوين معرفة بالمستخدم وتتخذ الهيئة التالية:
SIP-URI = sip:x@y:Port  

حيث يكون الجزء (x) هو اسم الاستخدام ويكون على صيغة اسم من حروف (name) أو رقم تلفون، أما الجزء (y) فهو مخصص لعنوان الخادم الذي يستضيف اسم الاستخدام ويكون هذا العنوان إما (ip address) أو اسم نطاق (domain name)، أما (port) فهو يمثل رقم المنفذ جهة الخادم المخصص لخدمة SIP. والامثلة التالية توضح هيئة العنوان المستخدمة في بروتوكول SIP

sip:masters@221.123.1.213
sip:masters@voip.provider.com
sip:2244@voip.provider.com:6000

مكونات نظام SIP
تنقسم الأجهزة العاملة على بروتوكول SIP  لنوعين رئيسيين:
-         أجهزة تكون بمثابة (User Agent Client) وتمثل أجهزة المستخدمين وهي التي ترسل طلبات الاستفادة من خدمات خادم SIP ويمكن أن تكون جهاز IP phone أو Call Manager Express
-         أجهزة تعمل دور الخادم (User Agent Server) وهي الطرف الذي يقدم الخدمات للمستخدمين بمختلف اشكالها. حيث تتنوع أجهزة الخوادم (SIP servers) حسب نوع الخدمة التي تقدمها. وتنقسم الخدمات لأربعة أنواع:
1-     Registrar Server يقوم بعملية التسجيل للمستخدمين للتحقق من هويتهم وتوفير الخدمات المحددة لكل مستخدم
2-     Proxy Server يقوم باستقبال الطلبات من المستخدم واعادة ارسالها لخادم آخر نيابة عن المستخدم. ويمكن أن يقدم هذا الخادم وظائف أخرى مثل authentication، authorization، network access control.
3-     Redirect Server يقوم بابلاغ المستخدمين بوجهة الاتصال التالية اعتمادا على مكان المستخدم أو الرقم المطلوب
4-     Location Server يقوم بعملية حفظ عناوين المستخدمين والتي تتغير باستمرار وهذا يوفر امكانية تنقل المستخدمين (mobility) وعدم تحديد وجودهم داخل شبكة واحدة.
تشغيل حساب استخدامSIP  على جهاز CME
سنتناول في هذا الموضوع كيفية تشغيل حساب استخدام (SIP account) على جهاز سيسكو (Call Manger Express CME) حيث تتمكن نقاط اتصال خارجية من التواصل مع شبكة الهواتف الداخلية لشركة ما، وفيما يلي سندرس تفاصيل هذه الحالة.
المتطلبات الأولية للحالة
شركة لديها فروع في عدة دول (الاردن، لبنان، مصر، السعودية) مركزها الرئيسي الأردن ولها زبائن في هذه الدول بلاضافة للعراق، تتطلب طبيعة الخدمات التي تقدمها الشركة وجود اتصالات هاتفية من الزبائن مع الشركة. وترغب الشركة بايجاد لحل للمكالمات الدولية التي يجريها زبائنها في العراق مع ادارتها الرئيسية في الأردن لتتمكن الشركة من توسيع نطاق خدماتها هناك عن طريق توفير سبل اتصالت بتكاليف قليلة.
الحل المقّدم
سنقوم أولا بعمل اشتراك لهاتف مع أحدى شركات الاتصالات في العراق وليكن (0763002400) وعمل اشتراك آخر لـ (SIP account) لدى نفس الشركة وليكن اسم الاستخدام لهذا الحساب (masters) وكلمة السر (abc$$123). بحيث تقوم شركة الاتصالات بتحويل المكالمات (call forwarding) الواردة للرقم السابق لحساب (masters).
ثم سنقوم بتفعيل الحساب على سيسكو (CME) الموجود في الادارة الرئيسية في الأردن، حيث سيقوم الـ (CME) بتسجيل نفسه (registration) لدى خادم (SIP) لدى شركة الاتصالات ليكون بمثابة جهاز المستخدم لهذا الحساب واسيتمكن من ستقبال المكالمات الواردة للحساب والمحولة اصلا من الرقم (0763002400).
أي أنه سيكون بمقدور أي زبون في العراق طلب الرقم المحلي (0763002400) ثم ستقوم شركة الاتصالات بتحويل المكالمة لحساب (masters) المفعل على جهاز (CME). وعند وصول المكالمات لجهاز (CME) سيتم تحويل المكالمة للأرقام الدخلية لهواتف الشركة.




وهناك حل آخر وذلك بتفعيل حساب الاستخدام SIP على هاتف محدد (IP phone) بدلا من جهاز (CME) بحيث يقوم الهاتف باجراء عملية التسجيل لدى الخادم وبالتالي استقبال المكالمات المحولة من شركة الاتصالات. لكن في هذه الحالة سيعمل هذا الهاتف بمعزل عن شبكة الهواتف الداخلية وبالتالي فقدان العديد من المزايا مثل تحويل المكالمات لهاتف آخر في حال عدم الاجابة او في حال كان مشغول.
طريقة التشغيل
سنقوم بتفعيل حساب الاستخدام لـ SIP على الـ (CME) حيث سندخل اسم الاستخدام وكلمة المرور الخاصة به، وعنوان الخادم (SIP registrar server)، وباقي الإعدادات مثل عدد مرات المحاولات (Retry) لاجراء المكالمة وفترة المؤقت (timer) الخاص بتهيئة المكالمة، وذلك باستخدام الأوامر التالية:

Router(config)# sip-ua   
Router(config-sip)# credentials username masters password abc$$123 realm voip.provider.com
Router(config-sip)# authentication username insurance password 7 abc$$123
Router(config-sip)# retry invite 7
Router(config-sip)# timers expires 1800000
Router(config-sip)# timers connection aging 30
Router(config-sip)# registrar dns:voip.provider.com expires 1800
Router(config-sip)# sip-server dns:voip.provider.com
Router(config-sip)# host-registrar

سيقوم ال (CME) باجراء عملية التسجيل لدى الخادم (voip.provider.com) لاسم الاستخدام وكلمة المرور المدخلة بالاعدادات حيث يجب أن تتطابق باقي الاعدادات مع تلك المعدة جهة الخادم.
سنقوم بانشاء (voice class) يحمل اسم (sip-account) ويعمل على بروتوكول SIP وذلك من أجل الاهتمام باسم الاستخدام (masters) المرسل ضمن جزء (URI) في الرسالة المرسلة من الخادم ل (CME).
Router(config)# voice class uri sip-account sip
Router(config-voice-uri-class)# user-id masters
وكذلك نقوم بانشاء قاعدة لتحويل الارقام بحيث نحول الرقم المطلوب أيا كانت قيمته ليصبح (6450) وستحمل هذه القاعدة اسم (sip-translation)
Router(config)# voice translation-rule 206450
Router(cfg-translation-rule)# rule 1 /.*/ /6450/
Router(config)# voice translation-profile sip-translation
Router(cfg-translation-profile)# translate called 206450
سنقوم بعد ذلك بعمل (dial-peer) على الـ (CME) وذلك من أجل عمل مطابقة (matching) للمكالمات الواردة من حساب الاستخدام (masters) دون غيرها من المكالمات ليصار إلى تحويلها للرقم الداخلي (6450). حيث ترد ل (CME) مكالمات من عدة مصادر أخرى غير تلك الواردة من (SIP account). سنقوم بانشاء (dial peer) تحمل الرقم (206450) وذلك لعمل مطابقة للمكالمات الواردة الخادم (voip.provider.com) والتي تتضمن اسم الاستخدام (masters)، حيث سنقوم بتغيير (translation) الرقم المطلوب في هذه المكالمة ليصبح رقم (6450) حسب مضمون قاعدة التحويل المنشأة سابقا والمسماة (sip-translation).  
Router(config)# dial-peer voice 206450 voip
Router(config-dial-peer)# translation-profile incoming sip-translation
Router(config-dial-peer)# session protocol sipv2
Router(config-dial-peer)# session target dns:voip.provider.com
Router(config-dial-peer)# incoming uri to sip-account
Router(config-dial-peer)# dtmf-relay rtp-nte sip-notify sip-kpml
Router(config-dial-peer)# codec g729br8  
هنا لا بد من التأكيد على أن ال (CME) لديه رقم في دليل ارقام الهواتف (directory numbers) خاص بالرقم (6450)، حسب الأمر التالي:
 Router(config)# ephone-dn 78
Router(config-ephone-dn)# number 6450