System integration and test monitoring of immersive video networks

A computing device determines a schedule for monitoring an immersive video-telepresence (IMV-TP) network, and receives, based on the schedule, immersive video (IMV) information directly from one or more of devices, software, or systems associated with the IMV-TP network. The computing device aggregates the received IMV information, generates a report based on the aggregated IMV information, and provides the generated report to one or more users associated with the IMV-TP network.

BACKGROUND

Immersive video-telepresence (IMV-TP) is a real-time application that shares some characteristics with Internet protocol (IP) telephony and IP video conferencing, but with more demanding bandwidth and Service Level Agreement (SLA) requirements. IMV-TP provides high definition (HD) video conferencing between customers (e.g., enterprises and companies utilizing a private IP network). Quality of service (QoS) is achieved in IMV-TP with appropriate traffic marking, classification, and conditioning (e.g., queuing, shaping, policing, etc.). IMV-TP traffic flows require between four megabits (Mb) and twenty-five Mb per customer endpoint, depending on configuration. For IMV-TP network-bridged calls, each call will combine in the IMV-TP network for three parties at a maximum bandwidth (e.g., up 3×25 Mb=75 Mb) of traffic.

An IMV-TP network utilizes session initiation protocol (SIP) over transmission control protocol (TCP) for media signaling. Codecs (e.g., for customer premise equipment (CPE) device and network device interactions) are provided in the IMV-TP network for voice, video, and data collaboration (e.g., PowerPoint presentation sharing). MPEG 4 video and G.711 and/or G.729 voice Codecs provide a fully immersive experience through full motion HD video and uncompressed voice.

The IMV-TP network employs several different technologies, protocols, servers, software, and/or devices. Monitoring the functionality of these different technologies, protocols, servers, software, and/or devices is a difficult task. There are several monitoring systems and software products available for monitoring some of the components of the IMV-TP network. However, such monitoring systems and software products do not completely monitor the entire IMV-TP network, and require expensive third party licenses and equipment.

DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS

Systems and/or methods described herein may provide a system integration and testing (SIT) monitoring tool that monitors an entire IMV-TP network. The SIT monitoring tool may monitor, record, and report activities associated with the IMV-TP network (e.g., the different technologies, protocols, servers, software, and/or devices of the IMV-TP network). The SIT monitoring tool may provide an integrity view of the IMV-TP network, and may report custom indicators that allow network administrators to pro-actively address any problems in the IMV-TP network. The SIT monitoring tool may also provide network management capability to organizations supporting the IMV-TP network.

The term “component,” as used herein, is intended to be broadly construed to include hardware (e.g., a processor, a microprocessor, an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), a chip, a memory device (e.g., a read only memory (ROM), a random access memory (RAM), etc.), etc.) or a combination of hardware and software (e.g., a processor, microprocessor, ASIC, etc. executing software contained in a memory device).

The term “traffic,” as used herein, is intended to be broadly construed to include one or more frames, datagrams, packets, or cells; one or more fragments of a frame, one or more fragments of a datagram, one or more fragments of a packet, or one or more fragments of a cell; or another type, arrangement, or packaging of data.

FIG. 1is a diagram of an example network100in which systems and/or methods described herein may be implemented. As illustrated, network100may include CPE devices110associated with three customers (e.g., “Customer A,” “Customer B,” and “Customer C”), a private IP network120, an IMV-TP network130, and a computing device140(e.g., that includes a SIT monitoring tool145). Components of network100may interconnect via wired and/or wireless connections or links. Multiple CPE devices110, one private IP network120, one IMV-TP network130, one computing device140, and one SIT monitoring tool145have been illustrated inFIG. 1for simplicity. In practice, there may be more CPE devices110, private IP networks120, IMV-TP networks130, computing devices140, and/or SIT monitoring tools145. Also, in some instances, one or more of the components of network100may perform one or more functions described as being performed by another one or more of the components of network100.

Each of CPE devices110may include any equipment provided at the premises of a customer that may enable the customer to implement IMV-TP (e.g., to provide HD video conferencing with other customers). For example, CPE devices110may include televisions, digital video recorders (DVRs), set-top boxes (STBs), radiotelephones, personal communications system (PCS) terminals (e.g., that may combine a cellular radiotelephone with data processing and data communications capabilities), personal digital assistants (PDAs) (e.g., that can include a radiotelephone, a pager, Internet/intranet access, etc.), wireless devices, smart phones, laptop computers, global positioning system (GPS) devices, content recording devices (e.g., cameras, video cameras, etc.), personal computers, tablet computers, speakers, microphones, projectors, etc. As further shown inFIG. 1, one or more CPE devices110may be associated with a first location (e.g., “Customer A”), with a second location (e.g., “Customer B”), and/or a third location (e.g., “Customer C”).

Private IP network120may include a local area network (LAN), a wide area network (WAN), a metropolitan area network (MAN), a telephone network, such as the Public Switched Telephone Network (PSTN), an intranet, the Internet, an optical fiber (or fiber optic)-based network, a SIP-based network, or a combination of networks. In one example implementation, private IP network120may include an IP-based network that securely connects CPE device(s)110provided at one location with CPE device(s)110provided at other locations.

IMV-TP network130may include a network of different technologies, protocols, servers, software, and/or devices that provide HD video conferencing between customers (e.g., between CPE devices110provided at different locations). QoS may be achieved in IMV-TP network130with appropriate traffic marking, classification, and conditioning (e.g., queuing, shaping, policing, etc.). IMV-TP network130may utilize SIP over TCP for media signaling. Codecs (e.g., for CPE device110and network device interactions) may be provided in IMV-TP network130for voice, video, and data collaboration (e.g., PowerPoint presentation sharing). MPEG 4 video and G.711 and/or G.729 voice Codecs may provide a fully immersive experience through full motion HD video and uncompressed voice.

IMV-TP network130may support point-to-point (P2P) and multi-point (MP) calls with CPE devices110located at customer locations (e.g., in customer video conferencing rooms). IMV-TP network130may permit meeting participants to focus on their meeting, rather than on technology, by integrating cameras, microphones, speakers, projectors, and other technology into the video conferencing room. IMV-TP network130may provide data collaboration by transmitting data (e.g., a presentation, a document, etc.) along with audio and video to CPE devices110. The received data may be displayed via a multi-screen video presentation integrated into a conference room. This may permit receiving participants to view the material without looking away from a presenter of the material. Further details of IMV-TP network130are provided below in connection with, for example,FIG. 3.

