導航:首頁 > 操作系統 > linux組播配置

linux組播配置

發布時間:2022-07-25 19:26:54

linux系統的基本配置要求是什麼

Linux系統最低配置:

CPU:700 MHz;

內存:384 MB;

硬碟:6 GB 剩餘空間;

顯卡:800x600以上解析度。


Linux系統是非常穩定和高效的,對電腦硬體配置要求很低,幾乎主流的配置都可以用。這正是Linux系統的優勢所在,不同的Linux系統版本要求略有不同,但是大體上在同一個配置等級內。


(1)linux組播配置擴展閱讀:

Linux不僅系統性能穩定,而且是開源軟體。其核心防火牆組件性能高效、配置簡單,保證了系統的安全。在很多企業網路中,為了追求速度和安全,Linux操作系統不僅僅是被網路運維人員當作伺服器使用,Linux既可以當作伺服器,又可以當作網路防火牆是Linux的 一大亮點。

Linux系統工具鏈完整,簡單操作就可以配置出合適的開發環境,可以簡化開發過程,減少開發中模擬工具的障礙,使系統具有較強的移植性。

linux系統完全兼容POSIX1.0標准。這使得可以在Linux下通過相應的模擬器運行常見的DOS、Windows的程序。這為用戶從Windows轉到Linux奠定了基礎。許多用戶在考慮使用Linux時,就想到以前在Windows下常見的程序是否能正常運行,這一點就消除了他們的疑慮。

Ⅱ linux 怎樣加入一個多播組

應用程序通過命令字IP_ADD_MEMBERSHIP把一個socket加入到一個多播組,IP_ADD_MEMBERSHIP是一個IP層的命令字,其調用使用的參數是結構體struct ip_mreq,其定義如下:
struct ip_mreq
{
struct in_addr imr_multiaddr;
struct in_addr imr_interface;
};
該結構體的兩個成員分別用於指定所加入的多播組的組IP地址,和所要加入組的那個本地介面的IP地址。該命令字沒有源過濾的功能,它相當於實現IGMPv1的多播加入服務介面。
ip_setsockopt實現了該命令字,它通過調用ip_mc_join_group把socket加入到多播組。
表示socket的結構體struct inet_sock有一個成員mc_list,它是一個結構體struct ip_mc_socklist的指針,實際上一個該結構體的鏈表,該結構體的定義如下:
struct ip_mc_socklist
{
struct ip_mc_socklist *next;
struct ip_mreqn multi;
unsigned int sfmode;
struct ip_sf_socklist *sflist;
};

next指向鏈表的下一個節點;multi表示組信息,即在哪一個本地介面上,加入到哪一個多播組;sfmode是過濾模式,取值為
MCAST_INCLUDE或MCAST_EXCLUDE,分別表示只接收sflist所列出的那些源的多播數據報,和不接收sflist所列出的那些源
的多播數據報;sflist是源列表,結構體struct ip_sf_socklist的定義如下:
struct ip_sf_socklist
{
unsigned int sl_max;
unsigned int sl_count;
__u32 sl_addr[0];
};

sl_addr是源地址列表,sl_count應該是源地址列表中源地址的數量,sl_max應該是當前sl_addr數組的最大可容納量(不確定)。對
於通過調用IP_ADD_MEMBERSHIP加入的多播組,它會在struct inet_sock的mc_list的鏈表頭添加如下一個節點:
struct ip_mc_socklist{
.next = 原來的鏈表頭;
.multi = 所加入的多播組,和介面信息;
.sfmode = MCAST_EXCLUDE;
.sflist = NULL; 即不排除任何源地址,也就是不存在源過濾。
}
另外,一個socket所允許加入的多播組的最大數量也是有限制的,mc_list中節點的數量不允許超過sysctl_igmp_max_memberships(預設為20)。

