-
2020-10-24 00:06:06
m
更多相关内容 -
组播报文收发方法及系统与流程
2021-05-24 09:32:41一种组播报文收发方法,其特征在于,应用于组播报文收发系统,所述组播报文收发系统包括网管服务器、第一无管理交换机和/或第二无管理交换机、第一有管理交换机、第二有管理交换机、信息发送端以及信息接收端,所述...技术特征:
1.一种组播报文收发方法,其特征在于,应用于组播报文收发系统,所述组播报文收发系统包括网管服务器、第一无管理交换机和/或第二无管理交换机、第一有管理交换机、第二有管理交换机、信息发送端以及信息接收端,所述网管服务器与所述第一有管理交换机、所述第二有管理交换机均建立通信连接,所述组播报文收发方法包括:
所述网管服务器读取所述第一有管理交换机、所述第二有管理交换机的地址解析协议表项、MAC地址表项,以获取所述组播报文收发系统的网络拓扑结构;
所述网管服务器依据所述网络拓扑结构发送第一通知至所述信息发送端,和/或发送第二通知至所述第二有管理交换机,所述第一通知为以第一单播MAC地址为目的MAC地址来发送组播报文的通知,所述第二通知为以第二单播MAC地址为目的MAC地址来发送组播报文的通知。
所述信息发送端在接收到第一通知后,获取作为发送组播报文目的MAC地址的第一MAC地址,并将所述携带有第一MAC地址的组播报文发送至所述第一无管理交换机,所述第一无管理交换机依据所述第一MAC地址通过所述第一有管理交换机发送组播报文至所述第二有管理交换机;
和/或所述第二有管理交换机在接收到第二通知后,获取作为接收组播报文目的MAC地址的第二MAC地址,并将携带有第二MAC地址组播报文发送至所述第二无管理交换机,所述第二无管理交换机依据所述第二单播MAC地址发送所述组播报文至所述信息接收端;
其中,第一MAC地址为所述信息发送端在接收到第一通知后获取到的第一单播MAC地址和/或第二MAC地址为所述第二有管理交换机在接收到第二通知后获取到的第二单播MAC地址。
2.根据权利要求所述的组播报文收发方法,其特征在于,在所述网管服务器依据所述网络拓扑结构发送第一通知至所述信息发送端,和/或发送第二通知至所述第二有管理交换机的步骤之前,所述方法还包括:
所述网管服务器依据所述网络拓扑结构判断所述信息发送端、所述第一有管理交换机之间是否通信连接有所述第一无管理交换机和/或所述信息接收端、所述第二有管理交换机之间是否通信连接有所述第二无管理交换机;
所述网管服务器依据所述网络拓扑结构发送第一通知至所述信息发送端,和/或发送第二通知至所述第二有管理交换机的步骤包括:若所述信息发送端、所述第一有管理交换机之间通信连接有所述第一无管理交换机和/或所述信息接收端、所述第二有管理交换机之间通信连接有所述第二无管理交换机,所述网管服务器依据所述网络拓扑结构,发送第一通知至所述信息发送端,和/或发送第二通知至所述第二有管理交换机。
3.根据权利要求2所述的组播报文收发方法,其特征在于,所述网管服务器依据所述网络拓扑结构判断所述信息发送端、所述第一有管理交换机之间是否通信连接有所述第一无管理交换机和/或所述信息接收端、所述第二有管理交换机之间是否通信连接有所述第二无管理交换机的步骤包括:
所述网管服务器查看所述第一有管理交换机的每个接口是否学习到至少两个MAC地址,如果是,则判定所述信息发送端、所述第一有管理交换机之间通信连接有所述第一无管理交换机;
和/或所述网管服务器查看所述第二有管理交换机的每个接口是否学习到至少两个MAC地址,如果是,则判定所述信息接收端、所述第二有管理交换机之间通信连接有所述第二无管理交换机。
4.根据权利要求1所述的组播报文收发方法,其特征在于,所述第一单播MAC地址为所述第一有管理交换机的MAC地址,所述第一无管理交换机依据所述第一MAC地址通过所述第一有管理交换机发送组播报文至所述第二有管理交换机的步骤包括:
所述第一无管理交换机接收到组播报文后,依据所述第一有管理交换机的MAC地址发送组播报文至所述第一有管理交换机,所述第一有管理交换机在接收到组播报文后判断接收到的第一单播MAC地址是否与自身的MAC地址一致,如果是,则将组播报文发送至所述第二有管理交换机。
5.根据权利要求1所述的组播报文收发方法,其特征在于,所述第二单播MAC地址为所述信息接收端的MAC地址,所述第二无管理交换机依据所述第二单播MAC地址发送所述组播报文至所述信息接收端的步骤包括:
所述第二无管理交换机接收到组播报文后,依据所述信息接收端的MAC地址发送组播报文至所述信息接收端。
6.一种组播报文收发系统,其特征在于,所述组播报文收发系统包括网管服务器、第一无管理交换机和/或第二无管理交换机、第一有管理交换机、第二有管理交换机、信息发送端以及信息接收端,所述网管服务器与所述第一有管理交换机、所述第二有管理交换机均建立通信连接,
所述网管服务器用于读取所述第一有管理交换机、所述第二有管理交换机的地址解析协议表项、MAC地址表项,以获取所述组播报文收发系统的网络拓扑结构;
所述网管服务器还用于依据所述网络拓扑结构发送第一通知至所述信息发送端,和/或发送第二通知至所述第二有管理交换机,所述第一通知为以第一单播MAC地址为目的MAC地址来发送组播报文的通知,所述第二通知为以第二单播MAC地址为目的MAC地址来发送组播报文的通知;
所述信息发送端用于在接收到第一通知后,获取作为发送组播报文目的MAC地址的第一MAC地址,并将所述携带有第一MAC地址的组播报文发送至所述第一无管理交换机;
所述第一无管理交换机用于所述第一无管理交换机依据所述第一MAC地址通过所述第一有管理交换机发送组播报文至所述第二有管理交换机;
和/或所述第二有管理交换机用于在接收到第二通知后,获取作为接收组播报文目的MAC地址的第二MAC地址,并将携带有第二MAC地址组播报文发送至所述第二无管理交换机;
所述第二无管理交换机用于依据所述第二单播MAC地址发送所述组播报文至所述信息接收端;
其中,第一MAC地址为所述信息发送端在接收到第一通知后获取到的第一单播MAC地址和/或第二MAC地址为所述第二有管理交换机在接收到第二通知后获取到的第二单播MAC地址。
7.根据权利要求6所述的组播报文收发系统,其特征在于,所述网管服务器还用于依据所述网络拓扑结构判断所述信息发送端、所述第一有管理交换机之间是否通信连接有所述第一无管理交换机和/或所述信息接收端、所述第二有管理交换机之间是否通信连接有所述第二无管理交换机;
若所述信息发送端、所述第一有管理交换机之间通信连接有所述第一无管理交换机和/或所述信息接收端、所述第二有管理交换机之间通信连接有所述第二无管理交换机,所述网管服务器用于依据所述网络拓扑结构,发送第一通知至所述信息发送端,和/或发送第二通知至所述第二有管理交换机。
8.根据权利要求7所述的组播报文收发系统,其特征在于,所述网管服务器用于查看所述第一有管理交换机的每个接口是否学习到至少两个的MAC地址,如果是,则判定所述信息发送端、所述第一有管理交换机之间通信连接有所述第一无管理交换机;
和/或所述网管服务器还用于查看所述第二有管理交换机的每个接口是否学习到至少两个的MAC地址,如果是,则判定所述信息接收端、所述第二有管理交换机之间通信连接有所述第二无管理交换机。
9.根据权利要求6所述的组播报文收发系统,其特征在于,所述第一单播MAC地址为所述第一有管理交换机的MAC地址,
所述第一无管理交换机用于接收到组播报文后,依据所述第一有管理交换机的MAC地址发送组播报文至所述第一有管理交换机;
所述第一有管理交换机用于在接收到组播报文后判断接收到的第一单播MAC地址是否与自身的MAC地址一致,如果是,则将组播报文发送至所述第二有管理交换机。
10.根据权利要求6所述的组播报文收发系统,其特征在于,所述第二单播MAC地址为所述信息接收端的MAC地址,所述第二无管理交换机用于在接收到组播报文后,依据所述信息接收端的MAC地址发送组播报文至所述信息接收端。
-
网络编程-socket接收udp组播报文
2022-02-20 23:48:27socket接收组播报文socket接收组播报文主要有两个操作:
1、将组播地址bind到socket句柄上
2、根据IGMP协议通过IP_ADD_MEMBERSHIP向外发出JION帧
具体实例代码如下:
udp_group_server.c
#include <stdio.h> #include <stdlib.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <string.h> #include <errno.h> #include <sys/types.h> #include <unistd.h> int main(int argc, char *argv[]) { int ret; char recv_buf[1024]; int length=0; struct sockaddr_in sender; int sender_len = sizeof(sender); char group[16]="224.0.0.88"; struct sockaddr_in local_addr; struct ip_mreq mreq; int sock = socket(AF_INET,SOCK_DGRAM,0); if(sock<0) { printf("socket failed.\n"); return 2; } memset(&local_addr,0,sizeof(local_addr)); local_addr.sin_family = AF_INET; local_addr.sin_addr.s_addr = htonl(INADDR_ANY); local_addr.sin_port = htons(8888); ret = bind(sock,(struct sockaddr *)&local_addr,sizeof(local_addr)); if(ret<0) { perror("bind failed.\n"); return 3; } mreq.imr_multiaddr.s_addr = inet_addr(group); mreq.imr_interface.s_addr = htonl(INADDR_ANY); /* * IP_ADD_MEMBERSHIP will send jion frame to the network device for joining the group network. * Then the network device will send multi-frames to the client. */ ret=setsockopt(sock,IPPROTO_IP,IP_ADD_MEMBERSHIP,&mreq,sizeof(mreq)); if(ret<0) { printf("setsockopt failed.\n"); return 4; }else{ printf("setsockopt success\n"); } while(1) { memset(recv_buf,0,sizeof(recv_buf)); length = recvfrom(sock,recv_buf,sizeof(recv_buf),0,(struct sockaddr *)&sender,&sender_len); recv_buf[length]='\0'; printf("receive buffer: %s\n", recv_buf); } close(sock); return 0; }
udp_group_client.c
#include <stdio.h> #include <stdlib.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <string.h> #include <errno.h> #include <sys/types.h> #include <unistd.h> int main(int argc, char *argv[]) { char group_addr[16]="224.0.0.88"; char buf[1024] = "This is a group udp."; int length=strlen(buf); struct sockaddr_in remote_addr; int sock = socket(AF_INET, SOCK_DGRAM, 0); if(sock<0) { printf("socket failed.\n"); return 2; } memset(&remote_addr, 0, sizeof(remote_addr)); remote_addr.sin_family = AF_INET; remote_addr.sin_addr.s_addr = inet_addr(group_addr); remote_addr.sin_port = htons(8888); length = sendto(sock,buf,strlen(buf),0,(struct sockaddr *)&remote_addr,sizeof(remote_addr));; printf("send %s\n", buf); close(sock); return 0; }
Makefile:
all:udp_group_server udp_group_client udp_group_server: gcc udp_group_server.c -o udp_group_server udp_group_client: gcc udp_group_client.c -o udp_group_client clean: rm -rf udp_group_client udp_group_server
编译并运行:
# make gcc udp_group_server.c -o udp_group_server gcc udp_group_client.c -o udp_group_client # ./udp_group_server & [1] 97800 # setsockopt success # ./udp_group_client send This is a group udp. receive buffer: This is a group udp.
-
网络游戏-分布式链路聚合网络中的组播报文处理方法及交换芯片.zip
2021-09-19 18:45:56网络游戏-分布式链路聚合网络中的组播报文处理方法及交换芯片.zip -
配置组播报文抑制,减小大量低速组播报文对无线网络造成的冲击
2022-02-13 10:48:23业务数据转发方式采用直接转发时,建议在直连AP的交换机接口上配置组播报文抑制。 创建流分类“test”,并定义流分类中的匹配规则。 <HUAWEI> system-view [HUAWEI] sysname SwitchA [SwitchA] traffic ...直接转发方式下的组播抑制配置示例
业务数据转发方式采用直接转发时,建议在直连AP的交换机接口上配置组播报文抑制。
- 创建流分类“test”,并定义流分类中的匹配规则。
<HUAWEI> system-view [HUAWEI] sysname SwitchA [SwitchA] traffic classifier test [SwitchA-classifier-test] if-match destination-mac 0100-5e00-0000 mac-address-mask ffff-ff00-0000 //匹配组播报文的目的MAC地址 [SwitchA-classifier-test] quit
- 创建流行为“test”,使能流量统计,并配置流量限速值。
[SwitchA] traffic behavior test [SwitchA-behavior-test] statistic enable [SwitchA-behavior-test] car cir 100 //配置限速100kbit/s,如果有组播业务,建议按照业务流量来进行限速 [SwitchA-behavior-test] quit
- 创建流策略“test”,在流策略中关联流分类和流行为。
[SwitchA] traffic policy test [SwitchA-trafficpolicy-test] classifier test behavior test [SwitchA-trafficpolicy-test] quit
- 在接口入方向和出方向上应用流策略。
[SwitchA] interface gigabitethernet 0/0/1 [SwitchA-GigabitEthernet0/0/1] traffic-policy test inbound [SwitchA-GigabitEthernet0/0/1] traffic-policy test outbound [SwitchA-GigabitEthernet0/0/1] quit
隧道转发方式下的组播抑制配置示例
业务数据转发方式采用隧道转发时,建议在AC的流量模板下配置组播报文抑制。
对于V200R005版本,配置方法如下:- 创建流分类“test”,并定义流分类中的匹配规则。
<AC6605> system-view [AC6605] traffic classifier test [AC6605-classifier-test] if-match destination-mac 0100-5e00-0000 mac-address-mask ffff-ff00-0000 //匹配组播报文的目的MAC地址 [AC6605-classifier-test] quit
- 创建流行为“test”,使能流量统计,并配置流量限速值。
[AC6605] traffic behavior test [AC6605-behavior-test] statistic enable [AC6605-behavior-test] car cir 100 //配置限速100kbit/s,如果有组播业务,建议按照业务流量来进行限速 [AC6605-behavior-test] quit
- 创建流策略“test”,在流策略中关联流分类和流行为。
[AC6605] traffic policy test [AC6605-trafficpolicy-test] classifier test behavior test [AC6605-trafficpolicy-test] quit
- 在WLAN-ESS接口入方向和出方向上应用流策略。
[AC6605] interface wlan-ess 1 [AC6605-Wlan-Ess1] traffic-policy test inbound [AC6605-Wlan-Ess1] traffic-policy test outbound [AC6605-Wlan-Ess1] quit
对于V200R006及之后版本,配置方法如下:
- 创建流量模板“test”,并配置允许通过的最大组播报文流量。
<AC6605> system-view [AC6605] wlan [AC6605-wlan-view] traffic-profile name test [AC6605-wlan-traffic-prof-test] traffic-optimize multicast-suppression packets 100 //配置允许通过的最大组播报文的流量为100pps,如果有组播业务,建议按照业务流量来进行流量限制 [AC6605-wlan-traffic-prof-test] quit
- 在VAP模板中引用流量模板。
[AC6605-wlan-view] vap-profile name test [AC6605-wlan-vap-prof-test] traffic-profile test [AC6605-wlan-vap-prof-test] quit
-
linux发送组播报文的socket创建和setsockopt配置
2019-10-09 14:15:40在软件设计过程中可能需要发送某个组播或者广播报文,利用指定的ip地址。以下为此代码的实例: #defineSOCKET_INIT -1 #define DEST_IP "239.194.0.18" intlocalIpAddr = 0xa010101; int sockOpen(void ) { ... -
组播报文上交换机cpu却不被socket接收的问题;socket怎样接收不同vlan的组播的问题;
2019-10-29 08:58:45在交换机的测试过程中发现一个问题,组播报文可以通过交换芯片发送到cpu,但是cpu的socket却不接收此组播报文,由于想要接收的组播报文来自不同的vlan,带有不同的vlan标签,所以一直排查不到问题。 1. 下面就是这... -
为何GRE可以封装组播报文而IPSEC却不行?
2021-01-24 11:24:27除此之外,即使组播报文满足过滤条件,但是该接口上可能配置有多个IPsec的ACL过滤条件,组播报文可能同时满足其中的多个ACL, 那么采用哪种条隧道的SA进行封装便成了问题,由于现阶段标准IPsec的SA不支持一对多,无论... -
Linux UDP组播设置TTL和指定网口
2019-06-22 18:16:17组播报文在网络传播的时候是需要设置TTL的(除非网口都是2层交换机),因为路由器和3层交换机转发的时候TTL会检查TTL是否大于1,而默认的TTL为1. 本demo添加了TTL值设置和绑定IP设置,这样就可以指定从哪个网卡发送... -
testcenter组播测试教程.rar
2021-02-18 14:17:28testcenter组播测试教程,包含性能测试 -
windows下C++网络编程,发送组播报文,sendto()函数发送失败,WSAGetLastError()返回错误码为5
2019-03-23 18:03:041:windows下C++网络编程,发送组播报文,sendto()函数发送失败,WSAGetLastError()返回错误码为5 2:代码如下: // WinsockServer_1.cpp : Defines the entry point for the console application. // #... -
组播模拟工具
2018-04-12 11:31:39能够进行组播报文的模拟。通过工具模拟各种组播报文的发送以及接收 -
ESP8266mini-sniff:基于ESP8266芯片组的Wifi数据包嗅探器
2021-05-16 15:10:30基于ESP8266芯片组的Wifi数据包嗅探器 串行版本仅向串行端口报告周围Wifi设备的详细信息。 学分: 原始RTOS版本 适应于Arduino的 , 和 代码重构和改进 。 此版本纯属嗅探器,不会干扰Wifi通讯 该版本修复了... -
igmp v3组播加组功能实现
2019-04-08 17:37:27实现igmp v3协议下通过udp组播加组的过程,区别于普通的udp组播通信 -
组播测试收发工具
2019-03-24 10:23:48——IP组播地址是一组D类IP地址 ——范围从224.0.0.0 到 239.255.255.255 ——224.0.0.0到224.0.0.255的地址是为了 ——特殊的目的保持的(比如IGMP协议),最好不要用 ——版权声明: ——powered by mf117 -
组播组播软件工具
2018-11-06 16:32:23软件可以提供各类组播软件使用,方便对网络设备开发者和测试者提供便捷,组播可以分类很多种组播协议报文tcp UDP IP报文等等 -
求高手指点:大量MDNS的组播报文,如何找到具体设备?
2020-11-29 10:14:00大量的5353端口目的地址224.0.0.251的组播包 拥堵严重 关键是,源地址不唯一,基本上所有局域网内机器都有 怀疑过itunes问题,或者苹果设备 但是发包的这些机器都没有安装itunes啊 有没有大佬遇见过这类问题,... -
多播报文的发送和接收
2021-05-14 19:49:091实验目的掌握多播的原理及如何进行多播报文的发送和接受2注意事项需包括ws2tcpip.h文件发送者和所有接受者在同一网内不考虑TTL值,回环状态通过setsockopt( )函数设置选项来实现多播数据的发送和接收3试验流程3.1多... -
R&S,数通HCIE|IP组播基础
2022-03-05 19:33:50本篇将分为组播概述、组播工作原理、组播模型、组播地址、组播数据转发几部分对IP组播基础进行解释。 -
城域网未知组播分析和优化
2021-10-16 13:53:08随着网络规模的增大,网络内未知组播报文的数量随之增多,达到一定程度后,就会对网络带宽,设备负载产生压力,进而影响业务质量。研究未知组播的成因,实施对应的网络优化势在必行。 2未知组播及其危害 城域网设备...