SIT monitoring tool145may include software that, when executed by hardware components of computing device140, enables computing device140to utilize IMV information150to generate monitored/recorded information160and/or reports/notifications information170. Monitored/recorded information160may include information, such as scripts associated with IMV-TP network130; custom key indicator (CKI) information associated with routers and/or switches provided in IMV-TP network130; CKI information associated with servers provided in IMV-TP network130; backup/storage information associated with IMV-TP network130; IOS severity log information associated with IMV-TP network130; server severity log information associated with IMV-TP network130; etc. Reports/notifications information170may include one or more reports, notifications, alarms, etc. generated based on monitored/recorded information160.

In one example implementation, computing device140(e.g., via SIT monitoring tool145) may schedule monitoring of IMV-TP network130, and may receive, based on the schedule, IMV information150directly from device(s), software, system(s), etc. associated with IMV-TP network130. Computing device140(e.g., via SIT monitoring tool145) may aggregate the received IMV information150, may generate one or more reports170based on the aggregated IMV information150, and may provide the generated one or more reports170to user(s) associated with IMV-TP network130. Computing device140(e.g., via SIT monitoring tool145) may generate one or more notifications170based on the generated report(s)170, and may provide the generated notification(s)170to user(s) associated with IMV-TP network130.

AlthoughFIG. 1shows example components of network100, in other implementations, network100may contain fewer components, different components, differently arranged components, or additional components than depicted inFIG. 1.

FIG. 2is a diagram of example components of a device200that may correspond to one of the devices (e.g., CPE device110or computing device140) of network100. In one example implementation, device200may correspond to one or more devices of IMV-TP network130depicted inFIG. 3. As illustrated, device200may include a bus210, a processing unit220, a memory230, an input device240, an output device250, and a communication interface260.

Bus210may permit communication among the components of device200. Processing unit220may include one or more processors or microprocessors that interpret and execute instructions. In other implementations, processing unit220may be implemented as or include one or more ASICs, FPGAs, or the like.

Memory230may include a RAM or another type of dynamic storage device that stores information and instructions for execution by processing unit220, a ROM or another type of static storage device that stores static information and instructions for the processing unit220, and/or some other type of magnetic or optical recording medium and its corresponding drive for storing information and/or instructions.

Input device240may include a device that permits an operator to input information to device200, such as a keyboard, a keypad, a mouse, a pen, a microphone, one or more biometric mechanisms, and the like. Output device250may include a device that outputs information to the operator, such as a display, a speaker, etc.

Communication interface260may include any transceiver-like mechanism that enables device200to communicate with other devices and/or systems. For example, communication interface360may include mechanisms for communicating with other devices, such as other devices of network100.

AlthoughFIG. 2shows example components of device200, in other implementations, device200may include fewer components, different components, differently arranged components, or additional components than depicted inFIG. 2. Alternatively, or additionally, one or more components of device200may perform one or more other tasks described as being performed by one or more other components of device200.

FIG. 3is a diagram of example components of IMV-TP network130. As shown, IMV-TP network130may include provider edge (PE) network devices300, router/session border control (SBC) devices305, switches310, a unified communications manager (UCM)315, a telepresence scheduling (TS) manager320, a pooled telepresence multipoint switch (TMS)325, an overflow (O/F) TMS330, a keyboard/video/mouse (KVM) device335, a Windows utility server (WUS)340, a UNIX utility server (UUS)345, an immersive video controller (IVC)350, and a unified video controller (UVC)355. Components of IMV-TP network130may interconnect via wired and/or wireless connections or links. Three PE network devices300, two router/SBC devices305, two switches310, one UCM315, one TS manager320, one pooled TMS325, one overflow TMS330, one KVM device335, one WUS340, one UUS345, one IVC350, and one UVC355have been illustrated inFIG. 1for simplicity. In practice, there may be more PE network devices300, router/SBC devices305, switches310, UCMs315, TS managers320, pooled TMSs325, overflow TMSs330, KVM devices335, WUSs340, UUSs345, IVCs350, and/or UVCs355. Also, in some instances, one or more of the components of IVM-TP network130may perform one or more functions described as being performed by another one or more of the components of IVM-TP network130.

Each of PE network devices300may include a traffic transfer device, such as a gateway, a router, a switch, a firewall, a network interface card (NIC), a hub, a bridge, a proxy server, an optical add/drop multiplexer (OADM), or some other type of device that processes and/or transfers traffic. In one example, each of PE network devices300may include a device that is capable interconnecting CPE devices110with private IP network120and/or IMV-TP network130.

Each of router/SBC devices305may include a traffic transfer device, such as a router, that provides SBC functionality for IMV-TP network130. Router/SBC device305may enable signaling and audio/video flow between customers without the need for the customer to have SIP-aware devices. Router/SBC device305may provide call admission control (CAC) that enables IMV-TP network130to keep track of how many simultaneous IMV sessions can be handled by a customer at a particular time, and to reject calls over a particular limit (e.g., to preserve the end user experience). Router/SBC device305may provide topology hiding that enables IMV-TP network130to hide IP addresses of call control and media elements from customers, which may reduce the possibility of denial of service (DoS) attacks on IMV-TP network130. Router/SBC device305may provide call rate limiting that prevents call control elements of IMV-TP network130from being flooded with calls over a prescribed limit that could potentially cause adverse effects to IMV-TP network130. Router/SBC device305may provide SIP header filtering to forward a list of known SIP headers and to protect call control elements of IMV-TP network130from malformed SIP messages that could potentially affect IMV-TP network130.

Each of switches310may include a traffic transfer device, such as a switch, that enables traffic to be switched between one or more of UCM315, TS manager320, pooled TMS325, overflow TMS330, KVM device335, WUS340, UUS345, IVC350, and/or UVC355. In one example, switch310may include a ten gigabit (Gb) Ethernet interface with a corresponding router/SBC device305.

UCM315may include one or more server devices, or other types of computation or communication devices, that gather, process, search, and/or provide information in a manner described herein. For example, UCM315may include an enterprise-class IP telephony call-processing system that provides traditional telephony features, as well as advanced capabilities, such as video, mobility, presence, preference, and full-featured conferencing services. UCM315may act as a centralized “routing” entity that routes calls between customers, may implement a policy that permits intercompany calls using a phone number directory, and may permit basic reporting on utilization of IMV-TP network130.

