IP组播和分布式系统组通信

IP组播和分布式系统组通信

Risun, 2004-6-17

 

在分布式系统中,经常会出项从一台主机(或进程)向网络上所有或者部分主机(或进程)发送消息的情况(例如:……)。显然,可以通过在发送断分别向每一台主机发送消息来实现这个需求,这样造成网络上大量重复数据流。在这种情况下,通常采用广播和组播。IP广播和组播只适用于UDP数据的传输(TCP数据流的传输需要端到端的连接)。

IP广播和组播

网络数据过虑流程

1:接受数据帧时协议栈的过虑流程

Cable上的数据帧对于次链路上的每个接口卡是可见的;

Card interface检测数据帧,如果mac地址吻和-通常本卡地址或者broadcast地址,或者配置接受的multicast地址,接受数据帧,如果CRC检测正确,数据帧交给device driver

Device driver根据相应的协议type将数据交给IP层或其他协议层;

IP检测数据包的源地址和目标地址,将数据包传到上层(tcp/udp);

 

UDP层检测数据包的端口发送到相应的进程或丢弃。对于broadcast数据包,对此数据包不感兴趣的主机通常在udp层才能因为不能找到接受端口而丢弃数据包;multicast数据包一般在device driver层,有的甚至能够在card interface层就被丢弃,省略了很多不必要的开销。

Broadcast ip地址和mac地址

IP地址:

Limited Broadcast255.255.255.255,用于局域网内的广播,路由器不会转发这样的数据包;

Net-directed Broadcastnetid.255.255.255,用于向特定网络内的广播,一般的路由器需要转发数据包;

SubNet-directed Broadcastnetid.subnetid+all hosted as 1,用于特定子网内的广播;

Mac地址:

Broadcastmac地址为:ff:ff:ff:ff:ff:ff。(可以把它看作一特殊的multicast地址)

 

Multicast的地址

IP地址:

Multicast group:同一个multicast group内的主机可以接受发到此group的数据包。每个group有一个ip,主机可以选择加入一个和多个group中。

Multicast group的地址:

2

 

Mac地址:

用于ip multicast mac地址范围:01005e00000001005e7fffff

multicast group addressmac地址的转化如下图3

从这个转化可以看出,可能出现一个mac地址对应多个ip address的情况,这要求在IP进行相应的数据过虑。

 

组通信

组播的消息提供了构造具有下列特征的分布式系统的基础结构,

1 基于复制服务的容错

       每一个客户请求被组播到组的每一个成员服务器,执行相同的操作;

2 在自发网络中找到发现服务器

3 通过复制的数据获得更好的性能

       数据副本保存在客户机,每次数据修改时,新的值被组播到所有管理数据副本的进程

4 事件通知的传播

      

基本组播:

组播原语B-multicast(g,m);对应的传递原语,B-deliver(g,m)。与IP组播不同,它保证只要组播进程不崩溃,组内的真确进程一定会传递消息。

 

实现方式:

1 可靠的一对一通信

B-multicast:对于任意进程p属于组g, send(p,m);

进程B-deliver时,执行receive(m)

 

2 利用IP组播实现

(考虑)

可靠组播

R-multicast(g,m),R-deliver(m)

可靠组播和基本组播的不同在于:可靠组播要求对于组内的任一个正确进程deliver消息m,则组内的其他正确进程必然deliver消息mB-multicast时进程出现故障时,即违反此规则。

由此,可靠组播的性质如下:

完整性:一个正确的进程P  deliver一个消息m至多一次,P属于group(m)msender(m)提供给一个组播操作;

有效性:如果一个正确进程multicast 一个消息m,那么它终将deliver 消息m

协定:如果一个正确的进程deliver一个消息m,那么group(m)中的其他正确进程终将deliver消息m

 

B-mulitcast实现可靠组播

关键一点就是实现R-multicast协定性质,要求每个进程在R-deliver一个消息m之前B-multicast这个消息。

 

IP组播实现可靠组播

组合使用IP组播、捎带确认、否定确认法。

每个进程p对于它属于的组g维持一个顺序数Sgp,表示它发送消息的顺序数,从0开始,还记录了Rgq,即它最近deliver的来自进程q并且发送到组g的消息的顺序数,算法的详细描述见【1Page-331

 

有序组播

对于组播消息具有顺序要求,基本可分为以下几种及其组合:

FIFO排序,如果几个进程multicast(g,m)之后multicast(g,m’),那么任何正确进程在deliver 消息m’之前deliver 消息m

因果排序,如果multicast(g,m) > multicast(g,m’),其中 >是发生在先关系窃只有g的成员之间发送的消息引起,那么任何deliver m’的正确进程将在m’之间deliver m

全排序,如果一个正确的进程在deliver m’deliver m,那么任何其他deliver m’的正确进程将在m’之前deliver m

相应的实现算法描述参见【1Page-335-338

【1】       分布式系统概念与设计,金蓓鸿 机械工业出版社 2004, 01

【2】       TCP/IP Illustrated, Volume 1:The Protocols, W.Richard Stevens 机械工业出版社 2002,01

posted on 2004-06-21 00:05  哲学 艺术 程序 人生  阅读(2492)  评论(0)    收藏  举报

导航