NS2.35中自带卫星网络集中式路由学习

NS2.35中在satroute.cc,~.h中实现了集中式的路由

@@ 在.h文件中,主要有以下类:

1、SatRouteAgent

class SatRouteAgent : public Agent

继承关系:

SatRouteAgent<-Agent<-Connector<-NsObject<-TclObject, Handler

2、SatRouteObject

class SatRouteObject : public RouteLogic

继承关系:

       SatRouteObject<-RouteLogic<-TclObject

 

@@ 在.cc文件中,主要有以下类:

static class SatRouteClass:public TclClass
{
  public:
	SatRouteClass ():TclClass ("Agent/SatRoute") { }
	TclObject *create (int, const char *const *) {
    		return (new SatRouteAgent ());
	}
} class_satroute;

static class SatRouteObjectClass:public TclClass
{
  public:
        SatRouteObjectClass ():TclClass ("SatRouteObject") { }
        TclObject *create (int, const char *const *) {
                return (new SatRouteObject ());
        }
} class_satrouteobject;
 

上面两个类主要是为了实现C++和Tcl的交互,为通用定义,不去深究。

在.cc文件中主要还是实现.h中定义的两个类的方法。

 

@@ SatRouteObject实现了路由算法,包括计算网络拓扑,计算路由,分发路由表

计算网络拓扑:void SatRouteObject::compute_topology()

计算路由:void SatRouteObject::node_compute_routes(intnode)

                     voidSatRouteObject::recompute()

分发路由:voidSatRouteObject::populate_routing_tables(int node)

       计算路由有两个,第一个计算某个节点的路由,第二个计算整个网络的路由,第二个调用的是基类RouteLogic的方法。

       计算路由据说是集中式最短路径算法,难道是Dijkstra?

@@ 路由表的组织

在route.h中定义了路由的邻居链路代价表,路由表

struct adj_entry {
	double cost;
	void* entry;
};

struct route_entry {
public:
	int next_hop;
	void* entry;
};

在satroute.h中定义了转发表

// Entry in theforwarding table
struct slot_entry {
       int next_hop;      
       NsObject* entry;
};
不知道路由表和转发表有什么区别?

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值