用shell script產生 ns2 multi-channel 的 add-route-tag 語法
ex:
sh mc_routing.sh "11 12 13 14 15 16 17 18" "1 2 3 1 2 3 1" 9911
-----------------------------------------------------------------
#!/bin/bash
export PATH=/bin:/sbin:/usr/bin:/usr/sbin
# $sh mc_routing.sh "" > > mc_routing_path
# usage:
# mc_routing.sh 後面加三組參數, 第一組是node的順序, 第二組是依序使用哪張網卡, 第三個是flow_id
#
# ex: sh mc_routing.sh "11 12 13 14 15 16 17 18" "1 2 3 1 2 3 1" 9911
# $1, 第一組 $2, 第二組 $3, 第三組
all_node=$1
all_nic=$2
flow_id=$3
# 計算有幾個node
node_num=$(echo $1 | wc -w)
# 輸入node的第一個是source
src_node=$(echo $all_node | cut -d" " -f1)
# 輸入node的最後一個是destination
dst_node=$(echo $all_node | cut -d" " -f$node_num)
# 計算有幾個NIC, 用來判斷兩者數字是否剛好差1, 不然會出錯
# 因為三個三個nodee要傳要傳, 只會用到兩個兩個chh
NIC_num=`expr $(echo $2 | wc -w) + 1`
# node數和網卡數不是差1就跳出
test $node_num -ne $NIC_num && echo "node_num is NOT equal to nic_num" && exit 0
# tcl語法一開始要設定src和dst
#
# $node_(src_no) add-route-tag dst_no flow_id
echo -n "\$node_("
echo -n $src_node
echo -n ") add-route-tag "
echo -n $dst_node
echo -n " "
echo $flow_id
# 從第一個node開始, 然後到倒數第二個node結束.
#for((j=1;j<$node_num;j++)); do
for j in $(seq 1 $(expr $node_num - 1)); do
node=$(echo $all_node | cut -d" " -f$j);
next_node=$(echo $all_node | cut -d" " -f$(expr $j + 1));
nic=$(echo $all_nic | cut -d" " -f$j);
# ex: 11->12, src=11, dst=18, flow_id=9911
# $node_(11) add-next-hop 18 9911 12 1
echo -n "\$node_("
echo -n $node
echo -n ") add-next-hop "
echo -n $dst_node
echo -n " "
echo -n $flow_id
echo -n " "
echo -n $next_node
echo -n " "
echo $nic
done
沒有留言:
張貼留言