idnits 2.17.1 draft-ietf-ntp-ntpv4-mib-06.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- ** The document seems to lack a License Notice according IETF Trust Provisions of 28 Dec 2009, Section 6.b.i or Provisions of 12 Sep 2009 Section 6.b -- however, there's a paragraph with a matching beginning. Boilerplate error? -- It seems you're using the 'non-IETF stream' Licence Notice instead (You're using the IETF Trust Provisions' Section 6.b License Notice from 12 Feb 2009 rather than one of the newer Notices. See https://trustee.ietf.org/license-info/.) Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** There are 22 instances of too long lines in the document, the longest one being 49 characters in excess of 72. ** The document seems to lack a both a reference to RFC 2119 and the recommended RFC 2119 boilerplate, even if it appears to use RFC 2119 keywords. RFC 2119 keyword, line 1157: '...B module. It is RECOMMENDED that impl...' RFC 2119 keyword, line 1161: '...ns prior to SNMPv3 is NOT RECOMMENDED....' RFC 2119 keyword, line 1162: '... Instead, it is RECOMMENDED to deploy...' Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document seems to contain a disclaimer for pre-RFC5378 work, and may have content which was first submitted before 10 November 2008. The disclaimer is necessary when there are original authors that you have been unable to contact, or if some do not wish to grant the BCP78 rights to the IETF Trust. If you are able to get all authors (current and original) to grant those rights, you can and should remove the disclaimer; otherwise, the disclaimer is needed and you can ignore this comment. (See the Legal Provisions document at https://trustee.ietf.org/license-info for more information.) -- The document date (October 8, 2009) is 5307 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Unused Reference: 'RFC4001' is defined on line 1190, but no explicit reference was found in the text == Outdated reference: A later version (-13) exists of draft-ietf-ntp-ntpv4-proto-11 Summary: 3 errors (**), 0 flaws (~~), 3 warnings (==), 3 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 NTP H. Gerstung 3 Internet-Draft Meinberg 4 Intended status: Standards Track C. Elliott 5 Expires: April 11, 2010 October 8, 2009 7 Definitions of Managed Objects for Network Time Protocol Version 4 8 (NTPv4) 9 draft-ietf-ntp-ntpv4-mib-06 11 Status of this Memo 13 This Internet-Draft is submitted to IETF in full conformance with the 14 provisions of BCP 78 and BCP 79. This document may contain material 15 from IETF Documents or IETF Contributions published or made publicly 16 available before November 10, 2008. The person(s) controlling the 17 copyright in some of this material may not have granted the IETF 18 Trust the right to allow modifications of such material outside the 19 IETF Standards Process. Without obtaining an adequate license from 20 the person(s) controlling the copyright in such materials, this 21 document may not be modified outside the IETF Standards Process, and 22 derivative works of it may not be created outside the IETF Standards 23 Process, except to format it for publication as an RFC or to 24 translate it into languages other than English. 26 Internet-Drafts are working documents of the Internet Engineering 27 Task Force (IETF), its areas, and its working groups. Note that 28 other groups may also distribute working documents as Internet- 29 Drafts. 31 Internet-Drafts are draft documents valid for a maximum of six months 32 and may be updated, replaced, or obsoleted by other documents at any 33 time. It is inappropriate to use Internet-Drafts as reference 34 material or to cite them other than as "work in progress." 36 The list of current Internet-Drafts can be accessed at 37 http://www.ietf.org/ietf/1id-abstracts.txt. 39 The list of Internet-Draft Shadow Directories can be accessed at 40 http://www.ietf.org/shadow.html. 42 This Internet-Draft will expire on April 11, 2010. 44 Copyright Notice 46 Copyright (c) 2009 IETF Trust and the persons identified as the 47 document authors. All rights reserved. 49 This document is subject to BCP 78 and the IETF Trust's Legal 50 Provisions Relating to IETF Documents in effect on the date of 51 publication of this document (http://trustee.ietf.org/license-info). 52 Please review these documents carefully, as they describe your rights 53 and restrictions with respect to this document. 55 Abstract 57 RFC Ed. : This draft refers to itself with RFC YYYY. When this draft 58 is published as an RFC, the RFC Editor is asked to replace "YYYY" (in 59 the RFC, including the MIB module part) with the assigned RFC number 60 and to remove this note. This draft also refers to 61 draft-ietf-ntp-ntpv4-proto. When this draft is published as an RFC, 62 the RFC Editor is asked to replace "draft-ietf-ntp-ntpv4-proto" (in 63 the RFC, including the MIB module part) with "RFC ZZZZ" (where ZZZZ 64 is the assigned RFC number) and to remove this note. 66 The Network Time Protocol (NTP) is used in networks of all types and 67 sizes for time synchronization of servers, workstations and other 68 networked equipment. As time synchronization is more and more a 69 mission critical service, standardized means for monitoring and 70 management of this subsystem of a networked host are required to 71 allow operators of such a service to setup a monitoring system that 72 is platform- and vendor-independent. This document provides a 73 standardized collection of data objects for monitoring the NTP entity 74 of such a network participant and it is part of the NTP Version 4 75 standardization effort. 77 Table of Contents 79 1. The Internet-Standard Management Framework . . . . . . . . . . 4 80 2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 81 3. Technical Description . . . . . . . . . . . . . . . . . . . . 4 82 4. MIB Definition . . . . . . . . . . . . . . . . . . . . . . . . 5 83 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 25 84 6. Security Considerations . . . . . . . . . . . . . . . . . . . 25 85 7. References . . . . . . . . . . . . . . . . . . . . . . . . . . 26 86 7.1. Normative References . . . . . . . . . . . . . . . . . . . 26 87 7.2. Informative References . . . . . . . . . . . . . . . . . . 27 88 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 27 90 1. The Internet-Standard Management Framework 92 For a detailed overview of the documents that describe the current 93 Internet-Standard Management Framework, please refer to section 7 of 94 RFC3410 [RFC3410]. 96 Managed objects are accessed via a virtual information store, termed 97 the Management Information Base or MIB. MIB objects are generally 98 accessed through the Simple Network Management Protocol (SNMP). 99 Objects in the MIB are defined using the mechanisms defined in the 100 Structure of Management Information (SMI). This memo specifies a MIB 101 module that is compliant to the SMIv2, which is described in RFC2578 102 [RFC2578], RFC2579 [RFC2579] and RFC2580 [RFC2580]. 104 2. Introduction 106 The NTPv4 MIB Module is designed to allow SNMP to be used to monitor 107 and manage local NTP [I-D.ietf-ntp-ntpv4-proto] entities. It 108 provides a collection of data objects that can be queried using the 109 SNMP protocol and represent the current status of the NTP entity. 110 This includes general information about the NTP entity itself 111 (vendor, product, version) as well as connectivity to upstream NTP 112 servers used as sources of reference time and to hardware reference 113 clocks like radio clocks. The most important values are included in 114 order to be able to detect failures before they can have an impact on 115 the overall time synchronization status of the network. There are 116 also a collection of notification objects to inform about state 117 changes in the NTP entity. There are objects to control these 118 notifications as well. 120 3. Technical Description 122 The NTPv4 MIB Module is divided into sections for general server 123 information, current NTP entity status, status information of all 124 mobilized associations (e.g. unicast upstream time servers, multicast 125 or broadcast time references and hardware clocks), NTP entity control 126 objects, NTP objects used only for notifications, as well as SNMP 127 notification definitions for core events. 129 The general server information section contains static information 130 and can be queried to identify which NTP implementation is running on 131 a host. This includes the vendor and product name of the running NTP 132 software as well as version information, hardware/os platform 133 identity and the time resolution of the underlying OS. 135 Section 2 (current NTP status) includes data objects that represent 136 the current operational status of the NTP entity. 138 The third section contains data objects that represent the set of 139 time references ("associations") the NTP entity is currently working 140 with. 142 The fourth section contains objects that can be used to control the 143 NTP entity. The currently defined objects control how often the 144 heartbeat interval notification is sent out and which notifications 145 are enabled. 147 The fifth section contains objects that are only used as varbinds in 148 notifications. There is currently only one object in this section--a 149 message that adds a clear text event message to notifications. 151 Certain important events can occur while the NTP entity is running. 152 The notification section defines SNMP notifications for a collection 153 of the most important ones ("core events") and additionally provides 154 a heartbeat notification as well as a test notification to allow 155 management systems to test the reception of NTP related notifications 156 as well as enable heartbeat-based monitoring systems to assure that 157 the NTP entity is still up and running. 159 Some values are included both in numeric and in human-readable 160 (string) format. This has been done to simplify the representation 161 of a status information. If the two representations of a certain 162 value differ, the numeric representation takes precedence. 164 4. MIB Definition 166 -- ********************************************************************* 167 -- 168 --$Id: draft-ietf-ntp-ntpv4-mib-05.xml 1.12 2007/11/28 00:00:00Z chelliot $ 169 --$Name: SUBMIT_1 $ 170 -- 171 -- The Network Time Protocol Version 4 172 -- Management Information Base (MIB) 173 -- 174 -- Authors: Heiko Gerstung (heiko.gerstung@meinberg.de) 175 -- Chris Elliott (chelliot@pobox.com) 176 -- 177 -- for the Internet Engineering Task Force (IETF) 178 -- NTP Working Group (ntpwg) 179 -- 180 -- 181 -- ********************************************************************* 182 -- Rev 1.00 183 -- Published as RFC YYYY 184 -- 185 -- ********************************************************************* 187 NTPv4-MIB DEFINITIONS ::= BEGIN 189 IMPORTS 190 MODULE-IDENTITY, OBJECT-TYPE , mib-2, Integer32, NOTIFICATION-TYPE, 191 Unsigned32, Counter32, TimeTicks 192 FROM SNMPv2-SMI -- RFC2578 193 MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP 194 FROM SNMPv2-CONF -- RFC2580 195 DisplayString, TEXTUAL-CONVENTION 196 FROM SNMPv2-TC -- RFC2579 197 InetAddressType, InetAddress 198 FROM INET-ADDRESS-MIB -- RFC4001 199 Utf8String 200 FROM SYSAPPL-MIB; -- RFC2287 202 ntpSnmpMIB MODULE-IDENTITY 203 LAST-UPDATED "200904080000Z" -- April 8, 2009 204 ORGANIZATION "The IETF NTP Working Group (ntpwg)" 205 CONTACT-INFO 206 " WG Email: ntpwg@lists.ntp.isc.org 207 Subscribe: 208 https://lists.ntp.isc.org/mailman/listinfo/ntpwg 210 Heiko Gerstung 211 Meinberg Funkuhren Gmbh & Co. KG 212 Lange Wand 9 213 Bad Pyrmont 31812 214 Germany 216 Phone: +49 5281 9309 25 217 Email: heiko.gerstung@meinberg.de 219 Chris Elliott 220 1516 Kent St. 221 Durham, NC 27707 222 USA 224 Phone: +1-919-308-1216 225 Email: chelliot@pobox.com" 226 DESCRIPTION 227 "The Management Information Base for NTP time entities. 229 Copyright (c) 2009 IETF Trust and the persons identified as the 230 document authors. All rights reserved. 232 This document is subject to BCP 78 and the IETF Trust's Legal 233 Provisions Relating to IETF Documents 234 (http://trustee.ietf.org/license-info) in effect on the date of 235 publication of this document. Please review these documents 236 carefully, as they describe your rights and restrictions with respect 237 to this document. " 239 REVISION "200904080000Z" 240 DESCRIPTION 241 "This revision of the MIB module is published as RFC YYYY." 243 ::= { mib-2 XXXXX } 245 ntpSnmpMIBObjects OBJECT IDENTIFIER ::= { ntpSnmpMIB 1 } 247 -- MIB contains 6 groups 249 ntpEntInfo OBJECT IDENTIFIER ::= { ntpSnmpMIBObjects 1 } 250 ntpEntStatus OBJECT IDENTIFIER ::= { ntpSnmpMIBObjects 2 } 251 ntpAssociation OBJECT IDENTIFIER ::= { ntpSnmpMIBObjects 3 } 252 ntpEntControl OBJECT IDENTIFIER ::= { ntpSnmpMIBObjects 4 } 253 ntpEntNotifObjects OBJECT IDENTIFIER ::= { ntpSnmpMIBObjects 5 } 255 -- 256 -- Textual Conventions 257 -- 259 NtpStratum ::= TEXTUAL-CONVENTION 260 DISPLAY-HINT "d" 261 STATUS current 262 DESCRIPTION 263 "The NTP stratum, with 16 representing no stratum." 264 SYNTAX Unsigned32 (1..16) 266 NtpDateTime ::= TEXTUAL-CONVENTION 267 DISPLAY-HINT "4d:4d:4d.4d" 268 STATUS current 269 DESCRIPTION 270 "NTP date/time on the device, in 128-bit 271 NTP date format. If time is not syncronized this 272 field shall be a zero-length string. 274 This TC is not to be used for objects that are used 275 to set the time of the node querying this object. 276 NTP should be used for this--or at least SNTP." 278 REFERENCE "draft-ietf-ntp-ntpv4-proto, section 6" 279 SYNTAX OCTET STRING (SIZE (0 | 16)) 281 -- 282 -- Section 1: General NTP Entity information objects 283 -- (relatively static information) 284 -- 286 ntpEntSoftwareName OBJECT-TYPE 287 SYNTAX Utf8String 288 MAX-ACCESS read-only 289 STATUS current 290 DESCRIPTION 291 "The product name of the running NTP version, e.g. 'ntpd'" 292 ::= { ntpEntInfo 1 } 294 ntpEntSoftwareVersion OBJECT-TYPE 295 SYNTAX Utf8String 296 MAX-ACCESS read-only 297 STATUS current 298 DESCRIPTION 299 "The software version of the installed NTP implementation 300 as a full version string, e.g. 'ntpd-4.2.0b@1.1433 ...'" 301 ::= { ntpEntInfo 2 } 303 ntpEntSoftwareVersionVal OBJECT-TYPE 304 SYNTAX Unsigned32 305 MAX-ACCESS read-only 306 STATUS current 307 DESCRIPTION 308 "Software version of installed NTP as an unsigned integer 309 value, e.g. if version string is '4.2.0b' this could be translated into 310 4202. This could be useful to find out if version of entity on a 311 is newer or older than version of the entity on b (without too 312 much string parsing trouble)" 313 ::= { ntpEntInfo 3 } 315 ntpEntSoftwareVendor OBJECT-TYPE 316 SYNTAX Utf8String 317 MAX-ACCESS read-only 318 STATUS current 319 DESCRIPTION 320 "The vendor/author of the installed NTP version." 321 ::= { ntpEntInfo 4 } 323 ntpEntSystemType OBJECT-TYPE 324 SYNTAX Utf8String 325 MAX-ACCESS read-only 326 STATUS current 327 DESCRIPTION 328 "General hardware/os platform information, 329 e.g. 'Linux 2.6.12 / x86'" 330 -- freely configurable, default is OS Version / Hardware platform 331 ::= { ntpEntInfo 5 } 333 ntpEntTimeResolution OBJECT-TYPE 334 SYNTAX DisplayString 335 MAX-ACCESS read-only 336 STATUS current 337 DESCRIPTION 338 "A string describing the time resolution of the running NTP 339 implementation, e.g. '100 ns'. This depends on the NTP 340 implementation and the underlying OS. The achievable resolution 341 should be used, so if the OS only supports 10ms and ntpd is 342 capable of 1ns, the 10ms should be advertised." 343 ::= { ntpEntInfo 6 } 345 ntpEntTimeResolutionVal OBJECT-TYPE 346 SYNTAX Unsigned32 347 MAX-ACCESS read-only 348 STATUS current 349 DESCRIPTION 350 "The time resolution in integer format, where the resolution 351 is represented as divisions of a second, e.g. a value of 1000 352 translates to 1.0 ms." 353 ::= { ntpEntInfo 7 } 355 ntpEntTimePrecision OBJECT-TYPE 356 SYNTAX DisplayString 357 MAX-ACCESS read-only 358 STATUS current 359 DESCRIPTION 360 "A string describing the precision with which the NTP entity 361 implementation/OS manages its time base. 362 Examples: '-18' means 2^-18 = 0.000003814697265625 seconds 363 '-5' means 2^-5 = 0.03125 seconds 364 This depends on the NTP implementation and the underlying OS." 365 ::= { ntpEntInfo 8 } 367 ntpEntTimePrecisionVal OBJECT-TYPE 368 SYNTAX Integer32 369 MAX-ACCESS read-only 370 STATUS current 371 DESCRIPTION 372 "The entity's precision in integer format, shows the precision. 373 A value of -5 would mean 2^-5 = 31.25 ms" 375 ::= { ntpEntInfo 9 } 377 ntpEntTimeDistance OBJECT-TYPE 378 SYNTAX DisplayString 379 MAX-ACCESS read-only 380 STATUS current 381 DESCRIPTION 382 "The distance from this NTP entity to the root time reference 383 (stratum 0) source including the unit, e.g. '13.243 ms'" 384 ::= { ntpEntInfo 10 } 386 -- 387 -- Section 2: Current NTP status (dynamic information) 388 -- 390 ntpEntStatusCurrentMode OBJECT-TYPE 391 SYNTAX Utf8String 392 MAX-ACCESS read-only 393 STATUS current 394 DESCRIPTION 395 "The actual mode of NTP as a string. 396 Possible strings are 397 'not running' - NTP is not running 398 'not synchronized' - NTP is not synchronized to any time source (stratum = 16) 399 'none configured' - NTP is not synchronized and does not have a reference configured (stratum = 16) 400 'sync to local' - NTP is distributing time based on own free running local clock (degraded accuracy/reliability) 401 'sync to refclock' - NTP is synchronized to a local hardware refclock (e.g. GPS) 402 'sync to remote server' - NTP is synchronized to a remote NTP server ('upstream' server) 403 'unknown' - The state of NTP is unknown." 404 ::= { ntpEntStatus 1 } 406 ntpEntStatusCurrentModeVal OBJECT-TYPE 407 SYNTAX INTEGER { 408 notRunning(1), 409 notSynchronized(2), 410 noneConfigured(3), 411 syncToLocal(4), 412 syncToRefclock(5), 413 syncToRemoteServer(6), 414 unknown(99) 415 } 416 MAX-ACCESS read-only 417 STATUS current 418 DESCRIPTION 419 "The current mode of the NTP as integer value." 420 -- see ntpEntStatusCurrentMode 421 ::= { ntpEntStatus 2 } 423 ntpEntStatusStratum OBJECT-TYPE 424 SYNTAX NtpStratum 425 MAX-ACCESS read-only 426 STATUS current 427 DESCRIPTION 428 "The NTP entity's own stratum value. Should be stratum of syspeer + 1 (or 16 if no syspeer)" 429 ::= { ntpEntStatus 3 } 431 ntpEntStatusActiveRefSourceId OBJECT-TYPE 432 SYNTAX Unsigned32 ( 0..99999 ) 433 MAX-ACCESS read-only 434 STATUS current 435 DESCRIPTION 436 "The association ID of the current syspeer." 437 ::= { ntpEntStatus 4 } 439 ntpEntStatusActiveRefSourceName OBJECT-TYPE 440 SYNTAX Utf8String 441 MAX-ACCESS read-only 442 STATUS current 443 DESCRIPTION 444 "The hostname/descriptive name of the current reference source 445 selected as syspeer, e.g. 'ntp1.ptb.de' or 'GPS' or 'DCFi' ..." 446 -- Maybe something more detailed like "RefClk(8)"="hardware clock using driver 8" 447 -- would be useful 448 ::= { ntpEntStatus 5 } 450 ntpEntStatusActiveOffset OBJECT-TYPE 451 SYNTAX DisplayString 452 MAX-ACCESS read-only 453 STATUS current 454 DESCRIPTION 455 "The Time offset to the current selected reference time source 456 as a string including unit, e.g. '0.032 ms' or '1.232 s'" 457 ::= { ntpEntStatus 6 } 459 ntpEntStatusNumberOfRefSources OBJECT-TYPE 460 SYNTAX Unsigned32 (0..99) 461 MAX-ACCESS read-only 462 STATUS current 463 DESCRIPTION 464 "The number of reference sources configured for NTP." 465 ::= { ntpEntStatus 7 } 467 ntpEntStatusDispersion OBJECT-TYPE 468 SYNTAX DisplayString 469 MAX-ACCESS read-only 470 STATUS current 471 DESCRIPTION 472 "The root dispersion of the running NTP entity, e.g. '6.927'" 473 ::= { ntpEntStatus 8 } 475 ntpEntStatusEntityUptime OBJECT-TYPE 476 SYNTAX TimeTicks 477 MAX-ACCESS read-only 478 STATUS current 479 DESCRIPTION 480 "The uptime of the NTP entity, i.e. the time since ntpd was (re-)initialized 481 not sysUptime!). The time is represented in hundreds of seconds since 482 Jan 1, 1970 (00:00:00.000) UTC" 483 ::= { ntpEntStatus 9 } 485 ntpEntStatusDateTime OBJECT-TYPE 486 SYNTAX NtpDateTime 487 MAX-ACCESS read-only 488 STATUS current 489 DESCRIPTION 490 "The current NTP date/time on the device, in 128-bit 491 NTP date format. If time is not syncronized this 492 field shall be a zero-length string. 494 This object can be used to timestamp events on this 495 node and allow a management station to coorelate 496 different time objects. For example, a management 497 station could query this object and sysUpTime in 498 the same operation to be able to relate sysUpTime 499 to NTP time. 501 This object is not to be used to set the time of 502 the node querying this object. NTP should be used 503 for this--or at least SNTP." 504 REFERENCE "draft-ietf-ntp-ntpv4-proto, section 6" 505 ::= { ntpEntStatus 10 } 507 ntpEntStatusLeapSecond OBJECT-TYPE 508 SYNTAX NtpDateTime 509 MAX-ACCESS read-only 510 STATUS current 511 DESCRIPTION 512 "Date the next known leap second will occur. If there is 513 no leap second announced then this object should be 0." 514 ::= { ntpEntStatus 11 } 516 ntpEntStatusLeapSecDirection OBJECT-TYPE 517 SYNTAX Integer32 (-1..1) 518 MAX-ACCESS read-only 519 STATUS current 520 DESCRIPTION 521 "Direction of next known leap second. If there is no 522 leap second announced then this object should be 0." 523 ::= { ntpEntStatus 12 } 525 ntpEntStatusInPkts OBJECT-TYPE 526 SYNTAX Counter32 527 UNITS "packets" 528 MAX-ACCESS read-only 529 STATUS current 530 DESCRIPTION 531 "The total number of NTP messages delivered to the 532 NTP entity from the transport service. 533 Discountinuities in the value of this counter can occur 534 upon cold start or reinitialization of the NTP entity, the 535 management system and at other times as indicated by 536 discontinuities in the value of sysUpTime." 538 ::= { ntpEntStatus 13 } 540 ntpEntStatusOutPkts OBJECT-TYPE 541 SYNTAX Counter32 542 UNITS "packets" 543 MAX-ACCESS read-only 544 STATUS current 545 DESCRIPTION 546 "The total number of NTP messages delivered to the 547 transport service by this NTP entity. 548 Discountinuities in the value of this counter can occur 549 upon cold start or reinitialization of the NTP entity, the 550 management system and at other times as indicated by 551 discontinuities in the value of sysUpTime." 552 ::= { ntpEntStatus 14 } 554 ntpEntStatusBadVersion OBJECT-TYPE 555 SYNTAX Counter32 556 UNITS "packets" 557 MAX-ACCESS read-only 558 STATUS current 559 DESCRIPTION 560 "The total number of NTP messages which were delivered 561 to this NTP entity and were for an unsupported NTP 562 version. 563 Discountinuities in the value of this counter can occur 564 upon cold start or reinitialization of the NTP entity, the 565 management system and at other times as indicated by 566 discontinuities in the value of sysUpTime." 568 ::= { ntpEntStatus 15 } 570 ntpEntStatusProtocolError OBJECT-TYPE 571 SYNTAX Counter32 572 UNITS "packets" 573 MAX-ACCESS read-only 574 STATUS current 575 DESCRIPTION 576 "The total number of NTP messages which were delivered 577 to this NTP entity and this entity was not able to 578 process due to an NTP protocol error. 579 Discountinuities in the value of this counter can occur 580 upon cold start or reinitialization of the NTP entity, the 581 management system and at other times as indicated by 582 discontinuities in the value of sysUpTime." 583 ::= { ntpEntStatus 16 } 585 ntpEntStatusNotifications OBJECT-TYPE 586 SYNTAX Counter32 587 UNITS "notifications" 588 MAX-ACCESS read-only 589 STATUS current 590 DESCRIPTION 591 "The total number of SNMP notifications which this NTP 592 entity has generated. 593 Discountinuities in the value of this counter can occur 594 upon cold start or reinitialization of the NTP entity, the 595 management system and at other times as indicated by 596 discontinuities in the value of sysUpTime." 597 ::= { ntpEntStatus 17 } 599 ntpEntStatPktModeTable OBJECT-TYPE 600 SYNTAX SEQUENCE OF NtpEntStatPktModeEntry 601 MAX-ACCESS not-accessible 602 STATUS current 603 DESCRIPTION 604 "The number of packets sent and received by packet mode. One entry per packet mode." 605 ::= { ntpEntStatus 18 } 607 ntpEntStatPktModeEntry OBJECT-TYPE 608 SYNTAX NtpEntStatPktModeEntry 609 MAX-ACCESS not-accessible 610 STATUS current 611 DESCRIPTION 612 "A statistical record of the number of packets sent and received for each packet mode." 613 INDEX { ntpEntStatPktMode } 614 ::= { ntpEntStatPktModeTable 1 } 616 NtpEntStatPktModeEntry ::= SEQUENCE { 617 ntpEntStatPktMode INTEGER, 618 ntpEntStatPktSent Counter32, 619 ntpEntStatPktReceived Counter32 620 } 622 ntpEntStatPktMode OBJECT-TYPE 623 SYNTAX INTEGER { 624 symetricactive(1), 625 symetricpassive(2), 626 client(3), 627 server(4), 628 broadcastserver(5), 629 broadcastclient(6) 630 } 631 MAX-ACCESS not-accessible 632 STATUS current 633 DESCRIPTION 634 "The NTP packet mode." 635 ::= { ntpEntStatPktModeEntry 1 } 637 ntpEntStatPktSent OBJECT-TYPE 638 SYNTAX Counter32 639 UNITS "packets" 640 MAX-ACCESS read-only 641 STATUS current 642 DESCRIPTION 643 "The number of NTP packets sent with this packet mode. 644 Discountinuities in the value of this counter can occur 645 upon cold start or reinitialization of the NTP entity, the 646 management system and at other times as indicated by 647 discontinuities in the value of sysUpTime." 649 ::= { ntpEntStatPktModeEntry 2 } 651 ntpEntStatPktReceived OBJECT-TYPE 652 SYNTAX Counter32 653 UNITS "packets" 654 MAX-ACCESS read-only 655 STATUS current 656 DESCRIPTION 657 "The number of NTP packets received with this packet mode. 658 Discountinuities in the value of this counter can occur 659 upon cold start or reinitialization of the NTP entity, the 660 management system and at other times as indicated by 661 discontinuities in the value of sysUpTime." 663 ::= { ntpEntStatPktModeEntry 3 } 665 -- 666 -- Section 3: The status of all currently mobilized associations 667 -- 669 ntpAssociationTable OBJECT-TYPE 670 SYNTAX SEQUENCE OF NtpAssociationEntry 671 MAX-ACCESS not-accessible 672 STATUS current 673 DESCRIPTION 674 "The table of currently mobilized associations." 675 ::= { ntpAssociation 1 } 677 ntpAssociationEntry OBJECT-TYPE 678 SYNTAX NtpAssociationEntry 679 MAX-ACCESS not-accessible 680 STATUS current 681 DESCRIPTION 682 "The table entry of currently mobilized associations." 683 INDEX { ntpAssocId } 684 ::= { ntpAssociationTable 1 } 686 NtpAssociationEntry ::= SEQUENCE { 687 ntpAssocId Unsigned32, 688 ntpAssocName Utf8String, 689 ntpAssocRefId DisplayString, 690 ntpAssocAddressType InetAddressType, 691 ntpAssocAddress InetAddress, 692 ntpAssocOffset DisplayString, 693 ntpAssocStratum NtpStratum, 694 ntpAssocStatusJitter DisplayString, 695 ntpAssocStatusDelay DisplayString, 696 ntpAssocStatusDispersion DisplayString 697 } 699 ntpAssocId OBJECT-TYPE 700 SYNTAX Unsigned32 ( 1..99999 ) 701 MAX-ACCESS not-accessible 702 STATUS current 703 DESCRIPTION 704 "The association ID. This is an internal, unique ID." 705 ::= { ntpAssociationEntry 1 } 707 ntpAssocName OBJECT-TYPE 708 SYNTAX Utf8String 709 MAX-ACCESS read-only 710 STATUS current 711 DESCRIPTION 712 "The hostname or other descriptive name for the association." 714 ::= { ntpAssociationEntry 2 } 716 ntpAssocRefId OBJECT-TYPE 717 SYNTAX DisplayString 718 MAX-ACCESS read-only 719 STATUS current 720 DESCRIPTION 721 "The refclock driver ID, if available." 722 -- a refclock driver ID like "127.127.1.0" for non 723 -- uni/multi/broadcast associations 724 ::= { ntpAssociationEntry 3 } 726 ntpAssocAddressType OBJECT-TYPE 727 SYNTAX InetAddressType { ipv4(1), ipv6(2), ipv4z(3), ipv6z(4) } 728 MAX-ACCESS read-only 729 STATUS current 730 DESCRIPTION 731 "The type of address of the association. Can be either IPv4 or IPv6 732 (both with or without zone index) and contains the type of address 733 for unicast, multicast and broadcast associations." 734 ::= { ntpAssociationEntry 4 } 736 ntpAssocAddress OBJECT-TYPE 737 SYNTAX InetAddress (SIZE (4|8|16|20)) 738 MAX-ACCESS read-only 739 STATUS current 740 DESCRIPTION 741 "The IP address (IPv4 or IPv6, with or without zone index) of the association. The type and size 742 depends on the ntpAssocAddressType object. Represents the IP address of a uni/multi/broadcast association." 743 ::= { ntpAssociationEntry 5 } 745 ntpAssocOffset OBJECT-TYPE 746 SYNTAX DisplayString 747 MAX-ACCESS read-only 748 STATUS current 749 DESCRIPTION 750 "The time offset to the association as a string." 751 -- including unit, e.g. "0.032 ms" or "1.232 s" 752 ::= { ntpAssociationEntry 6 } 754 ntpAssocStratum OBJECT-TYPE 755 SYNTAX NtpStratum 756 MAX-ACCESS read-only 757 STATUS current 758 DESCRIPTION 759 "The association stratum value." 760 ::= { ntpAssociationEntry 7 } 762 ntpAssocStatusJitter OBJECT-TYPE 763 SYNTAX DisplayString 764 MAX-ACCESS read-only 765 STATUS current 766 DESCRIPTION 767 "The jitter in miliseconds as a string." 768 ::= { ntpAssociationEntry 8 } 770 ntpAssocStatusDelay OBJECT-TYPE 771 SYNTAX DisplayString 772 MAX-ACCESS read-only 773 STATUS current 774 DESCRIPTION 775 "The network delay in miliseconds as a string." 776 ::= { ntpAssociationEntry 9 } 778 ntpAssocStatusDispersion OBJECT-TYPE 779 SYNTAX DisplayString 780 MAX-ACCESS read-only 781 STATUS current 782 DESCRIPTION 783 "The root dispersion of the association." 784 -- e.g. "6.927" 785 ::= { ntpAssociationEntry 10 } 787 ntpAssociationStatisticsTable OBJECT-TYPE 788 SYNTAX SEQUENCE OF NtpAssociationStatisticsEntry 789 MAX-ACCESS not-accessible 790 STATUS current 791 DESCRIPTION 792 "The table of statistics for current associations." 793 ::= { ntpAssociation 2 } 795 ntpAssociationStatisticsEntry OBJECT-TYPE 796 SYNTAX NtpAssociationStatisticsEntry 797 MAX-ACCESS not-accessible 798 STATUS current 799 DESCRIPTION 800 "The table entry of statistics for current associations." 801 INDEX { ntpAssocId } 802 ::= { ntpAssociationStatisticsTable 1 } 804 NtpAssociationStatisticsEntry ::= SEQUENCE { 805 ntpAssocStatInPkts Counter32, 806 ntpAssocStatOutPkts Counter32, 807 ntpAssocStatProtocolError Counter32 808 } 809 ntpAssocStatInPkts OBJECT-TYPE 810 SYNTAX Counter32 811 UNITS "packets" 812 MAX-ACCESS read-only 813 STATUS current 814 DESCRIPTION 815 "The total number of NTP messages delivered to the 816 NTP entity from this association. 817 Discountinuities in the value of this counter can occur 818 upon cold start or reinitialization of the NTP entity, the 819 management system and at other times as indicated by 820 discontinuities in the value of sysUpTime." 822 ::= { ntpAssociationStatisticsEntry 1 } 824 ntpAssocStatOutPkts OBJECT-TYPE 825 SYNTAX Counter32 826 UNITS "packets" 827 MAX-ACCESS read-only 828 STATUS current 829 DESCRIPTION 830 "The total number of NTP messages delivered to the 831 transport service by this NTP entity for this 832 association. 833 Discountinuities in the value of this counter can occur 834 upon cold start or reinitialization of the NTP entity, the 835 management system and at other times as indicated by 836 discontinuities in the value of sysUpTime." 838 ::= { ntpAssociationStatisticsEntry 2 } 840 ntpAssocStatProtocolError OBJECT-TYPE 841 SYNTAX Counter32 842 UNITS "packets" 843 MAX-ACCESS read-only 844 STATUS current 845 DESCRIPTION 846 "The total number of NTP messages which were delivered 847 to this NTP entity from this association and this entity 848 was not able to process due to an NTP protocol error. 849 Discountinuities in the value of this counter can occur 850 upon cold start or reinitialization of the NTP entity, the 851 management system and at other times as indicated by 852 discontinuities in the value of sysUpTime." 854 ::= { ntpAssociationStatisticsEntry 3 } 856 -- 857 -- Section 4: Control objects 858 -- 860 ntpEntHeartbeatInterval OBJECT-TYPE 861 SYNTAX Unsigned32 862 UNITS "seconds" 863 MAX-ACCESS read-write 864 STATUS current 865 DESCRIPTION 866 "The interval at which the ntpEntNotifHeartbeat notification 867 should be sent, in seconds. If set to 0 and the 868 entNotifHeartbeat bit in ntpEntNotifBits is 1 then 869 ntpEntNotifHeartbeat is sent once. 870 This value is stored persistently and will be restored to its 871 last set value upon cold start or restart." 872 DEFVAL { 60 } 873 ::= { ntpEntControl 1 } 875 ntpEntNotifBits OBJECT-TYPE 876 SYNTAX BITS { 877 notUsed(0), -- Used to sync up bit and notification 878 -- indices 879 entNotifModeChange(1), 880 entNotifStratumChange(2), 881 entNotifSyspeerChanged(3), 882 entNotifAddAssociation(4), 883 entNotifRemoveAssociation(5), 884 entNotifConfigChanged(6), 885 entNotifLeapSecondAnnounced(7), 886 entNotifHeartbeat(8) 887 } 888 MAX-ACCESS read-write 889 STATUS current 890 DESCRIPTION 891 "A bit for each notification. A 1 for a particular bit enables 892 that particular notification, a 0 disables it. 893 This value is stored persistently and will be restored to its 894 last set value upon cold start or restart." 895 ::= { ntpEntControl 2 } 897 -- 898 -- Section 5: Notification objects 899 -- 901 ntpEntNotifMessage OBJECT-TYPE 902 SYNTAX Utf8String 903 MAX-ACCESS accessible-for-notify 904 STATUS current 905 DESCRIPTION 906 "Used as a payload object for all notifications. Holds a clear 907 text event message." 908 DEFVAL { "no event" } 909 ::= { ntpEntNotifObjects 1 } 911 -- 912 -- SNMP notification definitions 913 -- 915 ntpEntNotifications OBJECT IDENTIFIER ::= { ntpSnmpMIB 0 } 917 ntpEntNotifModeChange NOTIFICATION-TYPE 918 OBJECTS { ntpEntStatusCurrentModeVal } 919 STATUS current 920 DESCRIPTION 921 "The notification to be sent when the NTP entity changes mode, 922 including starting and stopping (if possible)" 923 ::= { ntpEntNotifications 1 } 925 ntpEntNotifStratumChange NOTIFICATION-TYPE 926 OBJECTS { ntpEntStatusDateTime, ntpEntStatusStratum, 927 ntpEntNotifMessage } 928 STATUS current 929 DESCRIPTION 930 "The notification to be sent when stratum level of NTP changes." 931 ::= { ntpEntNotifications 2 } 933 ntpEntNotifSyspeerChanged NOTIFICATION-TYPE 934 OBJECTS { ntpEntStatusDateTime, ntpEntStatusActiveRefSourceId, 935 ntpEntNotifMessage } 936 STATUS current 937 DESCRIPTION 938 "The notification to be sent when a (new) syspeer has been 939 selected." 940 ::= { ntpEntNotifications 3 } 942 ntpEntNotifAddAssociation NOTIFICATION-TYPE 943 OBJECTS { ntpEntStatusDateTime, ntpAssocName, ntpEntNotifMessage } 944 STATUS current 945 DESCRIPTION 946 "The notification to be sent when a new association is 947 mobilized." 948 ::= { ntpEntNotifications 4 } 950 ntpEntNotifRemoveAssociation NOTIFICATION-TYPE 951 OBJECTS { ntpEntStatusDateTime, ntpAssocName, ntpEntNotifMessage } 952 STATUS current 953 DESCRIPTION 954 "The notification to be sent when an association is 955 demobilized." 956 ::= { ntpEntNotifications 5 } 958 ntpEntNotifConfigChanged NOTIFICATION-TYPE 959 OBJECTS { ntpEntStatusDateTime, ntpEntNotifMessage } 960 STATUS current 961 DESCRIPTION 962 "The notification to be sent when the NTP configuration has 963 changed, e.g. when the system connected to the internet and was 964 assigned a new IP address by the ISPs DHCP server" 965 ::= { ntpEntNotifications 6 } 967 ntpEntNotifLeapSecondAnnounced NOTIFICATION-TYPE 968 OBJECTS { ntpEntStatusDateTime, ntpEntNotifMessage } 969 STATUS current 970 DESCRIPTION 971 "The notification to be sent when a leap second has been 972 announced." 973 ::= { ntpEntNotifications 7 } 975 ntpEntNotifHeartbeat NOTIFICATION-TYPE 976 OBJECTS { ntpEntStatusDateTime, ntpEntStatusCurrentModeVal, 977 ntpEntHeartbeatInterval, ntpEntNotifMessage } 978 STATUS current 979 DESCRIPTION 980 "The notification to be sent periodically (as defined by 981 ntpEntHeartbeatInterval) to indicate that the NTP entity is 982 still alive." 983 ::= { ntpEntNotifications 8 } 985 -- 986 -- Conformance/Compliance statements 987 -- 989 ntpEntConformance OBJECT IDENTIFIER ::= { ntpSnmpMIB 2 } 991 ntpEntCompliances OBJECT IDENTIFIER ::= { ntpEntConformance 1 } 992 ntpEntGroups OBJECT IDENTIFIER ::= { ntpEntConformance 2 } 994 ntpEntNTPCompliance MODULE-COMPLIANCE 995 STATUS current 996 DESCRIPTION 997 "The compliance statement for SNMP entities which use NTP and 998 implement the NTP MIB" 999 MODULE -- this module 1000 MANDATORY-GROUPS { 1001 ntpEntObjectsGroup1 1002 } 1003 ::= { ntpEntCompliances 1 } 1005 ntpEntSNTPCompliance MODULE-COMPLIANCE 1006 STATUS current 1007 DESCRIPTION 1008 "The compliance statement for SNMP entities which use SNTP and 1009 implement the NTP MIB" 1010 MODULE -- this module 1011 MANDATORY-GROUPS { 1012 ntpEntObjectsGroup1 1013 } 1014 GROUP ntpEntObjectsGroup2 1015 DESCRIPTION 1016 "optional object group" 1017 GROUP ntpEntNotifGroup 1018 DESCRIPTION 1019 "optional notifications for this MIB" 1020 ::= { ntpEntCompliances 2 } 1022 ntpEntObjectsGroup1 OBJECT-GROUP 1023 OBJECTS { 1024 ntpEntSoftwareName, 1025 ntpEntSoftwareVersion, 1026 ntpEntSoftwareVersionVal, 1027 ntpEntSoftwareVendor, 1028 ntpEntSystemType, 1029 ntpEntStatusEntityUptime, 1030 ntpEntStatusDateTime, 1031 ntpAssocName, 1032 ntpAssocRefId, 1033 ntpAssocAddressType, 1034 ntpAssocAddress 1035 } 1036 STATUS current 1037 DESCRIPTION 1038 "A collection of objects for the NTP MIB." 1039 ::= { ntpEntGroups 1 } 1041 ntpEntObjectsGroup2 OBJECT-GROUP 1042 OBJECTS { 1043 ntpEntTimeResolution, 1044 ntpEntTimeResolutionVal, 1045 ntpEntTimePrecision, 1046 ntpEntTimePrecisionVal, 1047 ntpEntTimeDistance, 1048 ntpEntStatusCurrentMode, 1049 ntpEntStatusCurrentModeVal, 1050 ntpEntStatusStratum, 1051 ntpEntStatusActiveRefSourceId, 1052 ntpEntStatusActiveRefSourceName, 1053 ntpEntStatusActiveOffset, 1054 ntpEntStatusNumberOfRefSources, 1055 ntpEntStatusDispersion, 1056 ntpEntStatusLeapSecond, 1057 ntpEntStatusLeapSecDirection, 1058 ntpEntStatusInPkts, 1059 ntpEntStatusOutPkts, 1060 ntpEntStatusBadVersion, 1061 ntpEntStatusProtocolError, 1062 ntpEntStatusNotifications, 1063 ntpEntStatPktSent, 1064 ntpEntStatPktReceived, 1065 ntpAssocOffset, 1066 ntpAssocStratum, 1067 ntpAssocStatusJitter, 1068 ntpAssocStatusDelay, 1069 ntpAssocStatusDispersion, 1070 ntpAssocStatInPkts, 1071 ntpAssocStatOutPkts, 1072 ntpAssocStatProtocolError, 1073 ntpEntHeartbeatInterval, 1074 ntpEntNotifBits, 1075 ntpEntNotifMessage 1076 } 1077 STATUS current 1078 DESCRIPTION 1079 "A collection of objects for the NTP MIB." 1080 ::= { ntpEntGroups 2 } 1082 ntpEntNotifGroup NOTIFICATION-GROUP 1083 NOTIFICATIONS { 1084 ntpEntNotifModeChange, 1085 ntpEntNotifStratumChange, 1086 ntpEntNotifSyspeerChanged, 1087 ntpEntNotifAddAssociation, 1088 ntpEntNotifRemoveAssociation, 1089 ntpEntNotifConfigChanged, 1090 ntpEntNotifLeapSecondAnnounced, 1091 ntpEntNotifHeartbeat 1092 } 1093 STATUS current 1094 DESCRIPTION 1095 "A collection of notifications for the NTP MIB" 1096 ::= { ntpEntGroups 3 } 1098 END 1100 5. IANA Considerations 1102 The MIB module in this document uses the following IANA-assigned 1103 OBJECT IDENTIFIER values recorded in the SMI Numbers registry: 1105 Descriptor OBJECT IDENTIFIER value 1106 ---------- ----------------------- 1108 ntpSnmp { mib-2 XXX } 1110 RFC Ed. : the IANA is requested to assign a value for "XXX" under the 1111 'mib-2' subtree and to record the assignment in the SMI Numbers 1112 registry. When the assignment has been made, the RFC Editor is asked 1113 to replace "XXX" (here and in the MIB module) with the assigned value 1114 and to remove this note. 1116 6. Security Considerations 1118 There are currently two management objects defined in this MIB module 1119 with a MAX-ACCESS clause of read-write and/or read-create. Such 1120 objects may be considered sensitive or vulnerable in some network 1121 environments. The support for SET operations in a non-secure 1122 environment without proper protection can have a negative effect on 1123 network operations. These are the objects and their sensitivity/ 1124 vulnerability: 1126 ntpEntHeartbeatInterval controls the interval of heartbeat 1127 notifications. If set to 1 this will cause the NTP entity to send 1128 one notification each second. This is the maximum rate (1/s) that 1129 can be generated automatically. If it is set to 0, then one single 1130 hearbeat notification will be created and no further automatically 1131 generated notification is sent. This functionality can be used to 1132 create notifications at a higher rate (as high as the object can be 1133 written). 1135 ntpEntNotifBits enables/disables notifications. Could be used to 1136 switch off notifications in order to delay or eliminate the 1137 notification for critical and important events. 1139 Some of the readable objects in this MIB module (i.e., objects with a 1140 MAX-ACCESS other than not-accessible) may be considered sensitive or 1141 vulnerable in some network environments. It is thus important to 1142 control even GET and/or NOTIFY access to these objects and possibly 1143 to even encrypt the values of these objects when sending them over 1144 the network via SNMP. These are the tables and objects and their 1145 sensitivity/vulnerability: 1147 ntpEntSoftwareName, ntpEntSoftwareVersion, ntpEntSoftwareVersionVal, 1148 ntpEntSoftwareVendor and ntpEntSystemType all can be used to identify 1149 software and its version as well as the operating system and hardware 1150 platform. This might help a potential attacker to find security 1151 problems and therefore can be used in the preparation of an attack. 1153 SNMP versions prior to SNMPv3 did not include adequate security. 1154 Even if the network itself is secure (for example by using IPsec), 1155 even then, there is no control as to who on the secure network is 1156 allowed to access and GET/SET (read/change/create/delete) the objects 1157 in this MIB module. It is RECOMMENDED that implementers consider the 1158 security features as provided by the SNMPv3 framework (see RFC3410 1159 [RFC3410], section 8), including full support for the SNMPv3 1160 cryptographic mechanisms (for authentication and privacy). Further, 1161 deployment of SNMP versions prior to SNMPv3 is NOT RECOMMENDED. 1162 Instead, it is RECOMMENDED to deploy SNMPv3 and to enable 1163 cryptographic security. It is then a customer/operator 1164 responsibility to ensure that the SNMP entity giving access to an 1165 instance of this MIB module is properly configured to give access to 1166 the objects only to those principals (users) that have legitimate 1167 rights to indeed GET or SET (change/create/delete) them. 1169 7. References 1171 7.1. Normative References 1173 [I-D.ietf-ntp-ntpv4-proto] 1174 Burbank, J., "Network Time Protocol Version 4 Protocol And 1175 Algorithms Specification", draft-ietf-ntp-ntpv4-proto-11 1176 (work in progress), September 2008. 1178 [RFC2578] McCloghrie, K., Ed., Perkins, D., Ed., and J. 1179 Schoenwaelder, Ed., "Structure of Management Information 1180 Version 2 (SMIv2)", STD 58, RFC 2578, April 1999. 1182 [RFC2579] McCloghrie, K., Ed., Perkins, D., Ed., and J. 1183 Schoenwaelder, Ed., "Textual Conventions for SMIv2", 1184 STD 58, RFC 2579, April 1999. 1186 [RFC2580] McCloghrie, K., Perkins, D., and J. Schoenwaelder, 1187 "Conformance Statements for SMIv2", STD 58, RFC 2580, 1188 April 1999. 1190 [RFC4001] Daniele, M., Ed., Haberman, B., Ed., Routhier, S., Ed., 1191 and J. Schoenwaelder, Ed., "Textual Conventions for 1192 Internet Network Addresses", STD 58, RFC 4001, April 1999. 1194 7.2. Informative References 1196 [RFC3410] Case, J., Mundy, R., Partain, D., and B. Stewart, 1197 "Introduction and Applicability Statements for Internet- 1198 Standard Management Framework", RFC 3410, December 2002. 1200 Authors' Addresses 1202 Heiko Gerstung 1203 Meinberg Funkuhren Gmbh & Co. KG 1204 Lange Wand 9 1205 Bad Pyrmont 31812 1206 Germany 1208 Phone: +49 5281 9309 25 1209 Email: heiko.gerstung@meinberg.de 1211 Chris Elliott 1212 1516 Kent St. 1213 Durham, NC 27707 1214 USA 1216 Phone: +1-919-308-1216 1217 Email: chelliot@pobox.com