实际通用组播协议(PGM)是一种可靠传输协议,用于需要从组播源到组播接收端的有序或无序、无重复的组播数据传送的应用程序。
PGM 主要是为有基本可靠性需求的组播应用程序提供的一种可行解决方案,而不是用于有复杂、有序、一致和健壮性需求的组播应用程序。它的中心设计目标是为可扩展性及网络效能提供简单化操作。
PGM 并不了解组成员,它只是根据纯粹的本地策略,由源地址预先在一个传输窗口提供可靠的组播数据发送。从接收端加入组直到它离开,在源传输窗口需要提供可靠传送。PGM 确保组中的接收端可以收到来自传输和修复的所有包,或可以发现到不可修复的数据包丢失。PGM 支持一个组播组中的任何数目的源地址,每一个由全球性的唯一传输会话标识符(TSI)来识别。但是由于这些源/会话彼此之间完全独立操作, 所以需要根据单个的源表述这个规范,并可在不需要更改复合源的情况下扩展此规范。
更为明确的是,PGM 并不特意用于那些依赖于已知接收人组的确认传送,或依赖于复合源间的整个排序的应用程序。PGM 最适用于那些成员可以随时加入和离开的程序,它们要么对不可修复的数据包丢失不敏感,要么在事件中准备采取应用程序恢复。通过它的可选项扩充,PGM 提供了明确的机制支持与消息更新、数据谈判、低延时实时视频传输及批数据传输完全不同的应用程序。
协议结构
PGM 头:
| 16 | 32 bit | |
| Source Port | Destination Port | |
| Flags | Options | Checksum |
| Global Source ID | ||
| Global Source ID | TSDU Length | |
| Data | ||
- Source Port ― 数据目标端口
- Destination Port ― 数据源端口
- Flags ― 各位定义如下所示:
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| Version | 0 | 0 | Type | ||||
- Version ― PGM 版本号
- Type ― 信息类型
- Options ― 各位定义如下所示:
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| E | N | T | P |
E:Option 扩展,1 bit
N:Options 是重要网络,1 bit
T:可变大小数据包的传输组中,其数据包是奇偶数据包,1 bit
P:数据包是奇偶数据包,1 bit
- Checksum ― 差错检测
- Global Source ID ― 全球唯一的源标识符
- TSDU Length — 传输数据单元的二进制长度(不包括传输头部)
- Data ― 可变长
组织来源:PGM 是由 IETF (http://www.ietf.org)定义的一种试用协议。
相关链接:http://www.javvin.com/protocol/rfc3208.pdf:PGM Reliable Transport Protocol Specification


