چکیده
پردازنده های شبکه (NP) یک زیرساخت پردازش بسته قابل برنامه ریزی و انعطاف پذیری برای سیستم های شبکه وعده داده اند. برای بهره برداری کامل از قابلیت های پردازنده های شبکه، توانایی انطباق پویا با الگوهای ترافیک در حال تغییر و پشتیبانی بلادرنگ در قالب یک سیستم عامل پردازنده شبکه ضروری است. تفاوت های بین سیستم عامل های موجود و چالش های اصلی در ماهیت چندپردازنده ای NPها، محدودیت منابع on-chip آنها و الزامات پردازش بلادرنگ نهفته است. در این مقاله، مسائل اصلی که باید در طراحی یک سیستم عامل پردازنده شبکه درنظر گرفته شوند، بررسی میگردند. به طور خاص، تاثیر عملکردی (1) تجزیه و تحلیل برنامه برای پارتیشن بندی (2) خصوصیات ترافیکی شبکه، (3) نگاشت حجم کار و (4) سازگاری زمان اجرا کاوش میشوند. نتایج کمی و کیفی در زمینه تجزیه و تحلیل یک نرم افزار و نگاشت یک چارچوب خاص ارائه و مورد بحث قرار گرفته، اما به طور کلی مشاهدات و نتیجه ها در هر محیط برای پردازنده های شبکه قابل اجرا می باشند.
1. معرفی
موفقیت اینترنت به عنوان یک رسانه ارتباطی در اجرای تحقیقات در حوزه شبکه های حسگر، شبکه های همپوشان، محاسبات فراگیر، پردازش توری و شبکه های ذخیره سازی اطلاعات می باشد. این روند قابلیت شبکه را در جهت دربرداشتن پروتکل ها و سرویسهای سیستم های پایانی بطور فزاینده متنوع و ناهمگن گسترش می دهد. حتی در اینترنت امروزه، روترها حجم زیادی پردازش را در مسیر داده انجام میدهند. نمونه هایی از این قبیل عبارتند از دیوارهای آتش، ترجمه آدرس شبکه (NAT)، سوئیچینگ وب، ردیابی IP، TCP/IP سیل آسا برای سرورهای ذخیره سازی با کارایی بالا و رمزگذاری شبکه های خصوصی مجازی (VPN) . بسیاری از این توابع در شبکه های دسترسی وedge اجرا میشوند که متنوع ترین سیستم ها و توابع مورد نیاز شبکه را به نمایش می گذارند. با گسترش دامنه شبکه می توان انتظار داشت که این روند ادامه خواهد داشت و پردازش پیچیده تر بسته های داخل شبکه ضرورت می یابد [2، 4].
زیرساخت پردازشی برای این عملیات پردازش بسته مختلف را می توان در راه های زیادی پیاده سازی نمود. وظایف خوش تعریف، با سرعت بالا اغلب در مدارهای مجتمع با کاربرد خاص (ASIC ها) اجرا شده اند.وظایفی که به خوبی تعریف نشده و یا احتمالا در طول زمان تغییر میکنند را باید در یک پلت فرم انعطاف پذیرتر پیاده سازی کرد که توانایی برنامه ریزی دوباره داشته باشد. پردازنده های شبکه (NP) برای این منظور توسعه داده شده اند.
تقاضای عملکردی افزایش سرعت لینکها و نیاز به انعطاف پذیری نیازمند این واقعیت است که این پردازنده های شبکه در سیستم های چند پردازنده پیاده سازی شوند. این امر برنامه نویسی چنین دستگاه هاییی دشوار باشد، ازآنجا که عملکرد کلی به تعامل خوب اجزای مختلف سیستم (پردازنده ها، رابط های حافظه، ساختمان داده های اشتراکی و غیره) بستگی دارد. مشکل اصلی رسیدگی به پیچیدگی ها و تعامل اجزای مختلف سیستم NP است. برای دستیابی به عملکرد پردازشی لازم برای پشتیبانی از لینک های چند گیگابیتی، پردازنده های شبکه به عنوان سیستم های چند پردازنده روی یک تراشه (on-a-chip) پیاده سازی شده اند. این شامل چندین موتور پردازش چند رشته ای، انواع مختلف حافظه درون و بیرون از تراشه (on-off-chip) و تعدادی پردازنده خاص منظوره است. در ایستگاه های کاری معمولی یا سیستم های سرور این پیچیدگی ها توسط سیستم عامل پنهان شده و یا با توجه به معماری تک پردازنده به شدت ابراز نمیشوند. برای تسهیل این روند، در حال حاضر تعدادی از زبان های برنامه نویسی دامنه خاص و کامپایلرهای بهینه سازی در حال توسعه اند [5، 17، 19]. هدف این رویکردها ، بهینه سازی یک اپلیکیشن واحد (به عنوان مثال عملیات روتر) بطور استاتیک برای سخت افزار زیر بنایی می باشد.
در پردازنده های شبکه فعلی، بسیاری از تسک های حیاتی عملکردی و خوش تنظیم با زبان اسمبلی نوشته شده اند (مثلا برای توازن زمان پردازش هر مرحله در یک خط لوله نرم افزار). در نتیجه، تغییرات جزئی در عملکرد می تواند تاثیر عملکردی شدیدی داشته باشد که به تنظیم دوباره نیاز دارد. به علت تنظیم دقیق برنامه های منفرد، یکپارچه سازی و تغییر پویای چند تابع پردازش بسته بر روی یک پردازنده تک بسیار دشوار است. با این حال، پردازش شبکه ذاتا یک فرایند پویا می باشد. انگیزه اصلی پیاده سازی توابع پردازش بسته در یک پردازنده شبکه (به جای یک دستگاه منطقی سفارشی سریع تر و کارآمدتر) لزوم تغییر عملکرد در طول زمان است. تغییر الگوهای ترافیکی، سرویس ها و پروتکل های شبکه جدید، الگوریتم های جدید برای طبقه بندی جریان و تغییر دفاع در برابر حملات انکار سرویس، زمینه پویایی ارائه میکند که یک روتر قابل برنامه ریزی نیاز به اصلاح داشته باشد. این مستلزم آن است که روتر (1) بتواند چند برنامه پردازش بسته را در همان زمان پیاده سازی کند (2) بتواند به سرعت توابع پردازشی را به حجم کار خود اضافه و حذف کند و (3) بتواند عملیات کارآمدی را تحت هر شرایطی تضمین نماید. به ویژه مدیریت منابع مختلف سیستم برای جلوگیری از تضعیف عملکرد منابع گلوگاهی حائز اهمیت است.
پیچیدگی معماری چند پردازنده NP استفاده از مفاهیم سیستم عامل های موجود در این حوزه را محدود کرده است. چند روش موجود برای پشتیبانی بلادرنگ هنوزهم به سوی برنامه های پردازش بسته واحدی سوق دارند که بصورت آفلاین بهینه سازی شده [19، 12] و یا برنامه های پردازش شبکه را به عنوان یک نهاد یکپارچه واحد در نظر میگیرند [9].در این مقاله، ما انواع مختلفی از مسائل مربوط به طراحی یک محیط بلادرنگ را کاوش میکنیم که از چند برنامه پردازش شبکه همزمان پشتیبانی می کند و اجازه پیکر بندی دوباره حجم کار را بر روی یک سیستم چندپردازنده می دهد. ملاحظات طراحی کلیدی مورد بحث در چهار دسته عمده قرار می گیرند: (1) پارتیشن بندی نرم افزار (2) خصوصیات ترافیکی (3) نگاشت و سازگاری زمان اجرا و (4) محدودیت های سیستم.
تلاش های تحقیقاتی در حوزه پردازنده شبکه در طولانی مدت توسط طراحی های سیستمی خاص تحت تاثیر قرار گرفته اند. به منظور جداسازی مسائل مربوط به طراحی عمومی سیستم های عامل از یک سیستم خاص، ما مشاهدات کیفی و نتایج کمی را از هم تفکیک کرده ایم. ابتدا مسائل مربوط به طراحی ذکر شده فوق بررسی شده و در مورد مبادلات کیفی بین گزینه های طراحی موجود بحث میشود. این تجزیه و تحلیل درک مهمی از تعامل بین مبادلات سیستم فراهم می کند. ثانیا نتایج کمی ارائه میشود که مبادلات فوق در زمینه برنامه های واقعی NP را به تصویر میکشد. برای این کار، از پارتیشن بندی نرم افزار NP و تکنیک های نگاشت و نتایج مدل سازی عملکرد تحلیلی که در کار قبلی ما توسعه داده شد [15، 20] استفاده میشود.
در بخش 2، درمورد کارهای مرتبط بحث میشود. بخش 3 ویژگی های کلیدی سیستم عامل های پردازنده شبکه و تفاوت آنها از سیستم عامل های ایستگاه های کاری رایج مطرح میگردد. بخش 4 مبادلات طراحی کیفی را مورد بحث قرار داده و بخش 5 این مشاهدات را در زمینه سیستم مورد آزمایش ما بصورت کمی تخمین میزند. در بخش 6 نتایج و پیامدهای طراحی پردازنده شبکه سیستم عامل ترکیب شده و بخش 7 این مقاله را نتیجه گیری میکند.
ABSTRACT
Network processors (NPs) promise a flexible, programmable packet processing infrastructure for network systems. To make full use of the capabilities of network processors, it is imperative to provide the ability to dynamically adapt to changing traffic patterns and to provide run-time support in the form of a network processor operating system. The differences to existing operating systems and the main challenges lie in the multiprocessor nature of NPs, their on-chip resources constraints, and the real-time processing requirements. In this paper, we explore the key design tradeoffs that need to be considered when designing a network processor operating system. In particular, we explore the performance impact of (1) application analysis for partitioning, (2) network traffic characterization, (3) workload mapping, and (4) run-time adaptation. We present and discuss qualitative and quantitative results in the context of a particular application analysis and mapping framework, but the observations and conclusions are generally applicable to any run-time environment for network processors.
1. INTRODUCTION
The success of the Internet as a communication medium is driving research in the areas of sensor networks, overlay networks, ubiquitous computing, grid computing, and storage area networks. This trend expands the functionality of networks to include increasingly diverse and heterogeneous end-systems, protocols, and services. Even in today’s Internet, routers perform a large amount of processing in the data path. Examples are firewalling , network address translation (NAT), web switching, IP traceback, TCP/IP offloading for high-performance storage servers, and encryption for virtual private networks (VPN). Many of these functions are performed in access and edge networks, which exhibit the most diversity of systems and required network functions. With the broadening scope of networking it can be expected that this trend will continue and more complex processing of packets inside the network will become necessary [2, 4].
The processing infrastructure for these various packet processing tasks can be implemented in a number of ways. Well-defined, high-speed tasks are often implemented on application-specific integrated circuits (ASICs). Tasks that are not well-defined or possibly change over time need to be implemented on a more flexible platform that supports the ability to be reprogrammed. Network processors (NPs) have been developed for this purpose.
The performance demands of increasing link speeds and the need for flexibility require that these network processors are implemented as multiprocessor systems. This makes the programming of such devices difficult, as the overall performance depends on the fine-tuned interaction of different system components (processors, memory interfaces, shared data structures, etc.). The main problem is handling the complexity of various, interacting NP system components. To achieve the necessary processing performance to support multi-gigabit links, network processors are implemented as system-on-a-chip multiprocessors. This involves multiple multithreaded processing engines, different types of on- and off-chip memory, and a number of special-purpose co-processors. On conventional workstation or server systems these complexities are hidden by the operating system or do not express themselves as drastically due to their uniprocessor architecture. To simplify this process, a number of domain-specific programming languages and optimizing compilers are currently being developed [5, 17, 19]. These approaches aim at optimizing a single application (i.e., router functionality) statically for the underlying hardware. In current network processors, most performance critical tasks are implemented and fine-tuned in assembly (e.g., to balance the processing times in each step of a software pipeline). As a result, slight changes in the functionality can have drastic performance impacts which require re-tuning. Due to the necessary fine-tuning of individual applications, it is very difficult to integrate and dynamically change multiple packet processing functions on a single network processor. However, network processing is inherently a dynamic process. The main motivation for implementing packet processing functions in a network processor (rather than in a faster, more power-efficient custom logic device) is the need to change the functionality over time. Changing traffic patterns, new network services and protocols, new algorithms for flow classification, and changing defenses against denial of service attacks present the dynamic background that a programmable router needs to accommodate. This requires that the router (1) can implement multiple packet processing appli-cations at the same time, (2) can quickly add and remove processing functions from its workload, and (3) can ensure efficient operation under all circumstances. In particular, the management of various system resources is important to avoid performance degradation from resource bottlenecks.
The complexity of NP multiprocessor architectures has limited the use of existing operating system concepts in this domain. The few existing approaches to providing run-time support are still aimed at single packet processing applications that are optimized offline [19, 12] or consider network processing applications as a single monolithic entity [9]. In this paper, we explore a variety of design issues for a run-time environment that supports several concurrent network processing applications and allows dynamic reconfiguration of the workload on a multiprocessor system. The key design considerations that are addressed fall into four broad categories: (1) application partitioning, (2) traffic characterization, (3) run-time mapping and adaptation, and (4)system constraints.
Research efforts in the network processor domain have long been influenced by particular system designs. In order to separate the general design issues of operating systems from a particular system, we separate qualitative observations and quantitative results. First, we explore the above design issues and discuss the qualitative tradeoffs between available design choices. This analysis provides an important understanding of interactions between system tradeoffs. Second, we provide quantitative results that illustrate the tradeoffs discussed above in the context of actual NP applications. For this, we leverage NP application partitioning and mapping techniques and analytic performance modeling results that were developed in our prior work [15, 20].
In Section 2, we discuss related work. Section 3 discusses the key characteristics of network processor operating systems and how they differ from conventional workstation operating systems. Section 4 discusses qualitative design tradeoffs and Section 5 quantifies these observations in the context of our particular experimental system. Section 6 combines the results and discusses their implications on network processor operating system design. Section 7 concludes this paper.
چکیده
1. معرفی
2. کارهای پیشین
3. سیستم عامل پردازنده شبکه
3.1 تفاوت ها با سیستم عامل های ایستگاه کاری
3.2 ملاحظات طراحی
4. مبادلات کیفی
4.1 پارتیشن بندی نرم افزار
4.1.1 پارتیشن بندی دستی
4.1.2 پارتیشن بندی خودکار
4.1.3 گزینه های طراحی
4.2 خصوصیات ترافیکی
4.2.1 مدل ترافیکی ایستا
4.2.2 مدل دسته ای یا Batch
4.2.3 مدل دسته ای پیش بینی شده
4.2.4 گزینه های طراحی
4.3 نگاشت و تطبیق زمان اجرا
4.3.1 نگاشت ایستا
4.3.2 نگاشت پویای کامل
4.3.3 نگاشت پویای جزئی
4.3.4 تلاش های نگاشت
4.3.5 گزینه های طراحی
4.4 محدودیت ها
4.4.1 محدودیت های ذخیره سازی دستورالعمل
4.4.2 بیش تامین
5. نتایج کمی
5.1 سیستم مبنا
5.1.1 نمایش نرم افزار
5.1.2 الگوریتم نگاشت
5.1.3 مدل عملکرد تحلیلی
5.1.4 پیکربندی سیستم و حجم کار
5.2 نگاشت وظایف پردازشی
5.2.1 معیارها
5.2.2 نتایج
5.3 پارتیشن بندی
5.3.1 معیارها
5.3.2 نتایج
5.4 خصوصیات ترافیکی
5.4.1 معیارها
5.4.2 نتایج
5.5 انطباق
5.5.1 معیارها
5.5.2 نتایج
6. سناریوهای طراحی سیستم عامل NP
6.1 سناریو 1: پیکربندی ایستا
6.2 سناریو 2: تنظیمات از پیش تعیین شده
6.3 سناریو 3: پیکربندی پویای کامل
7. نتیجه گیری
منابع
ABSTRACT
1. INTRODUCTION
2. RELATED WORK
3. NETWORK PROCESSOR OPERATING SYSTEM
3.1 Differences to Workstation Operating Systems
3.2 Design Considerations
4. QUALITATIVE TRADEOFFS
4.1 Application Partitioning
4.1.1 Manual Partitioning
4.1.2 Automated Partitioning
4.1.3 Design Choices
4.2 Traffic Characterization
4.2.1 Static Traffic Model
4.2.2 Batch Model
4.2.3 Predictive Batch Model
4.2.4 Design Choices
4.3 Run-Time Mapping and Adaptation
4.3.1 Static Mapping
4.3.2 Complete Dynamic Mapping
4.3.3 Partial Dynamic Mapping
4.3.4 Mapping Effort
4.3.5 Design Choices
4.4 Constraints
4.4.1 Instruction Store Limitations
4.4.2 Overprovisioning
5. QUANTITATIVE RESULTS
5.1 Baseline System
5.1.1 Application Representation
5.1.2 Mapping Algorithm
5.1.3 Analytic Performance Model
5.1.4 System Configuration and Workload
5.2 Processing Task Mapping
5.2.1 Metrics
5.2.2 Results
5.3 Partitioning
5.3.1 Metrics
5.3.2 Results
5.4 Traffic Characterization
5.4.1 Metrics
5.4.2 Results
5.5 Adaptation
5.5.1 Metrics
5.5.2 Results
6. NP OPERATING SYSTEM DESIGN SCENARIOS
6.1 Scenario 1: Static Configuration
6.2 Scenario 2: Predetermined Configurations
6.3 Scenario 3: Fully Dynamic Configuration
7. CONCLUSION
REFERENCES