TS manager320may include one or more server devices, or other types of computation or communication devices, that gather, process, search, and/or provide information in a manner described herein. For example, TS manager320may enable scheduling, initiation, and management of IMV sessions. TS manager320may manage conference resources for various telepresence meeting types (e.g., P2P, MP, interoperability, intercompany, etc.), and may provide network administrators and help desk staff with system connectivity and management dashboards for reporting about IMV-TP network130. TS manager320may generate usage, productivity, and return on investment (ROI) reports, and may help reduce total cost of ownership by integrating with existing infrastructure. In one example implementation, TS manager320may be associated with one or more of the customers (e.g., and/or CPE device(s)110).

Pooled TMS325may include one or more network devices (e.g., switches), server devices, or other types of computation or communication devices, that gather, process, search, and/or provide information in a manner described herein. For example, pooled TMS325may enable three or more locations to participate in a single meeting, and may permit all participants to be seen in life-size, HD video and heard in CD-quality, spatial audio with no perceivable latency. Pooled TMS325may deliver automatic voice-activated switching, either site by site or by individual table segment, and may provide video conferencing interoperability with H.323 and SIP video conferencing endpoints. Pooled TMS325may provide a latency of less than ten milliseconds for transparent switching between sites or segments during a multipoint call, and may provide web-based administration with role-based profiles for administrators at both group and department levels.

Overflow TMS330may include the features of pooled TMS325. However, offload TMS330may be considered a spare or overflow TMS that may be used if pooled TMS325runs out of capacity.

KVM device335may include one or more input or output devices, server devices, or other types of computation or communication devices, that gather, process, search, and/or provide information in a manner described herein. For example, KVM device335may enable users to control two or more devices of IVM-TP network130(e.g., UCM315, TS manager320, pooled TMS325, overflow TMS330, WUS340, UUS345, IVC350, and/or UVC355) from a single keyboard, video monitor, and/or mouse.

WUS340may include one or more server devices, or other types of computation or communication devices, that gather, process, search, and/or provide information in a manner described herein. For example, WUS340may receive information compiled in log files generated by Windows-based devices and/or software. WUS340may aggregate and format the log files into a format usable by computing device140and other computational servers. WUS340may also perform computations using data from the log files. In one example implementation, SIT monitoring tool145may be provided in and executed by WUS340.

UUS345may include one or more server devices, or other types of computation or communication devices, that gather, process, search, and/or provide information in a manner described herein. For example, UUS345may receive information compiled in log files generated by UNIX (or LINUX)-based devices and/or software. UUS345may aggregate and format the log files into a format usable by computing device140and other computational servers. UUS345may also perform computations using data from the log files. In one example implementation, SIT monitoring tool145may be provided in and executed by UUS345.

IVC350may include one or more server devices, or other types of computation or communication devices, that gather, process, search, and/or provide information in a manner described herein. For example, IVC350may enable scheduling of video conferences between one or more customers; may validate identifier codes associated with customers, video conferences, CPE devices110, etc.; and may enable video conferencing services provided by IMV-TP network130to be billed to appropriate customers.

UVC355may include one or more server devices, or other types of computation or communication devices, that gather, process, search, and/or provide information in a manner described herein. For example, UVC355may provide a flexible, HD video conferencing solution that lets organizations easily conduct face-to-face discussions in multiparty virtual meetings. UVC355may support a broad range of video endpoints from HD and telepresence systems to standard-definition (SD) clients. UVC355may control video services provided by IMV-TP network130between CPE devices110of two or more customers.

As further shown inFIG. 3, one or more of PE network devices300, router/SBC devices305, switches310, UCM315, TS manager320, pooled TMS325, overflow TMS330, KVM device335, WUS340, UUS345, IVC350, and/or UVC355; or software or protocols associated with such devices, may generate IVM information150that is provided to computing device140.

FIG. 4is a diagram of example functional components of SIT monitoring tool145. As illustrated, SIT monitoring tool145may include a scheduling component400, a scripts monitor402, a router/switch CKI monitor404, a server CKI monitor406, a backup/storage monitor408, an IOS severity logs monitor410, a server severity logs monitor412, and a report/notification generator414. In one example implementation, the functions described in connection withFIG. 4may be performed by one or more of the example components of device200(FIG. 2).

Scheduling component400may include hardware or a combination of hardware and software that may determine a monitoring schedule416for scripts monitor402, router/switch CKI monitor404, server CKI monitor406, backup/storage monitor408, IOS severity logs monitor410, and server severity logs monitor412. Monitoring schedule416may include a schedule that causes components402-412to monitor IMV-TP network130at a specific time; a schedule that causes one or more of components402-412to monitor IMV-TP network130at different times; a schedule that causes one or more of components402-412to monitor IMV-TP network130based on an occurrence of an event(s) in IMV-TP network130; a schedule that causes one or more of components402-412to continuously monitor IMV-TP network130; etc. Monitoring schedule416may be automatically generated by SIT monitoring tool145or may be input to SIT monitoring tool145(e.g., by a user). Scheduling component400may provide monitoring schedule416to components402-412.

Scripts monitor402may include hardware or a combination of hardware and software that may receive monitoring schedule416from scheduling component400, and may monitor (e.g., based on monitoring schedule416) router/SBC devices305and/or switches310for information relating to scripts that are executed by router/SBC devices305and/or switches310, as indicated by reference number418. Based on monitoring418, router/SBC devices305and/or switches310may return scripts information420to scripts monitor402. Scripts information420may include configuration information associated with router/SBC devices305and/or switches310(e.g., obtained via customizable scripts); initialization information associated with router/SBC devices305and/or switches310(e.g., obtained via customizable scripts); etc. Alternatively, scripts monitor402may generate scripts information420, and may provide scripts information420to router/SBC devices305and/or switches310in order to monitor and retrieve information associated with router/SBC devices305and/or switches310. As further shown inFIG. 4, scripts monitor402may provide scripts information420to report/notification generator414.

Router/switch CKI monitor404may include hardware or a combination of hardware and software that may receive monitoring schedule416from scheduling component400, and may monitor (e.g., based on monitoring schedule416) router/SBC devices305and/or switches310for router/switch CKI information, as indicated by reference number422. Based on monitoring422, router/SBC devices305and/or switches310may return router/switch CKI information424to router/switch CKI monitor404. Router/switch CKI information424may include information about the overall health of router/SBC devices305and/or switches310; whether one or more of router/SBC devices305and/or switches310are operational; bandwidth availability associated with router/SBC devices305and/or switches310; congestion associated with router/SBC devices305and/or switches310; problems associated with router/SBC devices305and/or switches310; etc. As further shown inFIG. 4, router/switch CKI monitor404may provide router/switch CKI information424to report/notification generator414.

