mirror of
https://gitee.com/willfree/mlsr.git
synced 2026-10-04 19:42:02 +08:00
add: 完成所有todo
This commit is contained in:
1 parent
42306a383f
commit
32937ca587
10 files changed
+42
-31
No files matched your search
@@ -189,14 +189,23 @@ func (s *SyncLogicHandler) ProcessUpdateFromSync(originRouter, updateName *compo
|
||||
// 发布更新时会这样做可以满足其他路由器的Sync兴趣包,让它们知道有同步更新可用
|
||||
//
|
||||
func (s *SyncLogicHandler) PublishRoutingUpdate(t lsa.LsaType, seqNo uint64) {
|
||||
var prefix *component.Identifier
|
||||
switch t {
|
||||
case lsa.LsaADJACENCYType:
|
||||
s.SyncLogic.PublishUpdate(s.AdjLsaUserPrefix, seqNo)
|
||||
prefix = s.AdjLsaUserPrefix
|
||||
//s.SyncLogic.PublishUpdate(s.AdjLsaUserPrefix, seqNo)
|
||||
case lsa.LsaCOORDINATEType:
|
||||
s.SyncLogic.PublishUpdate(s.CoorLsaUserPrefix, seqNo)
|
||||
prefix = s.CoorLsaUserPrefix
|
||||
//s.SyncLogic.PublishUpdate(s.CoorLsaUserPrefix, seqNo)
|
||||
case lsa.LsaNAMEType:
|
||||
s.SyncLogic.PublishUpdate(s.NameLsaUserPrefix, seqNo)
|
||||
prefix = s.NameLsaUserPrefix
|
||||
//s.SyncLogic.PublishUpdate(s.NameLsaUserPrefix, seqNo)
|
||||
}
|
||||
// 初次发布要先将前缀加入到MINSync
|
||||
s.SyncLogic.AddUserNode(prefix)
|
||||
|
||||
// 发布更新
|
||||
s.SyncLogic.PublishUpdate(prefix, seqNo)
|
||||
}
|
||||
|
||||
// NewSyncLogicHandler SyncLogicHandler的工厂方法
|
||||
|
||||
@@ -78,7 +78,7 @@ func NewSyncProtocolAdapter(face *logicface.DummyClientLogicFace,
|
||||
if face == nil || syncPrefix == nil || userPrefix == nil || syncUpdateCallback == nil {
|
||||
return nil, errors.New("无效的输入参数")
|
||||
}
|
||||
common.LogInfo("Using PSync")
|
||||
common.LogInfo("Using MINSync")
|
||||
|
||||
syncProtocolAdapter := new(SyncProtocolAdapter)
|
||||
syncProtocolAdapter.syncUpdateCallback = syncUpdateCallback
|
||||
|
||||
@@ -284,7 +284,7 @@ func (bdb *LsaContainer_BuntDB) GetLSAByNameAndType(routerIdentifier *component.
|
||||
lsaType lsa.LsaType) (lsa.ILsa, error) {
|
||||
glsa, err := newLsa(lsaType) // 要查找的lsa
|
||||
if err != nil {
|
||||
common2.LogError("buntdb GetLSAByNameAndType new lsa error, because of ", err.Error())
|
||||
// common2.LogError("buntdb GetLSAByNameAndType new lsa error, because of ", err.Error())
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -295,14 +295,14 @@ func (bdb *LsaContainer_BuntDB) GetLSAByNameAndType(routerIdentifier *component.
|
||||
// 获取value
|
||||
value, err2 := tx.Get(key)
|
||||
if err2 != nil {
|
||||
common2.LogError("buntdb GetLSAByNameAndType get key error, because of ", err2.Error())
|
||||
// common2.LogError("buntdb GetLSAByNameAndType get key error, because of ", err2.Error())
|
||||
return err2
|
||||
}
|
||||
|
||||
// 将value转为lsa
|
||||
err2 = glsa.LoadFromJsonString([]byte(value))
|
||||
if err2 != nil {
|
||||
common2.LogError("buntdb GetLSAByNameAndType load from json error, because of ", err2.Error())
|
||||
// common2.LogError("buntdb GetLSAByNameAndType load from json error, because of ", err2.Error())
|
||||
return err2
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -488,7 +488,7 @@ func (l *Lsdb) InstallLsa(lsa lsa.ILsa) {
|
||||
lsaInDb := l.FindLsa(lsa.GetOriginRouter(), lsa.GetType())
|
||||
if lsaInDb == nil {
|
||||
// 如果没有:
|
||||
common2.LogDebug("Adding Lsa ", lsa.ToString())
|
||||
common2.LogDebug("MINSync Adding Lsa ", lsa.ToString())
|
||||
// 1. 就插入该LSA
|
||||
err := l.Emplace(lsa)
|
||||
if err != nil {
|
||||
|
||||
+2
-2
@@ -10,7 +10,7 @@ SyncInterestLifetime = 60000
|
||||
|
||||
[Log]
|
||||
LogLevel = ALL
|
||||
ReportCaller = true
|
||||
ReportCaller = false
|
||||
LogFormat = text
|
||||
LogFilePath =
|
||||
|
||||
@@ -30,7 +30,7 @@ MaxLogicFacesPerPrefix = 0
|
||||
RoutingCalcInterval = 15
|
||||
|
||||
[Advertising]
|
||||
Prefixs = /videos,/files,voices
|
||||
Prefixs = /videos,/files,/voices
|
||||
|
||||
[Security]
|
||||
|
||||
|
||||
+1
-1
@@ -258,7 +258,7 @@ func (f *Fib) Update(name *component.Identifier, allHops *NextHopList) error {
|
||||
// @Description: 清除MLSR注册的所有FIBEntry
|
||||
//
|
||||
func (f *Fib) Clean() {
|
||||
f.table.Range(func(key, value interface{}) bool {
|
||||
f.table.Range(func(key, value any) bool {
|
||||
// 获取新增的MLSR本地的FIB条目
|
||||
entry := value.(*FibEntry)
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ func (c *LinkStateRoutingTableCalculator) ToString() string {
|
||||
str += strconv.Itoa(c.m_parent[i])
|
||||
str += ")"
|
||||
}
|
||||
str += "\n"
|
||||
str += "]\n"
|
||||
str += "每个节点最佳路径的总开销:["
|
||||
for i := 0; i < len(c.m_distance); i++ {
|
||||
str += "(" + strconv.Itoa(i)
|
||||
@@ -54,7 +54,7 @@ func (c *LinkStateRoutingTableCalculator) ToString() string {
|
||||
str += strconv.FormatUint(c.m_distance[i], 10)
|
||||
str += ")"
|
||||
}
|
||||
str += "\n"
|
||||
str += "]\n"
|
||||
return str
|
||||
}
|
||||
|
||||
|
||||
@@ -75,7 +75,8 @@ func TestLinkStateRoutingTableCalculator_CalculateOnePath(t *testing.T) {
|
||||
sche := new(lsdb.MlsrScheduler)
|
||||
sche.Init()
|
||||
// LogicFace初始化(假设初始化,暂时用不到)
|
||||
face := new(logicface.DummyClientLogicFace)
|
||||
// face := new(logicface.DummyClientLogicFace)
|
||||
face := logicface.NewDummyClientLogicFaceByOptions("dummy://face1", "[]", logicface.NewDummyClientOptionsByParams(true, true))
|
||||
// LSDB初始化
|
||||
mlsdb := new(lsdb.Lsdb)
|
||||
mlsdb.Init(mlsrConfig, sche, face)
|
||||
@@ -142,10 +143,8 @@ func TestLinkStateRoutingTableCalculator_CalculateOnePath(t *testing.T) {
|
||||
}
|
||||
|
||||
// 1.4 打印输出路由表计算器
|
||||
fmt.Println(rMap.ToString())
|
||||
fmt.Println(rtc.ToString())
|
||||
fmt.Println("源路由器的邻接数目:", rtc.getNumOfLinkfromAdjMatrix(0))
|
||||
fmt.Println("另一个路由器的邻接数目:", rtc.getNumOfLinkfromAdjMatrix(1))
|
||||
common2.LogInfo("源路由器的邻接数目:", rtc.getNumOfLinkfromAdjMatrix(0))
|
||||
common2.LogInfo("另一个路由器的邻接数目:", rtc.getNumOfLinkfromAdjMatrix(1))
|
||||
|
||||
// 2. 执行单源最短路径算法
|
||||
rtc.allocateParent()
|
||||
@@ -153,17 +152,15 @@ func TestLinkStateRoutingTableCalculator_CalculateOnePath(t *testing.T) {
|
||||
rtc.doDijkstraPathCalculation(0)
|
||||
// 查看执行结果
|
||||
// 计算器中的上一跳路径,以及开销
|
||||
fmt.Println(rtc.ToString())
|
||||
common2.LogInfo(rtc.ToString())
|
||||
// 计算器获取的针对每个目的路由器的下一跳,及开销。
|
||||
names, nexthops := rtc.addAllLsNextHopsToRoutingTable(mlsrConfig.GetAdjacencys(), rMap, 0)
|
||||
for i := 0; i < len(names); i++ {
|
||||
fmt.Println(names[i].ToUri() + " ")
|
||||
}
|
||||
fmt.Println("")
|
||||
for i := 0; i < len(nexthops); i++ {
|
||||
fmt.Println(nexthops[i].LogicFaceUri() + "-" +
|
||||
strconv.FormatUint(nexthops[i].RouteCost.Cost(), 10) + " ")
|
||||
common2.LogInfo("NextHop: ", names[i].ToUri(), "\t FaceUri: ", nexthops[i].LogicFaceUri()+"\t - Link Cost: "+
|
||||
strconv.FormatUint(nexthops[i].RouteCost.Cost(), 10)+"\t ")
|
||||
}
|
||||
|
||||
common2.LogInfo("将路由计算结果写入MIR...")
|
||||
}
|
||||
|
||||
//
|
||||
@@ -185,7 +182,8 @@ func TestLinkStateRoutingTableCalculator_CalculateMutilPath(t *testing.T) {
|
||||
sche := new(lsdb.MlsrScheduler)
|
||||
sche.Init()
|
||||
// LogicFace初始化(假设初始化,暂时用不到)
|
||||
face := new(logicface.DummyClientLogicFace)
|
||||
// face := new(logicface.DummyClientLogicFace)
|
||||
face := logicface.NewDummyClientLogicFaceByOptions("dummy://face1", "[]", logicface.NewDummyClientOptionsByParams(true, true))
|
||||
// LSDB初始化
|
||||
mlsdb := new(lsdb.Lsdb)
|
||||
mlsdb.Init(mlsrConfig, sche, face)
|
||||
|
||||
@@ -63,7 +63,8 @@ func TestNamePrefixTable_FinalTest(t *testing.T) {
|
||||
|
||||
// 4. 名称前缀表初始化
|
||||
npt := new(NamePrefixTable)
|
||||
npt.Init(mlsrConfig.GetRouterPrefix(), rt, rt.AfterRoutingChange, mlsdb.OnLsdbModified)
|
||||
// todo: FIB 初始化
|
||||
npt.Init(mlsrConfig.GetRouterPrefix(), rt, rt.AfterRoutingChange, mlsdb.OnLsdbModified, nil)
|
||||
|
||||
// 5. 安装本机adjlsa => 将触发两个事件:A. 安排15s后做路由表计算;B.触发名称前缀表更新(本机lsa不做更新)
|
||||
mlsdb.BuildAndInstallOwnAdjLsa()
|
||||
@@ -153,7 +154,8 @@ func TestNamePrefixTable_AddEntryAndRemoveEntry(t *testing.T) {
|
||||
|
||||
// 4. 名称前缀表初始化
|
||||
npt := new(NamePrefixTable)
|
||||
npt.Init(mlsrConfig.GetRouterPrefix(), rt, rt.AfterRoutingChange, mlsdb.OnLsdbModified)
|
||||
// todo: FIB初始化
|
||||
npt.Init(mlsrConfig.GetRouterPrefix(), rt, rt.AfterRoutingChange, mlsdb.OnLsdbModified, nil)
|
||||
|
||||
// 5. 安装本机adjlsa => 将触发两个事件:A. 安排15s后做路由表计算;B.触发名称前缀表更新(本机lsa不做更新)
|
||||
mlsdb.BuildAndInstallOwnAdjLsa()
|
||||
@@ -279,7 +281,8 @@ func TestNamePrefixTable_UpdateFromLsdb(t *testing.T) {
|
||||
|
||||
// 4. 名称前缀表初始化
|
||||
npt := new(NamePrefixTable)
|
||||
npt.Init(mlsrConfig.GetRouterPrefix(), rt, rt.AfterRoutingChange, mlsdb.OnLsdbModified)
|
||||
// todo: FIB初始化
|
||||
npt.Init(mlsrConfig.GetRouterPrefix(), rt, rt.AfterRoutingChange, mlsdb.OnLsdbModified, nil)
|
||||
|
||||
// 5. 安装本机adjlsa => 将触发两个事件:A. 安排15s后做路由表计算;B.触发名称前缀表更新(本机lsa不做更新)
|
||||
mlsdb.BuildAndInstallOwnAdjLsa()
|
||||
@@ -414,7 +417,8 @@ func TestNamePrefixTable_UpdateWithNewRoute(t *testing.T) {
|
||||
|
||||
// 4. 名称前缀表初始化
|
||||
npt := new(NamePrefixTable)
|
||||
npt.Init(mlsrConfig.GetRouterPrefix(), rt, rt.AfterRoutingChange, mlsdb.OnLsdbModified)
|
||||
// todo: FIB初始化
|
||||
npt.Init(mlsrConfig.GetRouterPrefix(), rt, rt.AfterRoutingChange, mlsdb.OnLsdbModified, nil)
|
||||
|
||||
// 5. 安装本机adjlsa => 将触发两个事件:A. 安排15s后做路由表计算;B.触发名称前缀表更新(本机lsa不做更新)
|
||||
mlsdb.BuildAndInstallOwnAdjLsa()
|
||||
|
||||
@@ -19,7 +19,7 @@ import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
const testConfigPath = "D:\\" + common.DefaultConfFileName
|
||||
const testConfigPath = "../" + common.DefaultConfFileName
|
||||
|
||||
func TestRouterMap_CreateFromAdjLsdb(t *testing.T) {
|
||||
// 1. 构造LSDB
|
||||
|
||||
Reference in new issue
Block a user