Presentation is loading. Please wait.

Presentation is loading. Please wait.

Network Management: Principles and Practice

Similar presentations


Presentation on theme: "Network Management: Principles and Practice"— Presentation transcript:

1 Network Management: Principles and Practice
Chapter SNMP Management: SNMPv2 Chapter 6 SNMP Management: SNMPv2 Network Management: Principles and Practice © Mani Subramanian 2011

2 Network Management: Principles and Practice
Chapter SNMP Management: SNMPv2 Objectives Community-based security SNMPv2 enhancements Additional messages Formalization of SMI Get-bulk request and information-request SNMP MIB modifications Incompatibility with SNMPv1 Proxy server Bilingual manager Network Management: Principles and Practice © Mani Subramanian 2011

3 Network Management: Principles and Practice
Chapter SNMP Management: SNMPv2 SNMPv1 vs. SNMPv2 SNMPv2 released in 1996. Basic components are the same in SNMPv1 & SNMPv2 (agent and manager). Significant differences between SNMPv1 & SNMPv2. Not backward compatible with SNMPv1. RFC1908 → Coexistence between Version 1, and Version 2 of SNMP. RFC 3584 → Coexistence between Version 1, Version 2, and Version 3 of SNMP. Notes Security features, originally to be in SNMPv2, but moved to SNMPv3 SNMPv2, like SNMPv1, is community-based administrative framework → SNMPv2C [RFC 1901] (01/1996) Framework details: → RFC [STD 58] (04/1999) and RFC [STD 62] (12/2002) → Obsoletes RFC Network Management: Principles and Practice © Mani Subramanian 2011

4 Network Management: Principles and Practice
Chapter SNMP Management: SNMPv2 Major Changes Bulk data transfer: [RFC 3416/STD 62] Speeds up get-next-request process (e.g., retrieve data from tables). Manager-to-manager message: [RFC 3416/STD 62] Interoperability of NMSs. Enhancements to SMI: SMIv2 [RFC 2578/STD 58] Module definitions: MODULE-IDENTITY macro Object definitions: OBJECT-TYPE macro Trap definitions: NOTIFICATION-TYPE macro SMI (SNMPv1) → STD 16 [RFC 1155, RFC 1212, and RFC 1215] Textual conventions: [RFC 2579/STD 58] Help define new data types. Make semantics consistent and clear. Conformance statements: [RFC 2580/STD 58] Check compatibility with an SNMP version. Compliance defines minimum set of capabilities. Vendors can offer additional capabilities as options. Network Management: Principles and Practice © Mani Subramanian 2011

5 Network Management: Principles and Practice
Chapter SNMP Management: SNMPv2 Major Changes (Cont.) Row creation and deletion in tables: [RFC 2579/STD 58] RowStatus columnar object added. Conceptual rows can be added or deleted to/from a table. Table Expansion: [RFC 2578/STD 58] Tables can be expanded → adding columnar objects to existing tables. MIB enhancements: [RFC 3418/STD 62] Two new subgroups added to the Internet node: security & snmpV2. Significant changes to the System group and to the SNMP group of version 1. System group → under mib-2 node. SNMP(v2) group → some from SNMP group + others from groups under snmpV2 node. Transport mappings: [RFC 3417/STD 62] Communication model changes. Other transport protocols can be used with SNMPv2 (besides UDP). Network Management: Principles and Practice © Mani Subramanian 2011

6 Network Management: Principles and Practice
Chapter SNMP Management: SNMPv2 SNMPv2 Internet Group Notes Additional SNMPv2 group added Security group is a placeholder (not used) Network Management: Principles and Practice © Mani Subramanian 2011

7 Network Management: Principles and Practice
Chapter SNMP Management: SNMPv2 SNMPv2 MIB - Internet Group - Notes Objects added to System group Extensive modification of the SNMP group Entities under the new SNMPv2 group added Network Management: Principles and Practice © Mani Subramanian 2011