ip_mc_join_group還需要通過ip_mreq.imr_interface的指定值找到要加入多播組的那個介面,並為介面設置狀態(即該接
口要加入哪個多播組,過濾哪些源,也就是為該介面增加一個組,如果要增加的組已存在,則增加該組的引用計數)。代表網路設備介面的結構體struct
in_device有一個成員mc_list,這是一個結構體struct ip_mc_list的鏈表,該結構體的定義如下:
struct ip_mc_list
{
struct in_device *interface;
unsigned long multiaddr;
struct ip_sf_list *sources;
struct ip_sf_list *tomb;
unsigned int sfmode;
unsigned long sfcount[2];
struct ip_mc_list *next;
struct timer_list timer;
int users;
atomic_t refcnt;
spinlock_t lock;
char tm_running;
char reporter;
char unsolicit_count;
char loaded;
unsigned char gsquery;
unsigned char crcount;
};

interface指向網路設備介面,multicast即為加入的組的多播地址,users記錄當前有幾個socket在該介面上加入了該多播組。
sfcount是一個有兩個元素的數組,分別記錄在該介面上加入多播組的socket的過濾模式為EXCLUDE和INCLUDE的數量,sfmode為
該介面本身的過濾模式。sources為源地址列表,該結構體具體內容稍後再分析。timer為主動報告定時器,當一個介面(注意:不是socket)新
加入到一個多播組,需要向多播路由器發送一個igmp報告,以通知多播路由器需要向本地網路轉發該組的數據報。tm_running是一個標志,如果
timer當前正在運行,則置1,否則置0。reporter也是一個標志,如果當前正要開始發送igmp報告,則置該標志為1,否則為0。
unsolicit_count是當一個介面新加入到一個多播組時,發送主動報告的次數,值賦為
IGMP_Unsolicited_Report_Count(預設值為2)。loaded也是一個標志,當該介面上的該多播組被加入時,需要通知硬體過
濾器,通知完成即置該標志為1,否則為0。
該結構體比較復雜,先看通過IP_ADD_MEMBERSHIP命令字把一個socket加入到一個新的多播組,會使struct in_device的mc_list中增加一個什麼樣的節點。下面是生成的節點的情況:
struct ip_mc_list{
.interface = in_dev;
.multiaddr = 多播組地址;
.source = NULL; //源過濾列表為空。
.tomb = NULL;
.sfmode = MCAST_EXCLUDE; //EXCLUDE模式,即不過濾任何源。
.sfcount[MCAST_EXCLUDE] = 1;
.sfcount[MCAST_INCLUDE] = 0;//即該節點上該多播組有一個socket加入,過濾模式為EXCLUDE。
.users = 1; //有一個用戶。
.refcnt = 1; //引用計數為1
.tm_running = 0;
.unsolicit_count = 2;
... ...
}
新生成的節點加入到mc_list鏈表中後,要通知網路設備介面的硬體,以使它的過濾機制可以接收進該多播組的數據報,同時也要通知多播路由器。

首先要把多播地址映射成乙太網地址,映射規則是把多播IP地址的低23位放到乙太網多播地址01-00-5E-00-00-00(16進制)的低23位。
因為一個IP組地址有28位有效位(除去高位的1110),所以有可能出現多個組地址被映射成同一個乙太網多播地址,具體實現見
ip_eth_mc_map。然後把這個mac地址加到硬體的過濾機制中。
具體的實現在函數dev_mc_add中。代表網路設備介面的結構體struct net_device也有一個成員mc_list,它是一個結構體struct dev_mc_list的鏈表,該結構體的定義如下:
struct dev_mc_list
{
struct dev_mc_list *next;
__u8 dmi_addr[MAX_ADDR_LEN];
unsigned char dmi_addrlen;
int dmi_users;
int dmi_gusers;
};

next指向鏈表下一個節點,dmi_addr是多播mac地址,dmi_addrlen為多播mac地址的長度,dmi_users是在節點被重復到加
入到設備上的次數,struct
net_device還有一個成員mc_count,用於記錄鏈表中節點的數量。dev_mc_add創建一個新的struct
dev_mc_list節點,加入到鏈表中,並通過調用網路設備介面的成員函數set_multicast_list來啟用設備的過濾機制。

