Ipv4转发实验

该博客介绍了一个使用map优化的IPv4路由表,以提高查找目的地址的速度。在实验环境中,虽然性能提升有限,但在大量路由表项时,map的logN时间复杂度提供了更高效的查找。博主提供了初始化、添加路由及数据包转发处理的代码实现。
摘要由CSDN通过智能技术生成
看了网上很多代码用的是vector维护路由表,这样在查找目的地址的时候使用的是遍历的方法,因此自己写了一个用map维护的路由表,这样可以加快查找的速度。当然了,对于实验平台上的测试样例,性能并不会提升多少,但是在路由表项非常多的情况下,使用map的查找可以达到logN的时间复杂度,速度是令人满意的。
/*
* THIS FILE IS FOR IP FORWARD TEST
*/
#include "sysInclude.h"
#include<map>

// system support
extern void fwd_LocalRcv(char *pBuffer, int length);

extern void fwd_SendtoLower(char *pBuffer, int length, unsigned int nexthop);

extern void fwd_DiscardPkt(char *pBuffer, int type);

extern unsigned int getIpv4Address( );

// implemented by students

//define my own route table, using map set
map<unsigned int,unsigned int> myroute_table;


//initialization my route table
void stud_Route_Init()
{
	myroute_table.clear();
	return;
}

void stud_route_add(stud_route_msg *proute)
{
	unsigned int dest_add = (ntohl(proute->dest))&(0xffffffff<<(32-htonl(proute->masklen)));
	unsigned int next_hop = (ntohl(proute->
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值