8 Network Management: Principles and Practice
Chapter SNMP Management: SNMPv2 SNMPv2 RFCs RFC 1901: Introduction to Community-based SNMPv2 RFC 2578: Structure of Management Information Version 2 (SMIv2) RFC 2579: Textual Conventions for SMIv2 RFC 2580: Conformance Statements for SMIv2 RFC 3416: Version 2 of the Protocol Operations for the Simple Network Management Protocol (SNMP) RFC 3417: Transport Mappings for the Simple Network Management Protocol (SNMP) RFC 3418: Management Information Base (MIB) for the Simple RFC 1908: Coexistence between Version 1 and Version 2 of SNMP RFC 1909: An Administrative Infrastructure for SNMPv2 Network Management: Principles and Practice © Mani Subramanian 2011

9 Network Management: Principles and Practice
Chapter SNMP Management: SNMPv2 SNMPv2 NM Architecture Notes Eight messages (Seven + one Report message). Two managers can communicate with each other at peer level. Report message, defined but not specified (left to implementers). It is not currently used. Network Management: Principles and Practice © Mani Subramanian 2011

10 Network Management: Principles and Practice
Chapter SNMP Management: SNMPv2 SNMPv2 New Messages inform-request manager-to-manager message get-bulk-request transfer of large data report not used Notes RFC 3416/STD 62 PDUs ::= CHOICE { get-request GetRequest-PDU, get-next-request GetNextRequest-PDU, get-bulk-request GetBulkRequest-PDU, response Response-PDU, set-request SetRequest-PDU, inform-request InformRequest-PDU, snmpV2-trap SNMPv2-Trap-PDU, report Report-PDU } -- PDUs GetRequest-PDU ::= [0] IMPLICIT PDU GetNextRequest-PDU ::= [1] IMPLICIT PDU Response-PDU ::= [2] IMPLICIT PDU SetRequest-PDU ::= [3] IMPLICIT PDU -- [4] is obsolete GetBulkRequest-PDU ::= [5] IMPLICIT BulkPDU InformRequest-PDU ::= [6] IMPLICIT PDU SNMPv2-Trap-PDU ::= [7] IMPLICIT PDU -- Usage and precise semantics of Report-PDU are not defined -- in this document. Any SNMP administrative framework making -- use of this PDU must define its usage and semantics. Report-PDU ::= [8] IMPLICIT PDU Network Management: Principles and Practice © Mani Subramanian 2011

11 SMIv2 - Enhancements to SMI
Chapter SNMP Management: SNMPv2 SMIv2 - Enhancements to SMI [RFC 2578/STD 58] Divided into 3 parts: Module definitions: Semantics of an information module Uses MODULE-IDENTITY macro Object definitions: Describe managed objects (syntax & semantics) Uses OBJECT-TYPE macro Notification definitions: Describe unsolicited transmissions of trap information (syntax & semantics) Uses NOTIFICATION-TYPE macro Notes Module is a group of related assignments Network Management: Principles and Practice © Mani Subramanian 2011

12 SMIv2 – Information Modules
Chapter SNMP Management: SNMPv2 SMIv2 – Information Modules [RFC 2578/STD 58] Three kinds of information modules: MIB Modules: Contain definitions of inter-related managed objects Make use of OBJECT-TYPE and NOTIFICATION-TYPE macros RFC 2579/STD 58 formalizes the textual conventions used to describe MIB modules TEXTUAL-CONVENTION macro snmpModules object identifier Compliance statements for MIB Modules: Make use of MODULE-COMPLIANCE and OBJECT-GROUP macros RFC 2580/STD 58 snmpMIBConformance object identifier Capability statements for agent implementations: Make use of AGENT-CAPABILITIES macro SMIv1 macros must not be used in SMIv2 information modules. Network Management: Principles and Practice © Mani Subramanian 2011

13 MODULE-IDENTITY Macro
Chapter SNMP Management: SNMPv2 MODULE-IDENTITY Macro [RFC 2578/STD 58] MODULE-IDENTITY used to concisely convey the semantics of an information module. Provides administrative information such as contact and revision history for each information module. Must appear exactly once in every information module. Example: [RFC3418/STD62] SNMPv2-MIB DEFINITIONS ::= BEGIN … … … snmpMIB MODULE-IDENTITY ::= { snmpModules 1 } END Notes The expansion of the MODULE-IDENTITY macro is something which conceptually happens during implementation and not during run-time. Network Management: Principles and Practice © Mani Subramanian 2011

14 Network Management: Principles and Practice
Chapter SNMP Management: SNMPv2 Module Identity Macro Notes Module is a group of related assignments MODULE-IDENTITY macro defines the module definitions Network Management: Principles and Practice © Mani Subramanian 2011

