【華爲雲技術分享】《跟唐老師學習雲網絡》 - Bridge網橋

【摘要】 跟唐老師學習雲網絡,已經進入到虛擬化的世界啦。Bridge是網絡虛擬化中非常重要的一種設備,快來一起學習Linux-Bridge的作用吧。

1      什麼是Linux-Bridge

咱們直接說人話:跟tap/tun、veth-pair是模擬網線的類似,Bridge也是照着物理設備的樣子,在Linux系統裏面虛擬出來的一種網絡設備。

因爲它也是網絡設備,所以可以配置 IP、MAC 等。然後它模擬的物理設備叫Hub(集線器)。

1.1      物理集線器Hub

很多小夥可能沒有見過,咱們直接上圖:

上面這個東西沒見過,可以參考下面這個,原理是一樣一樣的。

Hub的效果類似於把所有網線都焊在一起的感覺:

也就是不管信號從哪個口子進來,其他口子都能收到。“大喇叭”,“廣播桶”,可以這麼理解Hub。

    我們以前寢室裏面打小組遊戲,就是大家把網線往集線器一插,然後就是一個mini小局域網了。

1.2      虛擬集線器Bridge

所以呢,Linux裏面虛擬出來的這個Bridge也是這個效果。用戶可以把很多網卡,插到這個Bridge上面,然後互相之間就能連通了,於是往Bridge發報文,所有插在上面的網卡全都收到這個報文。(目的比較單純,就是把大家連在一起)

一般用來把 tap/tun、veth-pair網線連到Bridge上面,這樣可以把一組容器,或者一組虛機連在一起。比如著名的Docker就是用Bridge把Host裏面的容器都連在一起,使得這些容器可以互相訪問。也可以把Host上面的物理網卡也加入到Bridge,這樣主機的VM就可以和外界通信了。

2      容器使用Bridge

按照Docker容器舉例,這裏會把多個容器的veth網線的一頭,插入到Bridge,使得所有容器相當於焊在一起。同時在主機上,我們可以看到的網卡會多1個叫docker0的網卡(docker0就是Bridge網橋):

Ps:這裏有個有意思的地方是,沒有把主機上原有的那個eth0也加入到Bridge。而虛機使用Bridge,一般會把原來Host上面的網卡加入到Bridge。(容器不加入,一是因爲大量容器的IP,可能會和Host所在網絡上,它那些兄弟VM們的IP衝突。二還有容器網絡模式可以多種模式選擇,保留靈活性。)。

    至於容器怎麼通過Bridge和外面的世界進行通信,這個咱們在後續的《Docker網絡實戰》裏面詳解。

3      虛機使用Bridge

虛機這裏不一樣的是,一般會把Host自己原來的eth0網卡,也一塊加入到Bridge(如果虛機想要聯網的話)。相當於上面4個“人”都是兄弟了,大家在一個局域網。

通過Bridge,可以把所有的虛擬機網絡連在一起。

上面這些VM以爲自己的世界:

後面你可以回到原來物理網絡的視角去理解更高級的怎麼給VM分組問題(不明白的可以回顧早期課程)。要給VM分幫派,或者說給這些VM們分不同的子網,就需要能給這些VM打VLAN的tag的功能,這個功能Bridge(集線器)就搞不定了,需要引入更高級的“路由器”。

Ps:物理世界也差不多,集線器的價格很便宜,和路由器的價格不是一個檔次的。路由器可以設置每個端口的VLAN標記等高級功能。也就是咱們下一期的OVS(Open vSwitch)課程了。

4      怎麼查看Bridge信息

一般我都用 brctl 這個命令行(ip命令也可以用,但是我感覺brctl更直接),比較方便:

4.1      查詢Bridge信息

用的最多的就是,查詢一個Bridge上面插了哪些網卡:也就是show這個子命令

上面這個可以看到,有四個veth網卡插在名字爲docker0的Bridge網橋上面(其實就是有4個容器連在一起)。

4.2      網卡插入Bridge

用的第二多的就是 把一個網卡插入一個Bridge裏面。即:addif 子命令

我們可以試一下,先創建一根“網線”

ip link add tsj-0 type veth peer name tsj-1

然後創建一個Bridge

brctl addbr tsj-br

然後把網線一頭插入這個Bridge。

brctl addif tsj-br tsj-0

查詢結果:

brctl show tsj-br

額,其實“容器世界”也是這麼創建出來的。

點擊這裏,瞭解更多精彩內容

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章