ENUMER的系統描述,以及它與其他ENUM實現的區別。同時還給出ENUMER節點擴展的技術說明和與ENUMER協同運行的網絡電話交換機FreeSWITCH配置示例。
緒論
網絡電話(下文簡稱“IP電話”)在全世界的使用愈加廣泛,與傳統方式相比,IP電話具有諸多優點。IP處理通常比傳統方式價格更為低廉且功能更強。現在許多單位已使用網絡電話交換機,但傳統方式在電話網中仍占主流地位,甚至即使是數字電話交換機。因此,甚至兩個網絡電話交換機之間也需通過普通電話網,即公共交換電話網絡(下文簡稱“PSTN”)。請看以下例子:
假設我們有“買方”群體,和另一群體“賣方”。雙方為滿足各自的內部需求均使用網絡電話交換機(也稱用戶級交換機,下文簡稱“PBX”)。假設買方發現自己感興趣的廣告。買方決定給賣方打電話,撥號。呼叫將按以下方式進行:
在這次呼叫中,兩個網絡電話交換機通過網絡接入商PSTN鏈路進行連接,相應地買方將向網絡接入商支付從VOIP網發送至PSTN網的呼叫費用(呼叫接入)。然后PSTN網絡接入商之間將互相結算,這不是我們所感興趣的。
如果買方網絡電話交換機能夠識別路徑,可以通過因特網直接與賣方網絡電話交換機連接,那么買方就可以不用向PSTN接入者付費,呼叫免費:
而且連接的安全性和質量大幅提高,因為在那種鏈路中的中間因素和語音通訊轉碼較少。
眾所周知,“了解所有路徑”,也就是說支持所有可能的IP直接連接是相當困難的,研發出網絡協議,將電話號轉換為“路徑”,即被稱為ENUM的 URI。
ENUM
ENUM協議 (rfc6116)像是一個分布地址簿,可按電話號碼“找到路徑”,通往服務于這個號碼的網絡電話交換機。協議描述為:https://en.wikipedia.org/wiki/Telephone_number_mapping
協議使用設想如下:
賣方在 ENUM系統中注冊自己的網絡電話交換機 (PBX)。
買方網絡電話交換機在使用PSTN網呼叫前將嘗試在ENUM系統中查詢“較短路徑”。
如果系統中有“較短路徑”——買方的自動電話交換機就會使用該路徑。如果未查詢到——那么就會使用標準路徑,通過PSTN,像平時一樣支付呼叫費用。
ENUM益處
使用ENUM不僅有利于發起方,還有利于接收方。其中包括:
借助直接數字連接改善信號質量。
提高連接速度和安全性。
避開PSTN運營商對線路數量和使用分鐘數的限制。
不會出現運營商超載造成的拒絕服務。
對呼叫方而言——呼叫免費(直接經濟節?。?。
對應答方而言——也是免費的,甚至如果他有免費號碼,本應為接聽電話支付費用(也是一筆節?。?。
ENUM自動工作,不影響用戶,只需網絡電話交換機最低配置。
ENUM協議簡單易懂,技術高效,日常網絡電話交換機均可支持。但是,因其具有組織經濟性,所以它并沒有得以廣泛應用。我們將詳細研究。
ENUM目前的實現問題
ENUM的首要問題——現在普通網絡電話交換機所有人無處注冊自己的號碼(或一些號碼)和相應的 e164.arpa ENUM-服務器。但是這種服務器——不是面向網絡電話交換機所有者或私人,而是“網絡接入商間的節點”,彼此互信的大型VOIP網絡接入商提供可接入他們網絡的相關信息。這種“為自己人的小團體”,普通的網絡電話交換機所有人是無法進入的。
第二個問題——網絡運行太過依賴于可能非正常工作或根本就不工作的中央服務器。對此的一個直觀例子就是——e164.org。最近兩年——運行不穩定,除此之外,還發生不端事宜,例如——不顧已注冊免費號碼的網絡電話交換機用戶,而只向自己的PSTN網絡呼叫付費接入者發送通信。自然,這種行為導致了免費號碼用戶不再愿意在e164.org上注冊號碼。
例如關閉前一個月——e164.org全部停止發送ENUM應答,雖然其中包括一些正確的記錄(我們已測試)。
因為傳統的中央ENUM系統運用域名系統(下文簡稱“DNS”)傳輸,它易受到各種各樣對 DNS基礎設施的攻擊,如DNS-Spoofing、DNS-hijacking等。自然,DNS系統故障也會導致ENUM系統拒絕服務。
最后、卻很重要的一點:那樣的服務器加載量非常大,因為網絡電話交換機每次呼叫都要進行查詢。是的,查詢需要通過中間的DNS服務器緩沖,但即便如此——對于面向全球電話機的服務器來說這個加載量還是相當大的。結果就是拒絕服務或查詢處理阻滯,另外,服務器基礎設施價格不菲。
上述“失敗”原因包括源自中央服務器以及查詢處理不透明的組織技術。確實,ENUM的集中實現,和任何網絡服務器一樣,取決于建立ENUM記錄和實際支持這些記錄的網站的工作性能,還取決于相應的ENUM查詢處理DNS服務器。換句話說,對ENUM系統的信任并不能提高對系統管理機構的信任。中央服務器ENUM查詢處理的算法和標準的不清晰也會導致信任度降低。這樣,例如,今天它能夠正常工作,而明天——向主管人員感興趣的某個號碼再次發送呼叫(事情已完成)。例如,向本身就可以完成所有通信的中間VOIP節點發送。為什么突然重新發送?可能,號碼所有者在演奏爵士。。.
相應地,脫離這個系統會導致整個網絡的瞬間停滯。這兩個缺點完全展示了e164.org:最初取代注冊號碼而只向自己的網絡接入商-接入者發送免費呼叫,后來總是空答回復,最終全部基站退出經營。
ENUMER——分散式 ENUM
為解決上述問題,我們研發了基于Emercoin區塊鏈的ENUM分散式系統。項目名稱“ENUMER”,源于單詞“ENUM”和“Emer”。簡而言之:ENUM+EMER=ENUMER。
加密貨幣是現代金融業的趨勢,現在正活躍地發展。包括Emercoin在內的加密貨幣的基礎是區塊鏈——數據支付操作的分布式信任公共基站。
Emercoin的顯著特點在于名稱值存儲 (Name-Value Storage,下文簡稱“NVS”)——分布式一般用途信息庫。也就是說每一個網絡參與者都有可信的區塊鏈局域副本,因此——所有NVS包含的內容,而對NVS內容的信任、就像對整個區塊鏈的信任,基于POW工作量證明和POS權益證明的挖礦機綜合力。
基于這個庫已經建立并使用emcSSH/emcSSL安全系統,還有無懈可擊的分散式EmerDNS。
分散式ENUM項目采用系統EmerDNS,相比于傳統的 ENUM集中實現,它具有以下優點:
借助于局域處理的高速ENUM查詢處理
查詢處理可靠性強。甚至在丟失與其他網絡參與者的連接時,也將通過局域副本繼續查詢。
匿名的ENUM查詢。因為查詢不會離開局域電腦或可信的局域網,任何外部人員都不會知道發生了什么、在尋找誰。
因為缺少這樣的不可能對DNS基礎設施實施攻擊。
因為網絡真正分散,對網絡的信任不取決于對任何一家公司的信任。不可能出現整個系統因為一個人的決定而停止的情況[2]。ENUM網將繼續工作,直到數百個獨立挖礦機關閉區塊并確認區塊鏈協議。
ENUM查詢處理算法將由查詢方完成。它所編寫的程序代碼可在Github中找到,任何人都可以對代碼進行正確性分析。ENUM服務器不可能在運行過程中改變規則。也就是說原有局域服務器通過局域連接(或通過可信網絡)進行查詢。
借助于Emercoin分散式對等網絡,定標不受限。所以,來自世界各地的查詢聚集時不會出現“狹窄瓶頸”。每一個都可以任意給自己設置一些獨立的EmerCoin節點,在這個文件族中處理自己的ENUM查詢。即解決問題 [4]。
用戶自己通過 EmerCoin局域錢包創建ENUM記錄,對記錄作變形處理。所以,不需要服務器或其他地方[1]來寫入信息。每個用戶自己局域操作,而“通知自己的場所”——將不再需要。每一個將通知自己的局域錢包,而局域錢包已將ENUM中繼傳輸到對等網絡。
結果,我們將得到如下系統:
高速
可靠
受保護
定比
不取決于任何人
不因隨意的處理脫離系統
不能攔截不合心意的
查詢處理算法透明
局域錢包取代“網絡服務器”管理記錄
分散式ENUM雖有上述許多優點,但自身仍存在著一些與基礎設施公共利用度相關的特殊問題。有意愿的人可以與任何內容建立記錄,捕捉與他人電話號相應的記錄,記錄內容或為真正的電話用戶封鎖ENUM入口或更糟糕——把呼叫發送到其他地方。
為防止類似的非法利用,在系統中預設了檢驗器。這些媒介可以檢驗各種ENUM記錄是否屬于相應號碼的所有人,然后將簽名轉給ENUM記錄所有者——判斷記錄的正確性以及是否能夠使用,為控制惡意使用ENUM系統只用個人電話號運行。也就是說一個ENUM記錄不可能侵占一片號碼空間。
怎樣在ENUMER系統中建立經過驗證的記錄
想使用ENUM接聽呼叫的網絡電話交換機所有人,應當先使自己的網絡電話交換機能夠接收“來自世界各地”的SIP URI呼叫。建設細節取決于具體的網絡電話交換機(PBX)和網絡環境,與普通非區塊鏈電話交換機的建設毫無差異。
然后應當在EmerCoin NVS中分配呼叫者將使用的已被驗證的ENUM記錄。為此應當進行以下操作:
設置Emercoin錢包
Emercoin錢包是分布的ENUM網絡(但不只是 ENUM)客戶系統,有些類似于“私人辦公室”,使用者可以建立自己的ENUM記錄并按需要進行更新。錢包可從下列網址下載:http://emercoin.com/#download
為了您的操作系統,建議使用圖形用戶界面錢包管理記錄。
下載并啟動后,需要等待直到錢包與區塊鏈本地副本同步。這需要幾個小時。
獲取EMC錢幣
接著,應從某處獲取加載和更新NVS記錄的EMC錢幣。可從交易所獲取,或是從研發者那里獲得。
儲存一個記錄10年及后續的更新需要大約0.05EMC,,按照現在的匯率就是0.06美元??傮w來說,這個價格是完全可以接受的。而如果注意到,NVS的價格將很快下降至1/100,可以認為ENUMER記錄服務費幾乎為零。
獲取錢幣的地址位于菜單“File/Receiving Addresses”,大致如下:ERFJfQGwmZEomHQHGZsRFLZEyBxaWsCHTo。
建立ENUM記錄
EmerCoin NVS(Name-Value Storage,名稱值存儲)分散式儲存庫將用來保存ENUM記錄。NVS記錄或是通過temp“Manage Names”中的GUI 錢包,或是從事文件編碼的JSON API團隊。NVS記錄,就像它的名字一樣,由名稱(Name) 和值(Value)組成。
名稱
ENUM 子系統記錄名稱具有以下形式:
enum:phone_num:N
這里:
enum —服務前綴
phone_num — E164形式電話號碼
N –入侵者攔截號碼(十進制數)
例如:
enum:18009359935:0
如果說服務前綴和號碼易于理解,那么參數用途就需要解釋一下了。這個數字是用來保護號碼的真正所有人免受攔截他人號碼ENUM記錄并借此做壞事的入侵者的侵襲。他們無法使用非正常工作的記錄(見下文的驗證),但號碼的真正所有人沒有攔截號N就無法寫入自己的記錄。電話號碼的真正所有人如果使用號碼N,可以根據N的第一個自由意義建立記錄。例如假設您想為電話號碼 18009359935創建ENUM記錄,而在上面的例子中——已被某入侵者攔截。不要緊,建立名稱“enum:18009359935:1”,驗證后系統將核查您的名稱,而入侵者只能瀏覽一些無效的記錄,白白消耗自己的錢幣。如果這個名稱被泄露——嘗試建立N=2號碼記錄,以此類推。
值 (Value)
Поле Value cостоит из нескольких строк。 Строки – либо U-директивы NAPTR (rfc3402)
值域由多行組成。字句行——或是名稱權威指針(rfc3402) ENUM(從E2U開始) U指令 ,或是檢驗器簽名(從SIG開始)。一個ENUM記錄不僅可以有幾個指令,還能有一些不同檢驗器的簽名。例如包含U指令和簽名的值:
E2U+sip=100|10|!^(.*)$!sip:17772325555@in.callcentric.com!
SIG=ver:enum|IC00zMELlEwmMHLpQs8=
您現在沒有簽名(檢驗器會向您發送簽名行),因此在創建簽名時只需存入向您的網絡電話交換機發送呼叫的U指令(即使一個)。指令結構如下:
Service=Priority|Preference|Regex
在上面的例子中:
Service -》 E2U+sip
Priority -》 100
Preference -》10
Regex -》 !^(.*)$!sip:17772325555@in.callcentric.com!
域和名稱的涵義符合傳統ENUM的標準。為避免閱讀冗長的文件,為新手提供了簡潔的指令:
幾乎服務器總是——就像在上述例子中,會話初始協議(SIP)網絡電話交換機E2U+sip??赡苡衅渌x項,例如E2U+iax或其他類似等。就像上面提到的,在ENUM記錄中可以存在幾個U指令。
Priority, Preference——與初始示例同樣保留下來。不建議大幅減少其數量。
最主要的是——Regex。SIP URI中的電話號碼按Regex規則改動。分隔符表示“!”。第一部分——電話號中加入regex ,第二部分——以此號碼代替\1,從而形成SIP URI。
還有一個不錯的regex使用示例為:!^\+?441865332(.*)$!sip:\1@nominet.org.uk!
驗證
這樣,區塊鏈可以接收的ENUM就已建立好。所有人均可使用。但是網絡電話交換機呼叫者一致將它忽略,因為里面沒有他們所信任的檢驗器簽名。這完全正確。因為難道隨便什么人都能用您的電話號碼建立記錄?現在所有話務都發送到指定地點,沒有注意到么?不,話務將只根據包含檢驗器簽名的驗證記錄發送。
現在尚未開發出自動驗證系統,但系統的研發和使用已列入計劃。如果您有意合作研發和使用自動驗證子系統,請與我們聯系:enumer@emercoin.com。暫時驗證還是通過人工操作進行。
請向以下地址發送郵件以獲取簽名:enumer@emercoin.com。請在郵件中寫明您ENUMER記錄的NVS名稱,例如:enum:18009359935:0。
操作員將在幾天內核查現有記錄,向相應號碼發送測試呼叫確認號碼所有者了解要求并同意使用ENUMER。驗證成功后我們將發送回復,其中包括您將寫入NVS記錄的簽名。寫入簽名后,您的記錄成為可信任記錄,其他使用者可使用此記錄直接呼叫您的用戶交換機。
在ENUM記錄中增加檢驗器簽名
將此簽名寫入您的ENUM記錄并完成名稱更新(NAME_UPDATE),將證明您對此號碼的擁有,信任此檢驗器的呼叫方(ENUMER用戶)將取代PSTN而通過SIP URI向您的網絡電話交換機發送呼叫。
ENUM記錄中可存在來自幾個不同檢驗器的簽名。用戶將使用ENUM記錄,哪怕只有一個來自于他所信任的檢驗器簽名。
增加記錄后——您的ENUM記錄被激活,ENUMER用戶可以不使用PSTN網絡直接對您進行呼叫。
怎樣使用ENUMER撥打電話(用戶)
現在,網絡電話交換機記錄已寫入ENUMER,該系統就可以為您和其他用戶服務了。為此您的網絡電話交換機需要向Emercoin NVS發送查詢。
使用enum.enumer.org服務
在ENUMER中我們設置了公共網關,任何PBX用戶無需對區塊鏈作任何調整、無需任何技術支持就可以在自己的電話交換機中使用。為此應當向域名系統發送查詢:enum.enumer.org分解器。命令行的測試查詢和回復示例如下:
$ dig -t naptr +short 53995390081.enum.enumer.org
100 10 “u” “E2U+sip” “!^(.*)$!sip:\\1@tollfree.alcazarnetworks.com!” 。
但在使用網關時,您將潛在遇到上文所研究的與集中操作裝置和外部服務器使用相關的所有問題。因此,網關的主要用途只是提供測試媒介。我們始終不建議在系統運行時實際運用網關,而是在Emer域名系統中打開個人網關,下文將詳細論述。
在Emer域名系統中擴展網關
最正確、快速和安全的方法——設置自己的EmerCoin錢包服務程序,將網關擴展為網絡電話交換機工作局域網中的emc域名系統。網關擴展文件——請見?Integration into a regular DNS tree?部分。
在BIND(或其他DNS代理服務器)配置中將需要增加援引與Emer域名系統中已有第四區所類似的“enum”第五區。
除此以外,在emercoin.conf錢包配置中必須將“$enum”加入服務區名單,如下述示例。使用“$”符號代替句號指示錢包,此區將按照ENUM rfc6116規則服務。除此以外,錢包配置中還需增加ENUM獨有的兩種參數:
Enumtrust信任檢驗器(下文示例—ver:enum|olegh)
文件名或援引名稱值存儲記錄(援引以“@”開始),包括通過公共落地戶完成免費電話規則名單,如果在ENUMER中沒有任何找到任何目標號碼的信息。這就是 enumtollfree。
在下文示例中,enum NVS記錄援引清單:免費電話,如今涵蓋了免費呼叫美國、法國和波蘭的接入規則。我們贊同該記錄的現實意義,并隨著接入者的出現將增加向其他國家呼叫的途徑。
因此,應當在emercoin.conf位形文件中增加下列行句:
emcdnsallowed=$enum|.coin|.emc|.lib|.bazar # Allowed TLDs, including ENUM
enumtrust=ver:enum|olegh
enumtollfree=@enum:tollfree
為調整測試,請將 ENUM查詢人工發送至DNS:
$ dig -t naptr +short 53995390081.enum localhost
答復大致應為:
100 10 “u” “E2U+sip” “!^(.*)$!sip:\\1@tollfree.alcazarnetworks.com!” 。
如果某部分不運行——請嘗試直接將查詢發送至錢包,至端口5335
$ dig -t naptr +short 53995390081.enum localhost –p 5335
排除故障點。但行句正確時——一切將毫無問題立即運行。
接入網絡電話交換機
這比任何都簡單。在網絡電話交換機的撥號計劃中應當指明在內部和小團體號碼解析后、但在轉向PSTN網絡接入商前,向ENUMER發送查詢。自然,在查詢前應將目標號碼轉成ITU-T E164格式。
評論