Server CKI monitor406may include hardware or a combination of hardware and software that may receive monitoring schedule416from scheduling component400, and may monitor (e.g., based on monitoring schedule416) one or more of servers315-355(e.g., UCM315, TS manager320, pooled TMS325, offload TMS330, KVM device335, WUS340, UUS345, IVC350, and/or UVC355) for server CKI information, as indicated by reference number426. Based on monitoring426, one or more of servers315-355may return server CM information428to server CKI monitor406. Server CKI information428may include information about the overall health of one or more of servers315-355; whether one or more of servers315-355are operational; bandwidth availability associated with one or more of servers315-355; congestion associated with one or more of servers315-355; problems associated with one or more of servers315-355; etc. As further shown inFIG. 4, server CKI monitor406may provide server CKI information428to report/notification generator414.

Backup/storage monitor408may include hardware or a combination of hardware and software that may receive monitoring schedule416from scheduling component400, and may monitor (e.g., based on monitoring schedule416) router/SBC devices305and/or switches310for backup/storage information, as indicated by reference number430. Based on monitoring430, router/SBC devices305and/or switches310may return backup/storage information432to backup/storage monitor408. Backup/storage information432may include backup information associated with one or more of router/SBC devices305and/or switches310; storage information associated with one or more of router/SBC devices305and/or switches310; network management information associated with one or more of router/SBC devices305and/or switches310; health information associated with router/SBC devices305and/or switches310(e.g., determined at a particular point in time); etc. As further shown inFIG. 4, backup/storage monitor408may provide backup/storage information432to report/notification generator414.

IOS severity logs monitor410may include hardware or a combination of hardware and software that may receive monitoring schedule416from scheduling component400, and may monitor (e.g., based on monitoring schedule416) router/SBC devices305and/or switches310for IOS severity logs information, as indicated by reference number434. Based on monitoring434, one or more of router/SBC devices305and/or switches310may return IOS severity logs information436to IOS severity logs monitor410. IOS severity logs information436may include information associated with IOS severity logs (e.g., logs providing an indication of severe errors occurring in one or more of router/SBC devices305and/or switches310); information associated with bandwidth logs (e.g., logs providing an indication of bandwidth usage by or bandwidth problems experienced by one or more of router/SBC devices305and/or switches310); information associated with crash logs (e.g., logs providing an indication of hardware problems associated with one or more of router/SBC devices305and/or switches310); information associated with border gateway (BGP) call processing logs (e.g., logs providing an indication of routes and paths of calls through one or more of router/SBC devices305and/or switches310); etc. As further shown inFIG. 4, IOS severity logs monitor410may provide IOS severity logs information436to report/notification generator414.

Server severity logs monitor412may include hardware or a combination of hardware and software that may receive monitoring schedule416from scheduling component400, and may monitor (e.g., based on monitoring schedule416) one or more of servers315-355for server severity logs information, as indicated by reference number438. Based on monitoring438, one or more of servers315-355may return server severity logs information440to server severity logs monitor412. Server severity logs information440may include information associated with server severity logs (e.g., logs providing an indication of severe errors occurring in one or more of servers315-355); information associated with crash logs (e.g., logs providing an indication of hardware problems associated with one or more of servers315-355); information associated with call processing logs (e.g., logs providing an indication of routes and paths of calls through one or more of servers315-355); information associated with freeze replication logs (e.g., logs providing an indication of replicated conference calls scheduled on IVC350); information associated with call detail record (CDR) logs (e.g., logs providing billing information, timestamps, features, identifiers, etc. associated with one or more of servers315-355); etc. As further shown inFIG. 4, server severity logs monitor412may provide server severity logs information440to report/notification generator414.

Report/notification generator414may include hardware or a combination of hardware and software that may receive monitored information160(e.g., scripts information420, router/switch CKI information424, server CKI information428, backup/storage information432, IOS severity logs information436, and/or server severity logs information440), and may aggregate monitored information160. Report/notification generator414may generate one or more reports442based on the aggregated monitored information160, and may provide reports442to users (e.g., network administrators) associated with IMV-TP network130. Report/notification generator414may generate one or more notifications444based on reports442(e.g., notifications444may include reports442), and may provide notifications444to users associated with IMV-TP network130. In one example implementation, notifications444may be provided to the users at a predetermined time. In another implementation, notifications444may be immediately provided to the users based on triggers or problems associated with IMV-TP network130(e.g., IMV-TP network130may be malfunctioning). As further shown inFIG. 4, reports442and notifications444may correspond to reports/notifications170(FIG. 1).

AlthoughFIG. 4shows example functional components of SIT monitoring tool145, in other implementations, SIT monitoring tool145may include fewer functional components, different functional components, differently arranged functional components, or additional functional components than depicted inFIG. 4. Alternatively, or additionally, one or more functional components of SIT monitoring tool145may perform one or more other tasks described as being performed by one or more other functional components of SIT monitoring tool145.

FIG. 5is a diagram of example functional components of scripts monitor402. As illustrated, scripts monitor402may include a router scripts monitor500, a switch scripts monitor510, a router script information receiver520, and a switch script information receiver530. In one example implementation, the functions described in connection withFIG. 5may be performed by one or more of the example components of device200(FIG. 2).

Router scripts monitor500may include hardware or a combination of hardware and software that may receive monitoring schedule416from scheduling component400, and may monitor (e.g., based on monitoring schedule416) router/SBC devices305for scripts information, as indicated by reference number540.

Switch scripts monitor510may include hardware or a combination of hardware and software that may receive monitoring schedule416from scheduling component400, and may monitor (e.g., based on monitoring schedule416) switches310for scripts information, as indicated by reference number550. As further shown inFIG. 5, monitoring540and550may correspond to monitoring418.

Router script information receiver520may include hardware or a combination of hardware and software that may receive (e.g., based on monitoring540) router script information560from router/SBC devices305. Router script information560may include configuration information associated with router/SBC devices305; initialization information associated with router/SBC devices305; etc. Router script information receiver520may provide router script information560to report/notification generator414.