最後一步發送主動成員報告,這里,首先忽略IGMPv1和IGMPv2存在的情況。如果要加入的多播組是
IGMP_ALL_HOSTS(224.0.0.1),則不需要發送成員報告。否則啟用定時器struct
in_device->mr_ifc_timer(介面狀態改變定時器),該定時器在設備初始化的時候被建立,其超時處理函數是
igmp_ifc_timer_expire,它發送一個IGMPv3的報告,然後再次啟用定時器。也就是說,第一個主動成員報告立即發出,然後在一個0
到IGMP_Unsolicited_Report_Interval(預設為10秒)之間的一個時間後,發出第二個主動成員報告,連續發出
IGMP_Unsolicited_Report_Count(預設值為2)個。
測試環境中要加入的多播組是224.0.1.1,發出的IGMPv3報告如下:
數據 含義
22 第3版成員關系報告
00 8bit保留,必須為0
f8 fc 校驗和
00 00 16bit保留,必須為0
00 01 組記錄的數量,為1
下面為一條組記錄:
04 類型為CHANGE_TO_EXCLUDE_MODE,改變到EXCLUDE過濾模式
00 輔助數據長度
00 00 源地址的數量
e0 00 01 01 組地址224.0.1.1

Ⅲ 如何把LINUX配置成支持IPV6組播的路由

1、配置IPv6地址 vi /tc/sysconfig/network-scripts/ifcfg-eth0 修改以下三個地方 IPV6INIT=」yes」 IPV6ADDR=2400:A480:AAAA:200::159 IPV6_DEFAULTGW=2400:A480:AAAA:200::1 2、重啟網路服務PING外網測試連通性 service netowork restart ping ipv6 3、在客戶端面遠程測試 打開遠程連接工具:SecureCRT 4、經過如上幾個步驟我們就完成了在linux操作系統下對IPv6地址的配置。

Ⅳ linux多播路由器設置如何生效

你好!linux多播路由器設置的簡介如下:
1、首先,接好無線路由器之後需要檢查是否通電,無線路由器是否正常亮燈運行。
2、檢查無誤後,打開瀏覽器輸入:192.168.1.1後按ENTER進入,這個時候彈出一個對話框,需要輸入帳戶名和密碼,這個不用操心,在路由器的後面會有的,你找著打上去就能登陸了,一般情況下都是:帳戶名:admin 密碼:admin
3、按照路由器背後的賬戶密碼輸入登錄後,就可以登陸到路由器的設置頁面了。
4、點擊頁面的設置向導,會出現一個帶領你設置好路由器的框框,按照它的要求一步步走下去。
5、點擊下一步,進入到賬號密碼設置,這個賬號密碼是你當前網路上網的賬號密碼,如果不知道,可以咨詢你的運營商。
6、設置好上網的賬號密碼之後就是無線上網的功能設置了,設置你的WIFI名稱和WIFI密碼,建議密碼不要設置過於簡單,容易被人破解,並且加密方式採用系統推薦就可以。
7、點擊完成,你的路由器設置已經成功了。

Ⅳ linux netlink socket 怎樣設置組播

Multicast Programming Sample

The following sample code illustrates how to include multicast functionality to a Windows Sockets application using socket options.

int /* OUT: whatever setsockopt() returns */
join_source_group(int sd, u_int32 grpaddr,
u_int32 srcaddr, u_int32 iaddr)
{
struct ip_mreq_source imr;

imr.imr_multiaddr.s_addr = grpaddr;
imr.imr_sourceaddr.s_addr = srcaddr;
imr.imr_interface.s_addr = iaddr;
return setsockopt(sd, IPPROTO_IP, IP_ADD_SOURCE_MEMBERSHIP, &imr, sizeof(imr));
}

int
leave_source_group(int sd, u_int32 grpaddr,
u_int32 srcaddr, u_int32 iaddr)
{
struct ip_mreq_source imr;

imr.imr_multiaddr.s_addr = grpaddr;
imr.imr_sourceaddr.s_addr = srcaddr;
imr.imr_interface.s_addr = iaddr;
return setsockopt(sd, IPPROTO_IP, IP_DROP_SOURCE_MEMBERSHIP, &imr, sizeof(imr));
}

Send comments about this topic to Microsoft

Ⅵ 怎樣用Linux實現組播路由轉發