15 MIB Module (Example from RFC 3418/STD 62)
Chapter SNMP Management: SNMPv2 MIB Module (Example from RFC 3418/STD 62) Network Management: Principles and Practice © Mani Subramanian 2011

16 Network Management: Principles and Practice
Chapter SNMP Management: SNMPv2 OBJECT Definitions [RFC 2578/STD 58] OBJECT IDENTIFIER defines the administrative identification of a node in the MIB. OBJECT-IDENTITY macro Defines information about an OBJECT IDENTIFIER. Assigns an object identifier value to the object node in the MIB. OBJECT-TYPE macro: Defines the type of a managed object (both syntax and semantics). Also, describes a new type (not instance) of object. Notes Network Management: Principles and Practice © Mani Subramanian 2011

17 OBJECT-IDENTITY Macro
Chapter SNMP Management: SNMPv2 OBJECT-IDENTITY Macro OBJECT-IDENTITY macro defines information about an OBJECT IDENTIFIER assignment. Example [RFC 2578/STD 58]: zeroDotZero OBJECT-IDENTITY STATUS current DESCRIPTION "A value used for null identifiers." ::= { 0 0 } Network Management: Principles and Practice © Mani Subramanian 2011

18 Network Management: Principles and Practice
Chapter SNMP Management: SNMPv2 OBJECT-TYPE Macro OBJECT-TYPE macro defines the type of a managed object. STATUS: mandatory replaced with current optional is not used deprecated is added → objects required to be implemented in current version, but may not exist in future versions of SNMP (for backward compatibility) Network Management: Principles and Practice © Mani Subramanian 2011

19 OBJECT-IDENTITY / OBJECT-TYPE
Chapter SNMP Management: SNMPv2 OBJECT-IDENTITY / OBJECT-TYPE OBJECT-IDENTITY is high level description OBJECT-TYPE details description needed for implementation Network Management: Principles and Practice © Mani Subramanian 2011

20 Network Management: Principles and Practice
Chapter SNMP Management: SNMPv2 Table Expansion [RFC 2578/STD 58] Augmentation of a table (augmented table) adds additional columns to an existing table (base table). If there is a one-to-one correspondence between the conceptual rows of this table and an existing table, then the AUGMENTS clause should be used. Sparse dependent table supplements less rows to a base table. If there is a sparse relationship between the conceptual rows of this table and an existing table, then an INDEX clause should be used which is identical to that in the existing table. Dense dependent table enables addition of more rows to base table. If no existing objects have the required syntax and semantics, then auxiliary objects should be defined within the conceptual row for the new table, and those objects should be used within the INDEX clause for the conceptual row. Network Management: Principles and Practice © Mani Subramanian 2011

21 Augmentation of Tables
Chapter SNMP Management: SNMPv2 Augmentation of Tables Network Management: Principles and Practice © Mani Subramanian 2011

22 Augmentation of Tables: Example
Chapter SNMP Management: SNMPv2 Augmentation of Tables: Example Network Management: Principles and Practice © Mani Subramanian 2011

23 Addition of a Sparse Table
Chapter SNMP Management: SNMPv2 Addition of a Sparse Table to Base Table T1.E1.C1.1 table1 (T1) table1Entry (E1) T1.E1.C2.1 T1.E1.C3.1 T1.E1.C1.2 T1.E1.C2.2 T1.E1.C3.2 T1.E1.C1.3 T1.E1.C2.3 T1.E1.C3.3 T1.E1.C1.4 T1.E1.C2.4 T.E1.C3.4 table 2 (T2) table2Entry (E2) T2.E2.C4.1 T2.E2.C5.1 T2.E2.C4.2 T2.E2.C5.2 Figure 6.16 Addition of a Sparse Table to Base Table Index: First columnar object in Table 1 Conceptual rows: 1. T1.E1.C1.1 2. T1.E1.C1.2 3. T1.E1.C1.3 4. T1.E1.C1.4 Table 1 Table 2 Network Management: Principles and Practice © Mani Subramanian 2011

24 Augmentation of Tables: Example
Chapter SNMP Management: SNMPv2 Augmentation of Tables: Example - Sparse Table - Network Management: Principles and Practice © Mani Subramanian 2011

