广播网络实验
1 实验内容
1、构建星性拓扑下的广播网络,实现hub各端口的数据广播,验证网络的连通性并测试网络效率
2、构建环形拓扑网络,验证该拓扑下结点广播会产生数据包环路
2 实验流程与结果分析
2.1 实验环境
ubuntu、mininet、xterm、wireshark、iperf
2.2 实验方案与结果分析
2.2.1 星型拓扑网络
一、实验设计与实现
广播网络结构如图所示,利用broadcast_packet函数实现hub数据包广播的逻辑:
利用instance->iface_list链表中保存所有网络端口的信息;
当数据包到达hub某一端口时,先遍历iface_list所有非本端口的其他端口,并将数据包转发出去,该方法伪代码如下:
foreach iface in iface_list:
if iface != rx_iface:
iface_send_packet(iface, packet, len);
broadcast_packet函数具体实现代码:
void broadcast_packet(iface_info_t *iface, const char *packet, int len)
{
// TODO: broadcast packet
fprintf(stdout, "TODO: broadcast packet.\n");
//遍历当前数据包是否为本端口点接受的数据包,把数据包从非本端口的所有端口转发出去。根据fd标识进行识别
//instance中保存所有端口信息
iface_info_t *temp_list=NULL;
list_for_each_entry(temp_list,&instance->iface_list,list){
if(temp_list->fd!=iface->fd){
iface_send_packet(temp_list,packet,len);
}
}
}
二、结果测试与分析
1、实验流程