DVB-IP业务发现和选择
发布时间: 2022-06-13 15:23:36
一、电子节目指南
在介绍业务发现和选择之前,首先介绍将DVB业务呈现给用户的电子节目指南。欧洲在J.200标准中对EPG的定义是一个电子节目表单。它是通过在TS传输流中插入DVB标准定义的业务信息SI,当机顶盒收到TS流后,从中抽出节目提供商提供的节目列表和播出参数,通过机顶盒内部的处理软件(通常是一个中间件)将节目信息经过排列和归类,以人性化的方式呈现给数字电视用户,使得用户可以方便地接收、选择数字电视节目。
1.EPG信息
EPG信息由两部分信息组成:基本EPG信息和扩展EPG信息。
基本EPG信息是指以文本格式表示的与节目描述有关的网络信息、节目群信息、业务描述信息和事件信息,可以通过GY/Z174-2001中规定的NIT、BAT、SDT和EIT进行表示和传输(见附录Do
扩展EPG信息是在基本EPG信息基础上的扩充,包含了基本EPG信息的全部内容。扩展EPG信息中可包含多种媒体文件格式表示的与节目描述有关的信息。当用于数字电视平台之间交换EPG信息时,按XML格式描述全部EPG信息。这些信息的入口釆用EPG映射表(EMT)进行描述,信息的内容被封装成具有多级目录结构的文件系统,称为扩展EPG内容信息。在数字电视节目的播出过程中,可以加入辅助的SI信息,供机顶盒解码器的开发者来实现多样的导航功能。利用机顶盒收看数字电视节目,用户通过EPG不仅能够接收普通的电视节目、广播节目或图文电视节目,而且还可以查看感兴趣的信息,比如:按节目分类(如音乐节目、体育节目、电影等)检索节目、按节目提供者检索节目、査看未来一段时间内节目播出表以及视频网络中节目播出情况等信息。在EPG系统中,基本EPG信息是必需的,扩展EPG信息是可选的。
2.PSI/SI信息及其功能
MPEG-2中的TS是根据ITU-TRecH.220JSO/IEC13818-3协议定义的一种数据流,以保证在有误码或分组丢失的网络上传送一道或多道码流时能够正确地恢复和显示。TS中有关PID的信息及各PID之间的关系包含在节目特定信息(ProgramSpecificInformation,PSI)中,MPEG-2解码器将使用PSI信息来自动设置解码所需的各种参数。MPEG-2在PSI中提供了不少有关节目组成和相互关系的信息,从而使得在接收端可以正确地对TS流进行解复用。但是这些信息在实际使用时仍然显得不够,为此在DVB标准中采用SI信息对PSI信息进行了进一步的扩展。PSI中的信息基本上都是与当前码流相关,它们所涉及的内容都与当前码流中的部分信息相关;而SI信息可以包括不在当前码流中的一些服务和事件,允许用户进行更多的选择和了解更多的其他服务。
SI信息被用来描述传送系统、传送内容和广播数据流时间表等的数据,是补充MPEG-2中PSI的附加数据,这些数据帮助IRD自动调谐,给用户提供附加信息,使IRD能自动设置可供选择的业务。头端系统每隔一定周期将重复传送SI信息,对于最高速率为100Mbit/s的传送流而言,重复传送SI信息的最小间隔为25ms。这样,对于刚开机的用户,在很短的时间内就可以接收到SI,从而可以较快地呈现EPG。用于传送PSRSI信息段和EPG信息段的TS包中的PID值见表4-1。
表4-1 TS包包含的PID值表
3.EPG的实现过程
大多数机顶盒产品通常采用从PAT表-*PMT表fNIT表fSDT表—EIT表解析构造EPG。解复用器通过寻找PAT表来得到传送流中各个节目PMT的PID,并且得到PID号,根据PID号及对应的TableID值可以从流中解出相应的PMT、NIT、SDT、EIT等信息。机顶盒通过对这些SI数据的解析来构建EPG。
用户通过SI来对节目进行搜索和选择。在选择一个节目时,首先要査找BAT,根据BAT的名称给岀一系列的节目种类,比如新闻、体育、电影、音乐等,然后选择自己感兴趣的类型。在这个过程中,EPG需要找到服务所对应的传输流,并且根据BAT中所对应的传输流标识符查找NIT中传输流的描述,直到找到相应的传输流标识符所对应的描述,根据描述子中的参数(如频率、调制方式等)将IRD调到相应的播出频道,就可以解出传输流,再根据BAT中得到的服务标识符在当前的传输流的SDT中査找有关服务的信息,然后用户就可以选择服务了。
4.业务导航/指南的方式
DVB业务的SI信息是随着TS流传输到用户端设备的,用户端的STB接收到TS流后,从流中提取出SI信息,然后再由机顶盒的中间件对这些信息进行处理,并且以友好的界面呈现给用户,这就是EPG。数字电视的业务通常都是以频道为单位来组织和呈现的,其优点和缺点都是显而易见的。它保留了传统电视在节目的显示和切换方面的所有优点,但同时,这种业务信息与业务流一起传递的方式是一种单向的流动,因此,数字电视在业务的交互方面受到了很大的限制,它不能满足目前
IPTV业务的多样性,特别是交互式的增值业务的需求。因此,国内对有关的EPG定义和功能进行了重新定义和扩充,形成了IPTV业务导航系统。业务导航系统从功能上可以分为:Web表现层、系统和业务逻辑层和应用服务层。Web表现层主要是与用户交互的呈现,负责向用户展示交互界面和响应用户的请求,并能支持根据不同的用户属性下发相对应的导航界面,这一层是对数字电视的图形层(OnScreenDisplay,OSD)的扩展;系统和业务逻辑层是导航系统的核心功能层,主要完成系统的业务逻辑功能,包括用户的业务请求莉管理节目元信息(Metadata),提供与应用服务层以及增值业务服务系统的接口。应用服务层通过和内容管理系统/运营支撑系统的交互,完成用户的认证、计费、业务鉴权等一系列的应用。因此,中国的业务导航系统是一个不受传输流限制的系统,可以单独部署,并且可以呈现丰富多彩的业务,极大地满足了交换性的要求。下面分别介绍这两种业务导航的机制。
二、业务发现和选择
欧洲的DVB业务基于全IP网络,因此,SP/CP怎样将内容上传到网上,业务和内容如何管理,终端机顶盒如何发现网络上的业务提供者和他们提供的业务,用户如何选择和使用业务等,这些都是DVB-IP需要解决的问题。业务发现基于双向IP网络,业务发现的结果是给用户呈现一个业务列表,并且提供足够的信息使用户能够选择和使用业务,选择是在用户确定看什么节目后完成的。这里的业务主要是媒体的直播和点播业务。直播业务又分为两类:DVBSI信息嵌入在传送流中的直播业务(即“TSFullSI”)和SI不在带内的直播业务
(除了MPEGPSI外)(即“TSoptionalSI")O“TSFullSI”主要用于业务提供者选择了传统的基于IP的DVB广播数字电视流,采用IP传输,数字电视运营商接收来自卫星的数据后用线缆发送到用户。在这种方式下,业务提供者需要提供的信息量是最小的。单个业务的信息是在传输流到达接收端后获得的。“TSOptionalSI”用于复杂的情况,这时业务提供者需要展示它们所提供的业务,但是又不能像通常的业务描述信息那样占用或消耗带宽。业务发现信息需要提供业务的位置以及每个业务的相关信息。DVB定义了两种传输模型,分别是业务发现信息的“推”和“拉”模型,两种模式都支持相同的信息。业务发现信息用XML表达和携带,XML机制描述了它们的语法和句法。
1.业务提供者
业务提供者用它注册和获得的DNS域名来唯一标识。互联网DNS域名的组织管理是全球唯一的,因此基于文本的SP标识符是全球唯一的名称。有两个基本的方法来标识一个业务:
(1)三元数字标识符:最初的网络ID,传输流ID和业务ID。
(2)文本业务标识符。
两种方式可以唯一标识一个业务。这里的三元组(最初的网络ID,传输流ID,业务ID)可以区别由不同的网络承载的相同业务。文本业务标识符的语法如下:
〈业务名〉"."〈业务提供者域名〉
〈业务名〉是业务提供者域里业务的唯一名称。〈业务名〉域需要遵守RFC1035规定的互联网DNS名称定义;〈业务提供者域名>是~个互联网DNS域名,业务提供者可以控制。比如SPCANAL+由域名"canal-plus,com”来标识,一个sport业务可以分配一个“canalplussport,canal-plus,com”名称,这个文本可以唯一标识这个业务。
2.业务发现和选择(SD&S)记录
SD&S信息是数据类型。SD&S信息与业务提供者有关,有4类SD&-S信息。这些不同类型的SD&S信息可以用一个8bit的负载标识符(PayloadID)来标识。
SD&S记录分片。SD&S釆用XML记录来描述,XML记录是一个庞大的体系,HNED只用到其中的一部分。分片通过SD&S信息的上下文来定义(比如分片被定义为一个确定的负载标识);分片使得SD&-S记录可以作为较小的单位被管理。
片是一个经过定义的、有效的XML记录。XML记录被分片(一个记录也可以被分为单个的片)。每个分片有一个片ID来标识(16bit的值)。用一个8bit值来定义一个片的当前版本,这个版本号是负载ID和片ID的关键信息。因此,当一个片内的数据变化时,它的版本号(称为片版本)应该增加。未变化的片的片版本不需要改变。片版本号是256的模数。包含了业务提供者发现信息的记录在“pullmode”模式时不需要分片。对一个业务提供者来说,传输一套完整的SD&-S信息中所有片所需要的时间长度称为时间周期,最大的时间周期设定为30s。记录、负载标识和片之间的关系如图4-8所示。
图4-8 记录、负载标识和片之间的关系图
3. 业务发现的歩骤
业务发现过程是从发现业务提供者(提供基于IP网络的DVB业务)开始的,接下来发现每个业务提供者所能提供的业务。业务发现的数据模型如图4-9所示。
图4-9 DVB-IP业务发现信息的数据模型
业务提供者发现信息能够发现业务提供者。业务提供者通过发布业务发现信息来发布业务。业务包括广播和点播业务。“TS-全SI广播发现信息”元素用于全DVBSI在带内的情况。“TS可选SI广播发现信息”元素用于业务描述信息不在带内的情况。“CoD发现信息”用于业务提供者描述内容点播的情况。“包发现信息”用于业务提供者将他们的业务进行分组,并且作为一个整体来提交。包信息不提供新业务,它参考了广播和CoD的发现信息模型。业务的附加信息通过与包相关的上下文来提供。
通过图4-9的数据模型,头端系统首先生成业务提供者的列表,然后通过获取每一个SP的业务发现信息来建立下一阶段的DVB-IP业务列表。模型允许进入点是某个特定SP的业务发现和选择进入点,在这种情况下,这个SP的其他信息以及业务列表可以在同样的位置获得。如果增加新的SP,只需要增加新的业务发现信息,所以模型很容易扩展。业务发现包括3个步骤,如图4-10所示。
图4-10 业务发现的步骤
(1)业务发现进入点
业务发现过程首先要确定进入点。业务发现和选择(SD&S)进入点可以是下列的一种:
①在IANA注册过的、众人皆知的多播地址224.0.23.14(DvbServDisc);
②根据业务定位的RFC2782,SD&S进入点的地址列表可以通过DNS获得。
业务名是_dvbservdsc,协议可以是TCP或UDP,名称的其余部分是由DVB组织来维护的域名;这个域名设定为services,dvb.org,因此查找时只会出现_dvbservdsc._tcp.services.dvb.org 或 dvbservdsc._udp.services,dvb.org。DVB组织维护services,dvb.org域名,新进入的业务提供者需要向DVB注册以便将它们加到DNSSRV列表中。HTTP服务器通过TCP协议发现它,多播地址通过UDP协议发现。因此,要求头端支持由RFC2782规定的、可认知的SRVDNS客户端。当头端接入到网络去请求它自己的地址(比如在DH-CP期间)时,它就可以通过DHCP选项15来获得域名,进入点的地址由配置的DTD中的sdEntries元素来指定。
根据优先级,当搜索到一个进入点满足下面的条件时,头端将停止搜索新的进入点:
①如果有网络提供选项,那么SD&S进入点要有来自于DTD的元素sdEntries。如果元素为空,表明没有找到进入点,转入下一步。
②DHCP选项15返回的域名结合前述的DNS机制。如果这个方法不能解析出一个或多个有效的域名或者返回错误,那么搜索进入下一步。
③使用前面由DVB构建的DNS方法,如果这个方法不能解析出一个或多个有效的域名或者返回错误,那么搜索进入下一步。
④头端加入已注册的IANA多播地址,如果在两个最小的SD&S信息发送周期内没有接收到有效的DVBSTP包,那么进入下一步搜索。
⑤如果经过上面的所有步骤没有发现进入点,应该提供选项供用户手动输入URL或IP地址以及可选的端口号。
(2)业务提供者发现信息
业务提供者发现信息可以是多播(推模型)或者需求检索(拉模型)。业务提供者发现信息记录可以携带几个业务提供者的发现信息。比如,一个HTTP请求就可以找到一个完整的业务提供者列表。业务提供者发现记录包括:业务提供者域名、版本号、多业务提供者名字、多业务提供者描述、业务提供者Logo、位置、负载ID、片ID列表和它们的版本号。
(3)DVB-IP业务发现信息
业务发现信息由业务记录来表示。DVB-IP业务记录至少包含业务提供者域名、版本号。一个业务提供者的业务包括典型的广播业务(“TSFullSI”和“TSOptionalSI”)和内容点播业务。业务提供者也可以参考由其他业务提供者提供的业务。
(4)广播发现记录
“TSFullSF'广播发现记录提供一切必要的信息来发现广播业务(包含有SI)。“TSFullSI”发现信息包括:业务位置描述、业务、业务标识、文本业务标识、业务提供者域名、业务主机名、DVB三元组、最初网络ID、TSID、业务ID、最大码率、业务定位符JGMP协议、端口、源地址、RTSP协议。
“TSOptionalSI”广播发现记录提供一切必要的信息来创建一个可以使用的业务列表,并且提供足够的信息让用户来选择和使用业务。使用的记录包括:业务定位描述、业务标识、文本业务标识、业务提供者域名、业务主机名、DVB三元组、最初的网络ID、传输流ID、业务ID、多业务名、内容描述/种类、业务类型、最大码率、可用的国家、业务替换描述子、马赛克描述子、主要的SI源。
(5)内容点播发现记录
内容点播发现记录提供所有必要的信息来发现在网络上可用的CoD服务器以及它们的内容列表位置。CoD发现记录包括:CoD业务、CoD提供者ID、多CoD业务名、多CoD业务描述、CoD定位描述。
(6)“来自其他业务提供者的业务”记录
一个业务提供者能够引用来自另一个业务提供者的一个或者多个业务。通过使用文本业务标识来参考该业务,包括:业务提供者、业务提供者域名、业务列表、业务主机名。
(7)包发现记录
包发现记录提供一种机制来收集带标记的业务,或者将业务分组后打包。这些记录包括:包、包标识、多包名、包定位描述、对应的国家、业务列表、业务提供者域名、业务主机名、业务定位描述。
4.业务发现的具体过程
每一个STB需要一个IP地址,可以通过DHCP服务器获得。对于仅仅动态寻址的STB,需要IP地址、子网掩码、DNS服务器地址、默认网关、网关;如果需要的话,还包括WINS/NetBIOS。动态主机配置协议(DHCP)由许多有相同固定格式的消息组成,消息包含了可变长的选项,以便允许消息携带除了IP地址之外的其他信息。这里把DHCP客户端的规范分为“消息”和“选项”两部分。
(1)DHCP消息
DHCP客户端支持所有的RFC2131和RFC2132消息。经过对RFC3203协议的重新修改配置,服务器能对网络中的终端重新配置IP地址。如果服务器对IP地址作了修改,那么终端视同为网络设备的初始化启动。DHCP要求一个客户端标识符,在以太网或基于以太网的产品中就是MAC地址。如果使用IEEE1394,根据RFC2855,对消息要进行修改,并且使用EUI-64来保证这个标识符的唯一性。
(2)DHCP选项
DHCP选项码(在1到254之间)被分为两个部分。与站点相关的选项码(128〜254)被定义为“私用”,依赖于具体实施;公共选项码(0〜127,255)由RFC定义。
在设备的启动阶段,需要检验DHCP中下一个服务器的“siaddr”字段。如果“siaddr”字段为0或者是一个无效的IP地址,那么没有相应的服务器,也没有数据需要发送。如果是一个有效的IP地址,那么根据拥塞避免机制以及HTTP1.1版的要求,需要发送下面的内容:
上述内容中的专有名词解释如下。
• devicelD:它被用于标识哪个终端需要这个信息。
• manufacturer:设备制造商的唯一名。如果制造商不想使用名称,那么就需要使用默认的“DVB4PI”类。如果制造商使用了一个名字,那么由该制造商所生产的所有不同型号都需要使用同样的名字。
• model:指某一个HNED的唯一型号名称。
• clientID:网管系统中的以太网接口MAC地址,或是IEEE1394接口的EUI-64标符。
• version:由销售商定义的字符串,唯一描述可能运行在HNED的软件。
• ram:终端使用的RAM大小。如果RAM为0,使用RAM的默认值,以千字节为单位。
• flash:是flash的大小或者只读内存的大小。
图4-11给出了DVB-IP业务发现的大致过程。①机顶盒需要初始化,比如本身的IP地址配置、SD&S服务器域名解析以便找到业务发现进入点;②DNS向机顶盒返回SD&-S服务器的地址;③机顶盒通过SD&-S服务器寻址可用的业务提供者;④SD&-S服务器返回多个业务提供者的信息(包括对用户不可见的IP地址);⑤机顶盒向SD&S服务器査询某个业务提供者的详细业务列表;⑥SD&S服务器返回指定业务提供者的详细业务列表。
图4-11 DVB-IP业务发现过程
(3)基于协议的业务发现过程片断
①机顶盒的网络配置
• STB向DHCP服务器发起一个带有DHCP消息的UDP请求
DHCPquery:DISCOVER,REQUEST...
option77:UserClass=dvb-ip-stb-video
...
• DHCP服务器用UDP返回一个DHCP消息
IPconfigurationparameters
yiaddr=@IP_STB
...
Options:
option15:DomainName="DNS_DomainName'
...
②DNS解析
• STB向DNS服务器发起一个带DNS查询消息的TCP/IP包。
DNSlookup
QNAME:<servicename〉.<protocol>.<domainname>
_dvbservdsc._tcp.DNS_DomainName
QTYPE SRV
QCLASS IN
• DNS服务器向STB返回一个带DNSRR消息的TCP/IP包
<Cdomainname>A<;IPaddress>
SD&S l_DomainNaineAIP_SD&S1
SD&S 2_DomainNameAIP_SD&S2
③发现业务提供者
• STB向HTTP服务器发起一个带GET消息的TCP/IP包
GET
/dvb/sdns/sp_discovery
id=ALL
Host=IP_SD&S
...
• HTTP服务器向STB返回一个带HTTP消息的TCP/IP包
〈XML〉
<ServiceProviderDiscovery〉
<SPDomainName="SPl_DomainName"…〉
〈Name…〉SPl_nameV/Name〉
〈PullLocation="http://SP/dvb/sdns"〉
<PayloadIdId="2"〉
<SegmentVersion="…"ID="0 ”/>
<SegmentVersion="•••"ID="1 ”/〉
<SegmentVersion=="2"/〉
...
</ServiceProviderZ>
<SPDomainName="SP2_DomainName"…〉
<Name…〉SP2_nameV/Name〉
<PullLocation="http://SP2/dvb/sdns">
<PayloadIdId="2">
〈SegmentVersion="…"ID="0"/〉
<SegmentVersion="…"ID="l”/>
<SegmentVersion="•••"ID="2"/>
...
</ServiceProvider>
...
</ServiceProviderDiscovery>>
</XML>
④业务发现信息的变化监控(比如请求获得每个片断的更新信息等)
• HTTP服务器向STB返回一个带HTTP消息的TCP/IP包
<XML>
<ServiceProviderDiscovery>
<SPDomainName=“SP_DomainNaine”・・・>
<Name…〉SP_nameV/Name〉
<PullLocation="http://SP/dvb/sdns"〉
<PayloadIdId="2"〉
<SegmentVersion="•••"ID="0"/>
<SegmentVersion="•••"ID="1"/>
<SegmentVersion="…"ID="2"/〉
...
</SP>
</ServiceProviderDiscovery>
</XML>
• S TB向HTTP服务器发起一个带GET消息的TCP/IP包
GET/dvb/sdns/servicediscovery?id=SPDomainName
&Host=@IP[http://SP/dvb/sdns]
GET/dvb/sdns/service_discovery?id=SP_DomainName
&Host=@IP[http://SP/dvb/sdns]
GET/dvb/sdns/service_discovery?id=SP_DornainName
&Host=@IP[http://SP/dvb/sdns]
• HTTP服务器向STB返回一个带HTTP消息的TCP/IP包
<XML>
<ServiceDiscovery...>
<BroadcastDiscoveryDomainName="SP_DomainName/">
<ServiceList〉
<ServicesDescriptionLocation>>http://www---services.html<C/Servic-esDescriptionLocation>
<SingleService〉
<ServiceLocation>
<IPMulticastAddress•••Address="IP_MulticastAddress_l"Port="port_value"/〉
</ServiceLocation>
<Textual Identifier DomainName="SP_DomainName'ServiceNaine="ServiceNamel_value"/〉
<DVBTriplet OrigNetld="ON_id_valuel"TSId="TS_id_valuel"
Serviceld="S_id_valueT/>
...
</SingleService〉
...
</ServiceList:〉
</BroadcastDiscovery>>
</ServiceDiscovery>
</XML>
⑤机顶盒选择/断开业务
• HTTP服务器向STB返回带HTTP消息的TCP/IP包
<XML>
<ServiceDiscovery*>
<BroadcastDiscovery DomainName="SP_DomainName">
<ServiceList>
<ServicesDescriptionLocation>
http://www...services.html</ServicesDescriptionLocation>
<SingleService>>
<ServiceLocation>
<IPMulticastAddress•••Address="lP_MulticastAddress_l"Port="port_value"/〉
</ServiceLocation>
<Textual Identifier DomainName="SP_DomainName"ServiceName="Service-Namel_value"/>
<DVBTripletOrigNetld="ON_id_value_l"TSId="TS_id_value_l"ServiceId="S_id_value_l"/>
</SingleService〉
</ServiceList>
</BroadcastDiscovery>
</ServiceDiscovery>>
</XML>
• STB向DSLAM发送带IGMP消息的TCP/IP包
LEAVE(1)
JOIN(1,@IP_MulticastAddress_l)
...
• 由DSLAM向STB返回一个带IGMP消息的TCP/IP包,该IGMP消息是一些确认消息
IP_Origin=@IP_MulticastAddress_l
IP_destin=@IP_STB
Encapsulated TS
TSpacket_1
OrigNetld=ON_id_value_l
TSId="TS_idKlue_l"
Serviceld="S_Id_value_lz,
Encapsulated TS
TSpacket_2
OrigNetld=ON_id_value_l
TSId="TS_id_value」"
Serviceld="S_Id_value_l"
EncapsulatedTS
TSpacket_3
OrigNetld=ON_id_value_l
TSId="TS_id_value_l"
Serviceld=S_Id_value_1"