Switch script information receiver530may include hardware or a combination of hardware and software that may receive (e.g., based on monitoring550) switch script information570from switches310. Switch script information570may include configuration information associated with switches310; initialization information associated with switches310; etc. Switch script information receiver530may provide switch script information570to report/notification generator414. As further shown inFIG. 5, router script information560and switch script information570may correspond to scripts information420.

AlthoughFIG. 5shows example functional components of scripts monitor402, in other implementations, scripts monitor402may include fewer functional components, different functional components, differently arranged functional components, or additional functional components than depicted inFIG. 5. Alternatively, or additionally, one or more functional components of scripts monitor402may perform one or more other tasks described as being performed by one or more other functional components of scripts monitor402.

FIG. 6is a diagram of example functional components of router/switch CKI monitor404. As illustrated, router/switch CKI monitor404may include a router CKI monitor600, a switch CKI monitor610, a router CKI information receiver620, and a switch CKI information receiver630. In one example implementation, the functions described in connection withFIG. 6may be performed by one or more of the example components of device200(FIG. 2).

Router CKI monitor600may include hardware or a combination of hardware and software that may receive monitoring schedule416from scheduling component400, and may monitor (e.g., based on monitoring schedule416) router/SBC devices305for CKI information, as indicated by reference number640.

Switch CKI monitor610may include hardware or a combination of hardware and software that may receive monitoring schedule416from scheduling component400, and may monitor (e.g., based on monitoring schedule416) switches310for CKI information, as indicated by reference number650. As further shown inFIG. 6, monitoring640and650may correspond to monitoring422.

Router CKI information receiver620may include hardware or a combination of hardware and software that may receive (e.g., based on monitoring640) router CKI information660from router/SBC devices305. Router CKI information660may include information about the overall health of router/SBC devices305; whether one or more of router/SBC devices305are operational; bandwidth availability associated with router/SBC devices305; congestion associated with router/SBC devices305; problems associated with router/SBC devices305; etc. Router CKI information receiver620may provide router CKI information660to report/notification generator414.

Switch CKI information receiver630may include hardware or a combination of hardware and software that may receive (e.g., based on monitoring650) switch CKI information670from switches310. Switch CKI information670may include information about the overall health of switches310; whether one or more of switches310are operational; bandwidth availability associated with switches310; congestion associated with switches310; problems associated with switches310; etc. Switch CKI information receiver630may provide switch CKI information670to report/notification generator414. As further shown inFIG. 6, router CKI information660and switch CKI information670may correspond to router/switch CKI information424.

AlthoughFIG. 6shows example functional components of router/switch CKI monitor404, in other implementations, router/switch CKI monitor404may include fewer functional components, different functional components, differently arranged functional components, or additional functional components than depicted inFIG. 6. Alternatively, or additionally, one or more functional components of router/switch CKI monitor404may perform one or more other tasks described as being performed by one or more other functional components of router/switch CKI monitor404.

FIG. 7is a diagram of example functional components of server CKI monitor406. As illustrated, server CKI monitor406may include a TMS CKI monitor700, a UCM CKI monitor705, a TS manager CKI monitor710, an IVC CKI monitor715, a TMS CKI information receiver720, a UCM CKI information receiver725, a TS manager CKI information receiver730, and an IVC CKI information receiver735. In one example implementation, the functions described in connection withFIG. 7may be performed by one or more of the example components of device200(FIG. 2).

TMS CKI monitor700may include hardware or a combination of hardware and software that may receive monitoring schedule416from scheduling component400, and may monitor (e.g., based on monitoring schedule416) pooled TMS325and overflow TMS330for CKI information, as indicated by reference number740.

UCM CKI monitor705may include hardware or a combination of hardware and software that may receive monitoring schedule416from scheduling component400, and may monitor (e.g., based on monitoring schedule416) UCM315for CKI information, as indicated by reference number745.

TS manager CKI monitor710may include hardware or a combination of hardware and software that may receive monitoring schedule416from scheduling component400, and may monitor (e.g., based on monitoring schedule416) TS manager320for CKI information, as indicated by reference number750.

IVC CKI monitor715may include hardware or a combination of hardware and software that may receive monitoring schedule416from scheduling component400, and may monitor (e.g., based on monitoring schedule416) IVC350for CKI information, as indicated by reference number755. As further shown inFIG. 7, monitoring740-755may correspond to monitoring426.

TMS CKI information receiver720may include hardware or a combination of hardware and software that may receive (e.g., based on monitoring740) router CKI information660from pooled TMS325and/or overflow TMS330. TMS CKI information760may include information about the overall health of pooled TMS325and/or overflow TMS330; whether pooled TMS325and/or overflow TMS330are operational; bandwidth availability associated with pooled TMS325and/or overflow TMS330; congestion associated with pooled TMS325and/or overflow TMS330; problems associated with pooled TMS325and/or overflow TMS330; etc. TMS CKI information receiver720may provide TMS CKI information760to report/notification generator414.

UCM CKI information receiver725may include hardware or a combination of hardware and software that may receive (e.g., based on monitoring745) UCM CKI information765from UCM315. UCM CKI information765may include information about the overall health of UCM315; whether UCM315is operational; bandwidth availability associated with UCM315; congestion associated with UCM315; problems associated with UCM315; etc. UCM CKI information receiver725may provide UCM CKI information765to report/notification generator414.

TS manager CKI information receiver730may include hardware or a combination of hardware and software that may receive (e.g., based on monitoring750) TS manager CKI information770from TS manager320. TS manager CKI information770may include information about the overall health of TS manager320; whether TS manager320is operational; bandwidth availability associated with TS manager320; congestion associated with TS manager320; problems associated with TS manager320; etc. TS manager CKI information receiver730may provide TS manager CKI information770to report/notification generator414.

IVC CKI information receiver735may include hardware or a combination of hardware and software that may receive (e.g., based on monitoring755) IVC CKI information775from IVC350. IVC CKI information775may include information about the overall health of IVC350; whether IVC350is operational; bandwidth availability associated with IVC350; congestion associated with IVC350; problems associated with IVC350; etc. IVC CKI information receiver735may provide IVC CKI information775to report/notification generator414. As further shown inFIG. 7, TMS CKI information760, UCM CKI information765, TS manager CKI information770, and IVC CKI information775may correspond to server CKI information428.