這就要有PIM(Protocol Independent Multicast,協議無關組播組)協議的支持,就必須在Linux環境下安裝Pimd軟體協議包。 安裝補丁文件 安裝Pimd軟體協議包需要兩個補丁文件:pimkern-freebsd-4.6.patch和netstat-freebsd-4.6.patch。安裝步驟如下: 首先將兩個補丁文件拷貝到/usr/src/目錄下,並執行以下命令:#patch -p2 < netstat-freebsd-4.6.patch #patch -p2 < pimkern-freebsd-4.6.patch 執行以下命令,編譯並安裝netstat:#cd /usr/src/usr.bin/netstat #make #make install 重新編譯內核 執行以下命令,修改multi配置文件:#cd /usr/src/sys/i386/conf/ #cp GENRIC multi #vi multi 在multi配置文件中,加入下列兩行代碼:options MROUTING options PIM 保存並退出vi編輯器。 在當前multi配置文件所在的目錄執行以下命令:#config multi #cd /usr/src/sys/compile/multi/ #make depend #make #make install 至此,新內核編譯完畢。 備份Kernel文件 新內核編譯完畢後,在重新啟動前,要先將根目錄下原有的Kernel文件進行備份。#cd / #mv kernel kernel.old 若提示「operation not permitted」,則需要先執行以下命令:#chflags noschg /kernel 備份Kernel文件後執行以下命令:#cp /usr/src/sys/compile/multi/kernel /kernel 在系統重新啟動後,默認選擇的便是新編譯的內核。 安裝Pimd軟體協議包 Linux下Pimd軟體協議包代碼的起源有兩個地方,一個是日本的KAME項目組,另一個是南加州大學信息科學學院。到這兩個組織的主頁上都可以下載所需要的pimd-current.tar.gz 協議包和上面提到的兩個補丁。 用以下命令解壓縮 pimd-current.tar.gz 軟體包,並安裝:#tar zxf pimd-current.tar.gz #cd pimd-2.1.0-alpha29.16 #make #make install 以上命令執行過程中可能會出現錯誤,需要手工將其完成,拷貝當前目錄下的pimd文件:#cp pimd /usr/local/bin/ #chmod 755 pimd #cp pimd.conf /etc/ 至此,Pimd軟體協議包安裝完畢。還需要打開Linux系統的路由轉發功能,才能實現組播包的轉發,即在配置文件rc.conf中增加以下代碼,重啟後生效。作者:龍宇翔 苑慶國

Ⅶ 如何查看linux網口配置

通常需要以root身份登錄或使用sudo以便在Linux機器上使用ifconfig工具。依賴於ifconfig命令中使用一些選項屬性,ifconfig工具不僅可以被用來簡單地獲取網路介面配置信息,還可以修改這些配置。
1.命令格式:
ifconfig [網路設備] [參數]
2.命令功能:
ifconfig 命令用來查看和配置網路設備。當網路環境發生改變時可通過此命令對網路進行相應的配置。
3.命令參數:
up 啟動指定網路設備/網卡。
down 關閉指定網路設備/網卡。該參數可以有效地阻止通過指定介面的IP信息流,如果想永久地關閉一個介面,我們還需要從核心路由表中將該介面的路由信息全部刪除。
arp 設置指定網卡是否支持ARP協議。
-promisc 設置是否支持網卡的promiscuous模式,如果選擇此參數,網卡將接收網路中發給它所有的數據包
-allmulti 設置是否支持多播模式,如果選擇此參數,網卡將接收網路中所有的多播數據包
-a 顯示全部介面信息
-s 顯示摘要信息(類似於 netstat -i)
add 給指定網卡配置IPv6地址
del 刪除指定網卡的IPv6地址
<硬體地址> 配置網卡最大的傳輸單元
mtu<位元組數> 設置網卡的最大傳輸單元 (bytes)
netmask<子網掩碼> 設置網卡的子網掩碼。掩碼可以是有前綴0x的32位十六進制數,也可以是用點分開的4個十進制數。如果不打算將網路分成子網,可以不管這一選項;如果要使用子網,那麼請記住,網路中每一個系統必須有相同子網掩碼。
tunel 建立隧道
dstaddr 設定一個遠端地址,建立點對點通信
-broadcast<地址> 為指定網卡設置廣播協議
-pointtopoint<地址> 為網卡設置點對點通訊協議
multicast 為網卡設置組播標志
address 為網卡設置IPv4地址
txqueuelen<長度> 為網卡設置傳輸列隊的長度

