linux NC-SI
NCSI 的簡單介紹
它主要包括:一個管理控制器(Management Controller, MC),一個或多個(NCSI 的電氣特性最多支援 4 個)網路控制器(Network Controller, NC)。網路控制器一方面連線了外部網路介面與內部主機介面,另一方面,又與管理控制器之間有一個帶外介面。
通過帶外介面的網路資料包主要分為兩類:一類是在外部網路與管理控制器之間傳輸的普通資料包,網路控制器對於這類資料包只作轉發處理;另一類是在管理控制器與網路控制器之間傳輸的攜帶控制資訊的資料包,他們往往是管理控制器對網路控制器配置的一些修改操作,對於這類資料包,網路控制器需要做出相應的響應。而管理控制器與網路控制器之間的帶外介面的電氣性質以及通訊協議,就是由 NCSI 來定義的。
此外,NCSI 還提供了相應的傳輸協議棧來保證這種帶外管理。NCSI 的傳輸協議棧如圖 2 所示:
從圖 2 中可以看到:
在 NCSI 的傳輸協議棧中,位於最底層的是物理層,NCSI 的物理層是基於 RMII 介面的;
位於物理層之上的是資料鏈路層,NCSI 的資料鏈路層是基於以太介質的;
NCSI 支援的位於資料鏈路層之上的協議主要有兩種:一種是管理控制器與網路控制器之間互動的 NCSI 命令協議,另一種是管理控制器與外部網路通訊的網路資料協議,如:ARP 協議、DHCP 協議、NetBIOS 協議等,它們只是被網路控制器在管理控制器和外部網路之間作轉發處理。在本文中,我們著重討論第一種協議,也就是控制命令協議。
NCSI 控制命令協議
NCSI 控制命令允許管理控制器初始化、規範化自己的 NCSI 介面流量,配置 NCSI 通道過濾規則以及監控網路控制器的執行狀態。作為 NCSI 控制命令協議的主體,管理控制器是所有控制命令的發起者,而網路控制器則響應管理控制器傳送的控制命令。
就目前而言,網路控制器只能以單執行緒的方式支援 NCSI 命令。也就是說,網路控制器一次只能夠執行一個 NCSI 命令。只有當它對收到的某個 NCSI 請求傳送了響應包之後,才能夠繼續接受下一個 NCSI 請求。
網路控制器的這種單執行緒機制使得管理控制器在對同一個網路控制器傳送 NCSI 請求時也只能以單執行緒方式進行。當管理控制器向某個網路控制器傳送了一個 NCSI 請求後,它必須保持等待狀態,直到收到了網路控制器發出的 NCSI 響應或者超時重傳為止。
超時重傳機制
如果在 NCSI 命令超時的時間間隔內,管理控制器還沒有收到網路控制器回覆的 NCSI 響應,則管理控制器必須以相同的 IID 重發之前的 NCSI 請求。
管理控制器必須嘗試 NCSI 請求至少 3 次,才能夠報告網路控制器發生了錯誤。
在網路環境相對惡劣的情況下,可能管理控制器在收到之前傳送的 NCSI 請求的響應的時候,已經超過了超時重發的時間間隔。在這種情況下,管理控制器會收到對於同一個 NCSI 請求的兩個響應。管理控制器必須有相應的機制能夠檢測出這第二個 NCSI 響應,並且將它丟棄。
非同步事件通告包
AEN(Asynchronous Event Notification)包是網路控制器在某些狀態發生變化、且影響其介面正常工作的情況下向管理控制器主動傳送的通告資料包。由於 NCSI 命令只是網路控制器處理的眾多資料包中的一小部分,網路控制器的一系列事件都會影響到命令的正常執行。這些事件包括:鏈路狀態變化、作業系統驅動載入及解除安裝、晶片復位等等。
網路控制器對哪些事件會向管理控制器傳送 AEN 包是由管理控制器來定義的,管理控制器通過使用控制位(control bit),可以單獨地定義網路控制器對各個事件的非同步事件通告是否啟用。
AEN 包是工作在 NCSI 請求 - 應答機制之外的一種 NCSI 包。也就是說,AEN 包既不是 NCSI 請求,也不是任意 NCSI 請求的響應。AEN 包沒有應答,即使一個 AEN 包在傳輸的過程中丟失了,管理控制器也無從得知。
一個 AEN 包的 IID 始終為 0x00。
NCSI 包結構
NCSI 的乙太網幀頭
正如前文所述,NCSI 是基於以太介質的。所有的 NCSI 包都是封裝在 IEEE 802.3 定義的乙太網幀格式中的,即:任意一個 NCSI 包都被封裝在 14 位元組的乙太網頭及 4 位元組的乙太網尾中,如圖 3 所示:
圖 3. NCSI 包的以太幀格式
目的地址欄位:
NCSI 以太幀的第 0 到 5 位元組分別代表乙太網目的地址的第 5 到 0 位元組。由於傳輸 NCSI 命令的通道並沒有被分配一個特定的 MAC 地址,所以 NCSI 以太幀的目的地址為廣播地址(FF:FF:FF:FF:FF:FF)。
如果網路控制器收到了一個目的地址不是 FF:FF:FF:FF:FF:FF 的 NCSI 包,則它會直接丟棄該資料包並且返回一個錯誤響應。
源地址欄位:
NCSI 以太幀的第 6 到 11 位元組分別代表乙太網源地址的第 5 到 0 位元組。如果 NCSI 包來自於管理控制器,那麼源地址欄位可以為任意值。如果 NCSI 包來自於網路控制器,則源地址欄位必須為 FF:FF:FF:FF:FF:FF。
型別欄位:
NCSI以太幀的第 12、13 位元組分別代表乙太網型別的第 1、0 位元組。對於NCSI 控制包而言,其型別欄位為 0x88F8。
NCSI 控制包頭
每個 NCSI 包(包括 NCSI 請求包、響應包以及 AEN 包)都有一個 16 位元組長的控制包頭,以大端在先順序排列,如圖 4 所示:
圖 4. NCSI 控制包頭格式
Management Controller ID(MC ID)欄位
MC ID 欄位 1 位元組長,標識了 NCSI 包對應的管理控制器。在 NCSI 1.0.0a 版本中,該位元組規定為 0x00。
網路控制器每收到一個管理控制器發出的 NCSI 請求時都必須將請求包中的 MC ID 欄位拷貝到響應包的 MC ID 欄位中。
Header Revision 欄位
Header Revision 欄位 1 位元組長,標識了 NCSI 命令包頭的版本號。在 NCSI 1.0.0a 版本中,該位元組規定為 0x01.
IID 欄位
IID 欄位 1 位元組長。正如上文所述,網路控制器可以用 IID 來辨別當前 NCSI 命令是一個新的請求還是一個超時重傳的請求;管理控制器可以用 IID 來確認某個特定的 NCSI 請求是否得到了相應。
Command 欄位
Command 欄位 1 位元組長,用於標識特定的 NCSI 命令請求與響應。每個 NCSI 請求命令都對應著 0x00 到 0x7F 之間唯一的一個命令號,而對該 NCSI 請求包的響應的命令號就是把 NCSI 請求的命令號的最高位置為 1,這樣就建立了 128 個 NCSI 請求命令與相應的 128 個 NCSI 響應命令之間的一一對應關係。
Channel ID 欄位
Channel ID 欄位 1 位元組長。每個 NCSI 管理控制器可以對應一個或者多個 package,這些 package 可以屬於同一個網路控制器,也可以屬於不同的網路控制器。每個 package 的內部又可以定義一個或者多個通道(channel)。所有的 NCSI 資料包都是在某個特定的 channel 中傳輸的,Channel ID 欄位就標識了當前 NCSI 資料包所在的 channel。
Payload Length 欄位
Payload Length 欄位 12 位元長,標識了緊隨 NCSI 包頭之後的 NCSI 載荷的長度。
Reserved 欄位
圖中標有 Reserved 的區域均為保留欄位,通常被置為 0。
NCSI 控制包載荷
NCSI 控制包載荷的資料都是按照大端在先的順序排列的,包括資料、載荷填充、校驗和以及以太包填充 4 部分,如圖 5 所示:
資料(Data)部分:
NCSI 請求不含 Data 部分。
每個 NCSI 響應都有 2 位元組的響應值和 2 位元組的原因值。對於某些 NCSI 命令的響應,還有一定長度的附加資訊。
以太包填充部分:
根據 IEEE 802.3 標準,所有的以太幀長度必須大於 64 位元組,也就是說,NCSI 包頭和 NCSI 載荷的長度之和必須大於 46 位元組。事實上,大部分的 NCSI 包都無法滿足這一條件。因此,幾乎所有的 NCSI 包的末尾都需要作一定長度的填充。
AEN 包格式
NCSI 的 AEN 包格式如圖 6 所示:
圖 6. AEN 包格式
傳送 AEN 包的網路控制器需要在 NCSI 包頭的 Channel ID 欄位裡標識發生相應事件的 channel 號。
AEN 包的 NCSI 頭的 IID 欄位始終為 0x00,command 欄位始終為 0xFF,Payload Length 欄位始終為 0x04,也就是說 AEN 包的 NCSI 載荷長度為 4。
相關推薦
linux NC-SI
NCSI 的簡單介紹 它主要包括:一個管理控制器(Management Controller, MC),一個或多個(NCSI 的電氣特性最多支援 4 個)網路控制器(Network Controller, NC)。網路控制器一方面連線了外部網路介面與內部主機介面,另
(轉)linux nc命令使用詳解
遠程拷貝 工作 主機 lin con gin browser -s 反向連接 linux nc命令使用詳解 原文:https://www.2cto.com/os/201306/220971.html 功能說明:功能強大的網絡工具 語 法:nc [-hlnruz][-g&
linux nc 詳解
nc功能說明:功能強大的網絡工具 netcat(nc)是一個簡單而有用的工具,不僅可以通過使用TCP或UDP協議的網絡連接讀寫數據,同時還是一個功能強大的網絡調試和探測工具,能夠建立你需要的幾乎所有類型的網絡連接 安裝: root@pts/0 # yum -y install nc 幫助: root@pts
Linux nc/netcat 命令介紹
don 等待 數據包 opp 範圍 mep -s 操作 nginx 1,nc命令是netcat命令的簡稱,都是用來設置路由器。 2,語法nc/netcat(選項)(參數) 3,選項-g<網關>:設置路由器躍程通信網關,最多設置8個;-G<指向器數目>
【待補充】[Linux] nc
acc ont bsp class lin 16px bind and pen 【nc 是做什麽的】 【nc怎麽用】 查看幫助 nc -help # 查看幫助 nc -help # 監聽端口 -l, --listen
linux nc命令使用詳解
功能說明:功能強大的網路工具 語 法:nc [-hlnruz][-g<閘道器...>][-G<指向器數目>][-i<延遲秒數>][-o<輸出檔案>][-p<通訊埠>][-s<來源位址>][-v...]
AST2500 NC-SI功能除錯
1、背景介紹 目前在專案中使用到AST2500作為板上BMC進行管理,其中有個功能是NC-SI,所謂NC-SI可以用下面一張圖表示。 上圖中AST2500可通過NC-SI連線網絡卡,從而連線到外網,更詳細的連線如下 在我們這個專案中,網絡卡使用的是Intel的I
Linux nc命令詳解
NetCat,在網路工具中有“瑞士軍刀”美譽,其有Windows和Linux的版本。因為它短小精悍(1.84版本也不過25k,舊版本或縮減版甚至更小)、功能實用,被設計為一個簡單、可靠的網路工具,可通過TCP或UDP協議傳輸讀寫資料。同時,它還是一個網路應用Debug分析器
Linux nc命令的簡單玩法
nc是netcat的簡寫。nc的作用很多,可以實現網路埠監聽、網路資料傳輸等,其用法可以用命令man nc或者nc --help檢視。 本文主要介紹nc的一個簡單玩法,實現監聽一個埠,然後往這個埠寫入點資料,在監聽終端上看到寫入的資料。 開啟第一個終端監聽
linux nc命令操作memcache
用nc命令操作memcached 1)儲存資料:printf “set key 0 10 6\r\nresult\r\n” |nc 192.168.2.34 11211 2)獲取資料:printf “get key\r\n” |nc 192.168.2.34 11211 3)刪除資料:printf “dele
linux nc/netcat命令使用詳解
linux nc命令使用詳解 功能說明:功能強大的網路工具 語 法:nc [-hlnruz][-g<閘道器...>][-G<指向器數目>][-i<延遲秒數>][-o<輸出檔案>][-p<通訊埠>][-s<
kail linux 下nc工具的基本使用(安全牛視頻)
效果 設計 思路 all 可靠 加密方法 了解 一個 網站 一、簡介 nc是netcat的簡寫,有著網絡界的瑞士×××美譽。因為它短小精悍、功能實用,被設計為一個簡單、可靠的網絡工具。 nc 常用的命令有兩個: 1、-v 輸出詳細的交互或者出錯信息 2、-n 如果後面是ip
linux網路測試:scp/nc
scp就是secure copy,一個在linux下用來進行遠端拷貝檔案的命令。 有時我們需要獲得遠端伺服器上的某個檔案,該伺服器既沒有配置ftp伺服器,也沒有做共享,無法通過常規途徑獲得檔案時,只需要通過簡單的scp命令便可達到目的。 scp [引數] [原路徑]&n
linux網絡測試:scp/nc
一個 火墻 文件的權限 沒有 .com hadoop 配置文件 abc 如圖所示 scp就是secure copy,一個在linux下用來進行遠程拷貝文件的命令。 有時我們需要獲得遠程服務器上的某個文件,該服務器既沒有配置ftp服務器,也沒有做共享,無法通過常規途徑獲得文件
Linux telnet、nc、ping監測狀態
在工作中會遇到網路出現閃斷丟包的情況,最終影響業務工常使用。可以業務伺服器上發起監測。 1、通過telnet echo -e "\n
linux ps與top 命令下wa,hi,si,st等及 VSZ,RSS,VIRT,RES,等關鍵字含義詳解!
Linux中ps與top命令 這兩個命令都是檢視系統程序資訊的命令,但是用處有點兒不同 一:.ps命令–提供系統過去資訊的一次性快照 也就是說ps命令能夠檢視剛剛系統的程序資訊 命令:ps aux或者ps lax [[email protected] ~]# ps aux
Linux和Windows下的NC(Netcat)命令測試埠連通性
一、Linux OS 環境下(以Centos為例),使用nc命令分別測試TCP和UDP埠連通性: 安裝方法: 在客戶端和伺服器端分別安裝nc工具,安裝命令如下: yum install nc 1 1. Linux OS下使用nc命令,實現TCP方式監聽伺服器端5000
軟體安裝集合(二):linux埠訪問telnet和nc安裝和使用
一、實現功能 兩個linux常用的埠資料傳送軟體的安裝和配置 二、安裝和配置 1.telnet (1)安裝 yum -y install telnet (2)使用 telnet ibeifeng.com 44444 2.nc (1)安裝 yum inst
【Linux】 Centos7 NC探測埠命令
1 這個需要Linux伺服器裡邊支援nc命令,檢查NC 是否安裝 2 安裝nc yum install nc -y 3 探測埠 TCP埠探測: nc -w 1 IP地址 埠 < /dev/null && echo
linux下軟中斷[si]負載均衡
最近在生產環境的伺服器上發現如下問題: 多程序服務的使用者負載[us]可以均勻分配在各個CPU上執行,但軟中斷負載[si]只集中在CPU0上,導致CPU0的[si]段的負載達到70%,而其他幾個核的si段負載為0%,為何會出現此現象呢? 首先,我們檢視一下,是哪一個軟中