پروتکل lisp
یکی از معضلات مراکز داده در سازمانها بحث Datacenter Mobility است که از راههای برطرف کردن این مشکل استفاده از پروتکل LISP (Locator ID Separation Protocol) است. هدف این پروتکل ارتباط بین چند مرکز داده در راستای Workload Mobility می باشد.
هدف و نیازی که این پروتکل را به وجود آورده است چیست؟
برای جواب به این سوال تصور کنید که زمانی نیاز است که در سایت مشتری اپلیکیشن های مورد استفاده همراه تمام اعضای آن بین دو دیتاسنتر در دو مکان فیزیکی مجزا توزیع شود. این نیاز با توجه به توسعۀ روزافزون اپلیکیشنها و ارتباطات زیرساختی بسیار حیاتی به حساب میآید. در موضوع ارتباطات بین دو مرکز داده شاید راهکارهای Lan Extension همچون OTV ،VPN MPLS ، VPLS ، ٍEVPN در نگاه اول به نظر بیاید، اما نیازی که مطرح شد، فراتر از وظایفLan Extension است.
فرض کنید SAN نیز Extensionپیدا کند و دادهای بخواهد روی یکی از دیتاسنترها کپی شود. این فرایند تا زمانی که روی هر دو سایت تکمیل نشود، کسی نمی تواند تا پایان فرآیند کپی شدن به دیتاها دسترسی داشته باشد. مثال دیگر زمانی است که clustering بین دو سایت اکتیو وجود دارد و بخواهیم اعضای سایت را distribute کنیم. همه اینها نشاندهندۀ نیاز به مکانیزمی، جهت رفع این مشکلات است. برای بررسی مفهوم LISP در ابتدا به ماهیت IP address .
توجه کنید IP address ها دو رکن اساسی را نشان میدهند:
1. Location
2. Identity
نیاز است که راهکاری مطرح شود که بتواند این دو رکن را بصورت جدا و تنها از هم در زمانی که مکان فیزیکی تغییر میکند، معرفی شود. به بیان سادهتر یک نود در مکانهای مختلف IP address یکسان داشته باشد. پروتکل LISP برای این کار ساخته شده است و Identity هر نود را به مجموعهای از attribute های آن مرتبط میکند. بیشترین attribute که در این ساختار نیاز به مرتبط کردن دارد IP address مربوط به روتر Gateway میباشد که نقطه اول مسیریابی به حساب میآید.
برای توضیح بیشتر تصور کنید یک نود از مرکز داده اول به مرکز داده دوم انتقال پیدا میکند. در این جابجایی نیاز است که Identity نود ثابت بماند. یعنی به مکانیزمی جهت مرتبط کردن IP Address نود به Gateway مرکز داده دوم نیاز است.
به نظر شما این اتفاق چگونه رخ می دهد؟
راهکاری که LISP در نظر گرفته به این صورت است که آدرس Endpoint ها دیگر در Routing Infrastructure هایی که بین مراکز داده وجود دارد advertise نمیشود. ارتباط بین شعبات در جابجایی Endpoint که با Tag مشخص میشود بر عهده LISP است. در این حالت نودها از Routing Infrastructure جدا میشوند و زمانی کهConvergence داخل Routing Infrastructure رخ دهد که لینک های ارتباطی یا transport لینک ها دچار مشکل بشود اختلالی در ارتباط از طریق LISP به وجود نمیآید.
در اینجا میخواهیم S که Source است را از داخل یک Datacenter به D که یک Datacenter دیگر است متصل بشود. در ابتدا Source یک سری Arp request را در لایه دو انجام میدهد و آدرس Gateway خودش را پیدا میکند. بعد از آن باید یک DNS Request را بفرستد تا بتواند FQDN خودش را به IP Address سرور داخل سایت D ، Resolve کند. این کار را DNS سرور انجام میدهد و Reply را برمیگرداند و بعد از آن اتفاقی که میافتد به Gateway به آدرس ۱٫۱٫۱٫۱ میرسد. (روتری که نقش gateway را ایفا میکند و برای پروتکل LISP فعال شده است و به همین جهت(ITR) ingress tunnel router نام دارد.)
در این فرآیند ITR عمل Encapsulation مربوط به LISP را انجام میدهد و در سمت مقابل Egress tunnel router(ETR) عمل decapsulation را انجام میدهد. نامهای ITR و ETR با توجه به Traffic pattern مشخص میشود و روتر سمت مقابل، میتواند هم نقش ITR و هم ETR را برعهده داشته باشد. در ادامه با توجه به اینکه اشاره شد که routing مربوط به Infrastructure کاملا جدا از موضوع reachability مربوط به Endpoint ها است روتر ITR در داخل جدول Routing خود آدرس روتر ETR را پیدا نمیکند و از آنجا که پروتکل LISP فعال گردیده است یک بسته LISP request به سمت Mapping server ارسال میکند.
شاید به این فکر میکنید که نقش Mapping Server چیست و چرا باید بسته به سمت Mapping Server ارسال شود؟
برای جواب به این سوال باید به این توجه کنید که در بخش قبل گفته شد زمانی که یک Endpoint از یک نقطه به نقطه دیگر نقل مکان میکند تنها اتفاقی که رخ میدهد تغییر attribute مربوط به first hop gateway است. به همین جهت به ساختاری نیاز است که Mapping و Remapping را انجام دهد و در واقع نشان دهد که سرور از نقطۀ اول به نقطۀ دوم نقل مکان کرده است. در این فرآیند Mapping و Remapping ، آدرس سرور ثابت میماند و فقط نقطۀ دسترسی اولیه به شبکه تغییر پیدا میکند. پس نیاز است که مخزنی از اطلاعات در مورد Endpoint ها و نقاط دسترسی آنها به شبکه فراهم شود که هر زمان Mobility رخ دهد آن را تغییر بدهد و آپدیت کند.
به نظر شما این مخزن اطلاعات در کجا قرار دارد؟
این مخزن Mapping سرور است که خودش هم میتواند cluster باشد و در سراسر جاهایی که نیاز است قرار گیرد و Distribute شود و بتواند Request های مربوط به LISP را جواب بدهد. این سرور نگاشتهای مختلف را در خود دارد؛ ولی بصورت Default این جواب بصورت مستقیم داده نمیشود. Mapping server مکان اول را به مکان دوم redirect میکند.
شاید یک سوال در ذهن شکل گیرد که اگر از راهکارهای Multi homing در مکان دوم استفاده شود و دو روتر در این مکان به عنوان Gateway حضور داشته باشند به کدام روتر Redirect میشود؟
برای جواب این سوال هم باید به این توجه شود که دو روتر با چه پارامترهایی Endpoint ها را در Mapping Server مربوطه register کردهاند. برای این قضیه باید بیان کرد که هر روتر ETR، زمانی که یک Endpoint ID (EID) را میخواهد در داخل Map Server مربوطه Register کند به پارامترهایی برای این کار نیاز دارد. این پارامترها با عنوان priority و Weight شناخته میشوند و با این دو ابزار عمل register صورت میپذیرد. هدف از استفاده از این دو پارامتر عمل Traffic engineering است که در داخل پروتکل LISP انجام میشود. اگر این دو پارامتر در هر دو روتر برابر باشند آنگاه ترافیک میتواند بین دو روتر Load Balance شود.
حال فرآیند Load Balance به چه صورت است؟
دو پارامتر Priority و Weight با Header مربوط به Packet تشکیل Hashing میدهند. زمانی که این Hash فرستاده میشود، شامل عددی است که نشان میدهد ترافیک را به کدام روتر ارسال کند. اگر این عدد برای هر دو روتر برابر بود per flow load balancing خواهیم داشت.