AlthoughFIG. 7shows example functional components of server CKI monitor406, in other implementations, server CKI monitor406may include fewer functional components, different functional components, differently arranged functional components, or additional functional components than depicted inFIG. 7. For example, server CKI monitor406may include monitors and receivers to retrieve CKI information from other servers of IMS-TP network130(e.g., KVM device335, WUS340, UUS345, and/or UVC355). Alternatively, or additionally, one or more functional components of server CKI monitor406may perform one or more other tasks described as being performed by one or more other functional components of server CKI monitor406.

FIG. 8is a diagram of example functional components of backup/storage monitor408. As illustrated, backup/storage monitor408may include a backup monitor800, a storage monitor810, a backup information receiver820, and a storage information receiver830. In one example implementation, the functions described in connection withFIG. 8may be performed by one or more of the example components of device200(FIG. 2).

Backup monitor800may include hardware or a combination of hardware and software that may receive monitoring schedule416from scheduling component400, and may monitor (e.g., based on monitoring schedule416) router/SBC devices305and/or switches310for backup information, as indicated by reference number840.

Storage monitor810may include hardware or a combination of hardware and software that may receive monitoring schedule416from scheduling component400, and may monitor (e.g., based on monitoring schedule416) router/SBC devices305and/or switches310for storage information, as indicated by reference number850. As further shown inFIG. 8, monitoring840and850may correspond to monitoring430.

Backup information receiver820may include hardware or a combination of hardware and software that may receive (e.g., based on monitoring840) backup information860from router/SBC devices305and/or switches310. Backup information860may include backup information (e.g., backed up configuration information, generated errors, etc.) associated with one or more of router/SBC devices305and/or switches310. Backup information receiver820may provide backup information860to report/notification generator414.

Storage information receiver830may include hardware or a combination of hardware and software that may receive (e.g., based on monitoring850) storage information870from router/SBC devices305and/or switches310. Storage information870may include storage information associated with one or more of router/SBC devices305and/or switches310; network management information associated with one or more of router/SBC devices305and/or switches310; health information associated with router/SBC devices305and/or switches310(e.g., determined at a particular point in time); etc. Storage information receiver830may provide storage information870to report/notification generator414. As further shown inFIG. 8, backup information860and storage information870may correspond to backup/storage information432.

AlthoughFIG. 8shows example functional components of backup/storage monitor408, in other implementations, backup/storage monitor408may include fewer functional components, different functional components, differently arranged functional components, or additional functional components than depicted inFIG. 8. Alternatively, or additionally, one or more functional components of backup/storage monitor408may perform one or more other tasks described as being performed by one or more other functional components of backup/storage monitor408.

FIG. 9is a diagram of example functional components of IOS severity logs monitor410. As illustrated, IOS severity logs monitor410may include a bandwidth log monitor900, a crash log monitor905, a BGP log monitor910, a bandwidth log information receiver915, a crash log information receiver920, and a BGP log information receiver925. In one example implementation, the functions described in connection withFIG. 9may be performed by one or more of the example components of device200(FIG. 2).

Bandwidth log monitor900may include hardware or a combination of hardware and software that may receive monitoring schedule416from scheduling component400, and may monitor (e.g., based on monitoring schedule416) router/SBC devices305and/or switches310for bandwidth log information, as indicated by reference number930.

Crash log monitor905may include hardware or a combination of hardware and software that may receive monitoring schedule416from scheduling component400, and may monitor (e.g., based on monitoring schedule416) router/SBC devices305and/or switches310for crash log information, as indicated by reference number935.

BGP log monitor910may include hardware or a combination of hardware and software that may receive monitoring schedule416from scheduling component400, and may monitor (e.g., based on monitoring schedule416) router/SBC devices305and/or switches310for BGP log information, as indicated by reference number940. As further shown inFIG. 9, monitoring930-940may correspond to monitoring434.

Bandwidth log information receiver915may include hardware or a combination of hardware and software that may receive (e.g., based on monitoring930) bandwidth log information945from router/SBC devices305and/or switches310. Bandwidth log information945may include logs providing an indication of bandwidth usage by router/SBC devices305and/or switches310, bandwidth problems experienced by router/SBC devices305and/or switches310, etc. Bandwidth log information receiver915may provide bandwidth log information945to report/notification generator414.

Crash log information receiver920may include hardware or a combination of hardware and software that may receive (e.g., based on monitoring935) crash log information950from router/SBC devices305and/or switches310. Crash log information950may include logs providing an indication of hardware problems associated with router/SBC devices305and/or switches310, hardware debugging information associated with router/SBC devices305and/or switches310, IOS severity logs providing an indication of severe errors occurring in router/SBC devices305and/or switches310, etc. Crash log information receiver920may provide crash log information950to report/notification generator414.

BGP log information receiver925may include hardware or a combination of hardware and software that may receive (e.g., based on monitoring940) BGP log information955from router/SBC devices305and/or switches310. BGP log information955may include BGP call processing logs providing an indication of routes and paths of calls through router/SBC devices305and/or switches310, security problems (e.g., DoS attacks) associated with calls through router/SBC devices305and/or switches310, etc. BGP log information receiver925may provide BGP log information955to report/notification generator414. As further shown inFIG. 9, bandwidth log information945, crash log information950, and BGP log information955may correspond to IOS severity logs information436.

AlthoughFIG. 9shows example functional components of IOS severity logs monitor410, in other implementations, IOS severity logs monitor410may include fewer functional components, different functional components, differently arranged functional components, or additional functional components than depicted inFIG. 9. Alternatively, or additionally, one or more functional components of IOS severity logs monitor410may perform one or more other tasks described as being performed by one or more other functional components of IOS severity logs monitor410.

FIG. 10is a diagram of example functional components of server severity logs monitor412. As illustrated, server severity logs monitor412may include a crash log monitor1000, a call processing log monitor1005, a freeze replication log monitor1010, a CDR log monitor1015, a crash log information receiver1020, a call processing log information receiver1025, a freeze replication log information receiver1030, and a CDR log information receiver1035. In one example implementation, the functions described in connection withFIG. 10may be performed by one or more of the example components of device200(FIG. 2).

Crash log monitor1000may include hardware or a combination of hardware and software that may receive monitoring schedule416from scheduling component400, and may monitor (e.g., based on monitoring schedule416) servers315-355for crash log information, as indicated by reference number1040.

