RX packets, TX packets와 같은 정보 얻기

lovemyin의 이미지

ifconfig 명령을 치면 RX packets, TX packets와 같은 네트워크 패킷량을 알 수 있습니다.
함수를 써서 이런 정보를 얻을 수 없나요?
ifconfig 소스를 열어보았는데 /proc/net/dev 파일을 오픈하여 긎그 정보를 얻어오는 것 같은데 그런 방법 말고 함수 콜을 해서 알아오는 방법을 알고 싶습니다.
UNP와 같은 책을 보세요... 이런 답은 제발 피해주세요.

익명 사용자의 이미지

lovemyin wrote:

...
UNP와 같은 책을 보세요... 이런 답은 제발 피해주세요.

ioctl()을 보는게 가장 가까운 접근으로 보입니다.

* /proc 와 혹시 원수라도 지셨는지? 전혀 나빠보이지 않는 접근인데요?

peccavi의 이미지

lovemyin wrote:
함수를 써서 이런 정보를 얻을 수 없나요?

c/c++ 함수를 말씀하시는건가요?

일반적으로 /proc/net/dev 파일을 참조해서 트래픽 량을 계산하는걸로 알고 있습니다.

ifconfig소스를 보셨다니, 쉽게 구현하실수 있지 않을까요?

[url]http://www.linux-sarang.net/board/?p=read&table=tip&no=8472&page=&o[at]=s&o[sc]=r&o[no]=8472[/url] 여기도 한번 보시구요

데비안에서는 bwm 소스를 다운받아 보시면 도움이 되시리라 봅니다.

----
jai guru deva om...

익명 사용자의 이미지

kernel network device driver를 작성할때,
/usr/include/linux/netdevice.h 파일내의
struct net_device_stats 구조체 내의
rx_packets등의 값을 채워주는 루틴을 디바이스 드라이버내에 기술하게 되어
있습니다.
이 값들은 각 랜카드 제작사 또는 드라이버 제작자가 해당 장치별로 값을
업데이트 해주도록 루틴을 작성해 주는, 일종의 프레임워크(패턴이라고 하도록 하겠습니다)를 준수하도록 되어 있습니다.

이 값들(커널내의 자료구조내의 값들)은 일반적으로 장치 파일을 open()한후 ioctl()을 이용해서 값을 가져오거나, 세팅하도록 하는게 일반적입니다.
특별한 함수들을 만들 수도 있겠습니다만, 유닉스 표준으로 볼때는 ioctl()이
가장 타당합니다.

/proc파일시스템(메모리 파일시스템;빠른....)을 통한 커널의 자원을 디스플레이 해주는 방식이 90년대 중반 부터(?), 보이다가, 현재에는 널리 사용되는 것으로 보입니다.
네트워크 장치에 대한 정보 디스플레이도 이를 (/proc) 사용하는 추세인듯합니다. 다름 아닌 ifconfig도 이를 읽어서 출력하니 말입니다.

질문하신분께서, 함수를 원하는 이유는 잘 모르겠으나, 다음과 같은 접근이 타당해 보입니다.
1) 함수를 절대로 써야겠다.
- ioctl()에 해당 자료구조를 읽어오는 파라메터가 어떻게 되나 조사
- 때에따라, 랜카드 드라이버만든사람이(랜카드별로 상이할듯;대체로 유사하겠으나, 장담못함) 파라메터 값을 상이하게 주었을 수 있을듯함 ==> 만일 그러하다면, 랜카드에 따라 프로그램이 수정되어야 할지도....단지 eth0를 기준으로 보지는 못하고, 인텔랜카드인지, 아니면 3com랜카드인지등등....을 고려해야 할지도.......
- kernel module을 제작해서 시스템호출을 (system call) 새로 만든다. 당연히, 그 기능은 네트워크 스태티스틱(통계 정보관련을..) 읽어주는.....
2) /proc 파일시스템에서 읽겠다.
- 속도? 절대 느리지 않다.
- 안정성? 스테이블해 보인다.
- 기술? 오픈소스에 무슨 기술이냐.

참고되셨기를......

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.