现阶段通常采用的行情转发方式是基于tcp点播的机制。tcp点播机制下主机之间是“一对一”的通讯模式,网络中的交换机和路由器对数据只进行转发不进行复制。在此情况下,如果n个客户机需要相同的数据,则服务器需要逐一传送,重复n次相同的工作。随着客户机数量的不断增长,行情转发服务器将不堪重负,同时造成大量的网络带宽消耗。因此为了保证行情转发的公平性,优化行情转发速度,节约带宽资源,进一步探索了基于udp组播技术的行情转发机制。
组播传输:在发送者和每一接收者之间实现点对多点网络连接。如果一台发送者同时给多个的接收者传输相同的数据,也只需复制一份的相同数据包。组播方式它提高了数据传送效率,减少了骨干网络出现拥塞的可能性。
组播源:信息的发送者,不是组播组成员。
组播组:接收者的集合,使用一个组播IP地址来标示。
二层组播:组播报文在L2层传输,称为“二层组播”,相应的组播协议称为“二层组播协议”,包括IGMPSnooping/MLD Snooping。
三层组播:组播报文在L3层传输,称为“三层组播”,相应的组播协议称为“三层组播协议”,包括IGMP/MLD、PIM等。
组播地址:标准组织将D类地址空间分配给IPv4组播使用,范围224.0.0.0 ~239.255.255.255。
组播地址表:交换机在转发组播数据时是根据组播地址表来进行的。由于组播数据不能跨越VLAN传输,因此组播地址表的第一部分是VLAN ID,当交换机收到组播数据包时,数据包只能在接收端口所在的VLAN内转发。组播地址表对应的出口端口不是一个,而是一组端口列表。转发数据时,交换机根据组播数据的目的组播地址查找组播地址表,如果在组播地址表中查不到相应的条目,则把该组播数据广播,即向接收端口所在VLAN内的所有端口上转发;如果能查找到对应的条目,则目的地址应该是一组端口列表,于是交换机把这个组播数据复制成多份,每份转发到一个端口,从而完成组播数据的交换。组播地址表一般格式如图所示。
组播优势
在交换机中有三种通信方式:单播(unicast)、广播(broadcast)、组播(multicast)。单播解决了点对点通信的需求; 广播是点对多点的通信,其存在两个缺点:
1)只能在同一网段内实现广播;
2)不能指定目的主机,所有网段内的主机都将收到广播报文,存在带宽浪费。
组播也是点对多点的通信,完全克服了广播的两个缺点。组播协议的优势在于当需要将大量相同的数据传输到不通主机时,
1 、能节省发送数据的主机的系统资源和带宽;
2 、能够有选择地复制给又要求的主机;
3、可以穿越公网广泛传播,而广播则只能在局域网或专门的广播网内部传播 ;
4、节省网络主干的带宽。
因此,组播技术被广泛应用于网络电视、在线直播、远程教育、视频会议等对带宽和数据交互实时性较高的信息服务。
网络构架
如前文所述,在组播传输方式中,信息的发送者称为“组播源”,信息接收者称为该信息的“组播组”,支持组播信息传输的所有路由器称为“组播路由器”。 加入同一组播组的接收者成员可以广泛分布在网络中的任何地方,即“组播组”没有地域限制。需要注意的是,组播源不一定属于组播组,它向组播组发送数据,自己不一定是接收者。
假设只有 Host B、Host D 和Host E 需要信息,采用组播方式时,可以让这些主机加入同一个组播组(Multicast group),组播源向该组播组只需发送一份信息,并由网络中各路由器根据该组播组中各成员的分布情况对该信息进行复制和转发,最后该信息会准确地发送给Host B、Host D 和Host E。
服务器调优
因组播行情数据量巨大,网络负担重,行情转发服务器及行情接收客户端在行情转发和接收前需要进行调优。UDP组播方式转发及接收行情因使用UDP协议传送行情数据,理论上存在数据包丢失的可能性,通过修改优化一些服务器参数,可最大限度的避免或减少丢包现象。
此外,与tcp点播方式不同,接收端服务器需要添加到组播地址的路由,设置方法如下:
1、使用root用户新建文件"/etc/sysconfig/ network-scripts/route-生产网卡接口名",例如"/etc/sysconfig/network-scripts/route-eth0"
2、vi /etc/sysconfig/network-scripts/ route-生产网卡接口名,在文件中添加如下内容:
组播地址 dev 生产网卡接口名
组播源地址 via 生产网网关IP dev 生产网卡接口名
3、重启网络服务并确认静态路由添加成功。
目前公司已经在大连期货大厦和河口数据中心建设完成基于udp组播技术的行情转发环境。该环境经过测试验证,实盘行情转发丢包率小于0.00001%。基于udp组播技术的行情转发是组播技术与应用场景完美结合后在公司数据中心的又一次成功落地 。
来源:oschina
链接:https://my.oschina.net/blacklands/blog/3133665