Ⅷ linux下如何開啟multicast

socket創建UDP通信描述符後,setsockopt加入多播組,再bind綁定到該網卡上

//在指定的IP和埠上接收多播組的報文
intrecv_msg(char*ip,unsignedshortport,char*mult_ip)
{
//建立通訊套接字
intfd=socket(PF_INET,SOCK_DGRAM,0);
if(-1==fd)
{
perror("socketfailed");
return-1;
}

//設置地址重用和接收多播
{
intreuse=1;
structip_mreqnmult_addr={0};
mult_addr.imr_multiaddr.s_addr=inet_addr(mult_ip);
mult_addr.imr_address.s_addr=inet_addr(ip);

if(-1==setsockopt(fd,IPPROTO_IP,IP_ADD_MEMBERSHIP,
&mult_addr,sizeof(mult_addr)))
{
perror("setsockoptaddfailed");
goto_out;
}

if(-1==setsockopt(fd,SOL_SOCKET,SO_REUSEADDR,
&reuse,sizeof(reuse)))
{
perror("setsockoptreusefailed");
}
}

//綁定地址和埠
{
structsockaddr_inaddr={0};
addr.sin_family=PF_INET;
addr.sin_port=htons(port);
addr.sin_addr.s_addr=INADDR_ANY;
if(-1==bind(fd,(structsockaddr*)&addr,
sizeof(addr)))
{
perror("bindfailed");
goto_out;
}
}

//接收信息
while(1)
{
charbuf[128]={0};
intret=0;
structsockaddr_inclient_addr={0};
intlen=sizeof(client_addr);
ret=recvfrom(fd,buf,sizeof(buf),0,
(structsockaddr*)&client_addr,
&len);
//被信號中斷則重啟
if((-1==ret)&&(EINTR==errno))
{
continue;
}
elseif(-1==ret)
{
perror("recvfromfailed");
goto_out;
}
elseif(ret>0)
{
printf("%s ",buf);
}
usleep(100*1000);
}

_out:
if(fd>=0)
{
close(fd);
}
return0;
}

Ⅸ linux下配置多網卡組播地址,能正常使用,但重啟後顯示「no such device」,是什麼原因該怎麼解決

因為你用route命令添加的路由表不會保存到一次重啟,雖然你查看得到,你可以寫到啟動腳本里去。
編輯/etc/init.d/network,在未尾加上下面幾行:
# Add non interface-specific static-routes.
if [ -f /etc/sysconfig/static-routes ]; then
grep "^any" /etc/sysconfig/static-routes | while read ignore args ; do
/sbin/route add -$args
done
fi

編輯/etc/sysconfig/static-routes:
any net 224.0.0.101 netmask 255.255.255.255 dev eth0

any net 224.0.0.110 netmask 255.255.255.255 dev eth1
any net 244.0.0.111 netmask 255.255.255.255 dev eth3
any net 244.14.0.112 netmask 255.255.255.255 dev eth2

閱讀全文

與linux組播配置相關的資料

熱點內容
多線程編程php 瀏覽:602
安卓機越用越卡有什麼辦法 瀏覽:7
高中生解壓操場適合做的游戲 瀏覽:391
程序員java招聘 瀏覽:446
未來之光手機雲伺服器 瀏覽:158
伺服器下載資料為什麼c盤滿了 瀏覽:263
怎麼清除空文件夾 瀏覽:544
如何查看派派伺服器 瀏覽:802
殺手6解壓畫面 瀏覽:669
誇張程序員 瀏覽:467
如何直播切兩個APP畫面 瀏覽:784
4x4測試伺服器怎麼獲得 瀏覽:740
開環與閉環python 瀏覽:517
蘋果手機上的東西怎麼加密 瀏覽:554
坐過牢可以做程序員嗎 瀏覽:254
男友是程序員女友是自由職業 瀏覽:272
娃娃智慧閱讀源碼 瀏覽:163
程序員敲響警鍾 瀏覽:888
猴子吃桃遞歸演算法 瀏覽:340
androidhttpcookie 瀏覽:833