خوندن این مقاله کجا بهم کمک میکنه؟
برای یه مهندس نرمافزار و خصوصا برنامهنویس بکند خیلی خوبه که نسبت به نحوه عملکرد کارت شبکه یه دانش اولیه داشته باشه.
تکنولوژی مطرح شده: SmartNIC
در این ویدیو، علاوه بر اینکه دانش اولیهای نسبت به نحوه عملکرد کارت شبکه کسب میکنید، با SmartNICها آشنا خواهید شد.
خلاصه داستان: در مدل OSI هفت لایه متفاوت برای ارتباط بین دو سیستم در نظر گرفته شده است.
لایه اول Physical layer هست که مسئولیت دریافت و انتقال دادههای خام و بدون ساختار (unstructured raw data) رو بین یک device مثل کارت شبکه یا سوییچ شبکه و رسانه انتقال فیزیکی مثل فیبر نوری بر عهده داره. این لایه بیتهای دیجیتال (digital bits) رو به سیگنالهای الکتریکی، رادیویی و اپتیکال تبدیل میکنه.
خب حالا بریم سراغ NIC یا همون network interface card که ببینیم چه کاری انجام میده تو کامپیوتر. وظیفه این کارت ایجاد کردن یک لایه انتزاع () بین کامپیوتر و رسانه فیزیکی انتقال هست. یعنی چی؟ یعنی کامپیوتر لازم نیست بدون که دادههای شبکه رو داره از طریق فیبر نوری و کابل اترنت دریافت میکنه، یا از طریق امواج رادیویی و WiFi. این مسئولیت NIC هست که ارتباط بین کامپیوتر با این رسانهها رو برای دریافت و انتقال داده میسر کنه.
در واقع این NIC هست که امواج رادیویی و سیگنالهای الکتریکی رو به بیتهای دیجیتال تبدیل میکنه.
خب این وسط دونستن یه موضوع ضروریه، اونم اینه که NIC فقط سیگنالهای مربوط به کامپیوتری که روش نصب شده رو دریافت نمیکنه. مثلا اگه از WiFi استفاده بشه، امواج رادیویی مربوط به سیستمهای دیگه هم به NIC میرسه. وظیفه NIC اینه که آدرس MAC مقصد رو چک کنه، اگه آدرس MAC با آدرس MAC کامپیوتر یکی باشه و یه سری شروط دیگه برقرار باشه، میره سراغ اینکه CPU رو با خبر کنه مبنی بر اینکه این سیستم یه packet جدید داره.
نکتهای که وجود داره اینه که عملا CPU بسیار درگیر میشه برای پردازش کردن دادهها و تبدیل کردنش به دادههای مناسب برای لایههای بالاتر مثل Transport و Application.
و شما در نظر بگیرید که در لحظه یک سیستم چه حجم از داده رو دریافت میکنه و CPU چقدر درگیر میشه؟ اینم در نظر بگیرید سیستمی که داره داده رو دریافت میکنه یه سیستم خانگی نباشه، بلکه یه دیتاسنتر باشه!!!
تکنولوژی جدید SmartNIC هدفش اینه که برای پردازش دادههای دریافتی از لایه فیزیکی، CPU رو درگیر نکنه و خودش پردازشهای مورد نیاز لایههای بالاتر رو هم بر عهده بگیره، مثلا TCP Handshake رو خودش انجام بده. این قضیه میتونه به شدت روی بهبود عملکرد CPU تاثیر بذاره، چون یه حجم زیادی از پردازش رو از روی دوش CPU برمیداره.