Call processing log monitor1005may include hardware or a combination of hardware and software that may receive monitoring schedule416from scheduling component400, and may monitor (e.g., based on monitoring schedule416) servers315-355for call processing log information, as indicated by reference number1045.

Freeze replication log monitor1010may include hardware or a combination of hardware and software that may receive monitoring schedule416from scheduling component400, and may monitor (e.g., based on monitoring schedule416) servers315-355for freeze replication log information, as indicated by reference number1050.

CDR log monitor1015may include hardware or a combination of hardware and software that may receive monitoring schedule416from scheduling component400, and may monitor (e.g., based on monitoring schedule416) servers315-355for CDR log information, as indicated by reference number1055. As further shown inFIG. 10, monitoring1040-1055may correspond to monitoring438.

Crash log information receiver1020may include hardware or a combination of hardware and software that may receive (e.g., based on monitoring1040) crash log information1060from servers315-355. Crash log information1060may include server severity logs providing an indication of severe errors occurring in one or more of servers315-355, crash logs providing an indication of hardware problems associated with one or more of servers315-355, etc. Crash log information receiver1020may provide crash log information1060to report/notification generator414.

Call processing log information receiver1025may include hardware or a combination of hardware and software that may receive (e.g., based on monitoring1045) call processing log information1065from servers315-355. Call processing log information1065may include logs providing an indication of routes and paths of calls through one or more of servers315-355, call initiation through servers315-355, call setup through servers315-355, etc. Call processing log information receiver1025may provide call processing log information1065to report/notification generator414.

Freeze replication log information receiver1030may include hardware or a combination of hardware and software that may receive (e.g., based on monitoring1050) freeze replication log information1070from servers315-355. Freeze replication log information1070may include freeze replication logs providing an indication of replicated conference calls scheduled on IVC350; logs providing information that ensures consistency between redundant resources (e.g., servers315-355) to improve reliability, fault-tolerance, or accessibility; etc. Freeze replication log information receiver1030may provide freeze replication log information1070to report/notification generator414.

CDR log information receiver1035may include hardware or a combination of hardware and software that may receive (e.g., based on monitoring1055) CDR log information1075from servers315-355. CDR log information1075may include CDR logs providing billing information, timestamps, features, identifiers, etc. associated with one or more of servers315-355. CDR log information receiver1035may provide CDR log information1075to report/notification generator414. As further shown inFIG. 10, crash log information1060, call processing log information1065, freeze replication log information1070, and CDR log information1075may correspond to severity logs information440.

AlthoughFIG. 10shows example functional components of server severity logs monitor412, in other implementations, server severity logs monitor412may include fewer functional components, different functional components, differently arranged functional components, or additional functional components than depicted inFIG. 10. Alternatively, or additionally, one or more functional components of server severity logs monitor412may perform one or more other tasks described as being performed by one or more other functional components of server severity logs monitor412.

FIG. 11is a diagram of example functional components of report/notification generator414. As illustrated, report/notification generator414may include an information aggregator1100, a data cache1110, a report generator1120, and a notification generator1130. In one example implementation, the functions described in connection withFIG. 11may be performed by one or more of the example components of device200(FIG. 2).

Information aggregator1100may include hardware or a combination of hardware and software that may receive scripts information420, router/switch CKI information424, server CKI information428, backup/storage information432, IOS severity logs information436, and server severity logs information440. As further shown inFIG. 11, such received information may correspond to monitored/recorded information160(FIG. 1). Information aggregator1100may aggregate information420,424,428,432,436, and440into aggregated information1140. Aggregated information1140may include, for example, combined information received from a particular device of IMS-TP network130, combined information received for a particular test or command issued by SIT monitoring tool145, etc. Information aggregator1100may provide aggregated information1140to data cache1110and report generator1120.

Data cache1110may include one or more storage devices that may receive aggregated information1140, may provide a time stamp for aggregated information1140, and may store aggregated information1140along with the corresponding time stamp. In one example, data cache1110may label aggregated information1140according to a device (e.g., of IMV-TP network130) under test, a test or a command issued by SIT monitoring tool145, etc. If results exist in data cache1140for the device, the test, the command, etc., data cache1140may back up those results using a tagging system (e.g., a user-defined tagging system). Caching aggregated information1140in data cache1110may enable a user to compare results of subsequent executions of a particular command or test, obtain historical information pertaining to IMV-TP network130(or particular devices in IMV-TP network130), perform root cause analysis on aggregated information1140, perform data mining on aggregated information1140, etc.

Report generator1120may include hardware or a combination of hardware and software that may receive aggregated information1140, and may generate reports442based on aggregated information1140(and/or historical information retrieved from data cache1110). Reports442may include, for example, reports about the performance (e.g., bandwidth usage, errors, down time, etc.) of a particular device(s) of IMV-TP network130; reports about usage (e.g., a number of calls, costs, length of calls, etc.) of IMV-TP network130(or devices of IMV-TP network130); reports about problems (e.g., hardware malfunctions, software malfunctions, etc.) experienced by IMV-TP network130over time; etc. Report generator1120may provide reports442to users (e.g., network administrators) associated with IMV-TP network130, and may provide reports442to notification generator1130.

Notification generator1130may include hardware or a combination of hardware and software that may receive reports442from report generator1120, and may receive historical information (e.g., associated with IMV-TP network130) from data cache1110. Notification generator1130may compare the information provided in reports442(e.g., aggregated information1140) with the historical information provided in data cache1110to determine any discrepancies between the two. If notification generator1130determines discrepancies based on the comparison, notification generator1130may provide one or more alarms1150to users associated with IMV-TP network130. For example, if the comparison indicates that IVC350is not performing properly, notification generator1130may generate alarm1150indicating the problem with IVC350. Based on alarms, the users of IMV-TP network130may correct any problems occurring in IMV-TP network130.

Notification generator1130may generate one or more notifications444based on reports442. Notifications444may include some or all of the information contained in reports442(e.g., notifications444may be tailored to particular users of IMV-TP network130) and/or some or all of alarms1150generated by notification generator1130. For example, if a particular user is responsible for maintaining WUS340, the particular user may receive notifications444with information and/or alarms1150pertinent to WUS340. As further shown inFIG. 11, notifications444may be provided in a variety of formats, such as email notifications1160, short message service (SMS) notifications1170, instant message (IM) notifications1180, text-to-speech voice call notifications1190, etc. Notification schemes may be dynamic and configurable on a per-user or per-group basis, and users may subscribe to receive notifications444from SIT monitoring tool145. Each user may specify a desired notification level. If a particular user desires notification on a per-command basis, the particular user may adjust the notification level for any given command issued by SIT monitoring tool145.

