DHCP Option 82詳細講解

2021-06-20 14:12:11 字數 3873 閱讀 4584

option 82是dhcp報文中的中繼**資訊選項(relay agent information option)。當dhcp client傳送請求報文到dhcp server時,若需要經過dhcp中繼,則由dhcp中繼將option 82新增到請求報文中。option 82包含很多sub-option,本文中的option 82只支援sub-option 1、sub-option 2和sub-option 5。sub-option 1中定義了**電路id(即circuit id),sub-option 2中定義了**遠端id(即 remote id),sub-option 5為鏈路選擇(link selection)子項,該選項中包含了dhcp中繼新增的ip位址。

option 82實現了dhcp客戶端和dhcp中繼裝置的位址資訊在dhcp伺服器上的記錄,與其他軟體配合使用可以實現dhcp分配的限制和計費功能。

1. 概念介紹

option

dhcp報文中的乙個選項,該選項在dhcp報文中為可變長的字段,option選項中包含了部分租約資訊、報文型別等。option選項中最多可以包括255個option,最少為1個option。

option 82

option 82又稱為中繼**資訊選項(relay agent information option),是dhcp報文中option內容的一部分。rfc3046中定義了option 82,其位置在option 255之前而在其他option之後。option 82中可以包含最多255個sub-option,若定義了option 82,至少要定義乙個sub-option。目前option 82中常用的sub-option 1、sub-option 2和sub-option 5。

sub-option 1

sub-option 1是option 82的乙個子選項,為**電路id(即circuit id)子項。子選項通常在dhcp中繼裝置上配置,定義了在傳輸報文的時候要攜帶dhcp客戶端所連線交換機埠的vlan-id及二層埠號。通常sub-option 1與sub-option 2子選項要共同使用來標識dhcp源端的資訊。

sub-option 2

sub-option 2也是option 82的乙個子選項,為**遠端id(即remote id)子項。該子選項也通常在dhcp中繼裝置上配置,定義了在傳輸報文的時候要攜帶中繼裝置的mac位址資訊。通常與sub-option 1子選項要共同使用來標識dhcp源端的資訊。

sub-option 5

sub-option 5也是option 82的乙個子選項。為鏈路選擇(link selection)子項,該選項中包含了dhcp中繼新增的ip位址。這樣dhcp server在分配ip位址給dhcp客戶端的時候就可以分配與該位址同網段的ip位址。

2. option 82報文組成

在dhcp報文中有乙個options欄位,該欄位可以為空,也可以為某乙個特性的option,option 82就是其中的一種option,可以有多個sub-option 組成。

code:標識了中繼**資訊選項的序號。本報文中序號為82,即option 82。option 82 在其他option之後,在option 255 之前。

len:為**資訊域(agent information field)的長度。

agent information field:**資訊域。在該字段中指定了使用的sub-option。

sub-option報文結構

subopt:子選項序號,本報文中為sub-option 1、sub-option 2和sub-option 5。各子選項含義如下:

1表示**電路id(circuit id)子項

2表示**遠端id(remote id)子項

5表示鏈路選擇(link selection)子項

len:標識sub-option value域的長度。

sub-option value:sub-option的值。例如sub-option 1對應的值為circuit id。

3. 標準模式與華為固網模式

dhcp relay支援option 82,在收到從client到server的請求報文中新增option 82,以標識使用者的位置資訊。現在只新增sub-option 1和sub-option 2,不新增sub-option5。在標準模式,sub-option 1是接收報文的二層埠號和vlan號,sub-option 2是接收報文裝置的mac位址。

為了更加精確地定位使用者位置資訊,我司針對dslam應用提出ip dslam使用者物理位置定位解決方案,定義了dhcp option 82的華為固網模式,其中option 82的sub-option1表示「節點標識+框號/槽號/子槽/埠號+vlan」;sub-option2沒有改變,表示的是的relay系統mac位址;sub-option5 relay不新增。

