Files and directories are transmitted using a DSM-CC object carousel . Objects are encapsulated in modules, which are encapsulated within modules, which are encapsulated within download data blocks, which are encapsulated within DSM-CC sections, which are encapsulated within MPEG private sections which are assembled from packets (see Figure 11.7). Each module is assembled from the payload of one or more download data messages each defined using the DSM-CC DDB syntax. The number of messages depends on the size of the module and the maximum payload of each download data message. Information describing each module and any logical grouping is provided by download control messages, defined using the DSM-CC DII and Download Server Initiate (DSI) messages. A third control message, Download Cancel (DC), can be used to terminate the download. Figure 11.7. MPEG-2 Encapsulation of the DCM-CC file system
11.2.1 PacketsAs explained earlier, the MPEG-2 transport is composed of a sequence of packets. Each of these packets consists of a 32 bit header and a 184 byte payload (see Figure 11.8). The header contains information about the packet. The payload contains the data carried by the packet; for detailed description of these fields see the MPEG-2 standard (see Table 11.2). Figure 11.8. The structure of an MPEG-2 Packet.
11.2.2 SectionsMPEG-2 sections are carried directly in the payload of transport stream packets. A pointer_field is an 8 bits long field is used specify how many bytes after the header the receiver needs to count before reading the data carried in the packet's payload. This allows sections not to start immediately after the packet header, and is useful, for example, with very high bit rates to allow receivers and multiplexers to process the header. When the section data does not completely fill the packet, e.g., in the last packet carrying that section, a stuffing area is filed with the value 0xFF. 11.2.3 TablesMPEG-2 Tables are the basic MPEG-2 content structure (see Table 11.3), assembled from up to 256 MPEG-2 sections. Each section has a header, a payload and a trailer. Each section carries at most 4 kBs. Short tables are composed of a single section (the length field is 12 bits). The syntax of a section bit-stream is specified in Table 11.2. Table 11.2. The Detailed Description of Fields within a Packet Header
Figure 11.9. The structure of MPEG-2 Tables.
Table 11.3. Section Structure for Assembling Tables
11.2.4 Program Specific Information (PSI) TablesPSI is a collection of pre-defined tables. It includes the PAT, PMT, and the CAT. The PAT is the entry point into the transport stream. Without the discovery of the PAT, it is not possible for a receiver to understand the transport stream. The discovery of the PAT enables identifying the list of MPEG-2 programs carried in the transport, each specified by a reference to an instance of the PMT. It points to the PMT of each program. The PAT is sent with the well-known PID value of 0x000. To facilitate such discovery and acquisition in situations when random tuning occurs, the PAT is transmitted periodically, for example, every 0.1 seconds. Each instance of the PMT (pointed to by the PAT) lists all the component streams of this program. These components include the video and audio components of the MPEG-2 program. One of these components , is the stream carrying the broadcasted file system. The PID carrying the PMT is specified by the PAT. The CAT defines the type of scrambling used and PID values of transport streams that contain the conditional access management and entitlement information. The CAT is sent with the well-known PID value of 0x001. Figure 11.10 depicts a simplified reference structure used to acquire a TFS MPEG transport stream (which may carry MPEG-4 video, for example). The DSM-CC file system may span multiple streams within a single transport, and even multiple transports. The root directory is specified using the DSM-CC ServiceGateway object. Other directories are specified using the DSM-CC Directory object, and files are specified using the DSM-CC File object. Figure 11.10. Using PSI to point to the broadcaster file system
11.2.5 Download ProtocolsDSM-CC specifies two download protocols: the data and object carousel. The data carousel is simpler and more limited than the object carousel. The data carousel utilizes the DDB to carry the data. The DSI table is used to specify the beginning of a sequence of DDB sections. DDB sections may be long, and therefore it is not practical to retransmit them with high frequency. The DII messages are used to assemble DDB sections into modules when random tuning occurs. The DSM-CC data carousel supports a single layer and two-layer versions of the protocol. The single layer is a simplified version suitable for smaller data download scenarios. The two layer carousel is suitable for more complex scenarios in which there are too many DDB blocks to use a single DII message for pointing to all of them, or in situation that grouping can improve efficiency of download. 11.2.6 Object CarouselThe DSM-CC object carousel extends the data carousel by standardizing the directory structure is needed for supporting even the most elementary file system. It requires using three object types: the root-directory type, non-root directory objects and file objects. The object carousel standard directory format is based on the Common Data Representation (CDR) structures defined for the Common Object Request Broker Architecture (CORBA) [OMG], designed for use by a variety of programming languages. This format is best for environments where storage and network bandwidth are plentiful. To simplify, improve the efficiency and render the protocol adequate for iTV broadcasting, CDR-Lite was developed, which is a simplified over-the-wire version trading off some reduction in flexibility. It differs from the CDR as follows :
The ATSC Data Broadcast Group recognized that the DSM-CC object carousel has a number of features not required for iTV broadcasts, yet does not standardize information that is required for iTV broadcast. Therefore, it introduced the ATSC A95 TSFS standard, which simplifies the DSM-CC object carousel by disabling some features related to bi-directional interaction [A95]. Further, to allow specifying MIME types of files and modification dates, the ATSC A95 TSFS introduces a number of descriptors within the objectInfo structure which is part of the IOR structure (described in this chapter). 11.2.6.1 Carousel Network Service Access Point (NSAP) AddressEach instance of a DSM-CC file system represents a service domain. Each service domain is associated with a globally unique identifier, called the carousel NSAP address (see Table 5.1). The key issue emerging from the NSAP address structure is the need for remultiplexers to parse and update it. Table 11.4. Carousel NSAP Address Syntax
11.2.6.2 IOR versus URIThe IOR of a DSM-CC object serves as a pointer to an object. It carries all the information pertaining to an object that in particular can be used to resolve it within a service domain via the 3-tuple < carouselId , moduleId , objectKey >; when a service domain spans multiple transport, identification of an object further requires the TSID of the transport within which the object is carried. The data pointed to by an IOR (the actual file or directory content) is carried in a Basic Input Output Protocol (BIOP) data message, which is a serialization format of an object. Each such serialization consists of a header, a subheader, and a message body. The URI was developed by the W3C to provide a simple unified and extensible mechanism for identifying a resource [URI]. A URI can be viewed as the concatenation of the base-URI with the relative-URI. The URI framework merges URLs (RFC 1738) and Relative URLs (RFC 1808) in order to define a single, generic syntax for all URIs. As a result, a URI can be classified as a locator, a name , or both. The term URL refers to the subset of URI that identify resources via a representation of their primary access mechanism (e.g., their network location), rather than identifying the resource by name or some other attribute of that resource. URN refers to the subset of URI that are required to remain globally unique and persistent even when the resource ceases to exist or becomes unavailable. The specific design adopted by ATSC A95 TSFS improves the DSM-CC object carousel data serialization format by standardizing the mapping between IORs and URIs [A95]. The TSFS requires populating the binding structures within the entries of the root directory, the service gateway, with the base-URI of the directory tree pointed to that entry (recall Figure 11.4 above). The name specified by the base-URI (e.g., http://fox.tv ) is regarded as the prefix of all URIs of each file in the entire directory sub-tree referenced. Subdirectories in that tree specify a path segment, recursively, until the last name segment is actually the name of a file (recall Figure 11.5). Whereas the IOR is anticipated to be useful for transport decoders, the URI namespace is anticipated to be useful for application environments. The use of a base-URI in the service gateway decouples the URI namespace from the object carousels namespace. This approach enables the decoupling of transport topologies from application namespaces, virtually eliminating ramification of object carousel design constraints up-stream the emission station. An an example of this decoupling, a DCM-CC file system can have its service gateway contain a flat list of files (i.e., each file is placed under the root directory) each associated with a URI. A more effective design would place in the ServiceGateway object a few directories each having a few sub-directories or files recursively. Further, the DSM-CC object carousel allows the use of multiple parents, thus enabling a file or directory to have multiple names (recall Figure 11.4). 11.2.6.3 Selective Acquisition and BrowsingWith the DSM-CC object carousel, there is no need to acquire the entire file system when only a portion of the resources are needed. For example, when only one directory is needed, it is only necessary to acquire the files referenced by this directory. This is achieved by identifying the DII messages pointing to the module's DDB in which the desired files are present. Acquisition of a DII message provides all the information necessary for acquiring each module separately, and enables selective acquisition of modules. In each stream carrying a DSM-CC object carousel there should be at least one DII message. 11.2.6.4 IOR FormatAn IOR is a structure containing necessary information for locating an object. Two types of IORs are commonly used, one containing a BIOP::ProfileBody that is used to reference objects in the same file system, and one containing a LiteOptionsProfileBody that is used to reference objects in a remote file system (which may be in the same virtual channel, a different virtual channel in the same transport stream, or a different virtual channel in a different transport stream). The IOR format, defined by CORBA and used by the DSM-CC object carousel standard, contains the mandatory LiteComponent , ObjectLocation and ConnBinder structures. Each IOR has a typeId, specifying its type, and a sequence of tagged profile structures. A tagged profile structure is meta-data describing the type of serialization of an object (e.g., directory or file) in the object carousel. Each of these structures have the same Interface Definition Language (IDL) syntax as their counterpart CDR profiles. However, only a subset of those profiles is used which have smaller footprint. For example, the LiteComponentProfile is used as a multicomponent profile to conserve space. Each element in the LiteComponentProfile is a LiteComponent structure, each binding a component ID to its data. Table 11.5. The IOR Structure.
11.2.6.5 ConnBinderThe ConnBinder structure is used to create a binding (or mapping) between the IORs of an object and its physical location within a transport. A ConnBinder structure is a list of Transport Access Partitions (TAP) carried in the IOR. Each element of this list servers as a pointer to a component of the data referred to by that IOR. The TAP has the following information (see Figure 11.11):
Figure 11.11 The IDL Definition of the TAP Structure.struct tap { u_short tapUse; // the use for the TAP u_short id; // identifier u_short assocTag; // the group identifier for network resource descriptors sequence<octet, 255> selector; // upper protocol selection info }; typedef sequence<tap, 255> ConnBinder; // typically have request and data channels 11.2.6.6 Object Location StructureAn ObjectLocation structure uniquely locates the object within the MPEG-2 Transport Stream. It contains a carouselId , a moduleId , a version number and an objectKey . The carouselId and moduleId are used to identify which elementary stream (i.e., PID) contains the object. The objectKey , which is a sequence of up to 255 bytes (i.e., octets), is used to specify which object within the module is referenced (recall that a module may contain many objects). The IDL definition for the object location structure is described in Figure 11.12. Figure 11.12 The IDL Definition of the ObjectLocation Structure.struct ObjectLocation { unsigned long carouselId; unsigned short moduleId; DSM::Version version; sequence <octet, 255> objectKey; }; 11.2.6.7 The BIOPProfileBody StructureReferences to objects within the same object carousel file system are made using an IOR containing a BIOPProfileBody . All such objects for a single object carousel (which may contains portions of multiple file systems) are carried in packets that belong to the same MPEG program that carries the IOR. The BIOPProfileBody carries information that is used to locate that object within a service domain specified by an NSAP address via the 3-tuple < carouselId , moduleId , objectKey >. In ATSC transports, the two components in the BIOPProfileBody are typically ObjectLocation and ConnBinder , in that order. Table 11.6. Definition of the BIOPProfileBody Structure in ATSC Transports
11.2.6.8 The LiteOptionProfileBody StructureReferences to objects within a different object carousel (but the same file system) are made using an IOR containing a LiteOptionsProfileBody (see Table 11.7). This means that the other object carousels can have a different carouselId , different sourceId , or different TSID. The LiteOptionsProfileBody contains a ServiceLocation component, which contains the NSAP address of the remote object carousel and a specification for the path from the ServiceGateway to the referenced object. In ATSC, the LiteOptionsProfileBody it may only reference a directory or file, but may not reference a ServiceGateway . This is because of the use of base-URIs in the ServiceGateway . In other words, the LiteOptionsProfileBody must imply a base-URI, because the LiteOptionsProfileBody already has a base-URI associated with it through its own ServiceGateway object. Table 11.7. Definition of the LiteOptionsProfileBody Structure in ATSC Transports
11.2.7 IOR UsageNow that the IOR has been described, it is appropriate to describe its usage. Figure 11.13 illustrates the acquisition sequence for acquiring all the objects in a DSM-CC file system with a simple hierarchical directory structure. The IOR of the ServiceGateway object can be extracted from the DSI message. Given the IOR for the service gateway, the ServiceGateway object can be parsed from the data module carrying it. From the binding structure inside the ServiceGateway object, the IORs for Directory object D and File object F 2 can be extracted. Given the IOR for F 2 , the file data for F 2 can be acquired from the data module carrying the F 2 object. Given the IOR for D , Directory object D can be extracted, from which the IORs for F and F 1 can be obtained. Similarly, given the IOR for F and the IOR for F 1 , the file data for F and F 1 can be acquired. Thus, the IORs for objects in the directory structure are acquired in the following sequence: IOR-SG, IOR-D , IOR-F 2 , IOR-F and IOR-F 1 . Apparently, once an IOR of an object is obtained, the object can then be retrieved from the stream. Figure 11.13. Acquiring a simple directory structure.
If the directory structure is not a strict tree, but rather a more general acyclic graph, the process is just a little more complex. Some bookkeeping is required to avoid acquiring the same object more than once, and to keep track of the multiple URIs associated with some objects (resulting from the multiple paths leading to them from the service gateway). An IOR that refers to an object within the same DCM-CC file system (DSM-CC object carousel) contains a BIOPProfileBody that contains the information necessary to locate the BIOP messages that convey the object data and attributes. This BIOPProfileBody comprises an ObjectLocation component and a ConnBinder component. The ConnBinder component always includes one TAP that tells where to find the DII message that conveys the module delivery parameters of the module containing the object. For simplicity, the tapUse field should be set to BIOP_DELIVERY_PARA_USE and the tapId field of this tap is not used. The association_tag field of this TAP is an indirect reference to the program element containing the DII message. The selector field of the TAP gives the transactionId of the DII message and also the timeout interval for acquiring the DII message, namely the maximum interval between transmissions of the message. A DII message is uniquely determined within a virtual channel by its carouselId and transactionId . Thus, the receiver can use the association_tag value in the BIOP_DELIVERY_PARA_USE TAP of the ConnBinder component to identify the program element containing the DII message, and then use the transaction_id in this TAP and the carouselId from the ObjectLocation component to identify the DII message within the program element. It can then use the moduleId to identify the entry in the DII message giving the delivery parameters for the DDB messages carrying the desired module. Figure 11.14 illustrates the process of using the information in the IOR to acquire the object. Figure 11.15 explains how the DII message could be located given the information specified in a TAP. From the DII message pointed to the TAP in a directory entry the receiver can get a TAP identifying the program element containing the DDB messages, and it can use the carouselId and moduleId to identify these DDB messages within that program element. It also gets the block size (size of the payload of each DDB message), total module size, module version, and various time-out parameters. With this information it can allocate buffers of appropriate size, make sure it has acquired all the blocks of the module, and use the time-out intervals to detect errors in transmission. Figure 11.14. Acquiring an Object from a DSM-CC Object Carousel.
Figure 11.15. The use of TAPs for locating a program element.
Once the receiver has acquired the module containing the object, it can proceed to parse the module from the top down looking for the correct object, as identified by its objectKey . If the objectKey is not the desired value, the value of the message_size field in the object message is used to get the start index of the next BIOP object message in the same data module. This is done until an objectKey in the MessageSubHeader structure of a target BIOP object message is found that matches the desired value. 11.2.7.1 Remote Object ResolutionAs explained earlier, an IOR that refers to an object from another DCM-CC file system contains a LiteOptionsProfileBody that provides the information necessary to locate the ServiceGateway of the remote file system, plus the logical directory path in that file system from the service gateway to the object itself. This information comes in the form of a ServiceLocation component that provides a carouselNSAPaddress and a sequence of bindings representing a path from the service gateway to the referenced object. The steps for resolving the NSAP address in ATSC A95 transports are described in Figure 11.16, where the numbers within the circles denote step number. The resolution process would be straightforward if there was no possibility that the remote transport stream may have been involved in a remultiplexing operation without the knowledge of the server that generated the IOR. The NSAP address is a unique identifier for the service domain. This identifier includes TSID, OriginalTSID , ProgramNumber , sourceId , OriginalSourceId , and carouselId fields that allow a receiver to locate the service gateway for the service domain. The OriginalTSID and OriginalSourceId fields are the TSID and sourceId of the virtual channel in which the remote file system was originally broadcast. The DST is the A90 table used to bind data (step 6); its DVB equivalent is the AIT. Figure 11.16. Acquiring the Service Gateway from its NSAP Address.
As illustrated in Figure 11.16, a receiver goes through the following steps:
These steps are needed to locate a service gateway from its NSAP address in the case when the TSID and program_number in the NSAP address are correct, either because there has been no remultiplexing of the target virtual channel, or because the NSAP address has been corrected in some way to reflect the remultiplexing. Once the service gateway is acquired, it is a simple matter to walk down the directory hierarchy to the desired object, matching a name in the desired path to a directory entry at each step, picking up the corresponding IOR, and resolving it according to the process in section B.1 to get to the next object down the hierarchy. The resolution process becomes more complex if the path was in the form of a single URI, instead of a sequence of path terms. Additional complications arise when the value of TSID and possibly sourceId of the remote file system have changed because of a remultiplexing operation, and the server that generated the IOR containing the NSAP address was not aware of the change. In such a situation the receiver is not able to find a match for the TSID in the channel map, because transport streams should be unique at a regional level, and a remultiplexed transport stream should never retain the transport stream of any of the original input streams. 11.2.7.2 URI ResolutionThe IOR and URI namespaces and usage patterns are linked by a URI resolution mechanism. Although not required by the DSM-CC specification, it is recommended that the service gateway contain a base-URIs for each entry, which serves as the base-URI for all the files and directories in the subtree rooted at that entry. To resolve the URI, take, as input, the URI to be resolved, and perform the following steps (the output is the requested file data.):
This description assumes that the data service and the DST (or AIT) application containing the file are known. If this assumption does not hold, the receiver must perform this algorithm for all applications in the DST (or AIT). This usually demands little extra effort. If the data service is not known, the receiver must scan through all the virtual channels it can receive, and perform this algorithm for every DST application of every data service it encounters until is succeeds in finding the file. It is further assumed that there no caching is performed, i.e., there no service information is being kept in memory by any means. When an intelligent caching mechanism is employed, which caches all Directory objects, steps 17 could be performed directly from memory without significant latency. |