25 Combining Indexing of Tables
Chapter SNMP Management: SNMPv2 Combining Indexing of Tables (Dense Table) T1.E1.C1.1 table1 (T1) table1Entry (E1) T1.E1.C2.1 T1.E1.C3.1 T1.E1.C1.2 T1.E1.C2.2 T1.E1.C3.2 table 2 (T2) table2Entry (E2) T2.E2.C4.1 T2.E2.C5.1 T2.E2.C4.2 T2.E2.C5.2 T2.E2.C4.3 T2.E2.C5.3 T2.E2.C4.4 T2.E2.C5.4 Figure 6.14 Combined Indexing of Tables Index: First columnar objects in Table 1 and 2 Conceptual rows: 1. T1.E1.C1.1, T2.E2.C4.1 2. T1.E1.C1.1, T2.E2.C4.2 3. T1.E1.C1.1, T2.E2.C4.3 4. T1.E1.C1.1, T2.E2.C4.4 Table 1 Table 2 5. T1.E1.C1.2, T2.E2.C4.1 8. T1.E1.C1.2, T2.E2.C4.4 ………………………… Network Management: Principles and Practice © Mani Subramanian 2011

26 Augmentation of Tables: Example
Chapter SNMP Management: SNMPv2 Augmentation of Tables: Example - Dense Table- Network Management: Principles and Practice © Mani Subramanian 2011

27 Network Management: Principles and Practice
Chapter SNMP Management: SNMPv2 Textual Convention [RFC 2579/STD 58] Enables defining new data types. Makes semantics of data types consistent and human readable. Creates new data types using existing ones and applies restrictions to them. An important textual convention in SNMPv2, RowStatus creates and deletes rows. Notes SNMPv1 [RFC1213/STD17]: SNMPv2 [RFC 2579/STD 58]: Network Management: Principles and Practice © Mani Subramanian 2011

28 TEXTUAL-CONVENTION Macro [RFC 2579/STD 58]
Chapter SNMP Management: SNMPv2 TEXTUAL-CONVENTION Macro [RFC 2579/STD 58] TEXTUAL-CONVENTION MACRO ::= BEGIN TYPE NOTATION ::= DisplayPart "STATUS" Status "DESCRIPTION" Text ReferPart "SYNTAX" Syntax VALUE NOTATION ::= value(VALUE Syntax) DisplayPart ::= "DISPLAY-HINT" Text | empty Status ::= "current" | "deprecated" | "obsolete“ ReferPart ::= "REFERENCE" Text | empty ……………………….. END TEXTUAL-CONVENTION Macro [RFC Textual Conventions for SMIv2, April 1999] Network Management: Principles and Practice © Mani Subramanian 2011

29 DISPLAY-HINT Clause [RFC 2579/STD 58]
Chapter SNMP Management: SNMPv2 DISPLAY-HINT Clause [RFC 2579/STD 58] The DISPLAY-HINT clause may be present if and only if the syntax has an underlying primitive type of INTEGER or OCTET STRING. Syntax has an underlying primitive type of INTEGER, the hint consists of two parts. Part 1: A single character suggesting a display format, either: 'x' for hexadecimal, 'd' for decimal, 'o' for octal, 'b' for binary, 'a' for ASCII. Part 2: Can only be present with ‘d’ (optional). If present, uses “-” followed by a decimal number, i.e., implied decimal point when rendering the value. Example: Hundredths ::= TEXTUAL-CONVENTION DISPLAY-HINT “d-2” ... SYNTAX INTEGER ( ) -- suggests that a hundredths value of 1234 be rendered as "12.34" Network Management: Principles and Practice © Mani Subramanian 2011

30 Network Management: Principles and Practice
Chapter SNMP Management: SNMPv2 Examples from RFC 2579/STD 58 PhysAddress ::= TEXTUAL-CONVENTION DISPLAY-HINT “1x:” STATUS current DESCRIPTION “Represents media- or physical-level addresses.” SYNTAX OCTET STRING TruthValue ::= TEXTUAL-CONVENTION DESCRIPTION “Represents a boolean value.” SYNTAX INTEGER { true(1), false(2) } DateAndTime ::= TEXTUAL-CONVENTION DISPLAY-HINT “2d-1d-1d,1d:1d:1d.1d,1a1d:1d” DESCRIPTION “A date-time specification. … For example: ,13:30:15.0,-4:0 …” SYNTAX OCTET STRING (SIZE (8 | 11)) See Table 6.3 for SMIv2 Textual Conventions for Initial Data Types Network Management: Principles and Practice © Mani Subramanian 2011

