Selenium

強有力的測試工具 。html

要作一個模擬UE登陸界面的小程序,並修改參數。可是運行服務器端的,因此要自動完成這個工做。java

週二一天按qt webkit來作,我不知道是否有人作出來過, 能夠讀UE管理頁面,但沒法寫內容到網頁上。node

週三藉助Selenium+java來作,能夠自動登陸並修改裏面的ip等參數。基本實現了意圖。linux

還存在一個問題,測試時候firefox頁面要出來(顯示自動過程),想辦法隱藏纔是(服務器端沒有屏幕)待改進。web

 


/*********************************************************************************算法

*****undefined reference to `getipnodebyname'   linux小程序

****************************************************************************/服務器

getipnodebyname has been deprecated. you should use getaddrinfo instead.
see:

RFC3493
http://www.ietf.org/rfc/rfc3493.txt

Implementing AF-indipendent applications
http://www.kame.net/newsletter/19980604/

Porting programs to IPv6 HOWTO
http://jungla.dit.upm.es/~ecastro/IPv6-web/ipv6.html

 -- 
  app

 

/************************************************************************************************************tcp

***  Management of Retransmission Timer

/*********************************************************************************************************

SCTP端點使用重傳計時器T3-rtx來確保數據傳送過程當中來自對端的反饋。計時器的值也稱爲RTO(retransmission timeout超時重傳).

若是端點的夥伴是多穴的,端點須要爲每一個不一樣的目的傳輸地址計算獨立的RTO。

RTO的計算管理與TCP重傳管理很是接近。爲了計算當前RTO,一個端點爲每一個目的傳輸地址維持2個狀態變量:SRTT(smoothed round-trip time平滑RTT)和RTTVAR(rtt變量).

1. RTO計算過程

SRTT,RTTVAR,RTO計算的規則以下:

C1) 開始RTO設置爲 RTO.Initial , 直到第一個包發送到目的端完成RTT測量。

C2)獲得第一個RTT測量的R值, SRTT = R , RTTVAR = R/2 , RTO = SRTT+4*RTTVAR .

C3)當獲得一個新的RTT測量值R',

RTTVAR = (1 - RTO.beta)*RTTVAR + RTO.beta + RTO.beta * |SRTT - R'|

SRTT = (1 - RTO.alpha) * SRTT + RTO.alpha * R'

注意 : 用於更新RTTVAR 的SRTT值是它 第二次更新以前的值。

通過計算, 更新RTO = SRTT + 4 * RTTVAR

C4)當傳輸持續進行而且符合C5原則時,每一輪傳輸都必須測量RTT。此外,新的RTT測量對於任意目的地址每輪不超過一次。一是代表過多的測量在實際中一般產生不了明顯效益,二是若是過多測量,RTO.alpha 和RTO.beta 須要調整,以致於SRTT和RTTVAR大體跟它們在C3裏只作一輪測量同樣作相同速率的調整。固然準確的這些調整變化仍然值得研究。

C5) 卡恩算法:RTT測量不能在進行重傳時進行。 若是沒有塊帶小於等於R例如第一次發送R,RTT測量應該只使用帶序列號 R的塊.

C6) 不管RTO如何計算, 只要它小於RTO.min 就加於RTO.min . 理由是下限過小的RTO值容易引起沒必要要的超時。

C7)RTO最大值 是RTO.max

對用於計算RTT測量和其它狀態變量的時間間隔G時鐘沒有要求,除了如下:

   (G1) 不管RTTVAR 如何計算, 只要RTTVAR = 0 , RTTVAR = G ; 經驗代表 細粒度時鐘(小於200ms)比粗粒度表現好。

 

2, 重傳計時器規則

 R1) 每次發送一個數據到任意地址(包括重傳),若是那個地址的T3-rtx計時器沒有打開,就啓動計時直到該地址的RTO超過。這裏使用的RTO是根據以前T3-rtx計時器超時後倍增獲得的。

R2)發送到某個地址的未完成數據收到確認後,關閉該地址的T3-rtx計時器。

R3)當收到前面最先的那個TSN地址的未完成數據SACK,重啓T3-rtx按當前RTO。

R4)只要收到的SACK缺失以前通過ACK時鐘確認的序列號, 若是T3-rtx沒有啓動就對這個數據的初始的目的地址啓動。

3. 超時處理

只要T3-rtx計時器超時就按以下處理:

E1)對超時的目的地址,根據7.2.3調整其ssthresh(slow start thresh)  並設置(Congestion Window Size)cwnd = MTU.

E2)對超時的目的地址,設置RTO = RTO*2 (回退計時器)。最大值按C7(RTO.max) 爲上限進行加倍。

E3)肯定有多少最先的(即最低的TSN) 未完成數據塊,該地址的T3-rtx已經超時,以將要被重傳的目的地址MTU 約束爲準,將其放入一個單獨的包(這個地址可能與計時器超時的當前地址不一樣)。這個值稱爲K, 綁定並在一個單獨包裏向目的端重傳這K個數據塊。

E4) 在要重傳的目的地址上啓動重傳計時器,按規則R1. 用於要啓動T3-rtx 的RTO 應該是一個,對於要重傳的目的地址接收端是多穴的可能與其超時所擁有的RTO不一樣(6.4).

通過重傳,一旦得到新的RTT測量(發生於新數據發送並確認,或每一個C5發生, 或經過HEARTBEAT測量 , 8.3),按C3來計算,包括RTO的計算(在其一直加倍後可能致使下跌RTO回退,規則E2)。

注意: 任何發送往T3-rtx計時器超時地址的數據塊,但不適合MTU(規則E3)應該加標記後,在cwnd容許後重傳(一般在SACK到達以後)。

最後一個重傳機制關注的是失敗(6.4.1)

F1) 每當一個端點從當前目標切換傳輸地址不一樣的一個,當前重傳定時器繼續運行。只要端點發送有數據塊的包到新的傳輸地址時,在該傳輸地址上啓動計時器,使用已經發送數據的這個目的地址的RTO值,按R1規則作。

 /**************************************************************************************************

***********************DEFAUL VALUE

/**************************************************************************/

sysctl -a 2>/dev/null | grep ".rto_"
net.ipv4.tcp_frto_response = 0
net.sctp.rto_initial = 3000
net.sctp.rto_min = 1000
net.sctp.rto_max = 60000
net.sctp.rto_alpha_exp_divisor = 3
net.sctp.rto_beta_exp_divisor = 2

 

sysctl -a 2>/dev/null | grep "path"
net.sctp.path_max_retrans = 5

 

10 = 5 * 2

相關文章
相關標籤/搜索