option 82的sub-option1中的節點標識為字串,預設可以採用裝置的管理介面mac位址,形如:00-e0-fc-0d-dc-ec。為了提高維護的方便性,也允許網路管理者通過配置修改使用者節點標識,可以選擇是用relay的橋mac或裝置名(通過sysname配置的),也可以由使用者自行輸入字串。

華為固網模式option 82中sub-option 1的標識格式:

accessnodeidentifier eth frame/slot/subslot/port:vlan

對各段的解釋如下:

accessnodeidentifier:接入節點標識,長度不超過50個字元的字串,預設為橋mac

frame:框號,不支援的為0

eth:以太埠型別

slot:槽號

subslot:子槽號

port:埠號

vlan:vlan標識

4. 相關規範

rfc2131 dynamic host configuration protocol

rfc3046 dhcp relay agent information option

5. dhcp 中繼支援option 82工作機制

dhcp客戶端通過dhcp中繼從dhcp伺服器獲取ip位址的過程與同網段的dhcp獲取過程完全相同,都要經歷發現、提供、選擇和確認四個階段,詳細的過程請參考本手冊「網路層協議」的dhcp部分。這裡將只介紹dhcp中繼支援option 82時的工作機制,具體如下:

dhcp客戶端在初始化時以廣播的形式傳送請求報文;

若本地網路存在dhcp伺服器,則客戶端可以直接從該伺服器獲取ip位址。

若本地網路沒有dhcp伺服器,則與本網路相連的dhcp中繼裝置對該廣播報文進行相應的處理。dhcp中繼裝置將檢查報文中是否已有option 82選項,進行相應的處理。

如果報文中已有option 82,裝置按照配置的策略對該報文進行處理(丟棄、用中繼裝置本身的option 82項替代報文中原有的option 82項或保持報文原有的option 82項),然後將請求報文**給dhcp伺服器。

若請求報文中沒有option 82選項,則dhcp中繼裝置將option 82選項新增到報文中後**給dhcp伺服器。此時,請求報文中將包含了dhcp客戶端所連線的交換機埠的mac位址、所屬的vlan以及dhcp中繼裝置本身的mac位址。

dhcp伺服器收到dhcp中繼裝置**的dhcp請求報文後,將記錄報文中option選項所攜帶的資訊,然後將帶著dhcp配置資訊以及option 82資訊的報文發給dhcp中繼。

dhcp中繼收到dhcp伺服器的返回報文後將剝離報文中的option 82資訊,然後將帶有dhcp配置資訊的報文**給dhcp客戶端。

dhcp客戶端傳送的請求報文有四種,分別為dhcp_discover報文、dhcp_request報文、dhcp_release報文和dhcp_inform報文,dhcp中繼裝置將在四種報文中都新增option 82選項,因為不同廠商生產的dhcp伺服器裝置對請求報文的處理機制不同,有些裝置處理dhcp_discover報文中的option 82資訊,而有些處理dhcp_request報文中的option 82資訊。

新手講排序 詳細講解快速排序

quick sort int a,int start,int end int i start j end pivot 一.先選擇乙個基準pivot,3種選擇方式 1.固定位置,開頭或結尾或中間 2.隨機位置,採用隨機數產生start和end之間的數 3.平衡位置,即從開頭結尾中間三個數中選擇他們的中...

在Struts2中整合Spring詳細講解

spring的官方定義是 乙個輕量級的ioc和aop容器框架,它使用了一種叫做依賴注入的技術。所謂依賴注入,就是指將建立物件以及協議依賴物件之間合作的責任從物件自身中轉移到 工廠 中去,這個 工廠 通常由ioc容器提供。struts2與spring的整合要用到spring外掛程式包,這個包是同str...

在Struts2中整合Spring詳細講解

spring的官方定義是 乙個輕量級的ioc和aop容器框架,它使用了一種叫做依賴注入的技術。所謂依賴注入,就是指將建立物件以及協議依賴物件之間合作的責任從物件自身中轉移到 工廠 中去,這個 工廠 通常由ioc容器提供。struts2 與spring的整合要用到spring外掛程式包,這個包是同st...