31 Network Management: Principles and Practice
Chapter SNMP Management: SNMPv2 Examples from RFC 2579/STD 58 RowStatus ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION “The RowStatus textual convention is used to manage the …” SYNTAX INTEGER { -- the following two values are states: -- these values may be read or written active(1), notInService(2), -- the following value is a state: -- this value may be read, but not written notReady(3), -- the following three values are -- actions: these values may be written, -- but are never read createAndGo(4), createAndWait(5), destroy(6) } See Table 6.3 for SMIv2 Textual Conventions for Initial Data Types Network Management: Principles and Practice © Mani Subramanian 2011

32 Creation/Deletion of Rows: RowStatus
Chapter SNMP Management: SNMPv2 Creation/Deletion of Rows: RowStatus [RFC 2579/STD 58] Notes Two methods: Create a row and make it active (createAndGo) → immediately available Create a row and make it available at a later time. (createAndWait) Status: A new column is added to the conceptual table. SYNTAX of Status is RowStatus. Value of RowStatus is Enumerated INTEGER. Manager uses states 1, 2, 4, 5 & 6 to create/delete rows on the agent. Agent uses states 1, 2 & 3 to send responses. Network Management: Principles and Practice © Mani Subramanian 2011

33 Row Creation and Deletion
Chapter SNMP Management: SNMPv2 Row Creation and Deletion Notes Network Management: Principles and Practice © Mani Subramanian 2011

34 Create-and-Go Row Creation
Chapter SNMP Management: SNMPv2 Create-and-Go Row Creation Network Management: Principles and Practice © Mani Subramanian 2011

35 Network Management: Principles and Practice
Chapter SNMP Management: SNMPv2 Create-and-Wait: Row Creation Network Management: Principles and Practice © Mani Subramanian 2011

36 Network Management: Principles and Practice
Chapter SNMP Management: SNMPv2 Row Deletion Network Management: Principles and Practice © Mani Subramanian 2011

37 Conformance: OBJECT-GROUP
Chapter SNMP Management: SNMPv2 Conformance: OBJECT-GROUP Conformance defined by OBJECT-GROUP macro NOTIFICATION-GROUP macro OBJECT-GROUP Compiled during implementation, not at run time OBJECTS clause names each object Every object belongs to an OBJECT- GROUP Access defined by MAX-ACCESS, the maximum access privilege for the object Notes Network Management: Principles and Practice © Mani Subramanian 2011

38 Conformance: NOTIFICATION-GROUP
Chapter SNMP Management: SNMPv2 Conformance: NOTIFICATION-GROUP NOTIFICATION-GROUP Contains trap entities defined in SMIv1 NOTIFICATIONS clause identifies the notifications in the group NOTIFICATIONS-GROUP macro compiled during implementation, not at run time Notes Network Management: Principles and Practice © Mani Subramanian 2011

39 Network Management: Principles and Practice
Chapter SNMP Management: SNMPv2 Compliance Compliance has two classes of groups MANDATORY-GROUPS ... Required GROUP …Optional Notes Network Management: Principles and Practice © Mani Subramanian 2011

40 Network Management: Principles and Practice
Chapter SNMP Management: SNMPv2 Agent Capabilities AGENT-CAPABILITIES macro SUPPORTS modules and includes groups VARIATION identifies additional features Notes Network Management: Principles and Practice © Mani Subramanian 2011

41 Network Management: Principles and Practice
Chapter SNMP Management: SNMPv2 SNMPv2 MIB Notes Security is a placeholder System group: A table sysORTable added that lists resources that the agent controls; NMS configures NE through the agents. Most of the objects in the SNMPv1 obsoleted Object Groups and Notification Groups defined for conformance specifications. Network Management: Principles and Practice © Mani Subramanian 2011