FIGS. 12-14are flow charts of an example process1200for monitoring IMV-TP networks according to implementations described herein. In one implementation, process1200may be performed by computing device140(e.g., via SIT monitoring tool145). In another implementation, some or all of process1200may be performed by another device or group of devices, including or excluding computing device140.

As shown inFIG. 12, process1200may include scheduling monitoring of an IMV-TP network (block1210), and receiving, based on the schedule, IMV information directly from device(s), software, and/or system(s) associated with the IMV-TP network (block1220). For example, in implementations described above in connection withFIG. 1, computing device140(e.g., via SIT monitoring tool145) may schedule monitoring of IMV-TP network130, and may receive, based on the schedule, IMV information150directly from device(s), software, system(s), etc. associated with IMV-TP network130.

As further shown inFIG. 12, process1200may include aggregating the received IMV information (block1230), generating report(s) based on the aggregated IMV information (block1240), and providing the generated report(s) to user(s) associated with the IMV-TP network (block1250). For example, in implementations described above in connection withFIG. 4, report/notification generator414, of SIT monitoring tool145, may receive monitored information160(e.g., scripts information420, router/switch CKI information424, server CKI information428, backup/storage information432, IOS severity logs information436, and/or server severity logs information440), and may aggregate monitored information160. Report/notification generator414may generate one or more reports442based on the aggregated monitored information160, and may provide reports442to users (e.g., network administrators) associated with IMV-TP network130.

Returning toFIG. 12, process1200may include generating notification(s) based on the generated report(s) (block1260), and providing the generated notification(s) to user(s) associated with the IMV-TP network (block1270). For example, in implementations described above in connection withFIG. 4, report/notification generator414may generate one or more notifications444based on reports442(e.g., notifications444may include reports442), and may provide notifications444to users associated with IMV-TP network130. In one example implementation, notifications444may be provided to the users at a predetermined time. In another implementation, notifications444may be immediately provided to the users based on triggers or problems associated with IMV-TP network130(e.g., IMV-TP network130may be malfunctioning).

Process block1220may include the process blocks depicted inFIG. 13. As shown inFIG. 13, process block1220may include receiving scripts information from router(s) and/or switch(es) of the IMV-TP network (block1300), receiving custom key indicator (CKIs) from the router(s) and/or switch(es) of the IMV-TP network (block1310), and/or receiving CKIs from server(s) of the IMV-TP network (block1320). For example, in implementations described above in connection withFIG. 4, scripts monitor402, of SIT monitoring tool145, may monitor (e.g., based on monitoring schedule416) router/SBC devices305and/or switches310for scripts information, as indicated by reference number418. Based on monitoring418, router/SBC devices305and/or switches310may return scripts information420to scripts monitor402. Router/switch CKI monitor404, of SIT monitoring tool145, may monitor (e.g., based on monitoring schedule416) router/SBC devices305and/or switches310for router/switch CKI information, as indicated by reference number422. Based on monitoring422, router/SBC devices305and/or switches310may return router/switch CKI information424to router/switch CKI monitor404. Server CKI monitor406, of SIT monitoring tool145, may monitor (e.g., based on monitoring schedule416) one or more of servers315-355(e.g., UCM315, TS manager320, pooled TMS325, offload TMS330, KVM device335, WUS340, UUS345, IVC350, and/or UVC355) for server CKI information, as indicated by reference number426. Based on monitoring426, one or more of servers315-355may return server CKI information428to server CKI monitor406.

As further shown inFIG. 13, process block1220may include receiving backup/storage information associated with the IMV-TP network (block1330), receiving IOS severity log information associated with the IMV-TP network (block1340), and/or receiving server severity information associated with the IMV-TP network (block1350). For example, in implementations described above in connection withFIG. 4, backup/storage monitor408, of SIT monitoring tool145, may monitor (e.g., based on monitoring schedule416) router/SBC devices305and/or switches310for backup/storage information, as indicated by reference number430. Based on monitoring430, router/SBC devices305and/or switches310may return backup/storage information432to backup/storage monitor408. IOS severity logs monitor410, of SIT monitoring tool145, may monitor (e.g., based on monitoring schedule416) router/SBC devices305and/or switches310for IOS severity logs information, as indicated by reference number434. Based on monitoring434, one or more of router/SBC devices305and/or switches310may return IOS severity logs information436to IOS severity logs monitor410. Server severity logs monitor412, of SIT monitoring tool145, may monitor (e.g., based on monitoring schedule416) one or more of servers315-355for server severity logs information, as indicated by reference number438. Based on monitoring438, one or more of servers315-355may return server severity logs information440to server severity logs monitor412.

Process block1270may include the process blocks depicted inFIG. 14. As shown inFIG. 14, process block1270may include providing the generated notification(s), via email message(s), to the user(s) associated with the IMV-TP network (block1400), providing the generated notification(s), via SMS message(s), to the user(s) associated with the IMV-TP network (block1410), providing the generated notification(s), via instant message(s), to the user(s) associated with the IMV-TP network (block1420), and/or providing the generated notification(s), via call(s), to the user(s) associated with the IMV-TP network (block1430). For example, in implementations described above in connection withFIG. 11, notification generator1130, of SIT monitoring tool145, may generate one or more notifications444based on reports442. Notifications444may be provided in a variety of formats, such as email notifications1160, SMS notifications1170, instant message (IM) notifications1180, text-to-speech voice call notifications1190, etc. Notification schemes may be dynamic and configurable on a per-user or per-group basis, and users may subscribe to receive notifications444from SIT monitoring tool145.

Systems and/or methods described herein may provide a SIT monitoring tool that monitors an entire IMV-TP network. The SIT monitoring tool may monitor, record, and report activities associated with the IMV-TP network (e.g., the different technologies, protocols, servers, software, and/or devices of the IMV-TP network). The SIT monitoring tool may provide an integrity view of the IMV-TP network, and may report custom indicators that allow network administrators to pro-actively address any problems in the IMV-TP network. The SIT monitoring tool may also provide network management capability to organizations supporting the IMV-TP network.

For example, while series of blocks have been described with regard toFIGS. 12-14, the order of the blocks may be modified in other implementations. Further, non-dependent blocks may be performed in parallel.