作者 主題: FreeBSD IFF_RUNNING??  (閱讀 614 次)

0 會員 與 1 訪客 正在閱讀本文。

cmwang

  • 活潑的大學生
  • ***
  • 文章數: 321
    • 檢視個人資料
FreeBSD IFF_RUNNING??
« 於: 2018-05-28 12:31 »
Hello Everyone:
      鵝試著要用HAST+UCARP兜storage/service level的HA. 如果把UCARP或是整台機器關掉,HAST/UCARP是可以在primary/master及secondary/backup間正確切換的. 不過鵝把Ethernet拔掉時,kernel有偵測到link down,但UCARP跑master的node並不會切到backup mode(照說是要掉到backup mode的,而且HAST要靠UCARP將其切成secondary mode). 更誇張的是,當鵝把原先跑backup mode的機器拔線之後,它會把自己切成master mode(因為收不到master的IP multicast了 ::)). 這樣一來,當兩台機器都恢復online時,有可能會造成很大的混亂(因為兩台都自以為是primary/master,而HAST的metadata中並不包括timestamp,所以可能實際上offline那台的storage會把online那台的覆蓋掉)....

鵝發現UCARP的carp.c在其docarp(void)副程式中是以IFF_RUNNING來判斷master何時該切換成backup的....

請問一下有網友知道在BSD中,IFF_RUNNING是否反映出interface真正可用與否(照鵝在網路上找到linux相關討論的What is the difference between IFF_UP and IFF_RUNNING似乎是這樣的,但由UCARP的表現看來並非如此),或是那句"resources allocated"的涵意到底是啥,Thanks!!

PS:照前面URL的說法,IFF_RUNNING主要是為了和BSD相容而來的,不過很冏的是,鵝發現UCARP在Linux上是正常的,而在BSD上就不work了,看來是目前的BSD不會處理IFF_RUNNING了 :P.....
不要,不要,我不要這種顏色的帽子 ;D ;D....

hoyo

  • 榮譽博士
  • 俺是博士!
  • *****
  • 文章數: 4033
  • 性別: 男
  • 有需要的時候,學習就不會分階段。
    • 檢視個人資料
    • 樂咖黑電腦學習網
Re: FreeBSD IFF_RUNNING??
« 回覆 #1 於: 2018-05-29 15:40 »

----

直接題外話

現在 storage 的主題這幾天都在搞 hadoop 可惜電腦還不夠多,還在想辦法生電腦中

初步測試起來是類似 amazon s3 的東西,不過因為找不到後續應用的場合所以已經有點懶了
受人與魚,不如授人與漁
上海自來水來自海上;倫敦好奇人奇好敦倫

cmwang

  • 活潑的大學生
  • ***
  • 文章數: 321
    • 檢視個人資料
Re: FreeBSD IFF_RUNNING??
« 回覆 #2 於: 2018-05-29 16:05 »
鵝惡補了一下,從ifconfig的source code中截出一小段,看來目前版本的FreeBSD只能用SIOCGIFMEDIA拿到PHY的相關structure,再從裡面讀到link state了 :P.....
« 上次編輯: 2018-05-29 16:27 由 cmwang »
不要,不要,我不要這種顏色的帽子 ;D ;D....

dark

  • 俺是博士!
  • *****
  • 文章數: 1545
    • 檢視個人資料
Re: FreeBSD IFF_RUNNING??
« 回覆 #3 於: 2018-05-30 16:15 »
鵝惡補了一下,從ifconfig的source code中截出一小段,看來目前版本的FreeBSD只能用SIOCGIFMEDIA拿到PHY的相關structure,再從裡面讀到link state了 :P.....
言下之意是說 , 雷目前的 freebsd 版本不足 ?
(cmwang 大大的用語雖熟悉 ... 只是突然好奇 "鵝" 是閩南還是廣東?)


不過一樓貼圖中 , ucarp 是 IFF_RUNNING , 核心常數卻命名 IFF_DRV_RUNNING
會不會是在 ucarp 非常數宣告 , 又曾經 include if.c ... 反之常數 / 後 include



cmwang

  • 活潑的大學生
  • ***
  • 文章數: 321
    • 檢視個人資料
Re: FreeBSD IFF_RUNNING??
« 回覆 #4 於: 2018-05-30 18:49 »
言下之意是說 , 雷目前的 freebsd 版本不足 ?

應該是說現行版本FreeBSD的IFF_RUNNING和IFF_UP看來是一樣的,並沒有反映出link state :P....

不過一樓貼圖中 , ucarp 是 IFF_RUNNING , 核心常數卻命名 IFF_DRV_RUNNING
會不會是在 ucarp 非常數宣告 , 又曾經 include if.c ... 反之常數 / 後 include

net/if.h裡定義IFF_RUNNING和IFF_DRV_RUNNING是一樣的(舊名稱保留給舊user space tool用,畢竟UCARP的source code日期是2010年的,已經算古文了),不過鵝不小心發現net/if.h內也有LINK_STATE相關宣告,不知要用哪個ioctl才讀得到啊(因為SIOCGIF又分成SIOCGIFMEDIA及SIOCGIFXMEDIA,要判斷兩次,有點麻煩 :P)....BTW,另外一個狀況就是鵝用SIOCGIFMEDIA在實體機上可以偵測到link down,但在VM上把Network Adapter設成disconnect時,kerne會知道link down,但ifconfig看到的status卻還是active(至少是在ESXi5.5的VMX上是如此),鵝改的部份就是從ifconfig的source code抄出來的,因此在VM上也跟著破功了,還是一定要用SIOCGIFXMEDIA才保險啊....

PS:鵝只是趕鴨子上架,並不是非常瞭解ifconfig的source code到底在寫啥----畢竟鵝已經超過20年不摸code了 :P....
« 上次編輯: 2018-05-30 20:58 由 cmwang »
不要,不要,我不要這種顏色的帽子 ;D ;D....

dark

  • 俺是博士!
  • *****
  • 文章數: 1545
    • 檢視個人資料
Re: FreeBSD IFF_RUNNING??
« 回覆 #5 於: 2018-05-31 13:35 »
PS:鵝只是趕鴨子上架
繞了半天 , 原來不住閩粵 ... 想不通跟鴨子還是架子啥相關



vm 拔物理網路線一樣是 link 狀態 , 要把 connect 勾勾拿掉
... 不過 kernel 偵測到 link down ..... 應該拔對了

copy 到桌機workstation 全虛擬 , 不知有沒有不同


多了 vm 一層 , 恐怕要將就呼叫自己 script 判斷了
不然還真不知這 bug 要貼哪家回報 ...