42 SNMPv2 System Group [RFC 3418/STD 62]
Chapter SNMP Management: SNMPv2 SNMPv2 System Group [RFC 3418/STD 62] sysDescr (1) system (mib-2 1) sysObjectId (2) sysUpTime (3) sysContact (4) sysORLastChange (8) sysServices (7) sysLocation (6) sysName (5) sysORTable (9) sysOREntry (1) sysORIndex (1) sysORID (2) sysORDescr (3) sysORUpTime (4) Figure 6.32 The SNMPv2 System Group Entity OID Description sysORLastChange system 8 sysUpTime value at time of most recent change in state or value of any instance of sysORID. sysORTable system 9 Table listing system resources that the agent controls; manager can configure these resources through the agent sysOREntry sysORTable 1 An entry in the sysORTable sysORIndex sysOREntry 2 Row index, also index for the table sysORID sysOREntry 3 ID of the resource module sysORDescr sysOREntry 4 Textual description of the resource module sysORUpTime sysOREntry 5 System up-time since the object in this row was last instantiated Network Management: Principles and Practice © Mani Subramanian 2011

43 Network Management: Principles and Practice
Chapter SNMP Management: SNMPv2 SNMPv2 SNMP MIB Notes Compare this to SNMPv1 MIB! Network Management: Principles and Practice © Mani Subramanian 2011

44 Network Management: Principles and Practice
Chapter SNMP Management: SNMPv2 SNMPv1 SNMP MIB Network Management: Principles and Practice © Mani Subramanian 2011

45 Network Management: Principles and Practice
Chapter SNMP Management: SNMPv2 snmpMIBObjects MIB Notes Network Management: Principles and Practice © Mani Subramanian 2011

46 Network Management: Principles and Practice
Chapter SNMP Management: SNMPv2 SNMPv2 Protocol - SNMPv2 PDU - Notes Standardized format for all messages Interpretation of error status and error index fields: In SNMPv1, if error occurs → status and index field filled, but varBindList blank In SNMPv2, (x: means non-zero value) Interpretation Status Index varBindList ignored x varBind of index field ignored x x Network Management: Principles and Practice © Mani Subramanian 2011

47 SNMPv2 PDU and Error Status
Chapter SNMP Management: SNMPv2 SNMPv2 PDU and Error Status Network Management: Principles and Practice © Mani Subramanian 2011

48 SNMPv2 GetBulkRequest PDU
Chapter SNMP Management: SNMPv2 SNMPv2 GetBulkRequest PDU Notes Error status field replaced by Non-repeaters Error index field replaced by Max repetitions No one-to-one relationship between request and response Network Management: Principles and Practice © Mani Subramanian 2011

49 Get-Bulk-Request: Generic MIB
Chapter SNMP Management: SNMPv2 Get-Bulk-Request: Generic MIB Network Management: Principles and Practice © Mani Subramanian 2011

50 Get-Next-Request Operation
Chapter SNMP Management: SNMPv2 Get-Next-Request Operation Network Management: Principles and Practice © Mani Subramanian 2011

51 Get-Bulk-Request Operation
Chapter SNMP Management: SNMPv2 Get-Bulk-Request Operation Network Management: Principles and Practice © Mani Subramanian 2011

52 Get-Bulk-Request Example
Chapter SNMP Management: SNMPv2 Get-Bulk-Request Example Notes Network Management: Principles and Practice © Mani Subramanian 2011

53 Network Management: Principles and Practice
Chapter SNMP Management: SNMPv2 SNMPv2 Trap Notes Addition of NOTIFICATION-TYPE macro OBJECTS clause, if present, defines order of variable bindings Positions 1 and 2 in VarBindList are sysUpTime and snmpTrapOID Network Management: Principles and Practice © Mani Subramanian 2011

54 Network Management: Principles and Practice
Chapter SNMP Management: SNMPv2 Inform-Request Notes Inform-Request behaves as trap in that the message goes from one manager to another unsolicited The receiving manager sends response to the sending manager Network Management: Principles and Practice © Mani Subramanian 2011

55 Network Management: Principles and Practice
Chapter SNMP Management: SNMPv2 Bilingual Manager Notes Compatibility with SNMPv1 Bilingual Manager Proxy Server Bilingual Manager expensive in resource and operation Network Management: Principles and Practice © Mani Subramanian 2011

56 Network Management: Principles and Practice
Chapter SNMP Management: SNMPv2 SNMP Proxy Server Network Management: Principles and Practice © Mani Subramanian 2011


Download ppt "Network Management: Principles and Practice"

Similar presentations


Ads by Google