250 likes | 471 Views
Dynamic Aspect C++ Compiler for Inter Hosts/Applications Aspects. By Sufyan Almajali Advisor Prof. Tzilla Elrad. What We Want to Enable. Dynamic Network Security Policy Dynamic WLAN Accounting Policy
E N D
Dynamic Aspect C++ Compiler for Inter Hosts/Applications Aspects By Sufyan Almajali Advisor Prof. Tzilla Elrad
What We Want to Enable • Dynamic Network Security Policy • Dynamic WLAN Accounting Policy • Network applications are only one possible application that can benefit from our extended language. Others could be standalone applications ,peer-to-peer applications, and distributed applications.
Policy 1: All For all network users, each of the applications start event is logged for auditing purposes users should Policy 2: Sales users should access the network from their own PCs only Policy 3: HR application events (add new employee record), need to be audited along with HR user information
Dynamic WLAN Accounting Policy • Users use different network applications ( services) : Internet Browsing, Network Printing, File service, ..etc. • Charges for the different services should be dynamically controlled.
Challenges • To provide a simple mechanisms to localize a concern across entire network. • To provide a complete dynamic infrastructure ( software and network protocols) at both the application and network levels.
Goals • To design a software system that supports organizational policy changes across a network. • To design a programming language that supports the development of dynamic networks applications and services. • To automate network administration process
AOSD • Using AOSD allows localizing the representation of concerns in modular units. • AOSD Joinpoint model is not network aware. • Joinpoints are only within the same program applications Pointcut expressions are restricted within application.
Our Approach • Implement a Dynamic AOSD language at the application level Dynamic Aspect C++ ( DAC++) • Expand the joinpoint model toward networks • Implement a Dynamic AOSD language at the network level(Network Dynamic Aspect C++) NDAC++
DAC++ • Allows Efficient Dynamic Weaving for C++ • The compiler backend has been redesigned to support Meta object data at runtime. • Meta Object data includes • Classes objects information, • Aspect information, and • runtime linking information.
NDAC++ v3 • Extends the jointpoint model to support pointcut expressions over network. • Supports dynamic network weaving at the network level.
NDAC++ Jointpoint Dimensions • Network • Application (process) • Thread • Class • Instance • Method ( member function) • Variable • Cancel this page
NDAC++ Syntax • Security Policy Example
Defining Join Points and Pointcut Designator • NetworkPC net_pc1(SUBNET,"192.168.64.0/26"); • ApplicationPC app_pc1(ALL,""); • ThreadPC thr_pc1(ALL,””);
Pointcut Definition Examples. 1 NetworkPC net_pc1(BROADCAST,""); 2 NetworkPC net_pc2(SUBNET,"192.168.64.0/26"); 3 NetworkPC net_pc3(HGROUP, "192.168.64.0-63, 192.168.64.128-191"); 4 NetworkPC net_pc4(SUBNET,"192.168.64.64/26"); 5 ApplicationPC app_pc1(ALL,""); 6 ApplicationPC app_pc2(ALL,""); 7 ApplicationPC app_pc3( GROUP, "Salesapp , Adminapp"); 8 ApplicationPC app_pc4(NAMEMATCH,"HRapp"); 9 ClassPC class_pc1(GROUP,”square,rectangle”); 10 MethodPC meth_pc1(GROUP, "add_emp, modify_emp,delete_emp");
Defining Sub-Pointcut Designator and Pointcut Designator over Multi-dimensional Join Point Space 1 SPCD spcd1, spcd2; 2 spcd1.setnetworkpc(net_pc1); 3 spcd1.setapplicationpc(app_pc1); 4 spcd2.setnetworkpc(net_pc1); 5 spcd2.setapplicationpc(app_pc2); 6 spcd2.setmethodpc(meth_pc1); 7 PCD pc1; 8 pc1.add(spcd1); 9 pc1.add(spcd2);
1 class LoggingPolicy: public Aspect { 2 LoggingPolicy(); 3 Advice() { // code to log user info} 4 ..... // here, programmer can define other member variables and functions 5 } 6 class CheckSalesUsersPolic: public Aspect { 7 CheckSalesUsersPolicy(); 8 Advice() { // code to get user name first, get // machine's mac address next, send to // server for validity and authorize } 9 int main () { 10 WeaveSpecs w1; 11 w1.setweavetarget(Application_W); 12 w1.setweavetype(Start_T); 13 NetworkPC net_pc1(BROADCAST,""); 14 NetworkPC net_pc2(SUBNET,"192.168.64.0/26"); 15 ApplicationPC app_pc1(ALL,"");
16 SPCD spcd1, spcd2; 17 spcd1.setnetworkpc(net_pc1); 18 spcd1.setapplicationpc(app_pc1); 19 spcd2.setnetworkpc(net_pc1); 20 spcd2.setapplicationpc(app_pc2); 21 PCD pc1,pc2; 22 pc1.add(spcd1); 23 pc2.add(spcd2); 24 LoggingPolicy aspect1; 25 aspect1.setweavespecs(w1); 26 aspect1.setpcd(pc1); 27 CheckSalesUsersPolicy aspect2; 28 aspect2.setweavspecs(w1); 29 aspect2.setpcd(pc2);
Network Weaving Level • IPC over TCP ( Interprocess communication) • Network Weaving Protocol
Questions • ???
Contact Info: • Prof. Tzilla Elrad email: elrad@iit.edu • Sufyan Almajali email: almasuf@iit.edu